PDA

Просмотр полной версии : мувиклип в массиве


AstRonin
22.11.2007, 23:18
в моем проекте необходимо сделать много обрабочиков onPress и onRelease для многих обьектов... чтоб не писать много кода, обьекты сохранил в массиве и попробывал сделать так:

for (var i=0; i<16; i++){
mass[i].onPress = function () {
this.startDrag();
}
}

но, как обнаружилось,после мы не можем обратиться к массиву таким способом даже в этом же цикле:
mass[i]
пишет, что i = 16;
подскажите способ, пожалуйста, как мне обнаружить "поднятый" и, соответсвенно потом "поставленный" обьект.

Волгоградец
22.11.2007, 23:54
this["mass"+i]
Кажется так...

AstRonin
23.11.2007, 09:37
нет, так не получиться - через i вообще ни как не получается ни к чему обратиться, i просто принимает окончательное значение и все.
т.е.... получается так, будто цикл прошел весь, запустил все слушатели событий и больше не вызывается...
странно, но обьекты все слушаются и двигаются...
может есть какой-то флаг, где отмечается какой именно обьект сейчас прослушался...

var t = 0;
for (var i=0; i<16; i++){
mass[i].onPress = function () {
this.startDrag();
trace(this ["mass"+i]);
t = i;
}
trace (t);
}


как и ожидалось, пишет:
0
0
...
0
undefined
цикл не работает... вернее работает, но только один раз...

etc
23.11.2007, 10:12
Вы совершаете самую распространенную ошибку начинающих программистов.

CorC
23.11.2007, 10:17
Надо передать это i в какую-нибудь переменную клипа.

AstRonin
23.11.2007, 10:58
Вы совершаете самую распространенную ошибку начинающих программистов.
скажите, пожалуйста, какую. мне же надо от нее избавиться, чтоб не совершать.

Надо передать это i в какую-нибудь переменную клипа.
подождите, кто-то из нас двоих чего-то не допонимает :)
цикл проходит только один раз. при попытки мне поднять какой либо обьект в данном массиве цикл вообще ни как не реагирует, а поднимать я хочу любой обьект, безовсякой последовательности - оно так и работает, только я не могу понять, какой же всетакие обьект поднят.
даже если я и присвою i переменной клипа, от этого я не узнаю какой обьект я поднял в данный момент.
последний код, приведенный в теме выдает это:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

и все, больше ничего...
при поднятии обьекта появляются сразу же после 15 нулей:

undefined
undefined
undefined
undefined

потому i = 16, а в массиве всего 15 элементов ,и i больше не меняется, ни как...

CorC
23.11.2007, 11:01
for (var i=0; i<16; i++){
mass[i].i = i;
mass[i].onPress = function () {
this.startDrag();
trace(this.i);
}
}

AstRonin
23.11.2007, 11:12
CorC, Помогло! Спасибо огромное! :)

ивените за предыдущий пост, код я понял, только не понял, что он может сработать, после вашей настойчивости изменил код - заработало!:)

AstRonin
23.11.2007, 16:02
Дабы не создавать новой темы, пишу в этой.
существует два основных клипа. и третий находящийся в первом.
Можно ли копировать клип из первого клипа в другой?
метод attachMovie не подходит, т.к. неизвестно зарание какой именно будет копироваться, а duplicateMovieClip создает копию клипа в приделах данного.

iNils
23.11.2007, 16:03
Дабы не создавать новой темы, пишу в этой.Ну давайте теперь тут свалку устроим