deep_freeze
21.02.2008, 17:12
Вопрос заключается вот в чём.
1. Допустим, у нас имеется MovieClip. Мы присваиваем его экземпляру имя mc.
2. В него мы из библиотеки может добавить экземпляр какого-то другого мувиклипа, присвоив ему InstanceName = "l1" (по номеру уровня).
3. В этот l1 можно добавить экземпляр третьего мувиклипа из библиотеки, присвоив этому экземпляру имя "l2".
4. В l3 помещается ещё один экземпляр и называется l3.
Таким образом, для того, чтобы заставить ролик l3 проигрываться с метки под названием "play_l3", нужен следующий код:
_level0.mc.l1.l2.l3.gotoAndPlay("play_l3");
Это работает для всех мувиклипов, но что касается кнопок (символов типа Button), здесь ситуация немного другая.
1. Создаём кнопку. Называем её "btn". В кадр "Up" добавляем экземпляр мувиклипа из библиотеки, называем его l1.
2. В l1 добавляем ещё один экземпляр, называем его l2.
3. В l2 добавляем ещё один экземпляр, называем его l3.
Значит для того, чтобы запустить анимацию с метки "play_l3" нужен соответственно код
_level0.btn.l1.l2.l3.gotoAndPlay("play_l3");
Но данный код не работает, трассировка показывает, что _level0.btn.l1.l2.l3 не определён, а путь до l3 выглядит следующим образом:
_level0.btn.l1.instance2.l3
Вопрос заключается в том, почему Флеш использоват для l2 автоматическое именование (сгенерированное название "instance2"), и не воспользовался заданным вручную значением "l2"? В мувиклипах такой проблемы нет, а вот при большой вложенности мувиклипов в кнопках она встречается постоянно.
Можно, конечно, в дебаггере посмотреть автоматически просвоенное название экземпляра и обращаться к l3 следующим образом:
_level0.btn.l1.instance2.l3.gotoAndPlay("play_l3");
Но, кроме того, что такой подход очень неудобен для восприятия, он вносит существенную проблему, которая заключается в том, что при добавлении в ролик экземпляров мувиклипов без названия (которым Флеш автоматически просвоит имена), instance2 может уже оказаться, скажем, instancе5 и далее в том же духе...
Что это такое с именованием экземпляров в кнопках и как с этим можно бороться?
1. Допустим, у нас имеется MovieClip. Мы присваиваем его экземпляру имя mc.
2. В него мы из библиотеки может добавить экземпляр какого-то другого мувиклипа, присвоив ему InstanceName = "l1" (по номеру уровня).
3. В этот l1 можно добавить экземпляр третьего мувиклипа из библиотеки, присвоив этому экземпляру имя "l2".
4. В l3 помещается ещё один экземпляр и называется l3.
Таким образом, для того, чтобы заставить ролик l3 проигрываться с метки под названием "play_l3", нужен следующий код:
_level0.mc.l1.l2.l3.gotoAndPlay("play_l3");
Это работает для всех мувиклипов, но что касается кнопок (символов типа Button), здесь ситуация немного другая.
1. Создаём кнопку. Называем её "btn". В кадр "Up" добавляем экземпляр мувиклипа из библиотеки, называем его l1.
2. В l1 добавляем ещё один экземпляр, называем его l2.
3. В l2 добавляем ещё один экземпляр, называем его l3.
Значит для того, чтобы запустить анимацию с метки "play_l3" нужен соответственно код
_level0.btn.l1.l2.l3.gotoAndPlay("play_l3");
Но данный код не работает, трассировка показывает, что _level0.btn.l1.l2.l3 не определён, а путь до l3 выглядит следующим образом:
_level0.btn.l1.instance2.l3
Вопрос заключается в том, почему Флеш использоват для l2 автоматическое именование (сгенерированное название "instance2"), и не воспользовался заданным вручную значением "l2"? В мувиклипах такой проблемы нет, а вот при большой вложенности мувиклипов в кнопках она встречается постоянно.
Можно, конечно, в дебаггере посмотреть автоматически просвоенное название экземпляра и обращаться к l3 следующим образом:
_level0.btn.l1.instance2.l3.gotoAndPlay("play_l3");
Но, кроме того, что такой подход очень неудобен для восприятия, он вносит существенную проблему, которая заключается в том, что при добавлении в ролик экземпляров мувиклипов без названия (которым Флеш автоматически просвоит имена), instance2 может уже оказаться, скажем, instancе5 и далее в том же духе...
Что это такое с именованием экземпляров в кнопках и как с этим можно бороться?