2011-12-13 4 views
0

나는 첫 번째 안드로이드 게임을 만들려고 노력하고 있는데, 실제로 탁구 복제품을 만들려고합니다. SurfaceView를 확장하고 내 유일한보기 인 "PongView"클래스가 있습니다. 그것은 "볼"과 "패들"클래스의 객체를 가지고 있습니다. 방금 벽 충돌을 감지하는 것과 관련된 코드를 Ball 및 Paddle 클래스로 이동하여 주보기를 약간 정리하고이 클래스에 폭과 ​​높이를 알 수있는 방법을 제공해야한다는 것을 알게되었습니다.현재 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 
    } 

내가 매개 변수로 전달합니다 순간 내 작품을 주위에 단지 surfaceviews 내부 전역 변수를 intialise하는 것입니다은 뷰의 폭과 높이를 저장하므로 같은 방법을 surfaceChanged

ball.handleWallCollision(viewWidth, viewHeight); 

그러나 내가 자주 상상할 수있을 정도로 이것을 전달할 필요가 있기 때문에 나는 이것이 그것에 관해가는 길인지 확신하지 못합니다. 나는 각 클래스에 현재 PongView의 사본이 있다면 더 좋을 것이라고 생각 했습니까? 하지만 그게 사실인지, 어떻게/언제 갈 지에 대해서는 확신 할 수 없습니다.

무엇을 권하고 싶습니까? activity.That 개체보기를 설정하는 데 사용 된 표면 뷰 클래스의 감사

답변

0

사용 객체는 라이브이고

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

응답과 정보를 보내 주셔서 감사합니다! 글쎄, 당신이 의미하는 대상을 알지만,이 오브젝트에 액세스해야하는 Ball 또는 Paddle 클래스에 어떤 코드를 넣을지를 보여줄 수 있습니까? 나는이 일에 대해 어떻게 생각하는지 모르겠다. – Holly

+1

우리가 객체를 저장하는 개념 직렬화가 있습니다. 다시 되돌리려면 모든 클래스 멤버가 객체를 저장 한 원래 상태로 상태를 복원합니다. 게임 상태를 저장하는 데 사용됩니다. 마찬가지로 이제는 해당 클래스를 사용해야합니다. object – Sameer

+0

내 대답을 편집했습니다 – Sameer

관련 문제