objective-c - AIR native 扩展 : Can I call ActionScript 3 method from C/Objective-C?

标签 objective-c c actionscript-3 air air-native-extension

我有一个 AIR 应用程序,它使用 native 扩展来创建用户浏览的一系列对话框。用户浏览对话框后,我需要 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 中启动一个定时器,它会定期对 native 扩展执行 ping 操作,以检查用户是否已完成并获取值,但这看起来太乱了,我想我一定遗漏了一些明显的东西。

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

最佳答案

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

因此,首先在您的 AS3 代码中为您的扩展上下文添加一个监听器:

context.addEventListener( StatusEvent.STATUS, onStatus);

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

代码和级别变量是您可以从 native 代码传回的两个字符串。在您的 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

关于objective-c - AIR native 扩展 : Can I call ActionScript 3 method from C/Objective-C?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19011695/

相关文章:

objective-c - UIWeb View : resize/fit according to the content?

objective-c - 如何在 objective-c 中编辑 mp3 ID3 标签

C 预处理器 : line continuation: why exactly comment is not allowed after backslash character ('\' )?

c - 从指向数组的指针使用 memcpy

ios - 为什么我的 SpriteNode 没有被添加到场景中?

iphone - 为 iPhone 应用程序制作手册的最简单和最快的方法是什么?

c - 快速排序字符数组(字符串)C编程

ios - 适用于 iOS 的 Adob​​e AIR 3.8 Flash Builder 4.6 - 带有 Actionscript 的辅助 SWF 可用于快速打包但在 Releast Build 上失败

actionscript-3 - 如何在 Emacs 中控制左括号后的缩进

android - ActionScript 3 FlashDevelop 和 Air 应用程序发布 - xml list 设置/包问题