嵌入的button.swf不会触发CLICK事件

时间:2010-08-09 07:39:18

标签: flex actionscript-3 actionscript

我正在尝试将swf嵌入到我的as3 flex项目中:

[Embed(source = "../assets/next_button.swf")]
[Bindable]
protected var nextButtonClass:Class;
protected var next_btn:MovieClip = next_btn = new nextButtonClass() as MovieClip;
// ...
next_btn.addEventListener(MouseEvent.CLICK, onAdChange);

next_button.swf是as2并使用adobe flash cs4创建。里面有一个按钮。

如果我在next_button.fla中将按钮符号的类型更改为movieclip,则传递CLICK事件没有问题。

我试图将next_btn强制转换为mx.controls.Button和fl.controls.Button类,next_btn在这种情况下变为null。

顺便说一下按钮正在对mouseover和click事件做出正确反应,只是没有将它传递给上面的swf。

有什么技巧可以将Button事件传递给我的容器swf吗?

3 个答案:

答案 0 :(得分:1)

总结一下,在解决方案grapefrukt建议之后,代码看起来像这样:

[Embed(source = "../assets/next_button.swf", symbol="next_button")]
[Bindable]
protected var nextButtonClass:Class;
protected var next_btn:DisplayObject = new nextButtonClass() as DisplayObject;
// ...
next_btn.addEventListener(MouseEvent.CLICK, onAdChange);

答案 1 :(得分:0)

我认为As3脚本不可能访问AS2 SWF的属性。如果您可以访问fla,为什么不将按钮fla更改为AS3项目?

答案 2 :(得分:0)

尝试从swf内部嵌入和实例化符号,而不是整个swf:

 [Embed(source = "../assets/next_button.swf", symbol"MyButton")]

您显然需要将MyButton替换为按钮的实际符号名称。

这应该可以让您更直接地访问它,因为它不会被Loader包裹。