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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
По умолчанию String>Function

Возможно ли заставить приложение интерпретировать некоторую строку как функцию? Если да, то как?
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 26.09.2010, 04:14
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 2  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
this[functionName](functionArgs..);
только костыльно всё это, и try-catch надо ставить
Или имеется ввиду eval?
есть решения. я пробовал собственный эвалюатор делать, некоторые, даже транслятор as3 на as3 делали
ссылки сходу не найду.
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 26.09.2010 в 04:18.
Старый 26.09.2010, 13:23
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 3  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Не совсем то. Кстати, что за eval?
Я имею в виду что-то типа (псевдокод)
Код AS3:
var str:String="trace('bla-bla-bla')";
var f:Function =new Function();
f=str as Function;
this[f]();
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Конечно можно.
Код AS3:
var out:Function=trace
out("wellcome")//wellcome

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
samana, а в каком месте в данном случае строка определяется как функция?
Может это возможно реализовать, поковырявшись в байткоде? Вот сейчас смотрю варианты и не понимаю структуру swf: такое впечатление, что в swf сначала перечисляются функции, затем их содержимое и еще где-то что-то. Проверял на трэйсах...
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 26.09.2010, 14:54
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 6  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
А, я понял, что не правильно понял вопрос. Старею....)

Старый 26.09.2010, 15:29
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 7  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Речь таки о функциях или о методах?
Если о функциях - парсится строка и getDefinitionByName.

Старый 26.09.2010, 15:52
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 8  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Речь о функциях. Т.е. есть некоторый текст, который является string. И есть желание выполнить этот текст так, как будто он написан не переменной, а кодом. Понимаю, что в таком виде это скорее всего бред, поэтому и полез ковырять байткод, но пока что-то не особо выходит. Может это вообще не возможно и я просто зря трачу время?
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 26.09.2010, 16:10
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 9  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Пример вызова функции trace
Код AS3:
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);
		}
 
	}
 
}
Писать парсер внутренних скобок, много аргументов разных типов и т.д. лень.

Старый 26.09.2010, 16:23
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 10  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Psycho Tiger, спасибо. Нужно будет помучать этот вариант.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

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

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


 


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


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