J'ai eu un gros problème en essayant de colorier des objets qui volent dans mon espace. Lorsque je tire et que je les frappe, les ennemis affectés doivent cligner des yeux. Les graphiques sont pré-rendus (c'est-à-dire qu'il y a un tableau de rotation et une fonction où les degrés et leur rotation appropriée pour les objets sont stockés/calculés pour de meilleures performances). Donc, mon idée était d'améliorer cette fonction de rotation avec une fonctionnalité pour la coloration supplémentaire; mais les objets colorés ET pivotés doivent être rangés séparément des objets tournés normalement. Pour accomplir ceci j'ai fait un tableau imbriqué: dans la rangée un il y a 360 graphiques tournés d'un objet et dans la rangée deux il y a 360 graphiques d'un objet tourné et coloré. Problème: La coloration fonctionne mais elle n'est pas pivotée (toujours à 0 degré). S'il vous plaît aidez-moi - je devais comprendre pendant des heures pourquoi cela ne fonctionne pas alors j'ai abandonné. Ce serait tellement cool si quelqu'un pouvait trouver le problème! Merci beaucoup!colorier avec colormatrix dans AS3 - aidez s'il vous plaît!
public function createRotationWithColorBlitArrayFromBD(sourceBitmapData:BitmapData, inc:int, offset:int = 0):Array
{
trace("sourceBitmapData.width=" + sourceBitmapData.width);
trace("sourceBitmapData.height=" + sourceBitmapData.height);
tileList = [];
tileListSec = [];
levelArray = [];
var rotation:int = offset;
while (rotation < (360 + offset))
{
var angleInRadians:Number = Math.PI * 2 * (rotation/360);
var rotationMatrix:Matrix = new Matrix();
rotationMatrix.translate(-sourceBitmapData.width * .5, -sourceBitmapData.height * .5);
rotationMatrix.rotate(angleInRadians);
rotationMatrix.translate(sourceBitmapData.width * .5, sourceBitmapData.height * .5);
var matrixImage:BitmapData = new BitmapData(sourceBitmapData.width, sourceBitmapData.height, true, 0x00000000);
matrixImage.draw(sourceBitmapData, rotationMatrix);
tileList.push(matrixImage.clone());
var colorMatrix:ColorMatrixFilter = new ColorMatrixFilter (
[1, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0, 0, 1, 0]);
matrixImage.applyFilter(sourceBitmapData, sourceBitmapData.rect, point0, colorMatrix);
tileListSec.push(matrixImage.clone());
rotation += inc;
matrixImage.dispose();
matrixImage = null;
rotationMatrix = null;
}
levelArray = [tileList, tileListSec];
return(levelArray);
}
Merci beaucoup! Vous m'avez beaucoup aidé avec cette réponse et m'a facilité la vie! Merci beaucoup l'homme! :) – drpelz
Salut! Heureux d'aider :) Veuillez marquer ma réponse comme «accepté» pour améliorer votre note d'utilisateur autour du site. –
Merci pour le conseil. Je l'ai fait.:) – drpelz