我试图使用“ExternalInterface.call()”来调用一个返回画布内容的javascript函数。但是,对于相对较小的画布(256x256),这非常缓慢(大约2秒),看起来是因为参数/返回值的编组。如何高效地将html5画布的内容导入到Flash中?
即使我将画布数据分解为更小的块,正如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
任何想法,将不胜感激。谢谢!
前段时间,我写了[flashcam](http://code.google.com/p/flashcam/)在Flash上捕捉网络摄像头视频,并使用JavaScript在HTML5画布上绘制了它。经过一些测试后,我终于使用了一个复杂的模式,用逗号隔开一串连续的像素差值,并使用基数36进行编码。检查代码时,不要过于强硬地颠倒过程。 – 2012-05-03 14:38:15
@JuanMellado,谢谢你的提示。当然,对图像数据进行编码的方式会产生巨大的差异,字符串是最好的选择,因为最终所有内容都以XML格式传递。我最终使用了PNG压缩+ Base64编码,这可以通过画布函数'canvas.toDataURL('image/png')'非常有效地完成。与将图像数据作为像素或字节数组传递(这涉及客户端上的每个像素的__flash__toXML()调用)相比,该性能提高了一些数量级。也许我应该张贴这个答案,不确定,我是新来的。 – elyuro 2012-05-16 15:39:42
太好了。是的,然后回答你自己的问题。 – 2012-05-16 16:38:51