1

我在AIR (3.2-3.4)上设置stage.mouseLock属性时遇到问题

在FlashPlayer (11.2-11.4) 项目中编译以下类可以正常工作:

package  
{
    import flash.display.Sprite;
    import flash.display.StageDisplayState;
    import flash.events.KeyboardEvent;

    public class Main extends Sprite 
    {
        public function Main() 
        {
            stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
        }

        private function onKeyDown(event:KeyboardEvent):void 
        {
            stage.displayState = StageDisplayState.FULL_SCREEN;
            stage.mouseLock = true;
        }
    }
}

但是,当我尝试编译针对 AIR 而不是 FlashPlayer 的同一类时,会出现以下错误:

Error #1056: Cannot create property mouseLock on flash.display.Stage.

我正在使用AIR SDK Version: 3.4.0.2710FlashDevelop 4.1.0 作为我的 IDE。

编辑:即使在全新安装 FlashDevelop、从头开始下载 Flex SDK、AIR SDK、FlashPlayerDebugger 之后,问题仍然存在。

编辑 2:谢谢你,TheDarkIn1978。添加-swf-version=17AND编辑application.xml以手动使用正确的版本(3.4)后,它起作用了...我会尝试找出它是否是最新FlashDevelop或AIR SDK中的错误(可能在FD中)...

4

1 回答 1

1

您的代码是正确的,所以我认为您需要检查 FlashDevelop 是否确实至少针对AIR SDK 3.2

首先,注释掉有问题的代码并在构造函数中跟踪运行时版本:

trace("AIR SDK Version: ", NativeApplication.nativeApplication.runtimeVersion);

这应该至少输出:

AIR SDK 版本:3.2.x.xxxx

如果不是,您应该检查 FlashDevelop 所针对的 Flex SDK(带 AIR):

工具 > 程序设置 > AS3Context > 语言 > 已安装的 Flex SDK

如果您不确定您拥有哪个版本,或者您的目标版本早于 AIR SDK 3.2,您可以从 Adob​​e 的游戏网站下载最新的 AIR SDK(与 Flex SDK 预合并)(下载 Adob​​e® AIR® SDK),将其保存到磁盘并将其位置链接到 FlashDevelop。

在此处输入图像描述

[编辑]


我忘记提及的最后一件事:确保您的项目平台目标设置为至少 AIR 3.2,并且您的项目 AIR SDK 目标设置没有覆盖您的全局 AIR SDK 目标设置。

项目 > 属性

在此处输入图像描述

在此处输入图像描述

[编辑 2]


尝试手动覆盖目标 swf 版本并将其分配给版本 17。

项目 > 属性 > 编译器选项 > 高级 > 其他编译器选项

将以下内容添加到编译器选项数组:

-swf-版本=17

在此处输入图像描述

于 2012-11-02T23:05:35.163 回答