javascript - 将 as3 btn 代码转换为 Javascript

标签 javascript html actionscript-3 html5-canvas flash-cc

我正在尝试使用 javascript 将 flash as3 文件转换为 canvas html5 文档。

我如何转换下面的代码?

nex.addEventListener(MouseEvent.CLICK, onClickHandler);

function onClickHandler(myEvent:MouseEvent)
{
    SoundMixer.stopAll();
    MovieClip(parent).nextFrame();
}

我的 JavaScript 尝试现在正在运行。

this.nex.onClick = function(){

 exportRoot.play();

}

感谢您的帮助!

最佳答案

我并不是想迂腐,但你的问题可能不像将 ActionScript 3.0 转换为 JavaScript 那么简单。 AS3 在很大程度上是 JavaScript 的超集(请参阅 ECMAcSript 4 ),因此将“down”转换为 JavaScript 很容易:

nex.addEventListener(MouseEvent.CLICK, onClickHandler);

function onClickHandler(myEvent)
{
    SoundMixer.stopAll();
    MovieClip(parent).nextFrame();
}

看起来几乎一样,对吧?您刚刚删除了 myEvent 上的 MouseEvent 类型声明,因为类型声明是 ECMAScript 4 的一项功能,从未进入 JS(遗憾的是)。

真正的问题是浏览器 API 和 Flash Player API 非常不同。即使它们可能相似,它们在所有浏览器中也不一定相似。公平地说,我认为这确实是您最初的问题,我只是想指出前面的道路涉及了解 Flash Player 功能和浏览器功能之间的差异,因为这就是大部分工作的所在。语法的实际转换应该不会太难。

回到您的示例,需要指出以下几点差异:

1) 同时 addEventListener()是一种有效的浏览器方法(与评论者所说的相反),它在 IE8 等旧版浏览器中不受支持。在这种情况下,您可以使用 attachEvent(),并且作为最后的后备,您可以使用 DOM 回调 onClickMore explanation here.

2) 虽然 MouseEvent 在浏览器中以一种或另一种形式存在,但 JS 中没有静态常量,因此您不会找到像 MouseEvent.CLICK 定义的东西通过浏览器。相反,您只需使用字符串“click”

3) SoundMixer 是 Fl​​ash Player 的一项功能。它在浏览器中最接近的等效项将是 HTML5 audio 。这里有很多差异,在浏览器中处理音频并不容易,而且您根本不具备与 Flash Player 声音 API 相同的功能。我会寻找一个使浏览器音频更易于使用的库。

4) MovieClip 是 Fl​​ash Player 的一项功能。浏览器中没有类似的功能。对于如何在浏览器中重新创建类似时间线的内容,这里确实没有简单的答案,但是像 CreateJS 这样的库。 (由 Flash 用户创建)或类似 Adobe Edge Animate 的工具,或使用 Adobe Flash Pro's own HTML output features可能会帮助您为浏览器重新创建内容。

编辑:啊哈,我不清楚你的问题,但既然你标记了这个[flash-cc],听起来你已经在使用 Adob​​e Flash Pro CC 的 HTML Canvas 文档了?在这种情况下,上述所有内容仍然适用,但此外您将能够使用 Flash Pro 的时间轴 JS 库。这是 CreateJS 和 Adob​​e 创建的一些额外内容的组合,用于模拟浏览器中的许多 Flash Player 时间线行为,浏览器没有内置时间线。有关这方面的更多信息,我将从这里开始:https://helpx.adobe.com/flash/using/creating-publishing-html5-canvas-document.html

关于javascript - 将 as3 btn 代码转换为 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28901039/

相关文章:

javascript - 如何将数组属性写入 DOM 元素数组

javascript - Laravel - 在数据库中存储多个复选框表单值

actionscript-3 - 衰落的声音不起作用

apache-flex - 为什么要使用像 Cairngorm 或 Mate 这样的 Flex 框架?

java - BlazeRS:将 ActionScript 类型类(对于嵌入图像)转换为 Java

javascript - Nodejs mysql 异步/等待函数

javascript - 完全显示 Three.js sprite 和 PlaneGeometry 图像,无论其大小

javascript - jQuery中的宽度,innerWidth和outerWidth,height,innerHeight和outerHeight有什么区别

html - 为什么我的 bootstrap inputs 比他们的 parent div 大

javascript - 将数据从主页传递到模态内的 php 查询