我想将纹理应用于透明png(位图),但我不想包含透明区域。纹理仅覆盖非透明面。我的png也是3D。
图片如下所示。颜色转换很好地改变了非透明面,但我不知道如何改变纹理
这是代码;
var ss:Sprite=new Sprite();
ss.graphics.beginBitmapFill(exampleModel);
ss.graphics.drawRect(0, 0, 200, 200);
ss.graphics.endFill();
container.addChild(ss);
我该怎么做? 感谢。
答案 0 :(得分:1)
我个人认为这个工作/问题可以更好地处理BitmapData类。 例如。编写一个循环遍历所有图像像素的算法,使用getPixel()查看像素是否透明,然后使用setPixel()填充图像像素(如果适用)。 使用bitmapdata类也可以提供一些灵活性,例如选择“填充”时要使用的图像部分。目标图像。希望这可以提供帮助。
答案 1 :(得分:0)
private function createHitArea(bitmapData:BitmapData, grainSize:uint=1):Sprite{
var _hitarea:Sprite = new Sprite();
_hitarea.graphics.beginFill(0x000000, 1.0);
for(var x:uint=0;x<bitmapData.width;x+=grainSize) {
for(var y:uint=grainSize;y<bitmapData.height;y+=grainSize) {
if(x<=bitmapData.width && y<=bitmapData.height && bitmapData.getPixel(x,y)!=0) {
_hitarea.graphics.drawRect(x,y,grainSize,grainSize);
}
}
}
_hitarea.graphics.endFill();
return _hitarea;
}