在一个图像文件中使用多个纹理

时间:2014-09-28 17:57:52

标签: textures sprite haxe texturepacker haxeflixel

在我的游戏中,我正在尝试在一个图像文件中使用包含所有GUI纹理的精灵表。但我不知道如何仅使用矩形定义的图像资源的一部分来创建精灵。

OBS:我不想使用Texture Packer,我有一个更简单的免费Texture Packer类程序,它将纹理捆绑在一个图像文件中,并在json文件中提供映射。我可以解析json,但是一旦我得到了定义单个纹理和工作表图像的矩形,我不知道如何处理它们。

2 个答案:

答案 0 :(得分:1)

根据Beeblerox的说法

在当前版本的flixel中你可以这样做:

var cached:CachedGraphics = FlxG.bitmap.add(Graphic); // where Graphic is the path to image in assets
var textureRegion:TextureRegion = new TextureRegion(cached, rect.x, rect,y, rect.width, rect.height, 0, 0, rect.width, rect.height); // where rect is the rectangular area you want to load into sprite
sprite.loadGraphic(textureRegion);

在下一个版本中,它将被改为:

var imageFrame:ImageFrame = ImageFrame.fromRectangle("path/to/image", rect);
sprite.frames = imageFrame;

答案 1 :(得分:0)

基本上你需要:

  • 创建一个新的 BitmapData 对象。
  • 在此对象上调用copyPixels(sourceBitmapData:BitmapData,sourceRect:Rectangle,destPoint:Point),其中sourceBitmapData是您加载的spritesheet BitmapData。
  • 从此BitmapData构建一个新的display.flash.Bitmap对象。
  • 调用addChild(bm),其中bm是您刚刚创建的位图,以便在您想要的容器中显示它。

见这里: