我有名为mClip的MyMovieClip。 mClip内部有两个名为btn1 btn2的按钮
我需要在我的动作脚本代码中访问这些按钮。我已经声明:
var mClip:MyMovieClip = new MyMovieClip();
var btn1:MyButton1 = new MyButton1();
var btn2:MyButton2 = new MyButton2();
我尝试了2种方法,但均未成功:
1。
mClip.btn1.addEventListener(MouseEvent.CLICK, popUp1);
mClip.btn2.addEventListener(MouseEvent.CLICK, popUp2);
function popUp1(event:MouseEvent):void {
trace("test 1");
}
function popUp2(event:MouseEvent):void {
trace("test 2");
}
2。
btn1.addEventListener(MouseEvent.CLICK, popUp1); //removed mClip
btn2.addEventListener(MouseEvent.CLICK, popUp2); //removed mClip
function popUp1(event:MouseEvent):void {
trace("test 1");
}
function popUp2(event:MouseEvent):void {
trace("test 2");
}
我没有任何错误,单击按钮后什么也没有发生。请问你能帮帮我吗?谢谢
最佳答案
这是可能发生的情况。尽管我必须做出以下假设:
您正在使用Flash Pro
在Flash Pro中,您已经创建了一个影片剪辑,将其放置在主时间轴上,并为其指定了mClip的实例名称。
在mClip时间线上,您已经创建了两个按钮,并为其指定了实例名称btn1和btn2。
您的所有代码都在主时间轴上。
当您执行以下操作时:
var mClip:MyMovieClip = new MyMovieClip();
var btn1:MyButton1 = new MyButton1();
var btn2:MyButton2 = new MyButton2();
您实际上是在告诉Flash使用这些名称(mClip,btn1,btn2)并为它们分配新对象(旧对象仍然存在,但是var引用您刚刚创建的新对象-因此,将click事件添加到对象屏幕上没有的内容)。
当您将影片剪辑添加到时间轴并为其指定实例名称时,在幕后实际上与该代码相同。删除这三行,您的第一次尝试代码就会起作用。 (假设我以上所有假设均正确无误,请告知)