我尝试使用“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 中不可用。
任何想法将不胜感激。谢谢!