2011-11-01 6 views
0

안드로이드 용 첫 게임을 만들려고합니다. 현재 일부 그래픽과 '시작'버튼이있는 제목 페이지가 있습니다.터치 이벤트에서 안드로이드 뷰 변경

내가하려는 것은 시작 버튼을 누르면 게임을로드하는 것입니다.

가 여기 내 활동 코드 : 캔버스에 이미지를 배치 로딩 &와

public class TitlePage extends Activity { 

    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
          WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    setContentView(new TitlePageView(this)); 
    } 

클래스 TitlePageView 거래, 확인 버튼을 누르면 화면 주위에 떠 어떤 공을 그립니다합니다.

일단 버튼을 누르면 TitlePageView 클래스에서 아무 것도 필요하지 않습니다. 현재보기를 삭제하고 다른보기로 setContentView()을 호출하는 방법이 있습니까?

답변

0

입니다 예 :

GameView mGameView=new GameView(this); 

게임을 표시하려면 setContentView(mGameView)으로 전화하십시오. 물론 게임을 시작하려면 mGameView.start()과 같은 것을 부를 수도 있습니다.

+0

그래, 그게 내가 한 짓이다. 내가 어떻게'setContentView()'를 내'TitlePageView' 클래스에서 호출하는지 모르겠습니다. – Wozza

+0

아니요, 'titlePage'클래스에서 'setContentView()'를 호출해야합니다. 'setContentView (new TitlePageView (this));를 호출하면 화면에 게임의 제목 페이지가 표시됩니다. 'setContentView (mGameView)'를 호출하면 게임이 표시됩니다. 당신은 활동 및보기와 혼동하는 것 같습니다. – Huang

+0

그게 내가 생각하기에, 시작 버튼에 대한 액션 리스너는'TitlePageView' 클래스에 있습니다. 어떻게'TitlePage'에 버튼이 눌려 졌는지 알릴 수 있습니까? – Wozza

0

contentView를 전환하는 대신 성능 향상을 위해 실행중인 스레드 내에서 무효화되는 surfaceView를 사용해야합니다. 안드로이드 2D 게임에 대한 매우 유용한 링크, 즉

당신의 TitlePage 활동에서 다음
public class GameView extends SurfaceView implements ...... { ....} 

의 GameView의 인스턴스를 initilize, 난 당신이 게임 콘텐츠를 표시하는 자신의 서피스 뷰 SurfaceView 클래스를 구현 한 생각 here

+0

내'TitlePageView' 클래스가 SurfaceView를 확장합니다. 내 제목 페이지에서 튀는 공을 업데이트하기 위해 실행되는 스레드가 있습니다. 거기에 조건부'invalidate()'호출을 추가합니까? – Wozza

+0

아니요, 'SurfaceView'가 확장되어 있기 때문에보기가 실행중인 스레드에서 직접 업데이트 될 수 있습니다. 일반적인 View를 사용할 때'invalidate()'를 호출하여 UI 스레드에서 캔버스를 업데이트해야합니다. 또는 비 UI 스레드에서'postInvalidate()'를 호출하여; – Huang

관련 문제