5

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

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

4

1 回答 1

1

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

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

2) 看看能不能写一个可以连接Flash的LocalConnection的HTML5 WebSocket。这是一个不小的壮举。这家伙似乎已经破解了 C 中的那个坚果。他制作了一个可以“说”LocalConnection 的应用程序。

于 2012-05-16T15:39:20.970 回答