【问题标题】:Image format with Subimages or layers带有子图像或图层的图像格式
【发布时间】:2016-02-23 16:06:43
【问题描述】:

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

希望这张图对你有一点帮助:

【问题讨论】:

  • 你可以使用 swf 来做到这一点,只需将其添加为一个带有子符号的影片剪辑符号 - 加载 swf 后,你将能够通过它们在 as3 中的实例名称来访问它
  • @MartonPallagi 。嗯,我喜欢你的想法,我想我不使用 adobe flash 作为它的试用软件,而且正如许可证所说,我只能在我付费后才能将它用于商业用途。这就是为什么我选择 Krita 进行绘图(与 ilustrator 基本相同)。好的,所以解决方案很好,但仍然存在 1 个问题。有没有其他方法可以在没有 Flash 工具的情况下制作 movie_clip,例如其他免费软件或类似的东西。

标签: actionscript-3 sprite image-formats


【解决方案1】:

我认为最简单的方法是将文件保存为 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;

【讨论】:

    猜你喜欢
    • 2021-11-12
    • 2014-10-28
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 2019-12-28
    • 2019-01-07
    相关资源
    最近更新 更多