Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   var eto = "txt = qwerty"; (http://www.flasher.ru/forum/showthread.php?t=31224)

uri-uri 07.05.2002 00:27

var eto = "txt = qwerty";
 
Как кусок кода, вложенный в переменную как "строка", заставить исполниться? В глобале это означает - может ли ActionScript в момент выполнения менять свой код? Я пробовал eval(eto); - но, увы - не фунциклирует. Хотя в окне Output при выводе переменных - показывает правильно. Речь о 5Flash. :confused:

valeris 07.05.2002 02:50

Зачем ? :p

Armen Khanoyants 07.05.2002 03:20

все пашет...
например для этого:
eval("_root."+NewName+".url")=url; //не пашет в MX
хотя можно и так написать:
set("_root."+NewName+".url",url); //пашет в MX

да во многих вещях это можно применить...

uri-uri 07.05.2002 05:43

2 Armen Khanoyants
Я имел ввиду не сохранение в переменной значения другой переменной, или конкаткнации значения и имени, а именно части исполняемого кода, прим.
qwe ="with(asdf){gotoAndPlay(2);}"; // а потом
eval(qwe);
// что я думал будет равносильно:
with(asdf){gotoAndPlay(2);
но почему-то не работает. Как написать, что-бы заработало?

УильямБрэдберри 07.05.2002 13:37

ОФФТОП


кто вас всех, нафих, научил в левой части выражения писать
EVAL ?

есть же this[], вот его и юзать нуно.

УильямБрэдберри 07.05.2002 13:58

2uri-uri вишь ли какая хитрость...
ты хочешь запихать в текстовую внешнюю строку название функции вместе с аргументами...

а тут заморочка такая, что они (твои функции) инициализировываются во время компиляции кода...

но выход хитрый все же есть...

хэндлер (т.б имя) функции можно выносить за пределы флэша...

допустим есть файл

text.txt
в нем:
txt=_root.gotoAndStop:2

и есть флэшка с двумя кадрами в руте (в первом stop();) и с мувиком, а на нем код:

onClipEvent (load) {
this.loadVariables("text.txt")
}
onClipEvent (data) {
trace(txt)
a = txt.split(":")[0]
b = txt.split(":")[1]
this[[a](b)];
}

ЗЫ: как грится -
"разделяй и юзай!" (Юлий Цезарь)

Nox Noctis 07.05.2002 15:05

2УильямБрэдберри
угу... Целый Юзарь... :D
только вопрос был чуть-чуть не в этом мне кажется...

2uri-uri
с методами объекта все пройдет на ура:
пишем например
любой_муви_клип[название_метода](параметры_функции);
...то есть обычное обращение к ассоциативному массиву ;)

другое дело если пытаться запустить (скомпилировать по сути) код в процессе выполнения программы (что пытался сделать автор темы)... во флэше это невозможно... это вам не document.write(...) которым можно скрипт набить находу (джаваскрипт-то вообще _не компилируется_ в отличие от ActionScrip'а)... :)

DeliMIter 07.05.2002 16:12

Можно... все. Но сложно. И не стоит. Хотя. Интереса ради. Все таки можно.

Nox Noctis 07.05.2002 16:42

Цитата:

Оригинал написал(а) DeliMIter
Можно... все. Но сложно. И не стоит. Хотя. Интереса ради. Все таки можно.
..ты предлагаешь написать интерпретатор кода во флэше, да ?.. ...и почтальон сойдет с ума разыскивая нас :D :D

уж проще (наверное ;) ) выдрать компилятор из флэша и положить его рядом с эсвээфником, а потом фскоммандой передавать ему строку, которую надо откомпилировать...

мм... или через фласм это как-то завернуть ?..

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

mefisto 07.05.2002 18:24

А что? Я когда-то пытался сделать язык программирования во Флэш. Что-то вроде доисторического КуМир-а :) Но так и не предумал как сделать чтобы
str="function proba(a){ trace(a); }";
eval(str);
proba("проба");
получалось :)


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

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