![]() |
|
||||||||||
|
|
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Цитата:
Или имеется ввиду eval? есть решения. я пробовал собственный эвалюатор делать, некоторые, даже транслятор as3 на as3 делали ссылки сходу не найду.
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 26.09.2010 в 04:18. |
|
|||||
|
Не совсем то. Кстати, что за eval?
Я имею в виду что-то типа (псевдокод)
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
|
samana, а в каком месте в данном случае строка определяется как функция?
Может это возможно реализовать, поковырявшись в байткоде? Вот сейчас смотрю варианты и не понимаю структуру swf: такое впечатление, что в swf сначала перечисляются функции, затем их содержимое и еще где-то что-то. Проверял на трэйсах...
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
|
Речь таки о функциях или о методах?
Если о функциях - парсится строка и getDefinitionByName.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Речь о функциях. Т.е. есть некоторый текст, который является string. И есть желание выполнить этот текст так, как будто он написан не переменной, а кодом. Понимаю, что в таком виде это скорее всего бред, поэтому и полез ковырять байткод, но пока что-то не особо выходит. Может это вообще не возможно и я просто зря трачу время?
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
|
Пример вызова функции trace
package { import flash.display.Sprite; import flash.utils.getDefinitionByName; public class SomeBaseClass extends Sprite { public function SomeBaseClass() { super(); var str:String = "trace(\"Hello world!\")"; eval(str); } private function eval(str:String):void { var brace1Index:int = str.indexOf("("); var brace2Index:int = str.indexOf(")"); //+2 и -1 чтобы убрать кавычки var innerString:String = str.substring(brace1Index + 2, brace2Index -1); var command:Function = getDefinitionByName(str.substr(0, brace1Index)) as Function; command.call(this, innerString); } } }
__________________
Тут мужик танцует и поёт про флэш |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:35. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|