3

我正在使用 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?

4

3 回答 3

6

在 flash builder 中右键单击项目,转到项目的属性,然后在 flex 库编译器中添加空气库。

于 2013-01-15T20:49:01.770 回答
1

我有同样的问题,但它通过以下方式解决:

  1. File> New>Flex Library Project
  2. 选中“包括 Adob​​e AIR 库”选项
于 2014-09-17T06:48:05.683 回答
-1

据我所知 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(我什至没有见过这样做的应用程序)

于 2012-12-04T16:36:26.260 回答