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

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

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

Регистрация: May 2004
Сообщений: 56
По умолчанию Как сложить команду?

Подскажите плз можно ли заставить работать например такую строку:

i="play";
a=10;

"gotoAnd" + i + "(" + a + ");"

Спасибо.

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

Регистрация: Jan 2002
Сообщений: 1,323
i="Play";
a=10;
this["gotoAnd"+i](a);
или mc["gotoAnd"+i](a), где mc - клип, который должен перескочить на 10-й кадр. Не забудь, что "Play" надо писать с большой буквы.
__________________
ВКЛЮЧИ МОЗГИ!!!
Одноразовых граблей не бывает. На большинство из них уже кто-то наступал. (c) Dindin

Старый 28.05.2004, 23:02
Vit025 вне форума Посмотреть профиль Найти все сообщения от Vit025
  № 3  
Vit025

Регистрация: May 2004
Сообщений: 56
Хотел попроще. Но похоже не лучший пример привел...

А вот так:

nodesTest="";

for (i=1; i<=3; i++) { nodesTest=nodesTest+".childNodes[0]"; }

this.nodesTest.nodeName - не работает.
eval("this."+nodesTest+".nodeName") - тоже не хочет.

Или там все СОВСЕМ по другому надо?

Старый 29.05.2004, 01:27
TTS вне форума Посмотреть профиль Отправить личное сообщение для TTS Найти все сообщения от TTS
  № 4  
TTS
 
Аватар для TTS

Регистрация: Jan 2002
Сообщений: 1,323
не хочет eval, собака, квадратные скобки обрабатывать как надо. Через точку работает (в 5-ке, 6-ке и 7-ке):

node1=new XML();
node2=new XML();
node3=new XML();
node4=new XML();
node1.nodeName="first";
node2.nodeName="second";
node3.nodeName="third";
node4.nodeName="fourth";
node2.appendChild(node1);
node3.appendChild(node2);
node4.appendChild(node3);

nodesTest="node4";
for (i=0; i<4; i++) {
trace(eval(nodesTest+".nodeName"));
nodesTest=nodesTest+".childNodes.0";
}

но выглядит как-то некорректно. И this[...] это не переваривает... Я бы так делать не стал, решил бы задачу как-то по-другому.
__________________
ВКЛЮЧИ МОЗГИ!!!
Одноразовых граблей не бывает. На большинство из них уже кто-то наступал. (c) Dindin

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

Регистрация: Apr 2004
Адрес: macromedia—adobe Любит: Flash MX
Сообщений: 2,860
По умолчанию Не понимаю

Не понимаю я вас что-то, а зачем ваще такие сложные пути нужны, понимаю если переменная это имя или номер кадра, а "PLAY" тут зачем ?

Старый 30.05.2004, 00:38
artfla$her вне форума Посмотреть профиль Отправить личное сообщение для artfla$her Найти все сообщения от artfla$her
  № 6  
artfla$her
 
Аватар для artfla$her

Регистрация: Apr 2004
Адрес: Петербург
Сообщений: 549
Отправить сообщение для artfla$her с помощью ICQ
Цитата:
Не понимаю я вас что-то, а зачем ваще такие сложные пути нужны, понимаю если переменная это имя или номер кадра, а "PLAY" тут зачем ?
Не-а, на самом деле очень важная штука - спасибо TTS, подсказал, а то я и сам не знал раньше, как ето делать - она необходима, например, при создании динамически какой-либо инструкции, выполняемой после ряда операций, когда точно не известно, что же выйдет, а if-ы писать порой очень громоздко выходит. И это не единственная ситуация, где используется метод преобразования строки в код.
__________________
За двумя зайцами погонишься - от егеря по морде получишь

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

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
Возможно, я не совсем срубил фишку, но по-моему, так - правильнее:
Код:
node1=new XML();
node2=new XML();
node3=new XML();
node4=new XML();
node1.nodeName="first";
node2.nodeName="second";
node3.nodeName="third";
node4.nodeName="fourth";
node2.appendChild(node1);
node3.appendChild(node2);
node4.appendChild(node3);

nodesTest="node4";
obj = this['node4']
for (i=0; i<4; i++) {	
trace(obj.nodeName);
obj =obj['childNodes'][0];
}
В любом случае преобразование строки вида 'obj.pole.subPole.subSubPole' можно преобразовать как this['ob'j]['pole1']['subPole']['subSubPole'] Разделитель жёстко задан - точка. Работа с регулярными выражениями - при помощи класса RegExp (http://www.jurjans.lv/flash/RegExp.html) Скобки формируются в цикле или (что еще правильнее) в цикле ассоциированного массива. Имхо этот способ хотя и более громоздок, но более корректен. Имхо.
__________________
судью - на мыло, из игроков - вить веревки.

Старый 02.06.2004, 05:25
TTS вне форума Посмотреть профиль Отправить личное сообщение для TTS Найти все сообщения от TTS
  № 8  
TTS
 
Аватар для TTS

Регистрация: Jan 2002
Сообщений: 1,323
Не срубил.
Смысл был в том, чтобы сделать текстовую "насадку" и применять ее к разным нодам.

deepNode="";
for (i=0; i<depth; i++) deepNode=deepNode+".childNodes.0";

trace(eval("node1"+deepNode+".nodeName"));
trace(eval("node2"+deepNode+".nodeName"));
trace(eval("node3"+deepNode+".nodeName"));
__________________
ВКЛЮЧИ МОЗГИ!!!
Одноразовых граблей не бывает. На большинство из них уже кто-то наступал. (c) Dindin


Последний раз редактировалось TTS; 02.06.2004 в 05:27.
Старый 02.06.2004, 09:30
Dindin вне форума Посмотреть профиль Отправить личное сообщение для Dindin Посетить домашнюю страницу Dindin Найти все сообщения от Dindin
  № 9  
Dindin
 
Аватар для Dindin

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
1)
Код:
deepNode="";
for (i=0; i<depth; i++) deepNode=deepNode+".childNodes.0";

trace(eval("node1"+deepNode+".nodeName"));
trace(eval("node2"+deepNode+".nodeName"));
trace(eval("node3"+deepNode+".nodeName"));
Вывводит три таза undefined, возможно имелось в виду
Код:
node1=new XML();
node2=new XML();
node3=new XML();
node4=new XML();
node1.nodeName="first";
node2.nodeName="second";
node3.nodeName="third";
node4.nodeName="fourth";
node2.appendChild(node1);
node3.appendChild(node2);
node4.appendChild(node3);

deepNode=".childNodes.0";

trace(eval("node2"+deepNode+".nodeName"));
trace(eval("node3"+deepNode+".nodeName"));
trace(eval("node4"+deepNode+".nodeName"));
2) с тем же успехом:
Код:
node1=new XML();
node2=new XML();
node3=new XML();
node4=new XML();
node1.nodeName="first";
node2.nodeName="second";
node3.nodeName="third";
node4.nodeName="fourth";
node2.appendChild(node1);
node3.appendChild(node2);
node4.appendChild(node3);


function deepNode (obj:Object){
	return obj['childNodes'][0];
	}

trace(deepNode(this["node2"]).nodeName);
trace(deepNode(this["node3"]).nodeName);
trace(deepNode(this["node4"]).nodeName);
Или я опять чего-то не понимаю
__________________
судью - на мыло, из игроков - вить веревки.

Старый 04.06.2004, 03:19
TTS вне форума Посмотреть профиль Отправить личное сообщение для TTS Найти все сообщения от TTS
  № 10  
TTS
 
Аватар для TTS

Регистрация: Jan 2002
Сообщений: 1,323
Мнэээээ... Как бы объяснить-то.... И надо ли....
Допустим, такая задачка. Пример дурацкий, конечно, но тут сложно придумать что-то подходящее.
Пусть надо написать ф-ю, которая вытаскивает имя нода из хмл элемента, причем заранее неизвестно с какой глубины вложенности и какой по счету нод. Принимаемые значения - XML-объект (пусть это будет корневой элемент) и путь к ноду:
function getNodeName(XMLrootelement, path){
...
}
path может быть и childNodes[0], и childNodes[3].childNodes[0], и childNodes[5].lastChild.previousSibling - какой угодно и заранее неизвестный.
Так вот задачка - что писать внутри фигурных скобок, чтобы присовокупить этот заранее неизвестный path к заранее неизвестному XMLrootelement.
По нашей методе получается так: return eval("XMLrootelement"+path+".nodeName"), причем path - текстовый, с точками вместо квадратных скобок у массивов. Из-за которых, собсно, весь сыр-бор.

Твоя задача - придумать более приличный вариант
__________________
ВКЛЮЧИ МОЗГИ!!!
Одноразовых граблей не бывает. На большинство из них уже кто-то наступал. (c) Dindin

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

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

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


 


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


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