Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript getPixel32不准确_Actionscript_Actionscript 2 - Fatal编程技术网

Actionscript getPixel32不准确

Actionscript getPixel32不准确,actionscript,actionscript-2,Actionscript,Actionscript 2,为什么getPixel32的结果与设置值的结果不同,如何解决这个问题 编辑:getPixel是精确的,但没有get/setPixel32所具有的额外位。。。我希望每个像素有更多的数据。您正在对字符串进行Base64编码,以将其存储在位图数据中。我希望你不知道,或者你感到羞耻 无论如何,我看到的是: 首先,如果您以字符串键入col,您将在setPixel32上得到一个编译错误,因为它需要一个uint 现在,我们可以忽略所有的循环和十六进制字符串,得到一些简单的代码来重现这个问题 0x5632686

为什么getPixel32的结果与设置值的结果不同,如何解决这个问题


编辑:getPixel是精确的,但没有get/setPixel32所具有的额外位。。。我希望每个像素有更多的数据。

您正在对字符串进行Base64编码,以将其存储在位图数据中。我希望你不知道,或者你感到羞耻

无论如何,我看到的是:

首先,如果您以
字符串键入
col
,您将在
setPixel32
上得到一个编译错误,因为它需要一个
uint

现在,我们可以忽略所有的循环和十六进制字符串,得到一些简单的代码来重现这个问题

0x56326868 > 0x56326868
0x64434270 > 0x64424270
0x63794230 > 0x63794331
...
通过使用int文本,我们可以看到这不是类型强制的问题,而是BitmapData内部的问题。这是有意义的,因为BitmapData旨在存储图形数据,所以以图形相似但不精确的方式存储图形是很好的

你可能在Flash中看到了预乘alpha的副作用。这也解释了为什么
getPixel
setPixel
没有任何问题

您可以在此处阅读更多信息:


那么如何解决这个问题呢使用正确的数据类型。一个
ByteArray
被设计用来存储二进制数据。

事实上,我很惭愧。这种疯狂的原因是嵌入了一个非常大的文本文件,其中包含UTF-8字符,如果以正常方式添加,通常会使编译器崩溃(它绝对需要嵌入)。如果这真的是AS3,我会使用一个ByteArray和一个更优雅的解决方案,而且我有这种奢侈。根据您的回答,我理解由于预乘alpha,get/setPixel32没有解决方案。感谢您抽出时间来回答一个关于一种不推荐的语言的问题。哈哈,如果您仅限于AS2,现在就更有意义了。在这种情况下,我想
getPixel
是一个合理的解决方案。
0x56326868 > 0x56326868
0x64434270 > 0x64424270
0x63794230 > 0x63794331
...
var bitmapData:BitmapData = new BitmapData(1, 1);
bitmapData.setPixel32(0, 0, 1682129520);
trace(bitmapData.getPixel32(0, 0));