我正在尝试将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吗?
答案 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
包裹。