我在 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中)......
答案 0 :(得分:1)
您的代码是正确的,所以我认为您需要检查FlashDevelop是否确实至少定位 AIR SDK 3.2 。
首先,注释掉有问题的代码并在构造函数中跟踪运行时版本:
trace("AIR SDK Version: ", NativeApplication.nativeApplication.runtimeVersion);
这至少应该输出:
AIR SDK版本:3.2.x.xxxx
如果没有,您应该检查哪个Flex SDK(使用AIR)FlashDevelop正在定位:
工具>节目设置> AS3Context>语言>已安装的Flex SDK
如果您不确定自己拥有哪个版本,或者您的目标是早于AIR SDK 3.2的版本,则可以从Adobe的游戏网站(Download the Adobe® AIR® SDK)下载最新的AIR SDK(与Flex SDK合并)。 ,将其保存到磁盘并将其位置链接到FlashDevelop。
<强> [编辑] 强>
我忘了提及的最后一件事:确保您的项目平台目标至少设置为AIR 3.2,并且项目AIR SDK目标设置不会覆盖您的全局AIR SDK目标设置。
项目&gt;属性 强>
[编辑2]
尝试手动覆盖目标swf版本并将其分配给版本17.
项目&gt;属性&gt;编译器选项&gt;高级&gt;其他编译器选项
将以下内容添加到编译器选项数组中:
-swf版本= 17