首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AS3在MovieClip中更改框架/实例

AS3在MovieClip中更改框架/实例
EN

Stack Overflow用户
提问于 2016-11-03 22:00:38
回答 1查看 1K关注 0票数 2

我不是程序员,所以如果我的问题太过分,请原谅我。

我在我的库中创建了一个名为“技能”的MovieClip。然后,我在我的阶段中添加了三个MovieClip实例,分别称为"skill_01“、"skill_02”和"skill_03“。我选择了这三个实例,并创建了另一个名为“图”的MovieClip来将它们嵌套在其中。稍后,我将在这个名为“图”的MovieClip中添加更多的技能实例,但就目前而言,我需要基本知识来处理三个实例。

主时间线或阶段只有一个框架,“图表”MovieClip实例也是如此。然而,技能实例都有两个框架:在框架1中,我有一个PNG图像显示它们处于锁定/离线状态,而在框架2中,我有另一个PNG将它们显示为未锁定/联机。我需要通过单击和右键单击它们来切换它们,就像下面的示例(参见链接)所示

我正在尝试使它,当你左击技能实例,他们切换到联机/解锁切换到框架2中的PNG图像,当你右击他们,它回到帧1(离线/锁定)。我尝试了几行不同的代码,包括Adobe本身推荐的代码以及其他代码,但我不知道自己做错了什么。当右击时,它将转到第2帧,并拒绝返回到第1帧。

这是我在MovieClip中的代码:

代码语言:javascript
复制
stop();
skill_01.addEventListener(MouseEvent.CLICK, fl_ClickToGoToNextFrame);

function fl_ClickToGoToNextFrame(event:MouseEvent):void
{
  gotoAndStop(2);
}

代码的这一部分不起作用:

代码语言:javascript
复制
skill_01a.addEventListener(MouseEvent.RIGHT_CLICK, fl_ClickToGoToPreviousFrame);

function fl_ClickToGoToPreviousFrame(event:MouseEvent):void
{
  prevFrame();
}

截图1: gyazo (dot) com/e622baee46c3fibd8c9a8d2df8396fe

截图2: gyazo (dot) com/1b360716a5d243a74e2 com 4127fe9a5b

(很抱歉输入了这样的链接,它不会让我添加超过一个链接,因为我刚刚注册了这个论坛)

关于更多的上下文,我正在尝试创建一个与此类似的技能树:Your

我将感激任何帮助弄清楚这一点!

EN

回答 1

Stack Overflow用户

发布于 2016-11-04 01:17:34

如果您已经将您的电影命名为skill_01,那么skill_01a是什么呢?

还将事件侦听器及其回调函数添加到育婴唇的父函数和回调函数中,以访问事件所有者,请使用

代码语言:javascript
复制
// stop(); not necessary to call stop if you have only 1 frame

with (this.diagram) {
  skill_01.addEventListener(MouseEvent.CLICK, fl_ClickToGoToNextFrame);
  skill_02.addEventListener(MouseEvent.CLICK, fl_ClickToGoToNextFrame);
  skill_03.addEventListener(MouseEvent.CLICK, fl_ClickToGoToNextFrame);
  skill_04.addEventListener(MouseEvent.CLICK, fl_ClickToGoToNextFrame);
  skill_01.gotoAndStop(1);
  skill_02.gotoAndStop(1);
  skill_03.gotoAndStop(1);
  skill_04.gotoAndStop(1);
}

function fl_ClickToGoToNextFrame(event:MouseEvent):void
{
  if (MovieClip(event.target.parent).currentFrame == 1)
    MovieClip(event.target.parent).gotoAndStop(2);
  else
    MovieClip(event.target.parent).gotoAndStop(1);
}

编辑:当一个事件从点击的“电影”发送出去时,在您的实例中,只有层次结构树中的最后一个“电影”作为event.target传递,可以是skill_01 (如果当前帧为1),也可以是skill_1a (如果“当前帧”是2),您不仅在技能的框架1和2中有一个png图像,而且它们是“event.target”的,并将作为event.target返回。但是,如果只将位图(locked.png & unlocked.png)而不是skill_01和skill_01a放在一起,那么前面的代码可以正常工作。位图不捕获事件,所以它的父是谁接受点击事件和它都有点混乱,我不擅长解释

如果很难理解的话

我们将使用类似的东西,更简单但更大的代码。

代码语言:javascript
复制
with (this.diagram) {
  skill_01.addEventListener(MouseEvent.CLICK, fl_ClickToGoToNextFrame_s1);
  skill_02.addEventListener(MouseEvent.CLICK, fl_ClickToGoToNextFrame_s2);
  skill_03.addEventListener(MouseEvent.CLICK, fl_ClickToGoToNextFrame_s3);
  skill_04.addEventListener(MouseEvent.CLICK, fl_ClickToGoToNextFrame_s4);
  skill_01.gotoAndStop(1);
  skill_02.gotoAndStop(1);
  skill_03.gotoAndStop(1);
  skill_04.gotoAndStop(1);
}

function fl_ClickToGoToNextFrame_s1(event:MouseEvent):void {
 toggle_buttons(skill_01);
}
function fl_ClickToGoToNextFrame_s2(event:MouseEvent):void {
 toggle_buttons(skill_02);
}
function fl_ClickToGoToNextFrame_s3(event:MouseEvent):void {
 toggle_buttons(skill_03);
}
function fl_ClickToGoToNextFrame_s4(event:MouseEvent):void {
 toggle_buttons(skill_04);
}

function toggle_buttons(button:MovieClip):void
{
  if (button.currentFrame == 1)
    button.gotoAndStop(2);
  else
    button.gotoAndStop(1);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40411968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档