PDA

Просмотр полной версии : наследование обработчика событий?


sarcofag
10.11.2004, 20:31
кладем на рабочее поле клип my_mc.
в кадре пишем

my_mc.onEnterFrame= function () {
_x=30+random(20)
}
duplicateMovieClip(my_mc, "my_mc1", 1 );
my_mc1._y+=40;

запускаем --> два клипа двигаются синхронно.

делаем по другому: в кадре пишем

duplicateMovieClip(my_mc, "my_mc1", 1 );
my_mc1._y+=40;

а на клип вешаем

onClipEvent (enterFrame) {
_x=30+random(20);
}

запускаем --> клипы двигаются асинхронно.

1. почему так?
2. как сделать чтобы движение было асинхронным, но не вешать код на клип, а

сосредоточить его в таймлайне?

спасибо.

Nox Noctis
10.11.2004, 21:17
потому что в первом варианте ошибка.
должно было быть:
my_mc.onEnterFrame= function () {
this._x=30+random(20);
}

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

my_mc.onEnterFrame= function () {
this._x=30+random(20);
}
duplicateMovieClip(my_mc, "my_mc1", 1 );
my_mc1._y+=40;
my_mc1.onEnterFrame = my_mc.onEnterFrame;

а во втором варианте this можно и не указывать, потому что когда делаешь onClipEvent (...) { .. }, считай что всё что в нём находится, идет в блоке tellTarget (this) { ... }

к тому же, onClipEvent дублируется вместе с клипом.

Antares
10.11.2004, 21:27
Ура. Он вернулся ;)

sarcofag
11.11.2004, 04:58
спасибо.