2009-07-15 5 views
0

Il anime mais il met le morceau de la feuille de sprite où il est sur la feuille de sprite et non où le x et y le disent. C'est très court, alors jetez un coup d'oeil? Merci d'avance.Quel est le problème avec ma fonction d'animation?

package cyanprime{ 
    import flash.display.*; 
    import flash.geom.Rectangle; 

    public class Player{ 
     [Embed(source="brownplane.png")] 
     public var image:Class; 
     public var bitmapdata:BitmapData = getBitmap(new image()); 
     public var bitmap:Bitmap = new Bitmap(bitmapdata); 
     public var speed:int = 5; 
     public var x:int = 50; 
     public var y:int = 50; 
     public var frame:int = 0; 

     public function getBitmap(img:DisplayObject):BitmapData{ 
      var drawRect:Rectangle = new Rectangle((img.width/3) * frame, 0, img.width/3, img.height); 
      var bitmap:BitmapData = new BitmapData(img.width, img.height); 
      bitmap.draw(img,null,null,null,drawRect); 
      return bitmap; 
     } 

     public function animate():void{ 
      bitmap.bitmapData = getBitmap(new image()); 
      frame++; 

      if(frame > 2) 
       frame = 0; 

      bitmap.x = x; 
      bitmap.y = y; 
     } 
    } 
} 
+1

Ne devriez-vous pas changer le x et le y? semble intacte pour moi. Trop peu d'infos. – Dykam

Répondre

1

Apparemment, vous devez ajouter une transformation matricielle pour dessiner() afin de traduire la position du rectangle tracé. Quelque chose comme ceci:

var trans:Matrix = new Matrix(); 
trans.tx = drawRect.x; 
bitmap.draw(img,trans,null,null,drawRect); 

Si cela ne fonctionne pas, essayez -drawRect.x, je ne me souviens pas exactement comment cela transformée est appliquée.

Questions connexes