这是两个问题:
1) 是最重要的paint
的成员Component
使用代号为 1 的简单 2D 图形游戏的最佳方法是什么?或者我什至不应该尝试它?
2)为什么下面的代码会画出我的Component
只是立即删除它?
我像这样初始化我的组件:
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());
}
}
查看扑克演示 http://www.codenameone.com/3/post/2013/08/codename-one-article-in-sdj.html在最新一批演示中可以看到的 Codename One 中,它采用了一种非常不同的方法,尽管覆盖油漆也应该可以正常工作。
组件未显示的原因是,当 animateLayout() 方法验证屏幕时,其大小为 0。您应该将其放置在边框布局的中心(以占用所有可用空间并禁用滚动)或重写 calcPreferredSize() 以返回合理的大小。
我建议避免径向渐变,因为它们在某些平台上真的很慢。看this http://www.codenameone.com/how-do-i---improve-application-performance-or-track-down-performance-issues.html关于性能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)