我不是程序员,所以如果我的问题太苛刻,请原谅我。
我在我的库中创建了一个名为“技能”的MovieClip。然后我将该MovieClip的三个实例分别添加到我的舞台中,名为“skill_01”,“skill_02”和“skill_03”。我选择了所有三个实例并创建了另一个名为“diagram”的MovieClip来将它们嵌入其中。我稍后会在这个名为“图表”的MovieClip中添加更多技能实例,但是现在,我需要基础知识来处理三个实例。
主时间轴或阶段只有1帧,“图”MovieClip实例也是如此。但是,技能实例都有两个框架:第1帧我有一个PNG图像显示它们被锁定/离线,而在第2帧我有另一个PNG显示它们是解锁/在线。 我需要通过点击并右键点击它们来切换它们,就像下面的例子中一样(见链接)
我正在尝试这样做,以便当你左键单击技能实例时,他们通过切换到第2帧中的PNG图像切换到在线/解锁,当你右键单击它们时,它会回到第1帧(离线/锁定)。我已经尝试了几行不同的代码,包括Adobe本身和其他人推荐的代码,我无法弄清楚我做错了什么。它将转到第2帧,并在右键单击时拒绝返回第1帧。
这是我在MovieClip中的代码:
stop();
skill_01.addEventListener(MouseEvent.CLICK, fl_ClickToGoToNextFrame);
function fl_ClickToGoToNextFrame(event:MouseEvent):void
{
gotoAndStop(2);
}
这部分代码不起作用:
skill_01a.addEventListener(MouseEvent.RIGHT_CLICK, fl_ClickToGoToPreviousFrame);
function fl_ClickToGoToPreviousFrame(event:MouseEvent):void
{
prevFrame();
}
截屏1: gyazo(dot)com / e622baee46c3fabbd8c9a8d2df8396fe
截屏2: gyazo(dot)com / 1b360716a5d243aa74e2be4127fe9a5b
(很抱歉输入这样的链接,它不会让我添加超过1个链接,因为我刚刚注册了这个论坛)
有关更多上下文,我正在尝试创建一个类似于此的技能树:http://www.dungeonsanddevelopers.com/#__6_Your
我会很感激任何帮助解决这个问题!
答案 0 :(得分:0)
如果您已将movieclip命名为skill_01,那么skill_01a是什么?
还将您的事件监听器及其回调函数添加到movieclip的父级和回调函数内,以便访问事件所有者,使用
// 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
传递到您的exaple中,可以是skill_01(如果当前帧为1) )或者skill_1a(如果当前帧是2)横跨问题正文,你不仅在技能的第1帧和第2帧中有一个png图像,它们是movieclip,并将作为event.target返回。但是如果你只把你的位图(locked.png& unlocked.png)代替skill_01和skill_01a,那么之前的代码工作正常。位图不会捕获事件,因此其父级是谁接受了点击事件而且它有点令人困惑,我不擅长解释
如果难以理解
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);
}