Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 28.05.2004, 13:45
Alexksey вне форума Посмотреть профиль Отправить личное сообщение для Alexksey Найти все сообщения от Alexksey
  № 1  
Alexksey

Регистрация: May 2002
Адрес: Москва (Зеленоград)
Сообщений: 17
Question Создание динамической команды перехода

В фильме имеется 32 мувиклипа, каждый из которых может
принимать 5 графических видов (состояний). Пользователь
выбирает один из мувиклипов и устанавливает нужное
графическое состояния, путем ввода определенных
значений в окна ввода. (выбор клипа осущшествляется по
его имени в своем окне ввода).

Проблема следующая:

в кнопке выбора размещена команда вида:

_root.имя мувиклипа.gotoAndplay(a1);

где а1 - одно из 5 состояний мувиклипа.

не получается правильно передать в вышеприведенную
команду имя выбранного мувиклипа (одного из 32
экземпляров).
Пробовал _root.eval("a").GotoAndplay(a1); - Не работает.
Если подставляю, например, _root.e1.GotoAndPlay(a1);
установка одного из 5 состояний экземпляра мувиклипа
работает нормально.

КАК ОРГАНИЗОВАТЬ ДИНАМИЧЕСКИЙ ВЫБОР ИМЕНИ КЛИПА
ДЛЯ ВЫПОЛНЕНИЯ КОМАНДЫ ВИДА:
_root.имя мувиклипа.gotoAndplay(a1);
????????????????????????????????????????????????????

Старый 28.05.2004, 17:35
loadrunner вне форума Посмотреть профиль Отправить личное сообщение для loadrunner Найти все сообщения от loadrunner
  № 2  
loadrunner

Регистрация: Jun 2002
Сообщений: 18
попробуйте создайть переменную с именем клипа и трейсить при нажатии и какую переменную (содержашую имя клипа) вы подставляете в обращении...Трейсом можно выловить такие баги.

eval бывает тупит и вот конструкция такго типа помогает _root[nn].gotoAndPlay(a1);
где nn переменная с именем клипа.

Старый 28.05.2004, 21:13
Dindin вне форума Посмотреть профиль Отправить личное сообщение для Dindin Посетить домашнюю страницу Dindin Найти все сообщения от Dindin
  № 3  
Dindin
 
Аватар для Dindin

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
_root[nn] - где nn - строка-имя мувиклипа. Если nn - переменная, то она должна содержать строку. _root['mc'] эквивалентно _root.mc
__________________
судью - на мыло, из игроков - вить веревки.

Старый 28.05.2004, 21:48
CrazY WorM вне форума Посмотреть профиль Отправить личное сообщение для CrazY WorM Найти все сообщения от CrazY WorM
  № 4  
CrazY WorM

Регистрация: May 2004
Адрес: ЗЕЛЕНОГРАД
Сообщений: 43
>>Dindin
А если будет ещё вложенность например

_root[nn.mm] работать не будет

вот туто как раз eval катит

eval(nn.mm)

Старый 29.05.2004, 00:31
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 5  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
не стоит первым же сообщением на форуме писать глупость :)

_root[nn.mm] работать не будет и не должно.

а

_root[nn].mm работать будет

Старый 29.05.2004, 12:58
Dindin вне форума Посмотреть профиль Отправить личное сообщение для Dindin Посетить домашнюю страницу Dindin Найти все сообщения от Dindin
  № 6  
Dindin
 
Аватар для Dindin

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
Нужно, я думаю, отметить, что метод глобального класса Object eval() возвращает всегда не сам объект, а только ссылку на него. Поэтому выражение типа "_root.eval("a")" изначально бессмысленно, так как если у нас в руте существует объект _root.a и процедура eval() вызывается из рута, то eval('a') вернёт ссылку на объект _root.a.
И совершенно бессмысленно писать перед eval() преффикс _root
зы. Вышесказанное верно в любых ситуациях
__________________
судью - на мыло, из игроков - вить веревки.

Старый 29.05.2004, 13:00
Dindin вне форума Посмотреть профиль Отправить личное сообщение для Dindin Посетить домашнюю страницу Dindin Найти все сообщения от Dindin
  № 7  
Dindin
 
Аватар для Dindin

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
2CrazY WorM
_root[nn.mm] прокатит только в том случае, если у тебя есть объект nn в области видимости и поле этого объекта mm содержит строковое значение.
__________________
судью - на мыло, из игроков - вить веревки.

Старый 29.05.2004, 13:44
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 8  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
Цитата:
Оригинал написал(а) Dindin
Нужно, я думаю, отметить, что метод глобального класса Object eval()
нужно, я думаю, отметить, что евал - это не метод :) и вообще не функция... а в лучшем случае макрос :)

если во время проигрывания ролика проверить является ли евал объектом - мы будем огорчены :) просто запустите trace(eval);

и, соответственно, это дело не вызывается ни относительно чего -
всё что делает строчка
eval('some_name');

это добавляет при компиляции в байткод одно действие:

push 'some_name'

то есть какое-либо тело функции вообще отсутствует.

Старый 29.05.2004, 14:08
Dindin вне форума Посмотреть профиль Отправить личное сообщение для Dindin Посетить домашнюю страницу Dindin Найти все сообщения от Dindin
  № 9  
Dindin
 
Аватар для Dindin

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
Интересно В AS dictionary про eval() сказано следующее :
Цитата:
Function; accesses variables, properties, objects, or movie clips by name. If expression is a variable or a property, the value of the variable or property is returned. If expression is an object or movie clip, a reference to the object or movie clip is returned. If the element named in expression cannot be found, undefined is returned
То есть они утверждают, что eval() это всё-таки функция. А функция просто обязана наследоваться от Object.
Код:
function asa() {
}
trace(getURL);
trace(getURL.__proto__);
trace(asa);
trace(asa.__proto__);

trace(eval.valueOf());
trace(eval.__proto__());

trace(eval);
Явственно показывает, что eval - не отчего не наследует и примитивного значения не имеет. Значит eval - всего лишь команда компилятора. Очень любопытно
__________________
судью - на мыло, из игроков - вить веревки.

Старый 29.05.2004, 14:50
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 10  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
ага, ага, и я о том. самое адекватное название - макрос ассемблера. (хотя какой же это макрос, если он заменяет одну команду на одну команду :)) )

Создать новую тему   Часовой пояс GMT +4, время: 17:37.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 17:37.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.