静态/全局变量问题


    //main.fla
    var skill1 = addChild(girl2.skill1);

我想在 girl2.as 中访问 skill1 var,但它不起作用。
显示错误:
1119:通过静态类型 Icons.chars:girl2 的引用访问可能未定义的属性 skill1。

    //girl2.as
    package Icons.chars
    {
import flash.display.Loader;
import flash.display.MovieClip;
import flash.net.URLRequest;
    public class girl2 extends charsel {
public static var skill1:Loader, url1:URLRequest;
public function girl2 () {
    skill1 = new Loader();
    url1 = new URLRequest("skills/nami/skill4.png")
        skill1.load(url1);

我在 charsel.as 试过,它有效

//charsel.as
package Icons.chars
{
import flash.geom.Point;
import flash.display.*;
import flash.events.MouseEvent;
public class charsel extends MovieClip {
protected var originalPosition:Point;
public static var player1:MovieClip, player2:MovieClip, player3:MovieClip;

我尝试访问播放器 1 并且它起作用了。

我不确定为什么在这种情况下要使用静态修饰符。请注意,即使您已将 skill1 声明为静态,它也只有在创建 girl2 类的实例时才可用 - 当您在构造函数中创建它时(另请注意,您应该用大写字母命名您的类,所以这应该是 Girl2)。

因此,我要么删除公共变量的所有静态修饰符,要么,如果有任何特定原因,请使用静态初始化器来实例化 skill1 变量:

public class girl2 extends charsel {
public static var skill1:Loader, url1:URLRequest;
{
skill1 = new Loader();
skill1.addEventListener(...); // event handlers should be static as well
skill1.load(...);
}
public function girl2 () {

最新更新