我有一个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本机扩展以检查用户是否已完成并获取值,但这看起来非常混乱,我认为我必须遗漏一些明显的东西。
非常感谢任何帮助。谢谢!
答案 0 :(得分: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