【发布时间】:2014-04-30 12:23:19
【问题描述】:
我想用 Android 写一个小游戏,因为我有很好的 Java experiancas,所以我首先用 Java 写了它。现在我想移植游戏,但不幸的是Android库不支持“AffineTransform”或“Graphics2d”。 我知道可以使用画布来完成旋转,但我还没有设法显示图像。 我遇到的问题是永远不会调用 onDraw 方法。下面是我在 Java 中使用并希望移植到 Android 的示例代码。
public void drawEdge(Edge edge, Graphics g){
.... computation Stuff
Graphics2D g2d = (Graphics2D) g;
AffineTransform att = new AffineTransform();
att.translate(posX,posY);
att.rotate(rotAngle);
g2d.drawImage(lineImage, att, null);
}
所以在 Android 中我尝试了这个:
public void drawEdge(Edge edge, Graphics g){
.... computation Stuff
Paint mPaint = new Paint();
canvas.drawLine(200, 200, 400, 400, mPaint); // Just a simple line not the edge yet
}
但这不起作用。我也尝试创建 onDraw 方法,但它似乎从未被调用过。此外,我无法将limeImage 作为位图加载。我用过:
Assets.lineBitmap = BitmapFactory.decodeFile("LineImage.png");
并得到按摩:无法解码流:java.io.FileNotFoundException。但是使用:
Assets.lineImage = g.newImage("Line_height6.png", ImageFormat.RGB565);
工作得很好。
我知道有很多教程考虑使用画布,但我仍然无法弄清楚代码有什么问题,所以如果有人对我有任何线索,我将不胜感激。
最好的谢尔盖
【问题讨论】:
标签: java android canvas porting affinetransform