如何有效地将html5画布的内容导入flash?

时间:2012-04-25 19:46:51

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

我尝试使用“ExternalInterface.call()”来调用返回画布内容的javascript函数。但是,对于相对较小的画布(256x256),这非常慢(大约2秒),似乎是因为参数/返回值的编组。

即使我将画布数据细分为较小的块,正如Brad Neuberg在一篇较旧的帖子(2006年)中提出的那样:http://codinginparadise.org/weblog/2006/02/how-to-speed-up-flash-8s.html,我仍然表现不佳。无论如何,块的大小不应该是Flash 9的问题。

我想我仍然可以尝试覆盖执行编组/评估参数的Flash javascript函数,但这似乎非常复杂,我想在尝试之前知道我是否遗漏了更简单的东西。

我还尝试了一种较旧的方式来通过以下方式传达flash和javascript:

var req : URLRequest = new URLRequest("javascript:getImage()"); 
var loader : Loader = new Loader();
loader.load(req);

其中“getImage()”是一个javascript函数,它将画布的内容作为图像返回。但是这会引发某种安全违规错误,因为不允许将浏览器脚本用作目标URL,除非使用“navigateToURL()”而不是“Loader.load()”函数。不幸的是,前者没有返回值。

我也看过一些使用“com.macromedia.javascript.JavaScriptProxy”类的旧代码,但我还没有对它进行测试,它似乎在Flash 11中不可用。

任何想法都将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

我可以想到两个选择:一个很容易,一个很难。

1)往返服务器。它可能同样缓慢但不容易锁定Flash或导致脚本超时。

2)看看你是否可以编写一个可以连接到Flash的LocalConnection的HTML5 WebSocket。这不是一件小事。 This guy似乎已经破解了C中的那个坚果。他制作了一个可以“说”LocalConnection的应用程序。