我尝试使用“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中不可用。
任何想法都将不胜感激。谢谢!
答案 0 :(得分:1)
我可以想到两个选择:一个很容易,一个很难。
1)往返服务器。它可能同样缓慢但不容易锁定Flash或导致脚本超时。
2)看看你是否可以编写一个可以连接到Flash的LocalConnection的HTML5 WebSocket。这不是一件小事。 This guy似乎已经破解了C中的那个坚果。他制作了一个可以“说”LocalConnection的应用程序。