AS3中bitmapData.getPixel32获取PNG图片颜色

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AS3中bitmapData.getPixel32获取PNG图片颜色相关的知识,希望对你有一定的参考价值。

bitmapdata.setPixel(i,j,bitmap.bitmapData.getPixel32(int(i*(bitmap.width/200)),int(j*(bitmap.height/bitmaph))))
这是个for循环 PNG图片的像素,修改过后用PNGEncoder.as转换后。保存的图片 好像不是 透明的了。。透明处 变成黑色的了。。问题出在哪里呢。

两处可能性:
1、没有将bitmapdata设置成透明的。

2、bitmap.bitmapData.getPixel32(int(i*(bitmap.width/200)),int(j*(bitmap.height/bitmaph)))计算错误。可能已超出原图片的范围,所以获取到的值是0,即是黑色。

建议检测方法:
1、确认bitmapdata已设置成透明,new BitmapData(width,height,true,0);//后面两个参数,true,0是设置透明的。

2、setPixel时,先将原图片的像素全部放到另一个BitmapData中,即相当于复制一次图片,查看保存是否带有黑色。此时,可以将图片添加到舞台中查看一下,确保未保存时,图片是正常的。如果检测正常,那么就可以肯定错误是第二个可能性导致的,此时,检测算法。
否则,就是保存的代码导致问题,故需要检测保存代码。

由于算法比较复杂,且没有具体例子,故无法协助检测。
参考技术A 请使用setPixel32,而不是setPixel,setPixel不带透明,setPixel32带透明

在 as2 中确定 event.target

【中文标题】在 as2 中确定 event.target【英文标题】:determining event.target in as2 【发布时间】:2012-08-21 22:46:34 【问题描述】:

如何在 as2 中检测在哪个movieClip 上触发了事件。我已经列出了重复的影片剪辑,并希望在每个影片剪辑上添加点击事件,并区分哪个影片剪辑事件有 fird。我知道 as3 中的解决方案,但需要 as2 解决方案。请帮忙。

【问题讨论】:

【参考方案1】:

在 AS2 中,当您使用 myButton.onRelease = myFunction; 分配函数时,您可以在函数内简单地使用 this 引用调用者:

function myFunction() 
 trace(this._name);


myButton.onRelease = myFunction; // will trace "myButton" when you click it

【讨论】:

以上是关于AS3中bitmapData.getPixel32获取PNG图片颜色的主要内容,如果未能解决你的问题,请参考以下文章

flash as3.0中int和Number的区别

AS3.0的Socket通讯发送固定字符串(指定编码)

AS3:如何在 AS3 类中有效地存储平铺地图编辑器的数据

在 AS3 中获取翻转时数据网格组件的索引

Flash 的 GUI 框架(as3)[关闭]

Flex Builder AS3 项目迁移