如何将纹理应用于透明png?动作3

时间:2012-06-08 13:37:53

标签: actionscript-3 flash flex flash-builder

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


我该怎么做? 感谢。

enter image description here

2 个答案:

答案 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;
}

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