我使用Adobe Animate CC 2017在其上创建了带有影片剪辑的HTML5-canvas。此剪辑具有以圆圈旋转的按钮。
示例:http://trinidadpena.com/testing/animate/MS_Holiday_2016.html
我喜欢滚动时要突出显示的按钮以及剪辑停止旋转的按钮。但是我无法在MouseOver上工作(埃菲尔铁塔,例如)
var frequency = 3;
stage.enableMouseOver(frequency);
this.eiffel_tower.addEventListener("mouseover", fl_MouseOverHandler_4);
function fl_MouseOverHandler_4()
{
this.parent.stop();
}
它适用于MouseClick(大本钟,例子)。
this.big_ben.addEventListener("click", fl_MouseClickHandler_4.bind(this));
function fl_MouseClickHandler_4()
{
this.parent.stop();
}
如果我添加代码来触发警报框(自由状态,示例),它适用于MouseOver。但如果我删除警告框代码,它会再次中断。
var frequency = 3;
stage.enableMouseOver(frequency);
this.stat_of_lib.addEventListener("mouseover", fl_MouseOverHandler_5);
function fl_MouseOverHandler_5()
{
alert("Moused over");
this.parent.stop();
}
我很久没有在ActionScript中工作了。我究竟做错了什么?翻转时,如何让按钮停止剪辑旋转?
提前感谢您的帮助!我把头发拉到这里。
答案 0 :(得分:0)
如果您调查的代码"工作得很好!":
this.big_ben.addEventListener("click", fl_MouseClickHandler_4.bind(this));
您会注意到bind()
方法:
bind()
方法创建一个新函数,在调用时,将其this
关键字设置为提供的值。
因此,当"点击"处理程序被触发(即fl_MouseClickHandler_4()
函数),函数内部使用的this
预期会指向影片剪辑 - 导致它停止"停止&#34 ;; while 它会正确指向"意外"其他处理程序中的HTML窗口对象(您无法使用this
方法调整bind()
对象的引用。)
因此,解决此问题的一种方法是类似地调用其他处理程序上的bind()
方法来适当调整this
变量:)例如:
this.eiffel_tower.addEventListener("mouseover", fl_MouseOverHandler_4.bind(this));