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

Java 如何将当前的SurfaceView传递到其他对象方法?,java,android,oop,parameters,Java,Android,Oop,Parameters,我正在尝试制作我的第一个android游戏,只是一个pong克隆。实际上,我有一个“PongView”类,扩展了SurfaceView,这是我唯一的视图。它有我的“球”和“桨”类的对象。我刚开始将与检测墙壁碰撞等相关的代码移动到Ball和Papper类,以稍微整理我的主视图,并意识到我需要给这些类一种了解视图宽度和高度的方法。目前,我的工作只是在存储视图宽度和高度的surfaceviews surfaceChanged方法中初始化一个全局变量,如下所示: //at the top of my c

我正在尝试制作我的第一个android游戏,只是一个pong克隆。实际上,我有一个“PongView”类,扩展了SurfaceView,这是我唯一的视图。它有我的“球”和“桨”类的对象。我刚开始将与检测墙壁碰撞等相关的代码移动到Ball和Papper类,以稍微整理我的主视图,并意识到我需要给这些类一种了解视图宽度和高度的方法。目前,我的工作只是在存储视图宽度和高度的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的副本会更好?但我不确定这是不是真的,或者如何/何时着手得到它


你推荐什么?感谢使用“活动”中用于设置视图的“曲面视图”类的对象。该对象处于活动状态,将包含有关该曲面视图的所有更改

SurfaceView sur=new SurfaceView(this);  /// you created object
setContentView(sur);
//you do your work
//surface view is running
现在您想退出该活动。然后在onDestroy()中使用 CommonClass.ObjectVraible=sur


此行将保存surfaceview的当前状态

感谢您的回复和信息!我知道你说的对象,但是你能告诉我在我的Ball或Papper类中,我需要在哪里访问这个对象吗?我不知道该怎么办对不起。有一个概念序列化,我们在其中保存对象。如果您将其还原,则所有类成员都会将其状态还原到我们保存对象的原始状态。它用于存储游戏状态。因此类似地,现在您只需使用该类对象感谢您花费时间和提供新信息,但我不确定我们是否理解对方?我有一个“PongActivity.java”文件,其中的代码与上面发布的代码相同。但是一旦我进入我的视图(PongView.java),我就开始使用我创建的其他类的对象,例如“Ball.java”,它保存关于我的球精灵的信息。在Ball.java中,我希望获得/需要我之前所在的PongView的宽度和高度。我不知道该怎么做。我应该在“Ball.java”中编写什么代码?对不起,如果我不清楚/误解,谢谢你的时间。不需要抱歉。今天我没那么忙。但是我没有明白你的问题。祝你好运,希望你解决了