0

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

色は正しく描画されます。これに説明はありますか?そして、どうすればそれらを正しく着色できますか?

ありがとう!

4

0 に答える 0