【发布时间】:2023-04-07 08:07:02
【问题描述】:
在 Flash Player 或 AIR 中是否有 同步 loadBytes() 方法?
更多信息:
我正在尝试加载一个字节数组并将其同步转换为位图数据(不是异步)。它不能是异步的。将 PNG 编码为 base64 数据。
现在我正在从 base64 解码为字节数组,然后尝试将该字节数组解码为位图数据。如果没有加载器,就无法从字节数组到位图数据,loader.loadBytes() 是异步的。
如果有一个类,我想我可以将字节数组传递给 JavaScript,但这是最后的手段。
仅供参考,我正在运行 AIR 23。
似乎提到了here 的同步解码,但它似乎不起作用。好吧,看来我还需要添加事件侦听器并等待一帧:
让我再说一遍,它不能是异步的。我的问题是这是否可能。
这是我对数据进行编码的示例代码。我正在使用这个call:
var base64ImageData:String = DisplayObjectUtils.getBase64ImageDataString(displayObject, DisplayObjectUtils.PNG, null, true);
我想在下一行对其进行解码,但loadBytes() 似乎不允许这样做。我正在使用这个call:
var bitmapData:BitmapData = DisplayObjectUtils.getBitmapDataFromBase64(bitmapDataString);
让我再说一遍,我正在寻找一个同步动作。它不能是异步的。我的问题是这是否可能。
【问题讨论】:
-
你的意思是你必须在
loader.loadBytes()完成后严格地继续你的代码执行? -
是的。我不能使用异步,因为它之后的代码直接依赖它。
-
为什么不能异步?这很可疑——实际上 as3 中的所有内容都是异步的。
-
我同意@Brian。对设备 RAM 中保存的字节进行异步解码有什么不好?尝试更好地解释你真正的问题 / 最终目标,否则你的担心会显得多余。
-
“我正在尝试加载一个字节数组并将其同步转换为位图数据” 那么您希望接收到的总字节数中的多少是可见的?例如:如果将 50% 的字节传递给
loader.loadBytes(),它会生成一半图像?如果是,那么为什么要涉及 base64,因为这会迫使您正确解码完整的 base64 字节,然后才能从中提取 PNG 数据。解码前 10% 的 base64 不会给出前 10% 的 PNG 字节,因此您不能将这些解码后的字节传递给loader期待 10% 的图像....
标签: javascript actionscript-3 flash air