当我的目标是10.3及以上时,此代码在actionscript 3中正常工作但当我的目标是flash player 9时,它会给我错误场景1,
Layer' Layer 1',Frame 1,Line 7 1119:通过带有静态类型Class的引用访问可能未定义的属性L.
任何人都知道如何解决这个问题,以便在Flash Player 9中运行吗?我已经尝试过改变键盘了。(键码#)甚至尝试使用闪存播放器9的键码语法? 但我尝试的一切都失败了。我无法在网上找到解决方案,任何人都有任何想法?感谢
var lDown:Boolean = false;
var sDown:Boolean = false;
var dDown:Boolean = false;
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyBoardDown);
function onKeyBoardDown(e:KeyboardEvent):void
{
if (e.keyCode == Keyboard.L)
{
lDown = true;
}
if (lDown == true)
{
if (e.keyCode == Keyboard.S)
{
sDown = true;
}
}
if (sDown == true)
{
if (e.keyCode == Keyboard.D)
{
dDown = true;
}
}
if (dDown == true)
{
trace("ehhh");
}
}
答案 0 :(得分:3)
我对这个问题很感兴趣,因为查看文档,Keyboard and its constants可以从Flash Player 9+获得,但是就像你说的那样,我无法通过A-Z
访问常量Keyboard
在定位Flash Player 9时,我可以访问其他常量,例如F1
,HOME
,NUMPAD_*
等。
只要我将Flash Player版本更改为10或更高版本,我就能够访问A-Z
常量。
我试图找到原因,但是在这个阶段,我可以假设文档无效,并且这些常量在Flash Player 10之前实际上不可用。
幸运的是,在这种情况下,解决方法非常简单:为A-Z的字符代码创建自己的常量:
package
{
public class KeyCodes
{
public static const A:uint = 65;
public static const B:uint = 66;
public static const C:uint = 67;
public static const D:uint = 68;
public static const E:uint = 69;
public static const F:uint = 70;
public static const G:uint = 71;
public static const H:uint = 72;
public static const I:uint = 73;
public static const J:uint = 74;
public static const K:uint = 75;
public static const L:uint = 76;
public static const M:uint = 77;
public static const N:uint = 78;
public static const O:uint = 79;
public static const P:uint = 80;
public static const Q:uint = 81;
public static const R:uint = 82;
public static const S:uint = 83;
public static const T:uint = 84;
public static const U:uint = 85;
public static const V:uint = 86;
public static const W:uint = 87;
public static const X:uint = 88;
public static const Y:uint = 89;
public static const Z:uint = 90;
}
}
要使用此类,请将内容粘贴到与FLA位于同一目录中的.as
文件中,然后:
if(e.keyCode == KeyCodes.A) // etc
我正在努力找到确切原因。