PDA

Просмотр полной версии : Одинаковые события для разных мувиков


Fisher
10.11.2003, 17:05
Привет :)
Для экономии объема и воще чтоб повыпендриватся появилась вот такая мысля - описать одинаковые события для разных мувиков в цикле меняя их имена. Звучит не очень понятно?
Тогда вот пример:
Есть 3 мува m1, m2, m3 и код в е единственном фрэйме

for (i=1; i<4; ++i) {
o = eval("m"+i);
o.onEnterFrame = function() {
o._x+=1;
};
}

Подразумевалось что все три мува будут медленно ехать вправо. Но что происходит на самом деле? Кто виноват и что делать? :)

Nox Noctis
10.11.2003, 17:16
либо я чего-то не понимаю, либо одно из двух :)

все работает же...
ты уверен что паблишишь под шестой флэш хотя бы ?

Fisher
10.11.2003, 17:36
А нифига :)
это ты мой o. на this. заменил - у тебя сам рут едет а не мувы :)

Nox Noctis
10.11.2003, 17:53
не рут, не правда :)
накидай еще графики - увидишь что она не едет...

и там естессно нужен зис.
потому что иначе у тебя ничего не поедет, либо поедет только последний клип
(в зависимости от того как у тебя счетчик цикла будет сделан)

в этом и была ошибка.

opex
10.11.2003, 17:54
дак надо чтобы все три мувика двигались если это так то вот код

_root.onEnterFrame = function() {
for (i=1; i<4; ++i) {
_root["m"+i]._x += 1;
}
};

Штрек
10.11.2003, 23:33
Оригинал написал(а) opex
дак надо чтобы все три мувика двигались если это так то вот код

_root.onEnterFrame = function() {
for (i=1; i<4; ++i) {
_root["m"+i]._x += 1;
}
};

Это из другой оперы.

Fisher
11.11.2003, 10:59
2Nox
Точно - работает :) Это я как пацан зеленый в адресации запутался :D Надо еще потестить а то в башке еще не до конца уложилось :) . Получается что этот код вроде как прямо в клипе потом и находится? Я вроде поначалу так и думал. НО! Добавь в функцию строку
trace(_target);
Это как понимать?
2All
Не мужики мне рут двигать не надо. Мне нужно одинаковый код, ну или почти одинаковый (можно анализировать изнутри свойство _name и варировать) засунуть в кучу разных мувиков (или кнопок).

Nox Noctis
11.11.2003, 11:11
Оригинал написал(а) Fisher
Добавь в функцию строку
trace(_target);
Это как понимать?гляди, тебя щас вообще дисквалифицируют :))

область видимости имен так устроена в объектной модели..
если в коде обработчика идентификатор написан БЕЗ указания пути, то:
сначала идентификатор ищется в объекте _global, потом внутри контейнера, в котором находится код (сам код, а не объект для которого он предназначен) потом во временных переменных самой функции, потом внутри объекта, выполняющего обработчик..

поставь this._target вместо _target :)

Fisher
11.11.2003, 11:31
Да мы воще люди темные - от сохи :D Академиев не кончаем хелпов не читеем :D Мы эту флэш пролетарским нутром чуем - все на тел таргет меряем :)
Спасибо мил человек - прийдется видать всеж теоретически подковатца мальца :)