Просмотр полной версии : опять про м
У меня уже были вопросы на подобные темы, но вот, опять не могу додуматься, как...
Короче, есть такой цикл, вернее два:
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);
получаем хэш из ссылок
Спасибо Nox, вернусь домой, попробую... :)
markUp = ["mc1", "mc9", "mc17", "mc25", "mc33"];
targets = [];
for (i in markUp) {
targets[markUp[i]] = this[markup[i]];
targets[markUp[i]]._x += dist_mc/2;
}
Спасибо еще раз, вот так сработало идеально, то что надо было:)
Опять затупил... В продолжение темы: над всем этим массивом бегает мувик, на нем такое:
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);
...просто трейс все что ему дают преобразует к строке и потом выдает :)
В этом случае не трейсится вообще ничего(( Самое смешное, что этот вариант я пробовал сегодня уже... Вообще мне нужно чтоб мувик пробегая над targets последовательно изменял свойства членов targets, а для начала я просто хотел через трейс посмотреть что вообще происходит и, либо, как я уже говорил, на выходе получаю: trace(_parent.targets) --> _level0.mc1 и все, то есть только первый член:) targets, либо вообще ничего, как в твоем случае:(
Nox Noctis
25.07.2002, 00:29
покажи весь скрипт дублирования + создания массива targets...
...все должно работать, чес слово :)
Только не бей!
Короче, в первом и единственном фрейме:
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
ну вот видишь... :) у тебя все работает на самом деле... :)
...только массивами пользоваться надо правильно ;)
Nox, большое спасибо за терпение и за урок:)) Да с массивами проблемы...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.