私は、Lynda tut をたどったドラッグ アンド ドロップ ゲームを作成しています。私が作成したゲームでエラーが発生し続けたのは、私が従ったチュートリアルがフレーム 1 ですべてを行ったのに、私が作成した私のゲームはフレーム 3 から開始します。したがって、フレーム 1 からゲームを開始すると、完全に機能し、次のエラーは発生しません。
これは、映画をテストしたときに発生し、[続行] をクリックすると、映画を見ることができます -
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at simpleSpring()[simpleSpring.as:21]
そして、これはオブジェクトをドラッグすると発生します -
TypeError: Error #2007: Parameter hitTestObject must be non-null.
at flash.display::DisplayObject/_hitTest()
at flash.display::DisplayObject/hitTestObject()
at DragDrop/drop()[DragDrop.as:33]
フレーム 1 でゲームを開始しない限り、これらのエラーは表示されないことがわかっているので、最初のフレームを過ぎたフレームでゲームを開始できるように配置できるコードを知りたいです。
以下は DragDrop.as のコードです。
package
{
import flash.display.*;
import flash.events.*;
public class DragDrop extends Sprite
{
var origX:Number;
var origY:Number;
var target:DisplayObject;
public function DragDrop()
{
// constructor code
origX = x;
origY = y;
addEventListener(MouseEvent.MOUSE_DOWN, drag);
buttonMode = true;
}
function drag(evt:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_UP, drop);
startDrag();
parent.addChild(this);
}
function drop(evt:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_UP, drop);
stopDrag();
if(hitTestObject(target))
{
visible = false;
target.alpha = 1;
Object(parent).match();
}
x = origX;
y = origY;
}
}
}
そして、ここに simpleSpring.as があります
package
{
import flash.display.*;
import flash.events.*;
public class simpleSpring extends MovieClip
{
var dragdrops:Array;
public function simpleSpring()
{
// constructor code
dragdrops = [ladyone,ladytwo,ladythree,ladyfour,ladyfive,ladysix];
var currentObject:DragDrop;
for(var i:uint = 0; i < dragdrops.length; i++)
{
currentObject = dragdrops[i];
currentObject.target = getChildByName(currentObject.name + "_target");
}
}
public function match():void
{
}
}
}
ゲーム ドキュメントのアクション レイヤーにコードを追加しようとしましたが、これも正しく機能していないようです。