EaselJS:AS3 到 Javascript 转换:在 MC 翻转时,转到并播放该 MC 的第 1 帧(Flash Canvas for HTML5)

EaselJS: AS3 to Javascript conversion: on rollover of MC, gotoAndPlay frame 1 of that MC (Flash Canvas for HTML5)

这是一个 Javascript 问题,针对 Flash 中的 HTML5 canvas 项目。我正在尝试让 movieClip cta 充当按钮,一旦鼠标悬停在其上就可以播放 this.cta.gotoAndPlay(1);。我正在使用 Flash Canvas 中建议的片段中的代码,但在鼠标悬停时出现以下错误:TypeError: this.cta is undefined 那么如何从该函数内部调用 cta

仅供参考,alert 在下面的代码中起作用(当鼠标悬停在 MC 上时),并且 this.cta.gotoAndPlay(1); 单独放置在时间轴中在此代码块之外时也起作用。

这是代码段中建议的 javascript flash(canvas)。

    var frequency = 3;
    stage.enableMouseOver(frequency);
    this.cta.addEventListener("mouseover", fl_MouseOverHandler);

    function fl_MouseOverHandler()
    {
        alert("Moused over");
        this.cta.gotoAndPlay(1);
    }

这是旧的 AS3。

cta.onRollOver = function(){
this.gotoAndPlay("start");

你的事件侦听器没有正确设置鼠标事件应该是这样的:

this.cta.addEventListener(MouseEvent.ROLL_OVER, fl_MouseOverHandler);

除非您正在收听另一个 customEvent,否则您需要将其定向到正在收听事件的位置。

还要指出,如果您正在查看同一影片剪辑中的某些内容,只要它在同一影片剪辑中具有实例名称,您就不需要在开头放置 this 它可以是:

cta.addEventListener(MouseEvent.ROLL_OVER, fl_MouseOverHandler);

我明白了。我在 EventListener 中的 fl_MouseOverHandler 末尾添加了 .bind(this)。它对我有用。

var frequency = 100;
stage.enableMouseOver(frequency);

this.cta.addEventListener("mouseover", fl_MouseOverHandler.bind(this));

function fl_MouseOverHandler()
{

   this.cta.gotoAndPlay(1);
}