我试图使用一个吸气剂,但在将代码煮沸到我能想到的最简单的事情后,我仍然会遇到同样的错误。这是错误1119的代码
主:
package
{
import flash.display.MovieClip;
public class Main extends MovieClip
{
public function Main()
{
init();
}
public function init():void
{
if (Player.value == 23)
{
trace("if statment")
}
trace(Player.value);
}
}
}
播放器:
package
{
public class Player
{
private var _numberOfKeys:uint;
public function Player()
{
_numberOfKeys = 23;
}
public function get value():uint
{
return _numberOfKeys;
}
}
}
如果我将玩家获取值函数更改为"公共静态函数"我在尝试使用get函数的两行上都会出错。它读取了_numberOfKeys的值,并说它未定义,但是如果我对一个数字进行硬编码,它会将它传递给Main类而没有任何问题。
答案 0 :(得分:0)
如果您希望Main
类包含Player
的实例,请从主init()
实例化播放器:
package
{
import flash.display.MovieClip;
public class Main extends MovieClip
{
public var player:Player;
public function Main()
{
init();
}
public function init():void
{
player = new Player();
trace(player.value);
}
}
}
否则,如果您希望Player的value
属性是静态的,那么它必须能够引用静态初始化的_numberOfKeys
,例如:
package
{
public class Player
{
private static var _numberOfKeys:uint = 23;
public static function get value():uint
{
return _numberOfKeys;
}
}
}
答案 1 :(得分:0)
为了理解这个问题,您需要了解类和类实例之间的区别。 静态函数可以从类本身访问,非静态函数只能在启动对象后才能访问。
要解决第一种情况,您需要编写如下内容:
package
{
import flash.display.MovieClip;
public class Main extends MovieClip
{
public function Main()
{
init();
}
public function init():void
{
var instance:Player = new Player();
if (instance.value == 23)
{
trace("if statment")
}
trace(Player.value);
}
}
}
当你将value函数更改为static时,你得到错误的原因是_numberOfKeys不是静态的。