1

我真的在这个小问题上尽了最大的努力,这是 2 周的漫长夜晚,我知道你们中的一个更有经验的 AS3 开发人员会在一两分钟内解决,我希望如此。

所以我有一个非常简单的游戏,你可以使用 MOUSEUP 放开可拖动的对象,然后播放动画然后点击主题并制作另一个动画(splat 或其他东西)。仅在影片剪辑内部的一帧上使用 hitTest。(这很好用)

我在删除所说的 eventListener 时遇到问题,我尝试在动画结束时删除它,所以在动画的最后一个从舞台上会有 AS 说 removeEventListener ,但这不起作用,所以我在动态添加后尝试了 removeEventListener动画到了舞台,依旧没有欢乐。

我希望这很简单,比如 this.removeEventListener 或 currentTarget,但可惜没有。

实在想不出别的了

为了爱,请帮助。一个解释也将是惊人的,我理解人们是如何没有时间的,所以任何输入都将不胜感激。

下面是我的AS,如果有人想看FLA,我可以发上来,我很乐意分享。

注意它可能很明显我是一个新手,所以请在我的路上帮助我....

import flash.display.MovieClip;

import flash.events.*;

var test:dart = new dart();
addChild(test);
circle.addEventListener(MouseEvent.MOUSE_DOWN, fl_ClickToDrag);

function fl_ClickToDrag(event:MouseEvent):void
{
    circle.startDrag();
}

stage.addEventListener(MouseEvent.MOUSE_UP, fl_ReleaseToDrop);

function fl_ReleaseToDrop(event:MouseEvent):void
{
    circle.stopDrag();
    addEventListener(Event.ENTER_FRAME, checkIfHitTest);
    function checkIfHitTest(Event)
    {

        if (circle.hitTestObject(square))
        {
            trace("true, the circle and square are colliding");
            var s:blood_splat = new blood_splat();
            addChild(s);
            s.x = mouseX;
            s.y = mouseY;
            **removeEventListener(Event.ENTER_FRAME,checkIfHitTest);**

        }
        else
        {
            trace("false, the circle and square are not colliding");
            var s:blood_splat = new blood_splat();
            addChild(s);
            s.x = mouseX;
            s.y = mouseY;
            s.alpha = 0.1;
            **removeEventListener(Event.ENTER_FRAME,checkIfHitTest);**
        }
    }

}
4

2 回答 2

1

做就是了:

Event.currentTarget.removeEventListener(Event.type, checkIfHitTest)
于 2012-05-28T19:39:11.683 回答
1

尝试在 fl_ReleaseToDrop 之外定义 checkIfHitTest。从理论上讲,您所做的应该可以工作,因为您的 removeEventListener 代码也在 fl_ReleaseToDrop 的闭包中运行,但它的定义可能被忽略,因为您不应该在类似的其他函数中定义命名函数。

另一个可能的问题是您为 checkIfHitTest 提供的参数与 Class、Event 具有相同的名称,因此您的定义存在冲突——您的事件实例没有常量 ENTER_FRAME。

老实说,即使您显然关闭了严格模式,或者您会看到大量编译错误,我也无法想象您没有遇到运行时错误。有没有安装调试播放器?你真的应该重新打开严格的打字——它会给你反馈,至少开始你自己解决很多这些问题。

于 2012-05-28T19:41:57.083 回答