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

现在,如果我并排创建两个正方形,一个红色和一个绿色,按以下顺序:

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

颜色绘制正确。对此有解释吗?以及如何正确着色它们?

谢谢!

4

0 回答 0