将SurfaceView传递给对象构造函数

时间:2012-12-11 13:24:25

标签: android static

将类传递给自己的对象是不好的做法?

例如:

public class MainView extends SurfaceView {
    Stack<GameObject> objs;

    public MainView() {
         new GameObject(this);
    }

    public void Add(GameObject obj) {
         objs.push(obj)
    }

    public void Remove(GameObject obj) {
         objs.pop(obj)
    }
}

public class GameObject {
    MainView parent;
    int state; 

    public GameObject(MainView parent) {
        this.parent = parent;
        parent.Add(this);
    }

    public void doStuff() {
        if(state == 1) {
              new GameObject(parent);
        } 
        else if(state == 2) {
              parent.Remove(this);
        } 
    }
}

我努力删除静态方法/变量。现在我必须将视图传递给它自己的对象。 这是一种不好的做法吗? 对象是逻辑还是SurfaceView包含所有逻辑?

1 个答案:

答案 0 :(得分:0)

你在开发游戏吗?如果是这样,我建议您阅读thisthis。 surfaceview应该只能将游戏对象渲染到屏幕上。然而,每个游戏对象应该保持逻辑(其行为)和对画布的引用,以便最终绘制到surfaceview。然而,游戏的整体逻辑应该在一个类(例如命名世界)中,它负责所有游戏对象的生成和管理。

我希望这会有所帮助。