Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 所有Android游戏都使用单一画布吗?_Java_Android_View_Android Canvas - Fatal编程技术网

Java 所有Android游戏都使用单一画布吗?

Java 所有Android游戏都使用单一画布吗?,java,android,view,android-canvas,Java,Android,View,Android Canvas,是否应该在每个onDraw()过程中重新绘制所有视图对象? 我来自Flash背景,所以我最初的想法是在一个层/画布上绘制静态背景图像,然后在其上创建另一层以处理更多活动动画,但这似乎对设置不太实际。是不是我的思路在Android的观点背后。onDraw()在这里被误导了,这是不是我不应该担心的事情 编辑:为了进一步阐述我试图通过onDraw()的概念了解的内容-是否有一种方法可以在SurfaceView/视图上使用多个画布作为层,以便我可以在每个画布上手动绘制(以最小化需要“重绘”的内容),而无

是否应该在每个onDraw()过程中重新绘制所有视图对象?

我来自Flash背景,所以我最初的想法是在一个层/画布上绘制静态背景图像,然后在其上创建另一层以处理更多活动动画,但这似乎对设置不太实际。是不是我的思路在Android的观点背后。onDraw()在这里被误导了,这是不是我不应该担心的事情

编辑:为了进一步阐述我试图通过onDraw()的概念了解的内容-是否有一种方法可以在SurfaceView/视图上使用多个画布作为层,以便我可以在每个画布上手动绘制(以最小化需要“重绘”的内容),而无需在其他画布上“重绘”图形,或者SurfaceView/View的onDraw()对于更新任何视觉更改(在这种情况下,所有内容都“重新绘制”到屏幕上)是绝对必要的吗

Q:是否应该在每个onDraw()过程中重新绘制所有视图对象

答:不,不一定

另外:一定要看看SurfaceView:

Q:是否应该在每个onDraw()过程中重新绘制所有视图对象

答:不,不一定

另外:一定要看看SurfaceView:

好吧,除了
画布
之外,可能不是所有的都可以被视为场景。我使用一个
Toon
类,它包含一个
X
Y
坐标、
Rect
hitbox和一个
可绘制的
。此类
Toon
还有一个方法:

public draw(Canvas c) {
    mDrawable.setBounds(mHitBox);
    mDrawable.draw(c);
}
然后,在游戏循环中的
onDraw(Canvas c)
方法中,我只需循环所有
Toon
对象,并对它们调用
draw(c)
方法。尽量不要在
onDraw
中操纵对象,理想情况下,这些对象只能被绘制。

好吧,除了
画布之外,可能不是所有的都可以被视为场景。我使用一个
Toon
类,它包含一个
X
Y
坐标、
Rect
hitbox和一个
可绘制的
。此类
Toon
还有一个方法:

public draw(Canvas c) {
    mDrawable.setBounds(mHitBox);
    mDrawable.draw(c);
}

然后,在游戏循环中的
onDraw(Canvas c)
方法中,我只需循环所有
Toon
对象,并对它们调用
draw(c)
方法。尽量不要在
onDraw
中操纵对象,理想情况下应该只绘制对象。

谢谢Paul,这似乎是我需要的方向。然而,在经历了涉及到SurfaceView的过程之后,它仍然提出了一些问题,因为看起来他们在SurfaceView上使用单个onDraw()调用其他对象的onDraw(),并同时有效地重新绘制所有内容。这仅仅是“刷新”应用程序图形的正常过程,还是有一种方法可以使多个“分层”曲面可以单独绘制?谢谢Paul,这似乎是我需要的方向。然而,在经历了涉及到SurfaceView的过程之后,它仍然提出了一些问题,因为看起来他们在SurfaceView上使用单个onDraw()调用其他对象的onDraw(),并同时有效地重新绘制所有内容。这只是“刷新”应用程序图形的正常过程,还是有一种方法可以让多个“分层”曲面单独绘制?