我正在創建一個拖放遊戲,我通過一個Lynda tut進行了跟蹤。我一直在爲我創建的遊戲收到一個錯誤,因爲我注意到(經過數週的代碼審查並讓其他人看着它來弄清楚什麼是錯誤的),我遵循的教程在第一幀上做了所有的事情,但我正在製作我的遊戲開始於第3幀。所以如果我在第1幀開始我的遊戲,它完美的工作,我不會得到這些錯誤:如何延遲當我的動作3代碼運行?
這發生在我測試電影時,一旦我點擊繼續我能夠看到電影 -
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
{
}
}
}
我嘗試了遊戲文件中添加代碼的動作層,但這也似乎不能正常工作。
此問題對於StackOverflow太寬泛。嘗試縮小問題範圍,並針對每個問題發佈一個問題。請記住,StackOverflow不是一個論壇。 – Pier
你能不能在你的'DragDrop'函數中說'if(currentFrame!= 3)gotoAndStop(3);' – putvande
要學習一些* real * ActionScript,請查看Colin Moock丟失的ActionScript Weekend。 –