JSObject-подобные вещи в ActionScript 3? - PullRequest
1 голос
/ 17 сентября 2009

Я хотел бы спросить, существует ли эквивалент liveconnect для ActionScript 3. Я понимаю, что в AS3 есть класс ExternalInterface, но он поддерживает только вызов метода по имени. Действительно классная вещь в Java и LiveConnect - это то, что вы можете сделать что-то вроде

function jsFunc(name) = {
  this.name = name;
  this.talk = function(){
    alert('hello world my name is ' + this.name);
  }
}

javaapplet.function(new jsFunc("bob"));

Вышеприведенный подход подходит к псевдокоду, поскольку я никогда не тестировал его, но видел его в действии. В AS3, хотя я могу передать экземпляр «объекта» JavaScript в AS, он часто преобразуется в экземпляр объекта ActionScript, который, насколько я знаю, устраняет все функции.

Я видел реализацию JSInterface, но я не думаю, что это именно так. Есть ли способ заставить OO-подобный javascript работать с ActionScript 3?

Ответы [ 4 ]

1 голос
/ 23 марта 2011

Попробуйте эту библиотеку в коде Google: http://code.google.com/p/jsobject/

0 голосов
/ 04 октября 2009

На самом деле основной сценарий использования - взаимодействие объектов JS с приложением Flex SWF.Поэтому, когда «объект» JS хочет сказать, что что-то происходит в объекте SWF, он вставляет «this» с обратным вызовом.

После исследования способ, которым я использовал для этого, - черезFlex Ajax bridge.Возможно, это не будет прямым ответом на то, как я сформулировал вопрос, но этого было достаточно для моих нужд.

По сути, я делаю это через FABridge, после инициализации я присоединю слушатели событий к объекту.

// JS
FlexApp.addEventListeners('flexDidSomething', this.doSomething().bind(this)); //using mootools;

и во Flex, само основное приложение

// AS
dispatchEvent(new CustomCreatedEvent(param1, param2));

А внутри функции JS я получу доступ к методам get объекта события для получения параметров.

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

Надеюсь, это полезно!

0 голосов
/ 08 декабря 2009

JSInterface разработан именно для таких вещей.

0 голосов
/ 02 октября 2009
ExternalInterface.call("f = function() { alert('Is this like live connect?'); }");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...