【问题标题】:Flash HTML5 canvas fl_MouseOverHandlerFlash HTML5 画布 fl_MouseOverHandler
【发布时间】:2014-07-12 22:02:27
【问题描述】:

我对 Flash Actionscript 和 Javascript 还很陌生,但如果可能的话,我希望在这里能得到一些帮助。我正在使用画布元素创建一个网站,画布上有一个图像,当您滚动该图像的一部分时,会播放一个电影剪辑,当您单击它时,它会将您带到另一个页面。 我正在使用 flash 来创建它,但我很难弄清楚出了什么问题。我正在使用代码 sn-ps 添加事件处理程序,但我没有播放影片剪辑。页面链接有效,但鼠标悬停事件无效。

另外,我的影片剪辑包含许多层,这会有所不同吗?

任何帮助将不胜感激。

/* Stop a Movie Clip*/
this.movieClip_11.stop();

/* Mouse Over Event*/
var frequency = 3;
stage.enableMouseOver(frequency);
this.movieClip_11.addEventListener("mouseover", fl_MouseOverHandler_32);

function fl_MouseOverHandler_32()
{
this.movieClip_11.play();
}

/* Play a Movie Clip*/

/* Click to Go to Web Page*/
this.movieClip_11.addEventListener("click", fl_ClickToGoToWebPage_15);

function fl_ClickToGoToWebPage_15() {
window.open("___", "_self");
}

【问题讨论】:

  • 所以你使用 Flash 导出为 HTML5?
  • 是的,我正在使用 Flash CC
  • 首先你必须删除"this"movieclip_11.play();你不需要“这个”。试试movieClip_11.addEventListener("click", fl_ClickToGoToWebPage_15);
  • 感谢 Careen,但是当我删除“this”并测试文件时,屏幕出现空白。该网页的链接可以正常工作,我的主要问题是翻转。当我翻转它时,我无法让它播放影片剪辑。

标签: javascript html actionscript-3 flash canvas


【解决方案1】:

问题在于 javascript 处理作用域(即 this)的方式与 ActionScript 不同。在 AS3 中,您可以假设事件处理程序维护其包含对象的范围。在 JS 中,情况并非如此。这里有几个解决这个问题的方法:

  1. 您可以使用bind method 将范围传递给事件处理程序。例如,该技术在 Flash 中的代码 sn-ps 中用于 HTML5 画布/时间线导航/单击以转到帧和播放。

    this.movieClip_11.stop();
    var frequency=3;
    stage.enableMouseOver(frequency);
    this.movieClip_11.addEventListener("mouseover",         
        fl_MouseOverHandler_32.bind(this));
    
    function fl_MouseOverHandler_32()
    {
        this.movieClip_11.play();
    }
    
  2. easeljs(Flash 用于生成 HTML 画布内容的 javascript 库)中可用的替代解决方案是通过调用名为 on 而不是 addEventListener 的 EventDispatcher 方法来实现的。 easeljs docs 现在事件处理程序假定调度事件的对象的范围。

    this.movieClip_11.stop();
    var frequency=3;
    stage.enableMouseOver(frequency);
    this.movieClip_11.on("rollover",fl_MouseOverHandler_32);
    
    function fl_MouseOverHandler_32()
    {
        this.play();
    }
    

【讨论】:

  • 非常感谢克雷格,这很有效,也感谢你解释得这么清楚,现在对我来说更有意义了。
  • ...另外,还有一个简单的问题,鼠标移出时是否可以倒退到前一帧?
  • 当然,使用 mouseout 事件和 gotoAndStop 方法。你可以在代码 sn-ps 中找到这些。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2012-05-06
  • 2015-03-24
  • 2016-04-29
  • 2012-05-15
相关资源
最近更新 更多