Javascript 动作脚本3。如何在Flash中访问电影剪辑中的按钮?
我有MyMovieClip的名字mClip。mClip内部有两个按钮,名为:btn1 btn2 我需要在动作脚本代码中访问这些按钮。我宣布:Javascript 动作脚本3。如何在Flash中访问电影剪辑中的按钮?,javascript,actionscript-3,flash,actionscript,movieclip,Javascript,Actionscript 3,Flash,Actionscript,Movieclip,我有MyMovieClip的名字mClip。mClip内部有两个按钮,名为:btn1 btn2 我需要在动作脚本代码中访问这些按钮。我宣布: var mClip:MyMovieClip = new MyMovieClip(); var btn1:MyButton1 = new MyButton1(); var btn2:MyButton2 = new MyButton2(); 我试过两种方法,但都没有成功: 1. mClip.btn1.addEventListener(MouseEvent.
var mClip:MyMovieClip = new MyMovieClip();
var btn1:MyButton1 = new MyButton1();
var btn2:MyButton2 = new MyButton2();
我试过两种方法,但都没有成功:
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");
}
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");
}
2.
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");
}
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");
}
我没有收到任何错误,只是点击按钮后什么也没发生。你能帮帮我吗?谢谢如果类标记为
动态
,则第一次尝试是正确的。但由于情况并非如此,您应该直接使用变量:
btn1.addEventListener(..
如果在定义它们的同一类中使用(并将它们添加到mClip中)。实际情况是使用变量,而不是实例名。您可能会遇到问题,因为您没有在定义这些按钮的地方工作
如果这仍然不起作用,那么您可能正在单击该子对象上方的某个对象。从您的图表中还不完全清楚,但是按钮应该有彩色(不是空的)字段(尽管alpha可以是任何对象,包括“零”)——因此您实际上正在单击某个对象。而且,如果“按钮”只是编码为按钮的MovieClips,则标签应为静态文本且不可选择
我们假设您的代码是时间线代码,而不是编码类的一部分。下面是可能发生的情况。尽管我必须做出以下假设:
var mClip:MyMovieClip = new MyMovieClip();
var btn1:MyButton1 = new MyButton1();
var btn2:MyButton2 = new MyButton2();
实际上,您是在告诉flash使用这些名称(mClip、btn1、btn2)并将新对象分配给它们(旧对象仍然存在,但变量引用您刚刚创建的新对象-因此您可以将单击事件添加到屏幕上不存在的对象)
当您将电影剪辑添加到时间轴并为其指定实例名称时,在幕后,它的实际操作与该代码相同。删除这三行代码,第一次尝试的代码就可以运行了。(假设我上述所有假设均正确,如果不正确,请告知)