gotoAndPlay工作,但停止而不是播放? - as3

时间:2015-10-05 17:46:33

标签: actionscript-3 flash

以下as3位于根级别的实例名称“counter_int”的影片剪辑中,目标movieclip实例名称“win_message”也分别位于根级别。

在使用下面的listener / function和if语句方法之前,这很有效,并且'win_message'movicelip在'counter_int'中输入一个包含相同as3的新帧时减少了侦听器和if语句。 / p>

所有仍然有效,除了它仍然与目标movicelip通信,因为它,'win_message'movieclip在第2帧停止,而不是继续播放。没有停止();目标动画片段中的命令,而不是第1帧btw。

addEventListener(Event.ENTER_FRAME, success);

function success(ev : Event) : void

{
    if (linked_total.text == (5).toString () )
    { 
       Object(root).win_message.gotoAndPlay(2);
    }
}

任何帮助将不胜感激!如果我不善于解释我的问题,请道歉!

由于

1 个答案:

答案 0 :(得分:2)

您的问题是因为您在gotoAndPlay()事件的侦听器内使用Event.ENTER_FRAME,因此在条件为false之前重复调用它。

虽然这样做的方式不好,但您可以使用任何准时动作(按钮点击,文本字段更改......),您知道这些动作将在您的用户需要时执行。

如果由于任何其他原因仍然需要使用Event.ENTER_FRAME事件监听器,您应该确保您的条件只有一次(或者至少会调用gotoAndPlay()一次),然后你可以使用gotoAndPlay() var来调用Boolean,例如:

var first_run:Boolean = true;

addEventListener(Event.ENTER_FRAME, success);
function success(ev:Event) : void
{
    // when first_run is false, we are sure that even if linked_total.text still equals to "5"
    // this condition will always be false
    if (int(linked_total.text) == 5 && first_run)
    {       
        first_run = false;
        MovieClip(root).win_message.gotoAndPlay(2);
    }
}

您还可以在条件第一次为true时删除事件侦听器,但在这种情况下,我不知道您将使用Event.ENTER_FRAME事件侦听器的原因!

function success(ev:Event) : void
{
    if (int(linked_total.text) == 5)
    {       
        removeEventListener(Event.ENTER_FRAME, success);
        MovieClip(root).win_message.gotoAndPlay(2);
    }
}

......为了避免你的行为,有很多方法可以达到你想要的目的。

希望可以提供帮助。