我的 MyMovieClip 名为 mClip 。里面的mClip是两个名为: btn1 btn2
的按钮
我需要在Action Script代码中访问这些按钮。我已宣布它:
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");
}
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");
}
我没有收到任何错误,点击按钮后没有任何反应。请问你能帮帮我吗?谢谢
答案 0 :(得分:1)
这是可能发生的事情。虽然我必须做出以下假设:
执行以下操作时:
var mClip:MyMovieClip = new MyMovieClip();
var btn1:MyButton1 = new MyButton1();
var btn2:MyButton2 = new MyButton2();
你实际上是在告诉flash获取这些名称(mClip,btn1,btn2)并为它们分配 NEW 对象(旧的对象仍然存在,但是vars引用了你的新对象&#39 ;刚刚创建 - 所以你将点击事件添加到屏幕上没有的对象上。
当您将影片剪辑添加到时间轴并为其指定实例名称时,在幕后它实际上与该代码完全相同。删除这三行,您第一次尝试的代码将起作用。 (假设我上面的所有假设都是正确的,请告知,如果没有)
答案 1 :(得分:0)
如果该类被标记为dynamic
,则第一次尝试是正确的。但由于这不是你的情况,你应该直接使用变量:
btn1.addEventListener(..
IF 这与您定义它们的同一个类完全一致(并将它们添加到mClip中)。实际发生的是您使用变量而不是实例名称。您可能遇到问题,因为您在定义这些按钮的地方没有工作。
如果仍然无效,您可能会点击该孩子上方的某些内容。
答案 2 :(得分:0)
图表中并不完全清楚,但按钮应该有彩色(非空)字段(尽管alpha可以是任何内容,包括'零') - 这样你&# 39;实际点击某事。并且,如果按钮'只是MovieClip编码为按钮,标签应该是静态文本,不可选择。
我们假设您的代码是时间轴代码,而不是编码类的一部分。