多个ADOBE ANIMATE CC按钮控制时间轴不工作

问题描述:

我必须控制html5 canvas的动画时间轴。我制作了所有按钮并编辑了所有代码。奇怪的是所有按钮都执行相同的功能。多个ADOBE ANIMATE CC按钮控制时间轴不工作

this.stop() 
//---------------------------------------------------------// 
this.letterA.addEventListener("click", fl_MouseClickHandler.bind(this)); 

function fl_MouseClickHandler() 
{ 
    this.gotoAndPlay(32); 
} 

//---------------------------------------------------------// 

//---------------------------------------------------------// 
this.letterB.addEventListener("click", fl_MouseClickHandler.bind(this)); 
} 
function fl_MouseClickHandler() 
{ 
    this.gotoAndPlay(212); 
} 
+0

此外,此代码由adobe CC“生成”。因为我不是一个编码员,只是一个微薄的动画师,我只是复制并粘贴了一个编辑符号的名字。 –

请阅读关于function hoisting;函数语句提升到*的范围的,让你的代码就相当于

function fl_MouseClickHandler() { 
    this.gotoAndPlay(32); 
} 

function fl_MouseClickHandler() { 
    this.gotoAndPlay(212); 
} 

... 
this.stop()  
this.letterA.addEventListener("click", fl_MouseClickHandler.bind(this)); 
this.letterB.addEventListener("click", fl_MouseClickHandler.bind(this)); 

一个解决办法是使用函数表达式:

var that = this; 
this.letterA.addEventListener("click", function() { that.gotoAndPlay(32); }); 

,或者你坚持使用bind

this.letterA.addEventListener("click", (function() { this.gotoAndPlay(32); }).bind(this)); 
+0

我试过这个: this.stop(); var letterA = this; this.letterA - 阅读进度 - ( “点击”,函数(){ \t letterA.gotoAndPlay(97) }); VAR letterB =此; this.letterB.addEventListener( “点击”,函数(){ \t letterB.gotoAndPlay( 108) }); 它似乎已经工作了,我会在主文件上试试看看它是否有效。非常感谢! –

从我可以告诉你,你绑定相同的功能,以两个不同的按钮单击事件。你有这个相同功能的两个不同的定义。其中一个很有可能被写入另一个,因此两个按钮都会调用fl_MouseClickHandler,它将使用相同的时间戳调用gotoAndPlay。

快速修复可能只是改变fl_MouseClickHandler名称:

function fl_MouseClickHandlerA() { 
    this.gotoAndPlay(32); 
} 

function fl_MouseClickHandlerB() { 
    this.gotoAndPlay(212); 
} 

this.letterA.addEventListener("click", fl_MouseClickHandlerA.bind(this)); 
this.letterB.addEventListener("click", fl_MouseClickHandlerB.bind(this)); 

此外,你应该看你怎么用“这个”,你可能不会作用域你的想法。

+0

工作得很好!非常感谢你 –

+0

upvote呢? :) –

+0

我试过,但该网站不会让我:第 –