Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   опять про &#1084 (http://www.flasher.ru/forum/showthread.php?t=34858)

derhab 23.07.2002 18:17

опять про &#1084
 
У меня уже были вопросы на подобные темы, но вот, опять не могу додуматься, как...
Короче, есть такой цикл, вернее два:

dist_mc = mc._width*2;
zahl_mc_x = 5;
zahl_mc_y = 8;
level = 0;
for (i=0; i<zahl_mc_x; i++) {
for (k=0; k<zahl_mc_y; k++) {
duplicateMovieClip(mc, "mc"+level, level);
mc = this["mc"+level];
mc._x = dist_mc*i
mc._y = (dist_mc/2)*k
level++;
}
}

Мне надо вытащить из массива mc, к примеру, следующие члены: m1, m9, m17, m25, m35,... и тд( еще штук этак 20), с тем чтоб двигать их потом по иксу независимо от других членов массива mc. Я пытался создать из них новый массив, но не смог, не выходит, вернее, массив как бы создается, но значение _x его членов не определяется:(

Nox Noctis 23.07.2002 19:07

после циклов с дублированием пишем

markUp = [1, 9, 17, 25, 35];
targets = [];
for (i in markUp) { targets.push(this["mc"+markup[i]]); }
trace(target[1]._x);

в массиве targets получаем ссылки...

или так:

markUp = ["mc1", "mc9", "mc17", "mc25", "mc35"];
targets = [];
for (i in markUp) {targets[markUp[i]] = this[markup[i]];}
trace(targets["mc9"]._x);

получаем хэш из ссылок

derhab 23.07.2002 19:11

Спасибо Nox, вернусь домой, попробую... :)

derhab 23.07.2002 21:42

markUp = ["mc1", "mc9", "mc17", "mc25", "mc33"];
targets = [];
for (i in markUp) {
targets[markUp[i]] = this[markup[i]];
targets[markUp[i]]._x += dist_mc/2;
}
Спасибо еще раз, вот так сработало идеально, то что надо было:)

derhab 24.07.2002 20:45

Опять затупил... В продолжение темы: над всем этим массивом бегает мувик, на нем такое:
onClipEvent (enterFrame) {
this._x = random(470);
this._y = random(375);
if (this.hitTest(_parent.targets)) {
trace(_parent.targets);
}
}
Трейсится только mc1:(, в то время, как если просто в цикле в руте проверять(не хит тест), то возвращаются все члены targets. Тут тоже надо цикл создать или..? Голова болит...Не получается, пробовал сегодня полдня...

Nox Noctis 24.07.2002 20:55

Код:

onClipEvent (enterFrame) {
        _x = random(470);
        _y = random(375);
        for (i in _parent.targets) {
                if (this.hitTest(_parent.targets[i])) {
                        trace(_parent.targets[i]);
                }
        }
}

если массив таргетов нужен только этому мувику, то лучше в нем его и создать... чтобы сократить расход времени на адресацию.

то что трейсятся все элементы массива сразу ты не удивляйся...
если сделать
x = ["a", "b", "c", "d"];
trace(x);
это все равно что сделать
x = ["a", "b", "c", "d"];
z = x.toString();
trace(z);
...просто трейс все что ему дают преобразует к строке и потом выдает :)

derhab 24.07.2002 21:21

В этом случае не трейсится вообще ничего(( Самое смешное, что этот вариант я пробовал сегодня уже... Вообще мне нужно чтоб мувик пробегая над targets последовательно изменял свойства членов targets, а для начала я просто хотел через трейс посмотреть что вообще происходит и, либо, как я уже говорил, на выходе получаю: trace(_parent.targets) --> _level0.mc1 и все, то есть только первый член:) targets, либо вообще ничего, как в твоем случае:(

Nox Noctis 25.07.2002 00:29

покажи весь скрипт дублирования + создания массива targets...

...все должно работать, чес слово :)

derhab 25.07.2002 00:50

Только не бей!

Короче, в первом и единственном фрейме:

rot._x = -500;
gruen._x = -500;
dist_mc = rot._width*2;
zahl_mc_x = 5;
zahl_mc_y = 8;
levelrot = 0;
for (i=0; i<zahl_mc_x; i++) {
for (k=0; k<zahl_mc_y; k++) {
duplicateMovieClip(rot, "rot"+levelrot, levelrot);
rot = this["rot"+levelrot];
rot._x = dist_mc/4+dist_mc*i;
rot._y = dist_mc/4+(dist_mc/2)*k;
levelrot++;
}
}
markUprot = ["1", "9", "17", "25", "33", "3", "5", "7", "11", "13", "15", "19", "21", "23", "27", "29", "31", "35", "37", "39"];
targetsrot = [];
for (i in markUprot) {
targetsrot = this["rot"+markUprot[i]];
targetsrot._x += dist_mc/2;
}
// ::::::::::::::::::::::::::::::::::
levelgruen = 40;
for (i=0; i<zahl_mc_x; i++) {
for (k=0; k<zahl_mc_y; k++) {
duplicateMovieClip(gruen, "gruen"+levelgruen, levelgruen);
gruen = this["gruen"+levelgruen];
gruen._x = dist_mc/4+dist_mc*i;
gruen._y = dist_mc/4+(dist_mc/2)*k;
levelgruen++;
}
}
markUpgruen = ["40", "42", "44", "46", "48", "50", "52", "54", "56", "58", "60", "62", "64", "66", "68", "70", "72", "74", "76", "78"];
targetsgruen = [];
for (i in markUpgruen) {
targetsgruen = this["gruen"+markUpgruen[i]];
targetsgruen._x += dist_mc/2;
}

На мувике, который рэндомно движется над квадратами расставленными верхним кодом, как ты сказал:

onClipEvent (enterFrame) {
_x = random(470);
_y = random(375);
for (i in _parent.targets) {
if (this.hitTest(_parent.targets[i])) {
trace(_parent.targets[i]);
}
}
}

Я взял для примера только массив targetsrot, вернее подмассив, так? Но там еще есть подмассив targetsgruen, из них складывается вся картинка.........аааааааааа

Nox Noctis 25.07.2002 02:20

Вложений: 1
ну вот видишь... :) у тебя все работает на самом деле... :)
...только массивами пользоваться надо правильно ;)


Часовой пояс GMT +4, время: 11:10.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.