子图像或图层的图像格式

时间:2016-02-23 16:06:43

标签: actionscript-3 sprite image-formats

假设我有一个像adobe illustrator(目前指的是Krita软件)的绘画程序,让我们说iI制作了5层并画了一个简单的火柴人。一层是透明帆布,两层是两条腿,三层是身体,四只手和五个头。所有这些层组合成了一个火柴人(很好)。现在我将这张图片加载到actionscript3中。但是现在让我们说我想只移动10个像素的腿而不移动身体的其他部分。我无法做到这一点,我能尽可能地将整个火柴人移动10个像素。是否有一种格式可以保存整个图像,但也会指示5个子组(子图像,子数据......称之为你想要的),如腿,身体和其他?这样做的目的是,有时我想旋转所有火柴人,但有时我想只移动像腿一样的特定部位。或者唯一的方法是制作每个身体部位的4张照片并将它们逐个加载到as3中,然后组合成1个单独的火柴人?

我希望这张照片会对你有所帮助:

https://gyazo.com/ad6de45fdfdfc90b17b49db3c293c13b

1 个答案:

答案 0 :(得分:0)

我认为最简单的方法是以PSD格式保存文件。 as3中有一个PSD解析器:https://github.com/warrenseine/as3-psd-parser/

var psdParser :PSDParser = PSDParser.getInstance();
psdParser.parse(file.data); 

var layersLevel :Sprite = new Sprite();
var arr:Array = new Array();

for (var i : Number = 0;i < psdParser.allLayers.length; i++) {
    var psdLayerm :PSDLayer = psdParser.allLayers[i];
    var layerBitmap_bmp :BitmapData = psdLayer.bmp;
    var layerBitmap :Bitmap = new Bitmap(layerBitmap_bmp);
    layerBitmap.x = psdLayer.position.x;
    layerBitmap.y = psdLayer.position.y;
    layerBitmap.filters = psdLayer.filters_arr;
    layersLevel.addChild(layerBitmap);

    arr.push(layerBitmap);
}


// Move legs
arr[0].x += 10;