1

我有一个 AIR 应用程序,它使用本机扩展来创建一系列用户导航的对话框。在用户浏览对话框后,我需要 C/Objective-C 端通知 AIR 应用程序用户完成并转发用户所做的一系列选择。

那可能吗?

IE:C/ObjC 等价物

public function evokeMyASMethod(choice0:int,choice1:int):Boolean
{
   // context opens the native extension to the AS3 side 
   var success:Boolean = context.call("myASMethod", choice0, choice1) as Boolean;
   return success;
}

另一种解决方案是在 ActionScript 中启动一个计时器,该计时器定期 ping 本机扩展以检查用户是否已完成并获取值,但这看起来很混乱,我想我一定遗漏了一些明显的东西。

任何帮助深表感谢。谢谢!

4

1 回答 1

3

您需要做的是从本机代码中分派“状态”事件,然后在您的 AS3 代码中监听它们。

所以首先在你的 AS3 代码中添加一个监听器到你的扩展上下文中:

context.addEventListener( StatusEvent.STATUS, onStatus);

private function onStatus( event:StatusEvent ):void
{
     trace( "code = " + event.code );
     trace( "level = " + event.level );
}

代码和级别变量是您可以从本机代码传回的两个字符串。在您的 ObjC 代码中,您将使用 FREDispatchStatusEventAsync 函数将事件触发回您的 AS3 代码:

FREDispatchStatusEventAsync( yourFreContext, (const uint8_t*)"code", (const uint8_t*)"level" );

您只需要更改您认为合适的“代码”和“级别”字符串并在您的 onStatus 处理程序中处理它们。

更多信息在这里:

http://help.adobe.com/en_US/air/extensions/WSb464b1207c184b143961a5e412937b5d5c6-7ffc.html http://help.adobe.com/en_US/air/extensions/WSb464b1207c184b14-62b8e11f12937b86be4-7ff5.html

于 2013-09-25T22:38:38.683 回答