1

メソッドにlog.dを入れましたが、レポートされません。ゲームのrun()メソッドが実行されますが、続行する前に、surfaceCreatedメソッドが戻るのを防御的に待ちます。

注:ゲームはスレッドであり、TouchPanelはSurfaceViewを拡張してSurfaceHolder.Callbackを実装します

private final void runGame() {
        savedPos = 0;
        resumeGame();
        touchPanel = (TouchPanel)findViewById(com.mysite.mygame.R.id.touchPanel);
        touchPanel.setMinimumHeight(displayWidth);
        touchPanel.setParams(this, writeLock, gemSize9, gemSize12, marg);
        textUpdate = new TextUpdate(this, d);
        gm = new Game(tok9, tok12, m, d, this, textHandler, textUpdate, touchPanel, marg, gemSize9, gemSize12, readLock, writeLock);
        initBitmaps();
        gm.start();
}
private final void resumeGame() {
        loadBGMusic();
        layout = Layout.GAME;
        setContentView(com.mysite.mygame.R.layout.game);
        writeLock.lock(); try { paused = false; } finally { writeLock.unlock(); }
}

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/rel"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:background="@drawable/backrepeat"
   android:keepScreenOn="true"
   >
    <com.mysite.mygame.TouchPanel
       android:id="@+id/touchPanel"
       android:layout_width="fill_parent"
       android:layout_height="0dp"
       android:clickable="true"
       android:focusableInTouchMode="true"
       />
</RelativeLayout>

public TouchPanel(Context context, AttributeSet attrs) {
        super(context, attrs);
        getHolder().addCallback(this);
}
4

1 に答える 1

0

私はそれを考え出した。

@id/touchPanel

すべきだった

android:layout_height != 0

android:layout_width != 0

SurfaceViewで作成されるSurfaceの場合。

于 2012-07-12T04:07:34.207 に答える