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

How to efficiently import the contents of an html5 canvas into flash?

本文关键字:导入 flash 有效地 html5      更新时间:2023-09-26

我尝试使用"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中不可用。

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

我可以想到 2 个选项:一个简单,一个困难。

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

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