gpt4 book ai didi

flash - HaxeFlixel:将图形叠加到单个 Sprite 中

转载 作者:行者123 更新时间:2023-12-04 09:43:46 25 4
gpt4 key购买 nike

我有代码通过拉动每个单独的 body /服装项目并按特定顺序覆盖它来生成玩家头像 Sprite 表。 从本质上讲,我试图通过将它们相互重叠来将衣服床单组合成一个整体。

但最终的输出只是绘制的最后一件衣服。

这是我用来执行此操作的两段代码:

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 上绘制像素,而且我也在尝试标记从衣服图像生成的 Sprite 。

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

Example

Body
Shoes

最佳答案

But the final output is ONLY the last item of clothing drawn.



使用您的代码,我实际上看到两个 Assets 相互叠加 - 我想这可能不会引起注意,具体取决于您使用的 Assets 。

修复方法很简单:您需要在 stamp() 中抵消后续 Sprite 。打电话,例如如果你想垂直堆叠 Assets ,就像这样:
var currentY = 0;
for (itemName in itemArray)
{
var itemSprite:FlxSprite = prepareItem(itemName);
stamp(itemSprite, 0, currentY);
currentY += Std.int(itemSprite.height);
}

关于flash - HaxeFlixel:将图形叠加到单个 Sprite 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51028511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com