0

なぜ私のコードが (わずかに) ラグがあり、同じ速度で確実に実行されないのかわかりません。他の多くのゲームは完全にスムーズなので、何か間違ったことをしているに違いないと思います。私の Renderer クラスの関連コードは次のとおりです。

public void drawPicString(Location location, String string,
        RenderParams params) {
    //canvas.save();
    float rawX = location.getX();
    float rawY = location.getY();
    Bitmap rawbit = myImageCache.get(string);
    //Bitmap rawbit = provider.getBitmap(string);
    float thisWidth = rawbit.getWidth();
    float thisHeight = rawbit.getHeight();
    if(params.shouldResize){
        thisWidth = params.resizex;
        thisHeight = params.resizey;
    }
    float leftx = rawX-(thisWidth/2);
    float topy = rawY-(thisHeight/2);
    Matrix matrix = new Matrix();
    matrix.setTranslate(leftx, topy);
    if(params.shouldResize){
        float toScaleY = ((float)thisHeight)/rawbit.getHeight();
        float toScaleX = ((float)thisWidth)/rawbit.getWidth();
        matrix.preScale(toScaleX, toScaleY);
        }
    if(params.shouldRotate){
        matrix.preRotate((float)Math.toDegrees(params.myangle),(float)(thisWidth/2.0),(float)(thisHeight/2.0));
    }
    canvas.drawBitmap(rawbit, matrix, paint);
}

私が考えることができる唯一の関連情報は、 myImageCache がビットマップのキャッシュであるため、描画されるたびにリソースからビットマップを取得する必要がないことです。「キャンバス」は、描画が開始される前に各フレームに渡されるサーフェスビュー上のキャンバス描画です。

アイデアをお寄せいただきありがとうございます。

4

0 に答える 0