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

时间:2011-12-13 11:59:08

标签: java android oop parameters

我正在尝试制作我的第一个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的副本会更好吗?但我不确定这是真的,如何/何时去获得它。

你会推荐什么?感谢

1 个答案:

答案 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的当前状态