2014-03-14 77 views
0

我正在构建一个支持英语和日语的SWF面板,以及一个用于在它们之间切换的按钮。英国是第1帧,在框架2.在第一帧有此相关的AS3日本:为什么我的一个AS3事件处理程序只能工作一次?

btnLangToggle.addEventListener(MouseEvent.CLICK, onLangToggle); 

...

this.stop(); 

...

function onLangToggle(e:MouseEvent):void { 
    if (MovieClip(root).currentFrame == 1) { 
     MovieClip(root).gotoAndStop(2); 
    } else { 
     MovieClip(root).gotoAndStop(1); 
    } 
    trace(MovieClip(root).currentFrameLabel); 
} 

我点击按钮,事件处理函数运行正常,一次。如果我再次点击它,没有任何反应。为什么?

编辑:这是我的两个帧和时间线的样子。

English and Japanese UI

Timeline

+0

您的脚本在第1帧和第2帧中都可用。您的时间线如何? –

+0

我已经用两帧图像和时间线更新了问题。 – PokeJoe

+0

Tha真的很奇怪......在第1帧和第2帧都有相同的按钮实例exista? –

回答

0

如果我再次点击它,什么都不会发生。为什么?

因为它是一个MovieClip,它们是为动画设计的,而不是为应用程序状态设计的。第一帧中的场景中的对象在第二个关键帧中不可访问。

我假设你的情况下,你有按钮切换不同的MovieClip(不同的语言)实例的语言。在第二帧再次申请事件侦听语言按钮的日语版本:

btnLangToggle.addEventListener(MouseEvent.CLICK, onLangToggle); 

另外,请阅读Document Class,这是非常简单的创建一个只有2个国家的应用,就像你有(2帧... )

+0

我改写了我的留言 –

+0

其实,我没有使用单独的影片剪辑。我将所有组件都放在主时间轴上。这些组件都在单一图层上,并且此图层在第1帧和第2帧上有关键帧。我更改了第2帧上所需组件的标签。动作有一个空白关键帧,其中包含第1帧上的所有代码,并且没有其他关键帧。然而我会看看Document类。 – PokeJoe

+0

我已经用我的两帧图像和时间线更新了问题。 – PokeJoe

0

我假设你使用按钮的关键帧,对吧? 您必须确定两个框架上的按钮是相同的。这意味着你不能使用关键帧 - 而是使用单独关键帧和两个普通帧的单独图层。这样你的代码就可以工作,因为它是同一个按钮。

相关问题