Action Script 3. 如何在 Flash 中访问 Movie Clip 中的按钮?

Posted

技术标签:

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

我有一个名为 mClipMyMovieClip。 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");

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

【问题讨论】:

【参考方案1】:

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

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

当您执行以下操作时:

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 可以是任何东西,包括“零”)——这样您实际上是在点击某些东西。而且,如果“按钮”只是编码为按钮的影片剪辑,则标签应该是静态文本且不可选择。

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

【讨论】:

以上是关于Action Script 3. 如何在 Flash 中访问 Movie Clip 中的按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flash CC/Action Script 3.0 中创建自定义 MovieClip 边界?

如何在 Adob​​e Flash Professional CS6 Action Script 3.0 中阻止可移动对象(通过箭头键移动)离开舞台

Action Script 3. 角色移动时改变动画

如何在 Odoo 11 中通过 do_action() java-script 方法显示 action_id

ActionScript 3 测试Action Script中是否存在类方法

带 Loader 的外部游戏在 Flash、Action Script 3 中不起作用