Использование кода в ActionScript3 и Javascript - PullRequest
2 голосов
/ 24 апреля 2010

Вот интересный архитектурный запрос. У меня есть кусок кода, который должен быть запущен на сервере (в Node.js) и на клиенте (в приложении Flash 10, написанном с Actionscript 3). Код в основном довольно сложный объект манипулирования, он не делает никаких вызовов API, и прекрасно работает в обоих контекстах.

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

Так как бы вы это сделали?

  • Я предполагаю, что нет простого способа заставить Flash SDK (должен быть собран без IDE) читать и делать что-то полезное с файлом .js.

  • Моя единственная мысль - написать код-генератор, который берет файл .js и помещает его в оболочку ActionScript.

Есть какие-то очевидные подходы, которые я пропустил?


Чтобы предупредить очевидный ответ, я знаю о кроссплатформенных языках, таких как Haxe.

Ответы [ 2 ]

3 голосов
/ 24 апреля 2010

Возможным способом является использование в вашей обёртке кода Actionscript. Просто быстрый и очень простой тест:

package {
    import flash.display.Sprite;
    import flash.text.TextField;

    public class Main extends Sprite {


        private var _alertTxt:TextField;

        include "some.js"

        public function Main() {
            _alertTxt = new TextField();
            _alertTxt.multiline = true;
            _alertTxt.height = 400;
            _alertTxt.width = 400;
            addChild(_alertTxt);
            run();
        }

        public function alert(msg) {
            _alertTxt.text += msg + "\n";
        }
    }
}

some.js

function run() {
    alert("run");
    var obj = {
        a : 'hello',
        b : 4.5,
        c : false
    };
    loop(obj);
}

function loop(obj) {
    for (var field in obj) {
        alert(obj[field]);
    }    
}

Чтобы скомпилировать из командной строки (вы можете добавить другие опции):

mxmlc -strict=false Main.as

Если вы не установите для параметра false значение false, оно не будет компилироваться из-за отсутствия объявлений типов.

0 голосов
/ 24 апреля 2010

почему не ExternalApi?

У меня есть кусок кода, который должен запустить на сервере

что это за код? если js может обрабатывать, чем ExternaAPI, fcommand или javascript: "alert ('');" может справиться с этим ...

как вставить код JavaScript в URL, чтобы вставить iframe на существующую страницу может помочь с расширением js url

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...