【问题标题】:ExtensionContext error while creating Native Extension in Flex 3.6 SDK在 Flex 3.6 SDK 中创建本机扩展时出现 ExtensionContext 错误
【发布时间】:2012-11-21 00:29:56
【问题描述】:

我正在使用 Flex 3.6 创建本机扩展。编码本机端,然后创建 Flex 库项目,然后创建 .ane 文件。最后将 .ane 文件导入 myFlex 项目。
这是我遇到的问题。在调试应用程序时,出现“1046:找不到类型或不是编译时常量:ExtensionContext”错误。附上图书馆项目.as class。

提前致谢

package com.extension.samples
{
    import flash.events.EventDispatcher;
    import flash.events.IEventDispatcher;
    import flash.external.ExtensionContext;

    public class NetworkConnectionANE extends EventDispatcher
    {
        public var _extContext : ExtensionContext;

        public function NetworkConnectionANE(target:IEventDispatcher=null)
        {
            _extContext = ExtensionContext.createExtensionContext("com.extension.samples.NetworkConnectionANE", null);
            super(target);
        }
        public function Connect(path:String):int
        {
            return _extContext.call("nativeFunc", path);
        }
        public function dispose():void
        {
            _extContext.dispose();
        }
    }
}

编辑: 我尝试在另一个 Flex 桌面应用程序中使用从库项目创建的 .swc 文件,但同样的错误
还尝试了 _extContext = ExtensionContext.createExtensionContext("com.extension.samples.NetworkConnectionANE","");
编辑:关于 Flex SDK 的问题,在 SDK 4.6 中没有问题。现在的问题是,如何在 Flex 3.6 SDK 的 lib 项目中使用 Extension?

【问题讨论】:

    标签: apache-flex air flash-builder air-native-extension


    【解决方案1】:

    我遇到了同样的问题,但是通过以下方式解决了:

    1. 文件 > 新建 > Flex库项目
    2. 选中“包括 Adob​​e AIR 库”选项

    【讨论】:

      【解决方案2】:

      在flash builder中右键项目,进入项目属性,在flex库编译器中添加air库。

      【讨论】:

      • +1 这是解决flash.external.ExtensionContext未找到的编译时错误的正确方法
      【解决方案3】:

      据我所知,ExtensionContext.createExtensionContext() 在这些情况下可以为空:

      1. 调用不在 .ane 文件中。您不能从 .swc 或 .swf 文件中调用它。换句话说,它需要在调用它之前编译成一个 .ane 文件。

      2. 您尝试在扩展程序不支持的平台中使用扩展程序。例如,您尝试在 PC 上使用 iOS 扩展。

      3. 扩展程序的 ID 不存在。扩展 ID 必须与您在 extension.xml 中指定的 ID 相同,例如:

        <extension xmlns="http://ns.adobe.com/air/extension/3.5">
            <id>com.extension.samples.NetworkConnectionANE</id>
            <versionNumber>0.0.1</versionNumber>
            ....
        

      顺便说一句,您不需要设置 ExtensionContext.createExtensionContext 调用的第二个参数,除非您想指定特定于操作系统的 API(我什至没有见过这样做的应用程序)

      【讨论】:

      • 谢谢,但最后我发现该扩展正在使用 Flex v4.6 SDK。所以我使用 v3.6 的 Flex SDK 中的问题。我已经在 SDK v3.6.0 的 flash.external 包中看不到 ExtensionContext 类。这就是问题所在。现在我正在尝试了解 Flex v3.6 是否支持本机扩展。如果是,如何在 v3.6 中为 Native Ext 创建库项目。
      • @nthere9 因为它使用的是旧版本的 AIR。 ExtensionContext.createExtensionContext 需要 AIR 2.5。您可以在 xmnlns 标记中查看您在扩展的 xml 文件中使用的内容(我的示例使用 3.5)。为什么需要使用 Flex 3.6? ANE-s 不应包含任何 Flex 代码...
      • 你说的太对了,当我使用 3.6 创建时,我看到消息“Flex 3.6 需要 Air v1.5”,但在 Air v3.0 for desktop(help.adobe.com/en_US/air/build/…) 之后支持 Native Extension,谢谢
      猜你喜欢
      • 2017-10-08
      • 2013-09-12
      • 1970-01-01
      • 2012-03-09
      • 2017-12-22
      • 2014-10-04
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多