0

Pong によく似たシンプルなゲームを作っています。ゲームの主な仕組みは、画面をスワイプして背景の上に画像を描画することであり、その後、これら 2 つのものの上にスプライトが描画されます。

パフォーマンスの問題が発生していますが、その理由がわかりません。前景画像 (背景の上でスプライトの下) を描画する機能を除いて、すべての描画機能を無効にしました。これが問題の原因です。

使用している前景画像は 30kb の png です。起動時に一度だけイメージをロードし(RGB565形式)、次を使用します:

@Override
public void drawImage(Image Image, int x, int y) {
    canvas.drawBitmap(((AndroidImage)Image).bitmap, x, y, null);

Draw メソッドでイメージをキャンバスに描画します。これは、何らかの理由で非常にゆっくりと実行されます(私のNexus 7で実行されています)。代わりに drawRect メソッドを使用すると、完全に実行されるため、インポートした画像を描画する方法と関係があります。drawBitmap はこれを行うには悪い方法ですか? このような単純なゲームのために、この OpenGL のことを学ぶ必要がありますか?

提案をありがとう。

4

2 に答える 2

0

誰かがこの問題を抱えている場合、私の状況は関連している可能性がありますが、おそらくそうではありません。

タイトルページの主題歌として 4MB の wav ファイルを使用していましたが、ゲームの開始時にメモリを解放するのを忘れていました。滑らかな fps が得られました。

于 2013-02-25T07:37:45.570 に答える
0

コード セグメントが短いため、そのメソッドをどのように呼び出したかわかりません。

非常に応答性の高いビューを描画する場合は、SurfaceView を使用して onDraw(Canvas canvas) メソッドでコンテンツを描画する必要があります。

ゲームを書いているので、ポンの場所はどのくらいの頻度で更新されますか? この更新は AsyncTask または Runnable で実行されますか? スプライトの位置が更新された場合にのみ、invalidate() を呼び出すことで、onDraw の過剰な呼び出しを減らすことができます。

于 2014-12-04T15:50:13.667 に答える