AIR 上的 stage.mouseLock - 错误 #1056

Posted

技术标签:

【中文标题】AIR 上的 stage.mouseLock - 错误 #1056【英文标题】:stage.mouseLock on AIR - Error #1056 【发布时间】:2012-10-23 10:41:05 【问题描述】:

我在 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.2710 和 FlashDevelop 4.1.0 作为我的 IDE。

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

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

【问题讨论】:

【参考方案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 的游戏网站 (Download the Adobe® AIR® SDK) 下载最新的 AIR SDK(与 Flex SDK 预合并),保存它到磁盘并将其位置链接到 FlashDevelop。

[编辑]


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

项目 > 属性

[编辑 2]


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

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

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

-swf-version=17

【讨论】:

如上所述,我的 AIR SDK 是 3.4 (AIR SDK Version: 3.4.0.2710),但我仍然不知道发生了什么... 我之前遇到过一些奇怪的错误,因为手动将 Flex 4.6 SDK 与最近的 AIR SDK 错误地合并。也许你也做过同样的事情?也许尝试从 Adob​​e 的网站下载预先合并的 AIR SDK,看看是否可以为您解决错误。你在运行 FlashDevelop 4.0.4 RTM 吗? 我全新安装了我的 FlashDevelop (4.1.0)。它从头开始下载了 AIR SDK、Flex SDK、FlashPlayerDebugger……我已经开始了一个新的(干净的)项目,只有这个测试类。即使在这些之后,问题仍然存在。 疯了!你的代码对我来说很好。您是否检查了 application.xml 以确保它使用了正确的应用程序命名空间?应该是<application xmlns="http://ns.adobe.com/air/application/3.4"> 一个,还有一点必须注意...添加 swf-version 标签而不更改 application.xml 将导致编译失败...

以上是关于AIR 上的 stage.mouseLock - 错误 #1056的主要内容,如果未能解决你的问题,请参考以下文章

iOS 上的 Flash/AIR 舞台视频 - 有可能吗?表现如何?

Android 上的 MIDI:Java 和/或 AIR 库

iPad Air 上的屏幕宽度和高度不正确

ActionScript 3 在Flex air中获取移动设备上的屏幕分辨率

为啥对象会出现在 AIR Android 上的不同位置?

worklight 5上的adobe air和vista如何使用校验和