Я пытаюсь создать API в JS, который будет выполнять некоторые операции и затем выполнять обратный вызов, который зарегистрирован в AS, когда это будет сделано. Поскольку это API, я просто предоставляю сигнатуру метода JS для вызова другим разработчиком во Flash. Таким образом, имя обратного вызова, которое зарегистрировано в части кода AS, должно быть параметром, который передается в API JS, чтобы JS мог связаться с Flash.
Например:
[код AS3]
ExternalInterface.addCallback("flashCallbackName", processRequest);
ExternalInterface.call("namespace.jsFnToCall", flashCallbackName);
function processRequest(data:String):void
{
//do stuff
}
[код JS]
var namespace =
{
jsFnToCall: function(callback)
{
//Do stuff in this function and then fire the callback when done.
//getFlashMovie is just a util function that grabs the
//Flash element via the DOM; assume "flash_id"'s a global var
//Below does not work...it's what I'd be ideally be doing some how.
getFlashMovie(flash_id).callback(data);
}
};
Поскольку определение функции в AS, я не могу использовать подход окна [имя функции]. Единственный способ, о котором я могу думать, - это создать обратный вызов в строке, а затем использовать eval () для его выполнения.
Предложения? T.I.A.