Я получил эту функцию из Интернета, которая нарезает изображение на части подобно плиткам и помещает их в массив (линейный или многомерный).Добавление нескольких мувиклипов из массива
--- Пример ---
var sliceClips:Array = sliceMovieClip({source:sourceMovieClip, target:tilesContainer, cols:7, rows:5}).linear;
Так это функция:
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};
}
Я пытаюсь добавить к сцене тех частей изображения, разрезанной на другое место с помощью функции как это (посмотрите на последний, если):
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);
}
}
}
}
Существует проблема с CELL3 (которые используют нарезанное изображение) потому что кажется нам e то же изображение и не дублирует его на моей сцене, так что, если у меня будет 4 раза на моей карте, он покажет только изображение на последней плитке.
Я пытался сделать:
var cell3:MovieClip = new sliceClips[2][0];
, но он не будет принимать мой «новый» вызвать его не класс.
Любая идея, как я могу это исправить? Как я могу установить мой массив мувиклипа в класс или что-то в этом роде. Я начинаю в as3
omg ... через 10 часов поиска в сети и все, что вы прибываете, как свет в небе. Я люблю тебя так сильно. Это сработало хорошо! Я бы никогда не догадался, что ... я пытался найти способ создать экземпляр или попытаться скопировать мой мувиклип в качестве класса (да, я был далеко в своем мире). Большое спасибо! Изучайте каждый день! – Aenil
И мне нравится ваше имя. Это похоже на Vesper в ultima онлайн! : P – Aenil
Хмм :) Первоначально это был Vesper от Heroes of Might & Magic 2 - мне понравился его портрет. – Vesper