将 as3 btn 代码转换为 Javascript
Converting as3 btn code to Javascript
我正在尝试将 Flash as3 文件转换为 canvas html5 doc javascript。
如何转换下面的代码?
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()
is a valid browser method (contrary to what a commenter said) it isn't supported in older browsers such as IE8. In that case you can use attachEvent()
, and as a final fallback you can use the DOM callback onClick
. More explanation here.
2)虽然MouseEvent
在浏览器中以一种或另一种形式存在,但JS中没有静态常量,所以你不会找到浏览器定义的MouseEvent.CLICK
之类的东西。相反,您将只使用字符串 "click"
.
3) SoundMixer
是 Flash Player 的一项功能。它在浏览器中最接近的等效项是 HTML5 audio。这里有很多不同之处,在浏览器中制作音频并不容易,而且您根本不会拥有与 Flash Player 声音 API 相同的功能。我会寻找一个使浏览器音频更易于使用的库。
4) MovieClip
是 Flash Player 的一项功能。浏览器中没有近似的等价物。对于如何在浏览器中重新创建类似时间轴的内容,这里确实没有简单的答案,但是像 CreateJS (created by Flash users) or tools like Adobe Edge Animate, or using Adobe Flash Pro's own HTML output features 这样的库可能会帮助您为浏览器重新创建内容。
编辑: 啊哈,我不清楚你的问题但是因为你标记了这个 [flash-cc] 听起来你已经在使用 Adobe Flash Pro CC HTML Canvas 文件?在这种情况下,上述所有内容仍然适用,但除此之外,您还可以使用 Flash Pro 的时间轴 JS 库。这是 CreateJS 和 Adobe 创建的一些额外内容的组合,用于模拟浏览器中的许多 Flash Player 时间轴行为,它没有内置时间轴。有关这方面的更多信息,我将从这里开始:https://helpx.adobe.com/flash/using/creating-publishing-html5-canvas-document.html
这是 html5 flash 项目中现在用于按钮的正确代码
this.Next.addEventListener("click", fl_ClickToGoToAndStopAtFrame_7.bind(this));
function fl_ClickToGoToAndStopAtFrame_7() {
this.gotoAndStop(1);
}
我正在尝试将 Flash as3 文件转换为 canvas html5 doc javascript。
如何转换下面的代码?
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()
is a valid browser method (contrary to what a commenter said) it isn't supported in older browsers such as IE8. In that case you can use attachEvent()
, and as a final fallback you can use the DOM callback onClick
. More explanation here.
2)虽然MouseEvent
在浏览器中以一种或另一种形式存在,但JS中没有静态常量,所以你不会找到浏览器定义的MouseEvent.CLICK
之类的东西。相反,您将只使用字符串 "click"
.
3) SoundMixer
是 Flash Player 的一项功能。它在浏览器中最接近的等效项是 HTML5 audio。这里有很多不同之处,在浏览器中制作音频并不容易,而且您根本不会拥有与 Flash Player 声音 API 相同的功能。我会寻找一个使浏览器音频更易于使用的库。
4) MovieClip
是 Flash Player 的一项功能。浏览器中没有近似的等价物。对于如何在浏览器中重新创建类似时间轴的内容,这里确实没有简单的答案,但是像 CreateJS (created by Flash users) or tools like Adobe Edge Animate, or using Adobe Flash Pro's own HTML output features 这样的库可能会帮助您为浏览器重新创建内容。
编辑: 啊哈,我不清楚你的问题但是因为你标记了这个 [flash-cc] 听起来你已经在使用 Adobe Flash Pro CC HTML Canvas 文件?在这种情况下,上述所有内容仍然适用,但除此之外,您还可以使用 Flash Pro 的时间轴 JS 库。这是 CreateJS 和 Adobe 创建的一些额外内容的组合,用于模拟浏览器中的许多 Flash Player 时间轴行为,它没有内置时间轴。有关这方面的更多信息,我将从这里开始:https://helpx.adobe.com/flash/using/creating-publishing-html5-canvas-document.html
这是 html5 flash 项目中现在用于按钮的正确代码
this.Next.addEventListener("click", fl_ClickToGoToAndStopAtFrame_7.bind(this));
function fl_ClickToGoToAndStopAtFrame_7() {
this.gotoAndStop(1);
}