如何将当前的SurfaceView传递给其他对象方法?
问题描述:
我试图做我的第一个android游戏,真的只是一个pong克隆,我有一个“PongView”类,它扩展了SurfaceView并且是我唯一的视图。它有我的“球”和“桨”类的对象。我刚刚开始将与事物相关的代码移动到Ball和Paddle类,以整理我的主视图,并意识到我需要为这些类提供一种了解视图宽度和高度的方法。目前我的解决办法是刚刚intialise的surfaceviews 中的全局变量surfaceChanged方法存储视图的宽度和高度,像这样:如何将当前的SurfaceView传递给其他对象方法?
//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副本,会更好吗?但我不确定这是否是真实的或如何/何时得到它。
你会推荐什么?这是用来在activity.That对象设置可视面视图类的感谢
答
使用对象是活的,将包含有关
SurfaceView sur=new SurfaceView(this); /// you created object
setContentView(sur);
//you do your work
//surface view is running
现在你想从activity.Then退出该面视图中的所有变化在onDestroy()中使用 CommonClass.ObjectVraible = sur;
此行将节省当前状态的表面视图
感谢您的回复和信息!那么我知道你的意思,但你可以告诉我什么代码,我会放在我的球或桨班,我需要访问该对象?我不确定我会如何去抱歉。 – Holly
有一个概念序列化,我们保存我们的对象。如果你恢复它,那么所有的类成员将它们的状态恢复到我们保存对象的原始状态。它用于存储游戏状态。因此类似地,现在你只需要使用那个类对象 – Sameer
我编辑了我的答案 – Sameer