Почему 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
Цвета нарисованы правильно. Есть ли объяснение этому? И как мне их покрасить правильно?
Спасибо!