Flash の Graphics クラスに問題があります。このコードを検討してください (私は Flixel を使用しています):
public static function CreateSolid(dimensions:FlxPoint, color:uint): FlxSprite {
var sprite:FlxSprite = new FlxSprite();
sprite.makeGraphic(dimensions.x, dimensions.y, 0xffffffff);
var gfx:Graphics = FlxG.flashGfx;
gfx.clear();
gfx.beginFill(color, 1);
gfx.drawRect(0, 0, sprite.frameWidth, sprite.frameHeight);
gfx.endFill();
sprite.pixels.draw(FlxG.flashGfxSprite);
sprite.dirty = true;
return sprite;
}
コードが行うことは、入力引数に従って単色に着色された新しい FlxSprite オブジェクトを返すことだけです。もちろん、これは最善の方法ではありません。私が持っている別のコードから単純化しただけです。
この方法を使用して、真っ赤な 50x50 の正方形を作成すると、問題なく動作します。
a = CreateSolid(new FlxPoint(50, 50), 0xff0000);
//draw a
ここで、赤と緑の 2 つの正方形をこの順序で並べて作成すると、次のようになります。
a = CreateSolid(new FlxPoint(50, 50), 0xff0000);
b = CreateSolid(new FlxPoint(50, 50), 0x00ff00);
b.x += 50
//draw a & b
2 つのボックスが正しく色付けされていることを期待できます。しかし、私にとっては、どちらも緑色です。これは私には奇妙でした。さらに奇妙です: 1 つの正方形を別のサイズにすると (少しでも):
a = CreateSolid(new FlxPoint(50, 50), 0xff0000);
b = CreateSolid(new FlxPoint(51, 50), 0x00ff00);
b.x += 50
//draw a & b
色は正しく描画されます。これに説明はありますか?そして、どうすればそれらを正しく着色できますか?
ありがとう!