所以我对 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
现在,如果我并排创建两个正方形,一个红色和一个绿色,按以下顺序:
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
颜色绘制正确。对此有解释吗?以及如何正确着色它们?
谢谢!