Adobe Animate - 在MouseOver上控制外部影片剪辑

时间:2016-11-23 19:36:02

标签: javascript html5-canvas adobe

我使用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中工作了。我究竟做错了什么?翻转时,如何让按钮停止剪辑旋转?

提前感谢您的帮助!我把头发拉到这里。

1 个答案:

答案 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));