gotoAndPlay 有效,但停止而不是播放? -as3
gotoAndPlay works, but Stops rather than plays? - as3
以下 as3 位于根级别实例名称 'counter_int' 的影片剪辑中,目标影片剪辑实例名称 'win_message' 也单独存在于根级别。
在使用下面的 listener/function 和 if 语句方法之前,它工作得很好,当在 'counter_int' 中进入包含与 as3 相同的新帧时,'win_message' 动画效果很好,减去侦听器和 if 语句。
一切仍然有效,除了它仍然与目标动画片段通信,因为 'win_message' 动画片段在第 2 帧停止,而不是继续播放。没有停止();目标动画片段中的命令,而不是第 1 帧顺便说一句。
addEventListener(Event.ENTER_FRAME, success);
function success(ev : Event) : void
{
if (linked_total.text == (5).toString () )
{
Object(root).win_message.gotoAndPlay(2);
}
}
如有任何帮助,我们将不胜感激!如果我不能很好地解释我的问题,我们深表歉意!
谢谢
你的问题是因为你在 Event.ENTER_FRAME
事件的监听器中使用了 gotoAndPlay()
,所以它被重复调用直到条件为假。
虽然这样做是一种不好的方式,但您可以改用您知道会在用户需要时执行的任何准时操作(单击按钮、更改文本字段...)。
如果您出于任何其他原因仍然需要使用 Event.ENTER_FRAME
事件侦听器,您应该确保您的条件只为真一次(或者至少您将调用 gotoAndPlay()
一次),然后您可以调用 gotoAndPlay()
,例如使用 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);
}
}
你也可以在第一次条件为真时去掉事件监听器,但在这种情况下,我不知道你为什么要使用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);
}
}
...确实有很多方式可以通过避免您遇到的行为来完成您想要的。
希望能帮到你。
以下 as3 位于根级别实例名称 'counter_int' 的影片剪辑中,目标影片剪辑实例名称 'win_message' 也单独存在于根级别。
在使用下面的 listener/function 和 if 语句方法之前,它工作得很好,当在 'counter_int' 中进入包含与 as3 相同的新帧时,'win_message' 动画效果很好,减去侦听器和 if 语句。
一切仍然有效,除了它仍然与目标动画片段通信,因为 'win_message' 动画片段在第 2 帧停止,而不是继续播放。没有停止();目标动画片段中的命令,而不是第 1 帧顺便说一句。
addEventListener(Event.ENTER_FRAME, success);
function success(ev : Event) : void
{
if (linked_total.text == (5).toString () )
{
Object(root).win_message.gotoAndPlay(2);
}
}
如有任何帮助,我们将不胜感激!如果我不能很好地解释我的问题,我们深表歉意!
谢谢
你的问题是因为你在 Event.ENTER_FRAME
事件的监听器中使用了 gotoAndPlay()
,所以它被重复调用直到条件为假。
虽然这样做是一种不好的方式,但您可以改用您知道会在用户需要时执行的任何准时操作(单击按钮、更改文本字段...)。
如果您出于任何其他原因仍然需要使用 Event.ENTER_FRAME
事件侦听器,您应该确保您的条件只为真一次(或者至少您将调用 gotoAndPlay()
一次),然后您可以调用 gotoAndPlay()
,例如使用 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);
}
}
你也可以在第一次条件为真时去掉事件监听器,但在这种情况下,我不知道你为什么要使用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);
}
}
...确实有很多方式可以通过避免您遇到的行为来完成您想要的。
希望能帮到你。