我正在通过 Lynda tut 创建一个拖放游戏。我创建的游戏不断出现错误,因为我注意到(经过数周审查代码并让其他人查看代码以找出问题所在)我遵循的教程在第一帧完成了所有操作,但我正在制作我的游戏从第 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]
因为我知道除非我在第一帧开始游戏,否则这些错误不会出现,我想知道我可以放置什么代码,以便我可以在超过第一帧的帧开始游戏。
以下是 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
{
}
}
}
我尝试将代码添加到游戏文档中的操作层,但这似乎也无法正常工作。