【发布时间】:2014-12-20 22:14:21
【问题描述】:
这个问题仍然悬而未决,据我所知没有找到可行的答案。我已经测试了唯一的当前答案,但没有结果。如果您确实打算回答,我请您先查看提出的解决方案,因为我无法让它发挥作用。
更新:好的,我想我正在使用这个,唯一不发送错误的块是 checkforhit 函数最底部的块,直到试图弄清楚这意味着什么。
Cannot access a property or method of a null object reference.
at impossible_fla::MainTimeline/checkForHit()
所以我最近在一个帧上创建了一个带有计时器的项目,但由于某种原因,删除事件侦听器无法正常工作。
这是错误文本 TypeError:错误 #1009:无法访问空对象引用的属性或方法。 在不可能的fla::MainTimeline/checkForHit()
即使我做了 removeEventListener(Event.ENTER_FRAME, checkForHit); ?
stop();
var currentObject:MovieClip = null;
var dragging:Boolean = false;
initDrag(block1);
initDrag(block2);
initDrag(block3);
initDrag(block4);
var TCount:Number = 50;
var TTimer:Timer = new Timer(100,TCount);
TTimer.addEventListener(TimerEvent.TIMER, Tcountdown);
function Tcountdown(e:TimerEvent):void
{
if (TCount == 1)
{
trace("done");
TTimer.removeEventListener(TimerEvent.TIMER, Tcountdown);
gotoAndStop("lose");
}
else
{
Queen.alpha += 0.02;
TCount--;
trace(TCount);
}
}
function initDrag(obj:MovieClip )
{
obj.addEventListener(MouseEvent.MOUSE_DOWN,startADrag);
stage.addEventListener(MouseEvent.MOUSE_UP,stopADrag);
}
function endDrag(obj:MovieClip )
{
obj.removeEventListener(MouseEvent.MOUSE_DOWN,startADrag);
stage.removeEventListener(MouseEvent.MOUSE_UP,stopADrag);
removeEventListener(Event.ENTER_FRAME, checkForHit);
}
function startADrag(e:MouseEvent):void
{
currentObject = (MovieClip)(e.target);
var rect:Rectangle = new Rectangle(0,0,stage.stageWidth - currentObject.width,stage.stageHeight - currentObject.height + 100);
currentObject.startDrag(false,rect);
dragging = true;
}
function stopADrag(e:MouseEvent):void
{
if (currentObject != null)
{
dragging = false;
currentObject.stopDrag();
}
}
addEventListener(Event.ENTER_FRAME, checkForHit);
function checkForHit(e:Event):void
{
if (dragging)
{
if (block2.hitTestObject(dragtest))
{
endDrag(block2);
removeEventListener(Event.ENTER_FRAME, checkForHit);
TTimer.start();
}
if (block3.hitTestObject(dragtest))
{
removeEventListener(Event.ENTER_FRAME, checkForHit);
endDrag(block3);
removeEventListener(Event.ENTER_FRAME, checkForHit);
gotoAndStop("lose");
}
if (block4.hitTestObject(dragtest))
{
endDrag(block4);
removeEventListener(Event.ENTER_FRAME, checkForHit);
gotoAndStop("lose");
}
if (block1.hitTestObject(dragtest))
{
removeEventListener(Event.ENTER_FRAME, checkForHit);
endDrag(block1);
gotoAndStop("lose");
}
}
}
【问题讨论】:
-
好的,我发现我只需要创建一个解决方法,以便每个命中的变量都为真。然后让一些东西测试变量是否为真。 Reaaaaaly 愚蠢的错误将在稍后发布代码。
标签: actionscript-3 flash actionscript flash-cs5 flash-cs6