操作脚本3.如何从Flash中的Movie Clip访问按钮?

时间:2014-06-03 14:46:35

标签: javascript actionscript-3 flash actionscript movieclip

我的 MyMovieClip 名为 mClip 。里面的mClip是两个名为: btn1 btn2

的按钮

mc

我需要在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");
}

我没有收到任何错误,点击按钮后没有任何反应。请问你能帮帮我吗?谢谢

3 个答案:

答案 0 :(得分:1)

这是可能发生的事情。虽然我必须做出以下假设:

  1. 您正在使用flash pro
  2. 在Flash专业版中,您已创建了一个影片剪辑,将其放在主时间轴上,并为其指定实例名称 mClip
  3. mClip 时间轴上,您已创建了两个按钮,并为其指定了 btn1 btn2 的实例名称。
  4. 您的所有代码都在主时间轴上。
  5. 执行以下操作时:

    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编码为按钮,标签应该是静态文本,不可选择。

我们假设您的代码是时间轴代码,而不是编码类的一部分。