【发布时间】:2016-12-13 10:52:50
【问题描述】:
我正在尝试在我们的 UI 中添加“着火效果”。 我正在使用 BitmapData 和 PerlinNoise 以及其他一些方法来实现这一点。
当我对 BitmapData 所做的任何事情都会导致此错误时,问题就出现了:
ArgumentError: Error #2015: Argument error: Invalid BitmapData.
at effects::FireFX/updateBitmaps()...
像这样简单的事情会导致错误出现。
displayBmp = new BitmapData(200, 200, true, 0);
scratchBmp = displayBmp.clone();
就我而言,clone() 或 perlinNoise() 或 colorTransform.... 等函数会导致崩溃。
在 Animate CC 下调试/运行效果很好。
PD:发布到 Flash 10.3,使用 Scaleform:4.1.19
谢谢
【问题讨论】:
-
错误 2015 可能是由
BitmapData的宽度或高度为零引起的 -
检查是否内存不足。
-
不涉及Scaleform是否有效?仅使用 AS3 代码声明
var displayBmp : BitmapData;和var scratchBmp : BitmapData;然后我可以使用您显示的代码进行克隆而不会出现问题。甚至将scratchBmp.width跟踪为 200。也许您应该发布一个完整但最小的代码供我们测试/重新创建您的问题。 -
一切都可以在没有 scaleform 的情况下工作。 Width 和 Height 都经过了上面提到的测试,足以导致崩溃。
-
对不起哥们,我上次读得太快了。那就没有头绪了。如果这是我的问题,我会尝试示例
new BitmapData(200, 200, false, 0xFF0000);,以确保在您显示的transparency=true和0的颜色十六进制之间,它不会生成没有像素可克隆的空位图数据。至少在使用.clone之前尝试displayBmp.draw(something);。如果在.drawing 之后数据仍然无效,那么您在其他地方遇到了问题...