我目前正在做一个学校项目,我们正在使用Codename One创建一个Asteroids游戏。我当前的功能很好,除了旋转船的图像。使用Transform类无效;无论如何应用变换或绘制图像,图像都不会旋转。
以下是用于转换的代码的示例部分:
public void turnRight() //Rotates the ship 5 degrees clockwise
{
if (direction==355)
direction = 0;
else
direction+=5;
Transform tmpTransform = Transform.makeIdentity();
theImage.getGraphics().getTransform(tmpTransform);
tmpTransform.rotate((float)Math.toRadians(5), x, y);
theImage.getGraphics().setTransform(tmpTransform);
theImage.getGraphics().drawImage(shipPic, 0, 0);
}
其中:
另外,我尝试过使用draw(Graphics g,Point p)方法并传递image.getGraphics(),以及传递shipPic.getGraphics() 我很茫然,而Codename One关于这个主题的文档是无益的。
我可以得到一些帮助吗?
答案 0 :(得分:1)
您需要使用一个图形对象,如下所示:
图形g = theImage.getGraphics();
会更正确。在渲染到图像时,您还必须测试变换支持,因为低级图形并不总是可移植到所有表面中的所有OS。一个很好的例子是iOS,渲染到图像使用完全不同的低级实现而不是显示渲染。
通常我会直接渲染到显示器,因为它是现代设备上的硬件加速,而图像通常是用软件实现的。
关于文档,您是否阅读了开发者指南中的graphics section?
它应包含对所有内容的解释,如果缺少某些内容,则search。如果您仍然无法找到并自行解决问题,请注意您也可以edit the docs并帮助我们改进它们。