Почему Graphics.drawRect рисует два квадрата одного цвета, когда я спрашиваю разные цвета?

Так что у меня есть проблема с классом графики Flash. Рассмотрим этот код (я использую 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

Теперь, если я создам два квадрата рядом, один красный и один зеленый, в следующем порядке:

a = CreateSolid(new FlxPoint(50, 50), 0xff0000);
b = CreateSolid(new FlxPoint(50, 50), 0x00ff00);
b.x += 50
//draw a & b

Вы ожидаете, что две коробки будут окрашены правильно. Однако для меня они оба зеленые. Это было странно для меня. Даже незнакомец: если я сделаю один квадрат другого размера (даже немного):

a = CreateSolid(new FlxPoint(50, 50), 0xff0000);
b = CreateSolid(new FlxPoint(51, 50), 0x00ff00);
b.x += 50
//draw a & b

Цвета нарисованы правильно. Есть ли объяснение этому? И как мне их покрасить правильно?

Спасибо!

0 ответов

Другие вопросы по тегам