Просмотр полной версии : мувиклип в массиве
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
цикл не работает... вернее работает, но только один раз...
Вы совершаете самую распространенную ошибку начинающих программистов.
Надо передать это 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 больше не меняется, ни как...
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 создает копию клипа в приделах данного.
Дабы не создавать новой темы, пишу в этой.Ну давайте теперь тут свалку устроим
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.