0

我想将纹理应用于透明 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);


我怎样才能做到这一点?谢谢。

在此处输入图像描述

4

2 回答 2

1

我个人认为这个工作/问题会更好地处理 BitmapData 类。例如,编写一个算法循环遍历所有图像像素,使用 getPixel() 查看像素是否透明,然后使用 setPixel() 填充图像像素(如果适用)。使用 bitmapdata 类也将允许一些灵活性,例如选择在“填充”目标图像时使用图像的哪个部分。希望这会有所帮助。

于 2012-06-09T12:01:10.863 回答
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;
}

来源:http ://www.webverwirklichung.com/en/blog/programming/flex/creating-hitarea-png-image-transparent-alpha-regions-flex

于 2012-06-14T16:24:23.567 回答