2009-12-30 12 views
0

En ce moment, j'essaie de créer un effet de mosaïque pour un jeu que je crée. J'utilise un tilesheet et je chargeais les tuiles à l'image-objet comme si ...Modification d'un bitmap d'image-objet

this.graphics.beginBitmapFill(tileImage); 
this.graphics.drawRect(30, 0,tWidth ,tHeight); 

var tileImage est le bitmapData. 30 est le Nombre de pixels à déplacer le retangle. alors tWidth et tHeight sont la taille du rectangle. qui est 30x30

C'est ce que je fais pour changer le bitmap quand je rôle sur le carreau

this.graphics.clear(); 
this.graphics.beginBitmapFill(tileImage); 
this.graphics.drawRect(60, 0,tWidth ,tHeight); 

J'effacer la toile de sprite. Je réécris ensuite à une autre position sur tileImage.

Mon problème est ....

Il enlève la vieille tuile complètement, mais les nouvelles positions de tuiles plus loin vers la droite alors où l'ancien bitmap est apparu.

Ma feuille de carreaux ne mesure que 90px de largeur et 30px de hauteur. En plus de cela, il semble que ma nouvelle tuile soit dessinée derrière l'ancienne tuile. Y a-t-il un meilleur moyen de perfectionner cela?

encore une fois, tout ce que je veux est pour le bitmap pour modifier les couleurs

Répondre

1

Vous pouvez essayer de charger l'ensemble tilesheet dans l'image-objet, puis redéfinir la propriété scrollRect chaque fois que vous devez.

this.scrollRect = new Rectangle(30, 0, tWidth ,tHeight); 

Notez que vous ne pouvez pas modifier scrollRect.x, .y, .width ou .height; vous devez redéfinir un nouveau rectangle à chaque fois. Utiliser scrollRect sera probablement beaucoup plus rapide que redessiner une partie de l'image bitmap. Vous pouvez lire this excellent article from Grant Skinner pour plus d'informations sur scrollRect.

+0

N'oubliez pas que même si vous définissez un scrollRect, toute la zone de l'objet d'affichage sera rendue à nouveau, sauf si vous avez également défini cacheAsBitmap. – aaaidan

+0

Check out: http://files.jacksondunstan.com/articles/629/CacheAsBitmapTest.swf – aaaidan

+0

(PS ce lien doit être vu avec un débogueur flash player, ou ce n'est pas utile ...) – aaaidan