【问题标题】:Action Script 3. How to access button from Movie Clip in Flash?Action Script 3. 如何在 Flash 中访问 Movie Clip 中的按钮?
【发布时间】:2014-07-23 23:15:30
【问题描述】:

我有一个名为 mClip 的 MyMovieClip。 mClip 内部有 2 个按钮,名为:btn1 btn2

我需要在我的动作脚本代码中访问这些按钮。我已经声明了它:

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");
}

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

【问题讨论】:

    标签: javascript actionscript-3 flash actionscript movieclip


    【解决方案1】:

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

    1. 您使用的是 flash pro
    2. 在 flash pro 中,您创建了一个影片剪辑,将其放在主时间轴上,并为其指定实例名称 mClip
    3. 在 mClip 时间线上,您创建了两个按钮,并为它们指定了实例名称 btn1 和 btn2。
    4. 您的所有代码都在主时间线上。

    当您执行以下操作时:

    var mClip:MyMovieClip = new MyMovieClip();
    var btn1:MyButton1 = new MyButton1();
    var btn2:MyButton2 = new MyButton2();
    

    您实际上是在告诉 flash 使用这些名称 (mClip, btn1,btn2) 并为它们分配 NEW 对象(旧的仍然存在,但 vars 指的是您拥有的新对象刚刚创建-因此您将单击事件添加到不在屏幕上的对象)。

    当您将影片剪辑添加到时间轴并为其指定实例名称时,在幕后它实际上与该代码相同。删除这三行,你的第一次尝试的代码就可以工作了。 (假设我以上所有假设都是正确的,如果不正确,请告知)

    【讨论】:

      【解决方案2】:

      如果类被标记为dynamic,第一次尝试将是正确的。但由于这不是你的情况,你应该直接使用变量:

      btn1.addEventListener(..
      

      IF 这与您定义它们的类完全相同(并将它们添加到 mClip 中)。实际发生的是您使用变量,而不是实例名称。您可能会遇到问题,因为您没有在定义这些按钮的地方工作。

      如果这仍然不起作用,您可能正在单击该孩子上方的某些东西。

      【讨论】:

        【解决方案3】:

        从您的图表中并不完全清楚,但按钮应该有彩色(非空)字段(尽管 alpha 可以是任何东西,包括“零”)——这样您实际上是在点击某些东西。而且,如果“按钮”只是编码为按钮的影片剪辑,则标签应该是静态文本且不可选择。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多