绘制自定义组件

Noelicus

这是两个问题:
1)对于使用代号的简单2D图形游戏,最好的方法paint成员是否是Component其中之一?还是我什至不应该尝试?
2)为什么下面的代码Component绘制my以便立即将其擦除?

我这样初始化我的组件:

protected void StartGame()
{
    final Component newC = new PaintedComponent();

    Container mv = findContainerMainVisual();

    mv.addComponent(newC);
    mv.setShouldCalcPreferredSize(true);
    mv.animateLayout(200);
}

然后该组件将重写paint成员函数,如下所示:

public class PaintedComponent extends Component {
    private int nextColour;

    public PaintedComponent() {
        super();
        setSize(new Dimension(200,200));
        nextColour = 0x8f8f8f;
    }


    @Override
    public void paint(Graphics g) {
        super.paint(g); // I've tried without this, but it's the same
        g.setColor(0xffffff);
        g.fillRadialGradient(0xffffff, nextColour, 0,0,this.getWidth(), this.getHeight());
    }
}
Shai Almog

在最新一批的演示中查看Codename One中Poker演示,它采用了非常不同的方法,尽管覆盖油漆也可以很好地工作。

组件未显示的原因是因为当animateLayout()方法验证屏幕时,组件的大小为0。您应该将其放置在边框布局的中心(占用所有可用空间并禁用滚动),或者覆盖calcPreferredSize()以返回合理的大小。

我建议避免使用径向渐变,因为在某些平台上,它们的速度确实很慢。对性能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章