Actionscript 3 如何将纹理应用于透明png?行动脚本3

Actionscript 3 如何将纹理应用于透明png?行动脚本3,actionscript-3,flash,apache-flex,flash-builder,Actionscript 3,Flash,Apache 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

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

我该怎么做? 谢谢


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

这很有效

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;
}
私有函数createHitArea(bitmapData:bitmapData,grainSize:uint=1):Sprite{
var_hitarea:Sprite=新Sprite();
_hitarea.graphics.beginll(0x000000,1.0);
对于(变量x:uint=0;x