J'ai cette fonction d'Internet qui découpe une image en une pièce comme des tuiles et les place dans un tableau (linéaire ou multidimensionnel).Ajout de plusieurs MovieClip du tableau
--- --- Exemple
var sliceClips:Array = sliceMovieClip({source:sourceMovieClip, target:tilesContainer, cols:7, rows:5}).linear;
C'est donc la fonction:
private function sliceMovieClip(o:Object):Object
{
var returnArray:Array = new Array();
var arrayLinear:Array = new Array();
var array2D:Array = new Array();
var cols:uint = o.cols;
var rows:uint = o.rows;
var tileWidth:uint = o.source.width/cols;
var tileHeight:uint = o.source.height/rows;
var rect:Rectangle = new Rectangle(0,0,tileWidth,tileHeight);
var pnt:Point = new Point();
var imageBMPD:BitmapData = new BitmapData(o.source.width,o.source.height,true,0x000000);
var imageBMP:Bitmap = new Bitmap(imageBMPD);
imageBMPD.draw(o.source);
for (var tY:uint = 0; tY < rows; tY++)
{
var arrayRow:Array = new Array();
for (var tX:uint = 0; tX < cols; tX++)
{
var sourceRect:Rectangle = new Rectangle(tX * tileWidth,tY * tileHeight,tileWidth,tileHeight);
var destPoint:Point = new Point(0,0);
var tileBMPD:BitmapData = new BitmapData(tileWidth,tileHeight,true,0x000000);
var tileBMP:Bitmap = new Bitmap(tileBMPD);
var tileMCL:MovieClip = new MovieClip();
tileMCL.addChild(tileBMP);
tileBMPD.copyPixels(imageBMPD, sourceRect, destPoint);
tileMCL.x = tX * tileWidth;
tileMCL.y = tY * tileHeight;
o.target.addChild(tileMCL);
returnArray.push(tileMCL);
arrayRow.push(tileMCL);
}
array2D.push(arrayRow);
}
return {linear:arrayLinear, multi:array2D};
}
Je suis en train d'ajouter à l'étape ceux partie de l'image découpée en des endroits différents avec une fonction comme celui-ci (voir la dernière si):
private function buildMap(e:Event):void
{
for (var i:int=0; i<visAreaY; i++)
{
for (var u:int=0; u<visAreaX; u++)
{
if ((MapID[i][u]) == 0)
{
var cell:MovieClip = new tile();
cell.gotoAndStop(MapID[i][u]+1);
cell.x = tileSide * u;
cell.y = tileSide * i;
addChild(cell);
}
if ((MapID[i][u]) == 1)
{
var cell2:MovieClip = new blacksquare();
cell2.gotoAndStop(MapID[i][u]+1);
cell2.x = tileSide * u;
cell2.y = tileSide * i;
addChild(cell2);
}
if ((MapID[i][u]) == 2)
{
var cell3:MovieClip = sliceClips[2][0];
cell3.gotoAndStop(MapID[i][u]+1);
cell3.x = tileSide * u;
cell3.y = tileSide * i;
trace("Obj: " + cell3 + " w:" + cell3.width + " h:" + cell3.height + " pos:" + cell3.x + " " + cell3.y);
addChild(cell3);
}
}
}
}
Il y a un problème avec CELL3 (qui utilisent l'image en tranches) parce que je Il semble que j'utilise la même image et ne la duplique pas sur ma scène, donc si je l'ai 4 fois sur ma carte, elle ne montrera que l'image sur la dernière tuile.
Je voulais faire:
var cell3:MovieClip = new sliceClips[2][0];
, mais il ne sera pas accepter ma « nouvelle » cause ne est pas une classe.
Une idée de comment je peux travailler ça? Comment puis-je définir mon tableau movieclip à une classe ou quelque chose .. Je suis un débutant en as3
omg ... après 10 heures de recherche sur le net et tout ce que vous arrivez comme la lumière dans le ciel. Je t'aime tellement. Cela a bien fonctionné! Je n'aurais jamais deviné que ... j'essayais de trouver un moyen d'instancier ou d'essayer de copier mon MovieClip en classe (ouais j'étais loin dans mon monde). Merci beaucoup! Apprendre tous les jours! – Aenil
Et j'aime ton nom aussi. C'est comme Vesper dans ultima en ligne! : P – Aenil
Hmm :) A l'origine c'était Vesper de Heroes of Might & Magic 2 - j'ai aimé son portrait. – Vesper