AIR 原生扩展:我可以从 C/Objective-C 调用 ActionScript 3 方法吗?



我有一个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 操作以检查用户是否已完成并获取值,但这似乎如此混乱,以至于我认为我一定错过了一些明显的东西。

任何帮助都非常感谢。谢谢!

您需要做的是从本机代码调度"状态"事件,然后在 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.htmlhttp://help.adobe.com/en_US/air/extensions/WSb464b1207c184b14-62b8e11f12937b86be4-7ff5.html

最新更新