将as3 btn代码转换为Javascript

时间:2015-03-06 14:35:51

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

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

我如何在下面转换此代码?

nex.addEventListener(MouseEvent.CLICK, onClickHandler);

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

我的javascript尝试正在运行。

this.nex.onClick = function(){

 exportRoot.play();

}

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我不是想要迂腐,但你的问题可能不如将ActionScript 3.0转换为JavaScript那么简单。 AS3在很大程度上是JavaScript的超集(参见ECMAcSript 4),因此转换" down" JavaScript很简单:

nex.addEventListener(MouseEvent.CLICK, onClickHandler);

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

几乎看起来一样,对吗?您刚刚删除了MouseEvent上的myEvent类型声明,因为类型声明是一个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是Flash Player的一项功能。它在浏览器中最接近的等价物是HTML5 audio。这里有很多不同之处,在浏览器中进行音频操作并不容易,而且您只是不具备与Flash Player声音API相同的功能。我会寻找一个让浏览器音频更易于使用的库。

4)MovieClip是Flash Player的一项功能。浏览器中没有近似的等价物。关于如何在浏览器中重新创建类似时间轴的内容,以及CreateJS(由Flash用户创建)或Adobe Edge Animate等工具,或者像Adobe Flash Pro's own HTML output features这样的工具,这里真的没有简单的答案。使用https://helpx.adobe.com/flash/using/creating-publishing-html5-canvas-document.html可能会帮助您为浏览器重新创建内容。

编辑:啊哈,我的问题并不清楚,但是因为你标记了这个[flash-cc],听起来你已经在使用Adobe Flash Pro CC'的HTML Canvas文档?在这种情况下,上述所有内容仍然适用,但此外您还可以使用Flash Pro的时间线JS库。这是CreateJS和Adobe创建的一些额外的东西的组合,用于模拟浏览器中的许多Flash Player时间轴行为,这些行为没有内置时间轴。有关更多信息,我将从这里开始:{{ 3}}

答案 1 :(得分:-1)

以下是html5 flash项目中用于按钮的正确代码

this.Next.addEventListener("click", fl_ClickToGoToAndStopAtFrame_7.bind(this));

function fl_ClickToGoToAndStopAtFrame_7() {

    this.gotoAndStop(1);

}