如何将当前的SurfaceView传递给其他对象方法?

如何将当前的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;

此行将节省当前状态的表面视图

+0

感谢您的回复和信息!那么我知道你的意思,但你可以告诉我什么代码,我会放在我的球或桨班,我需要访问该对象?我不确定我会如何去抱歉。 – Holly

+1

有一个概念序列化,我们保存我们的对象。如果你恢复它,那么所有的类成员将它们的状态恢复到我们保存对象的原始状态。它用于存储游戏状态。因此类似地,现在你只需要使用那个类对象 – Sameer

+0

我编辑了我的答案 – Sameer