背景:我一周前开始学习AS3。我的所有文件都在同一个文件夹中,并且路径设置为.
(默认情况下仍为默认值),因此所有类都应在逻辑上相互检测。但事实证明,我有一个有很多public static var
的课,每次我在其他课上调用这些课时,我都会得到错误1119
Access of possibly undefined property isKeyJump through a reference with static type Function.
具有静态变量的类称为Cont
,用于' Control&#39 ;;它主要用于检查按下了哪些键,按按下,或快速按两次。我让这个课基本上组织了代码。
我声明我的所有变量:
public static var isKeyRight:Boolean = false;
如果那不够明确,我甚至在构造函数中写了这个(我累了):
public function Cont()
{
Cont.isKeyRight = false;
... }
但这根本没有解决问题。似乎问题独立于阶级本身;它的只是我的另一个类没有检测到Cont
。
我尝试了import Cont;
,但这也没有改变。我的44行Error 1119看起来像这样:
if (standing && Cont.isKeyJump) vacc = _jumpAcc;
我甚至确保在我的其他类之前实例化Cont
的实例,以确保定义至少在那里。但是,如果这是问题,那可能会在编译后出错,而不是在。
批量:
其他类:(有44个错误的那个)
package {
import flash.display.MovieClip;
import flash.events.Event;
public class PersonnagePrincipal extends Physical {
//INITIALISATION
...
//CONSTRUCTOR
public function PersonnagePrincipal(life:Number = 100, focus:Number = 100, lifeMax:Number = 100, focusMax:Number = 100)
{
super();
...
}
// GET & SET
public function set life(life:Number):void { _life = (life > lifeMax) ? lifeMax : life; }
...
// UPDATE
override public function update(event:Event)
{
move_physical();
if (standing && Cont.isKeyJump) vacc = _jumpAcc;
...
和续:
package {
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.display.MovieClip;
import flash.utils.*;
public class Cont extends MovieClip
{
// Key codes
public static var isKeyRight:Boolean;
public static var isKeyJump:Boolean;
...
//CONSTRUCTOR
public function Cont()
{
Cont.isKeyRight = false;
Cont.isKeyJump = false;
...
if (stage) { init(); }
else { this.addEventListener(Event.ADDED_TO_STAGE, init); }
}
//POST-CONSTRUCTOR
private function init(e:Event=null)
{
this.removeEventListener(Event.ADDED_TO_STAGE, init);
...
}
编辑:好吧,从Cont
获取所有代码并进入PersonnagePrincipal
确实解决了synthax错误(假设我摆脱了Cont.
)......但现在我的代码不那么性感和灵活。
编辑2:我让班级PersonnagePrincipal
为空,它有效。更奇怪的是,当我将行public var control:Cont = new Control
放在Main
中时,它会起作用,同时它会在PersonnagePrincipal
中生成编译时错误。什么?