Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Обработка текста для загрузка уровня (http://www.flasher.ru/forum/showthread.php?t=156844)

Scorp2008 27.05.2011 16:44

Обработка текста для загрузка уровня
 
Всем привет :) вобщем у меня имеется некий редактор, но соль в том что в него нельзя подгружать им выдаваемый код, ну вобщем не в этом суть, конкретно нужно вот что:
скажем имеется у меня вот такой текст-код:
--
create_box(355, 345, 20, 20, 0, 0);
create_robot(395, 355, 15, 1);
square_tile(435, 305, 3, 3);
--

Нужно чтобы когда я вставляю его в поле и нажимаю кнопку происходило некое действие в соответствии с кодом, например читаем первую строчку create_box(355,345,20,20,0,0); и определяем, и вызываем соответствующую функцию для этого - если create_box то например функцию create_box_da, причем с такими же параметрами как и указано в текстовой строке. Вот собственно вопрос, у кого-нибудь есть мысли как это проще всего реализовать?
Заранее спасибо !11

DZHETIGAPA 27.05.2011 17:16

отредактируй свой пост и поясни нормально, что ты хочешь получить.

Jewelz 27.05.2011 17:45

обыкновенный разбор строки нужен

навскидку:

Код AS3:

//ассоциируем идентификаторы функций с их названиями во флеше
private var functions:Object = {
        create_box:create_box_da        //и т.д.
}
 
private function create_box_da(...args):void {} //твоя функция
 
//выполняем ф-цию для каждой строчки текст-кода
private function execute(string:String):void
{
        var func:Function = functions[getFuncNameFromString(string)];
        var args:Array = getArgsFromString(string);
        func.call(this, args);
}
 
private function getFuncNameFromString(string:String):String
{
        var index:int = string.indexOf("(");
        return string.slice(0, index + 1);
}
 
private function getArgsFromString(string:String):Array
{
        var index1:int = string.indexOf("(");
        var index2:int = string.indexOf(")");
        var subString:String = string.slice(index1 + 1, index2);
        return subString.split(",");
}

можно это по-красивее написать, но чтобы было понятно написал подробнее
и сам разбор строки можно сделать другими алгоритмами

Scorp2008 27.05.2011 17:46

DZHETIGAPA, зачем его редактировать? А получить нужно, я же объяснил:
Допустим у меня есть текстовое поле и я туда ввожу фразу "create_box(355, 345, 20, 20, 0, 0);" (т.е. у меня есть текстовое поле с множеством таких фраз) и я хочу чтобы по нажатию кнопку это текстовое поле обрабатывалось, т.е. например определяем первую строчку и видим там create_box - то вызываем функцию create_box_da, с такими же параметрами как и в текстовой строчке.

Добавлено через 1 минуту
Jewelz, спасибо вроде то что надо :yahoo: буду разбираться, если что спрошу если что-то не понятно будет :rtfm: :)


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

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