【问题标题】:HaxeFlixel: Overlaying Graphics into Single SpriteHaxeFlixel:将图形叠加到单个 Sprite 中
【发布时间】:2018-06-25 17:01:36
【问题描述】:

我有代码通过拉动每个单独的身体/服装项目并以特定顺序覆盖它来生成玩家头像精灵表。 本质上,我是在尝试通过将衣物叠放在一起将它们组合成一个整体。

但最终输出的只是最后一件画出来的衣服。

这是我用来做这件事的两段代码:

public function new(_username:String) 
{
    super();

    itemArray = new Array<String>();
    itemArray[0] = "Body";
    itemArray[1] = "Shoes";
    this.pixels = new BitmapData(Std.int(itemRect.width), Std.int(itemRect.height));

    for (itemName in itemArray)
    {
        //this.pixels.draw(prepareItem(itemName).pixels);
        var itemSprite:FlxSprite = prepareItem(itemName);
        stamp(itemSprite);
    }
}

private function prepareItem(assetName:String):FlxSprite
{
    var assetSprite:FlxSprite = new FlxSprite();
    assetSprite.loadGraphic("assets/images/" + assetName + ".png");

    assetSprite.pixels.threshold(assetSprite.pixels, itemRect, new Point(0, 0), "==", 0xFF00FF00);
    assetSprite.pixels.threshold(assetSprite.pixels, itemRect, new Point(0, 0), "==", 0xFFFF0000);

    return assetSprite;
}

如您所见,我尝试使用draw() 将像素绘制到现有的BitmapData 上,并且我还尝试标记从衣服图像生成的精灵。

我附上一个例子来阐明我的目标。注意鞋子是如何在身体上分层的。但是按照我目前的代码,鞋子完全取代了身体。

【问题讨论】:

    标签: flash sprite haxe openfl haxeflixel


    【解决方案1】:

    但最终输出的只是最后一件画出来的衣服。

    使用您的代码,我实际上看到两个资产被叠加 - 我猜根据您使用的资产,这可能并不明显。

    解决方法很简单:您需要在 stamp() 调用中偏移后续精灵,例如如果你想垂直堆叠资产,像这样:

    var currentY = 0;
    for (itemName in itemArray)
    {
        var itemSprite:FlxSprite = prepareItem(itemName);
        stamp(itemSprite, 0, currentY);
        currentY += Std.int(itemSprite.height);
    }
    

    【讨论】:

    • 您好,谢谢您的回答。但我不想将它们垂直堆叠,我只是想将它们叠加成一张纸。对于一个不清楚的问题,这对我不利。
    • 您能否共享两个输入图像,以便轻松复制?
    • 是的,我一定会这样做的。
    • 谢谢,这很有帮助 - 我仍然不是 100% 清楚问题是什么。使用这些图像,结果看起来就像您发布的结合了身体和鞋子的图像 (i.stack.imgur.com/Hg4Y2.png)。这不是想要的结果吗?
    • 也许由于某些原因,您的项目中没有包含在您的问题中的不相关代码导致您得到不同的结果?这是一个对我来说似乎工作正常的完整项目的 .zip:filebin.net/48wy41mcpcb1d7o3
    猜你喜欢
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 2015-03-02
    • 1970-01-01
    • 2012-03-14
    相关资源
    最近更新 更多