Sprite de la Rotation dans l'Android à l'aide de la Toile.DrawBitmap. Je suis proche, ce que je fais mal?

J'ai ce sprite de rotation de l'algorithme de son mal nommée et juste utilisé pour les tests). Il est si proche, les sprites dessinés avec, il ne pivotent pas. Everyframe je peux ajouter +5 ° à elle et voir mon joli petit sprite tourner autour. Le problème est, les autres trucs tirés de la toile maintenant scintille. Si je ne fais pas la rotation régulière attiré les sprites de l'excellent travail. Je pense que je suis proche, mais je ne sais pas ce morceau, je suis absent. Ci-dessous mes deux "Draw_Sprite" méthodes, on attire tout le déjà des ressources bitmap chargée de la toile. De l'autre, du fait de la rotation de la meilleure, je ne sais comment tourner le sprite par x nombre de degrés..et puis de dessiner. Si j'ai une belle boucle de jeu qui attire plusieurs objets, un type est la rotation de genre. Ensuite, la non-rotation des sprites de scintillement et pourtant, la rotation de sprite ne le fait jamais. Mais si je tire la non-rotation des sprites tout d'abord, tout va bien, mais ensuite le Z-Commande pourrait être foiré (sprites sur le dessus des éléments de l'INTERFACE utilisateur, etc)... La méthode définitions:

    /*************************************************
 * rotated sprite, ignore the whatever, its for ease of use and testing to have this argument list
 * @param c canvas to draw on.
 * @param whatever ignore 
 * @param rot degrees to rotate
 * @return
 */
public int Draw_Sprite(Canvas c, int whatever, int rot) {   
    //rotating sprite
    Rect src = new Rect(0, 0, width, height);
    Rect dst = new Rect(x, y, x + width, y + height);
    Matrix orig = c.getMatrix();        
    mMatrix = orig;
    orig.setTranslate(0, 0);
    orig.postRotate(rot, x+width/2, y+height/2); 
    c.setMatrix(orig);
    c.drawBitmap(images[curr_frame], src, dst, null);
    c.setMatrix(mMatrix); //set it back so all things afterwards are displayed correctly.

    isScaled=false;
    return 1;

}

/********************************************************
 * draw a regular sprite to canvas c
 * @param c
 * @return
 */
public int Draw_Sprite(Canvas c) {  

    Rect src = new Rect(0, 0, width, height);
    Rect dst = new Rect(x, y, x + width, y + height);       
    c.drawBitmap(images[curr_frame], src, dst, null);

    isScaled=false;
    return 1;
}

Et maintenant l'utilisation:

void onDraw(Canvas c)
{
    canvas.drawRect( bgRect, bgPaint); //draw the background

    //draw all game objects
      //draw the normal items
    for (GameEntity graphic : _graphics) { 
        graphic.toScreenCoords((int)player_x, (int)player_y);
        if(graphic.getType().equals("planet")) //draw planets
            graphic.Draw_Sprite(canvas); //before the rotation call draws fine
        else
        {
            //rotate all space ships every frame so i see them spinning        
            //test rotation
            mRot +=5;
            if(mRot>=360)
                mRot=0;
            graphic.Draw_Sprite(canvas, 0, mRot); //yes function name will be better in future.  this rotates spins draws fine


        }                           
       }

       thePlayer.Draw_Sprite(canvas); //FLICKERS
       drawUI(canvas);//all things here flickr

}  

De sorte à ne faire, que les choses après un appel à un mouvement de rotation de tirage au sort sont dessinés correctement. Mais le problème est qu'il flickrs. Maintenant, On pourrait dire que je devrais juste faire tous mes non rotation des trucs et sauver le dernier, mais le zordering serait désactivé.... des suggestions quant à la façon de s'attaquer à ce problème de zordering ou le scintillement?

OriginalL'auteur Codejoy | 2010-08-27