![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: May 2002
Адрес: Москва (Зеленоград)
Сообщений: 17
|
В фильме имеется 32 мувиклипа, каждый из которых может
принимать 5 графических видов (состояний). Пользователь выбирает один из мувиклипов и устанавливает нужное графическое состояния, путем ввода определенных значений в окна ввода. (выбор клипа осущшествляется по его имени в своем окне ввода). Проблема следующая: в кнопке выбора размещена команда вида: _root.имя мувиклипа.gotoAndplay(a1); где а1 - одно из 5 состояний мувиклипа. не получается правильно передать в вышеприведенную команду имя выбранного мувиклипа (одного из 32 экземпляров). Пробовал _root.eval("a").GotoAndplay(a1); - Не работает. Если подставляю, например, _root.e1.GotoAndPlay(a1); установка одного из 5 состояний экземпляра мувиклипа работает нормально. КАК ОРГАНИЗОВАТЬ ДИНАМИЧЕСКИЙ ВЫБОР ИМЕНИ КЛИПА ДЛЯ ВЫПОЛНЕНИЯ КОМАНДЫ ВИДА: _root.имя мувиклипа.gotoAndplay(a1); ???????????????????????????????????????????????????? |
|
|||||
|
Регистрация: Jun 2002
Сообщений: 18
|
попробуйте создайть переменную с именем клипа и трейсить при нажатии и какую переменную (содержашую имя клипа) вы подставляете в обращении...Трейсом можно выловить такие баги.
eval бывает тупит и вот конструкция такго типа помогает _root[nn].gotoAndPlay(a1); где nn переменная с именем клипа. |
|
|||||
|
_root[nn] - где nn - строка-имя мувиклипа. Если nn - переменная, то она должна содержать строку. _root['mc'] эквивалентно _root.mc
__________________
судью - на мыло, из игроков - вить веревки. |
|
|||||
|
Регистрация: May 2004
Адрес: ЗЕЛЕНОГРАД
Сообщений: 43
|
>>Dindin
А если будет ещё вложенность например _root[nn.mm] работать не будет вот туто как раз eval катит eval(nn.mm) |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
не стоит первым же сообщением на форуме писать глупость :)
_root[nn.mm] работать не будет и не должно. а _root[nn].mm работать будет |
|
|||||
|
Нужно, я думаю, отметить, что метод глобального класса Object eval() возвращает всегда не сам объект, а только ссылку на него. Поэтому выражение типа "_root.eval("a")" изначально бессмысленно, так как если у нас в руте существует объект _root.a и процедура eval() вызывается из рута, то eval('a') вернёт ссылку на объект _root.a.
И совершенно бессмысленно писать перед eval() преффикс _root зы. Вышесказанное верно в любых ситуациях
__________________
судью - на мыло, из игроков - вить веревки. |
|
|||||
|
2CrazY WorM
_root[nn.mm] прокатит только в том случае, если у тебя есть объект nn в области видимости и поле этого объекта mm содержит строковое значение.
__________________
судью - на мыло, из игроков - вить веревки. |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
Цитата:
если во время проигрывания ролика проверить является ли евал объектом - мы будем огорчены :) просто запустите trace(eval); и, соответственно, это дело не вызывается ни относительно чего - всё что делает строчка eval('some_name'); это добавляет при компиляции в байткод одно действие: push 'some_name' то есть какое-либо тело функции вообще отсутствует. |
|
|||||
|
Интересно
В AS dictionary про eval() сказано следующее :
Цитата:
function asa() {
}
trace(getURL);
trace(getURL.__proto__);
trace(asa);
trace(asa.__proto__);
trace(eval.valueOf());
trace(eval.__proto__());
trace(eval);
![]()
__________________
судью - на мыло, из игроков - вить веревки. |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
ага, ага, и я о том. самое адекватное название - макрос ассемблера. (хотя какой же это макрос, если он заменяет одну команду на одну команду :)) )
|
![]() |
Часовой пояс GMT +4, время: 17:37. |
|
|
« Предыдущая тема | Следующая тема » |
|
|