【发布时间】:2021-09-04 01:44:42
【问题描述】:
最终,我要做的是对我在运行时加载的一些位图应用伽马校正。我能够创建一个BitmapData 对象,然后从BitmapData 创建一个Bitmap,并且我能够使用addChild 将Bitmap 添加到舞台。到目前为止,一切都很好。但是,如果我尝试以任何方式更改 BitmapData(在创建 Bitmap 之前或之后),我会收到如下警告:
Warning: The method BitmapData::fillRect() is not implemented
Warning: The method BitmapData::paletteMap() is not implemented
Warning: The method BitmapData::clone() is not implemented
为了尽可能简化事情,让我们尝试在https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#paletteMap()运行示例代码
我创建了一个空白的 ActionScript 3 文档,按 F9 键,然后将此代码复制并粘贴到时间线的 Layer_1:第 1 帧上:
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;
var myBitmapData:BitmapData = new BitmapData(80, 80, false, 0x00FF0000);
myBitmapData.fillRect(new Rectangle(20, 20, 40, 40), 0x0000FF00);
var redArray:Array = new Array(256);
var greenArray:Array = new Array(256);
for(var i:uint = 0; i < 255; i++) {
redArray[i] = 0x00000000;
greenArray[i] = 0x00000000;
}
redArray[0xFF] = 0x0000FF00;
greenArray[0xFF] = 0x00FF0000;
var bottomHalf:Rectangle = new Rectangle(0, 0, 100, 40);
var pt:Point = new Point(0, 0);
myBitmapData.paletteMap(myBitmapData, bottomHalf, pt, redArray, greenArray);
var bm1:Bitmap = new Bitmap(myBitmapData);
addChild(bm1);
这些都是直接从示例中复制而来的。当我尝试运行它时,日志告诉我 fillRect 和 paletteMap 没有实现。我在 Animate 19 和 Flash Pro CS6 中进行了尝试,在这两个地方都获得了相同的结果。
知道我做错了什么吗?为什么BitmapData的方法没有实现,如何实现?
【问题讨论】:
-
好的,我将此代码示例复制粘贴到我的 CS6 中的空白 AS3 源代码中,它就可以正常工作(有一个小的红绿色彩色方块)。您可能应该引用完整的错误消息(带有 # 错误号)。在这一点上,我唯一的疯狂想法是 Flash EOL 会以某种方式影响您的结果。
-
感谢您查看@Organis 当您告诉我它对您有用时,我认为我尝试运行/测试文件的方式一定有问题。我一直在 Animate 中使用 Scaleform Launcher。我下载了 Flash Player 内容调试器,并用它测试了我发布的文件,一切似乎都在工作。不过,为了将来参考,是否有更好的方法来测试我的文件和/或获取完整的错误号? Scaleform Launcher 没有提供太多调试信息。
标签: actionscript-3 flash actionscript