2016-12-23 1 views
-1

Поддерживает ли терминал ExtenalInterface.call доступ к функциям?Поддерживает ли ExternalInterface точную нотацию доступ к функции, принадлежащей объекту?

Я пытаюсь написать класс обертки и не иметь всех своих функций в документе окна, поэтому я поместил их в свой класс MyClass.MyFunction.

Но разве это работает с внешним интерфейсом? Будет ли эта работа:

var result:Object = ExtenalInterface.call("MyClass.MyFunction", "hello"); 

ответ

1

От the documentation

Буквенно имя функции для вызова в контейнере. Использование имени не-алфавитно-цифровой функции вызывает ошибку времени выполнения (ошибка 2155). Вы можете использовать блок try..catch для обработки ошибки.

Вам потребуется диспетчерскую функцию для обозначения вещей к классу:

function dispatcher() { 
    var name = arguments[0]; 
    var func = MyClass[name]; 

    func.apply(null, arguments); 
    //You may also wish to consider slicing the array to remove the function name before calling the function 
} 

И использовать его как это с AS3:

var result:Object = ExtenalInterface.call("dispatcher", "MyFunction", "hello"); 
+0

Спасибо, я думаю, что не было ясно, мой вопрос. Сожалею. Но я думаю, что могу решить эту проблему. Я опубликую то, что я описывал, и то, что нашел в ответе. +1 и спасибо. –

Смежные вопросы