0

私は、java4edu によって行われたコードに基づいて、私が行った小さなゲームを仕上げてい ます。

ただし、改造後、画面の再開、回転、画面の変更(ギャラリーからの読み込み)、またはキャンバスをバックグラウンドに送信するものはいつでもグリッチに遭遇しました。再開すると、logcat が常にこれを指すというエラーが表示されます: canvas.drawBitmap(bka, 0, 0, null);

もっと重要なことは、適切な時間にゲームループ スレッドを停止して、描画値を更新して再読み込みする必要があることだと思いますが、idk、アドバイス pls !!?

package com.doggy.__elite;


import android.annotation.SuppressLint;
import android.graphics.Canvas;

public class GameLoopThread extends Thread {
       static final long FPS = 100;
       private GameView view;
       private boolean running = false;

       public GameLoopThread(GameView view) {
             this.view = view;
       }

       public void setRunning(boolean run) {
             running = run;
       }

       @SuppressLint("WrongCall")
    @Override
       public void run() {

             while (running) {
                    Canvas c = null;

                    try {
                           c = view.getHolder().lockCanvas();
                           synchronized (view.getHolder()) {
                                  view.onDraw(c);
                           }
                    } finally {
                           if (c != null) {
                                  view.getHolder().unlockCanvasAndPost(c);
                           }
                    }



             }
       }

}

141 行目は次のいずれかです。 bka = Bitmap.createScaledBitmap(bka, Dwidtha, Dheighta, true); -- または -- canvas.drawBitmap(bka, 0, 0, null); 一時停止の問題を見つけたので、次を追加する必要がありました。} :)

再開するとこうなります。

11-24 12:16:12.538: E/AndroidRuntime(20772): 致命的な例外: メイン 11-24 12:16:12.538: E/AndroidRuntime(20772): java.lang.NullPointerException 11-24 12:16:12.538: E/AndroidRuntime(20772): com.doggy.__elite.GameView$1.surfaceCreated(GameView.java:66) 11-24 12:16:12.538: E/AndroidRuntime(20772): android.view.SurfaceView.updateWindow( SurfaceView.java:545) 11-24 12:16:12.538: E/AndroidRuntime(20772): android.view.SurfaceView.onWindowVisibilityChanged(SurfaceView.java:226) 11-24 12:16:12.538: E/AndroidRuntime( 20772): android.view.View.dispatchWindowVisibilityChanged(View.java:5851) 11-24 12:16:12.538: E/AndroidRuntime(20772): android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:951) 11 -24 12:16:12.538: E/AndroidRuntime(20772): android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:951) 11-24 12:16:12.538: E/AndroidRuntime(20772): android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:951) 11-24 12:16:12.538: E/AndroidRuntime(20772): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1038) 11-24 12:16:12.538: E/AndroidRuntime(20772): android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2583) 11-24 12: 16:12.538: E/AndroidRuntime(20772): android.os.Handler.dispatchMessage(Handler.java:99) 11-24 12:16:12.538: E/AndroidRuntime(20772): android.os.Looper.loop (Looper.java:137) 11-24 12:16:12.538: E/AndroidRuntime(20772): android.app.ActivityThread.main(ActivityThread.java:4508) で 11-24 12:16:12.538: E/AndroidRuntime (20772): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) 11-24 12:16:12.538: E/AndroidRuntime(20772): java.lang.reflect.Method で。(Method.java:511) 11-24 12:16:12.538: E/AndroidRuntime(20772): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809) 11-24 12: 16:12.538: E/AndroidRuntime(20772): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576) 11-24 12:16:12.538: E/AndroidRuntime(20772): dalvik.system で.NativeStart.main(ネイティブメソッド)

66 行目: gameLoopThread.setRunning(true);

4

0 に答える 0