我正在尝试制作我的第一个Android游戏,实际上只是一个pong克隆,我有一个扩展SurfaceView的“PongView”类,是我唯一的视图。它有我的“球”和“桨”类的对象。我刚刚开始将与事物相关的代码(例如检测墙壁碰撞)移动到Ball和Paddle类来整理我的主视图,并意识到我需要给这些类提供一种了解视图宽度和高度的方法。目前,我的工作只是在surfaceviews surfaceChanged 方法中初始化一个全局变量,该方法存储视图的宽度和高度,如下所示:
//at the top of my class
private int viewWidth;
private int viewHeight;
..
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
//INITIALISE viewWidth and viewHeight here
//so that they can be passed as parameters
viewWidth = getWidth();
viewHeight = getHeight();
//some other irrelevant code here
}
然后我将它们作为参数传递:
ball.handleWallCollision(viewWidth, viewHeight);
然而,我不确定这是怎么回事,因为我需要经常传递它们。我觉得如果我在每个班级都有当前PongView的副本会更好吗?但我不确定这是真的,如何/何时去获得它。
你会推荐什么?感谢
答案 0 :(得分:0)
使用用于在activity中设置视图的表面视图类的对象。该对象是实时的,将包含有关该表面视图的所有更改
SurfaceView sur=new SurfaceView(this); /// you created object
setContentView(sur);
//you do your work
//surface view is running
现在您要退出该活动。然后使用onDestroy() CommonClass.ObjectVraible =河畔;
此行将保存surfaceview的当前状态