Вход

Просмотр полной версии : Помогите разобраться с масcивами и movieclip AS2


kurtby
09.10.2009, 00:04
Всем доброго времени суток! :)
ну и сразу к делу, хочу сделать так:

У меня есть мувик, назавем его "m", в этом мувике есть 4 текстовых динамических поля назавем их "tx1" "tx2" "tx3" "tx4" и еще один мувик "load"(туда я гружу картинку при помощи loadMovie). Есть также массивы из них все грузится в текстовые поля arr_tx1[1] в "tx1",arr_tx2[1] в "tx2" ,arr_tx3[1] в "tx3",arr_tx4[1] ну и в "tx4" соотвественно, arr_load[1] в "load", все это прекрасно работает, но есть одно но, мне надо чтобы это все шло автоматом, т.е когда это все закончилось, пошел второй цикл и создал бы мувик "m2"( ну этот мувик должен сдвинуться) тоже с 4 текстовыми полями и мувиком, но только чтобы туда из массива грузились вторые элементы (arr_tx1[2] в "tx1",arr_tx2[2] в "tx2" ,arr_tx3[2] в "tx3",arr_tx4[2])а не первые. ну и так далее "m3" и там arr_tx2[3] в "tx2" ,arr_tx3[3] в "tx3"....
вот еще вопрос как лучше обрезать фотографию, полученную при помощи loadmovie();

Надеюсь на вашу помощь, заранеее всем спасибо!

mooncar
09.10.2009, 00:14
1.
цикл 1
attachMovie, сдвиг
цикл 2
загрузка данных в приаттаченный мувик
конец цикла 2
конец цикла 1

2. Маской. Но вообще-то одна тема - один вопрос.

kurtby
09.10.2009, 01:44
Спасибо за ответ, но я все равно не понимаю как сделать:umnik2:
делаю так:

var arr_tx1:Array = Array(["firstElement","2Element"]);
var arr_tx2:Array = Array(["doubleElement","3Element"]);
for (var i:Number = 1; i<2; i++) {
this.attachMovie("m", "m1", this.getNextHighestDepth(), {_x:200, _y:200});
this.attachMovie("m", "m2", this.getNextHighestDepth(), {_x:400, _y:400});
for (var p:Number = 1; p<2; p++) {
m1.tx1.text=arr_tx1[0];
m1.tx2.text=arr_tx2[0];
m2.tx1.text=arr_tx1[1];
m2.tx2.text=arr_tx2[1];
}
}

но вручную создавать каждый мувик как-то сложно ,точнее, мне может понадовиться и 1000 мувиков, т.к что вручную тяжеловато

что надо написать чтобы при каждом прохождении цикл создавал новый мувик? с соттвесвющим инстант именем.

ну надо как-то так сделать но я не знаю как правильно:

var arr_tx1:Array = Array(["firstElement","2Element"]);
var arr_tx2:Array = Array(["doubleElement","3Element"]);
for (var i:Number = 1; i<2; i++) {
this.attachMovie("m", "m+i", this.getNextHighestDepth(), {_x:200, _y:200});
for (var p:Number = 1; p<=4; p++) {
i.tx1.text=arr_tx1[p];
i.tx2.text=arr_tx2[p];

}
}
помогите плз:)

true11
09.10.2009, 03:35
var arr_tx1 = new Array(["firstElement","2Element"]);
var arr_tx2 = new Array(["doubleElement","3Element"]);
var arr_tx3 = new Array(["doubleElement","3Element"]);
for (var i:Number = 1; i<2; i++) {
this.attachMovie("m", "m+i", this.getNextHighestDepth(), {_x:200, _y:200});
for (var p:Number = 1; p<=3; p++) {
this["m"+i].tx1.text=arr_tx1[p];
this["m"+i].tx2.text=arr_tx2[p];
this["m"+i].tx3.text=arr_tx3[p];
}
}

просто обратиться "m"+i нельзя. Так как это будет строка. В данном случае мы ищем объект с именем "m"+i в контейнере this, собстнно куда и аттачим.

Vit_001
09.10.2009, 14:50
Сам сталкивался с такой задачей когда только начинал осваивать AS, убил немало времени. Но когда решаешь проблему сам, то с последующими справляешься намного быстрее.

/* common_mc - общий контейнер для всего этого барахла */
_root.createEmptyMovieClip('common_mc',_root.getNextHighestDepth());

/* Это твои массивы с текстом и загружаемыми картинками */
var tx1:Array = ['Text1A','Text2A','Text3A','Text4A'];
var tx2:Array = ['Text1B','Text2B','Text3B','Text4B'];
var img:Array = ['n001.jpg','n002.jpg','n003.jpg','n004.jpg'];

/* Здесь в цикле созддаются индивидуальные контейнеры-клипы - tmb, а в них соотвественно
грузятся картинки, и размещаются текстовыве поля, идет заполнение этих полей данными из массивов */
for (var i=0; i<img.length; i++){ // Количество проходов цикла = длинне массива img[]
var tmb = common_mc.createEmptyMovieClip('tmb'+i,i+1);
var _img = tmb.createEmptyMovieClip('_img',1); // Сюда будет грузится картинка
var _tx1 = tmb.createTextField('txt',2,100,0,100,20); // Текстовые поля
var _tx2 = tmb.createTextField('txt',3,100,20,100,20); // ---

_tx1.text = tx1[i]; // Заполнение текствовых полей
_tx2.text = tx2[i]; // ---

loadMovieClip(img[i],_img); //Стартуем загрузку картинки из массива img[] в контейнер _img

tmb._y = i*100; // Сдвигаем каждую tmb по вертикали
}

function loadMovieClip (path:String, target:MovieClip){ // Это - функция-загрузчик картинки
var mcLoader :MovieClipLoader = new MovieClipLoader();
var listenerLoad :Object = new Object();
listenerLoad.onLoadInit = function (target:MovieClip)
{
/*Здесь размещаем код по масштабированию, позиционированию,
а также по древнему орбяду обрезания (загруженной картинки) */
}
mcLoader.addListener(listenerLoad);
mcLoader.loadClip(path, target);
}