静态/全局变量问题

Posted

技术标签:

【中文标题】静态/全局变量问题【英文标题】:Static/Global variables problems 【发布时间】:2012-10-04 15:59:57 【问题描述】:
    //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;

我尝试访问 player1 并且成功了。

【问题讨论】:

【参考方案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 () 

【讨论】:

我按照你说的做了,1119:通过静态类型 Icons.chars:girl2 的引用访问可能未定义的属性技能 1。

以上是关于静态/全局变量问题的主要内容,如果未能解决你的问题,请参考以下文章

静态变量全局变量和局部变量

请问C++语言里静态变量和全局变量有啥区别?谢谢

全局变量与静态全局变量的异同(static与非static)

全局变量与静态全局变量的异同(static与非static)

实例变量,局部变量,全局变量,静态全局变量

java中的全局变量和静态变量是在编译时分配内存还是在加载时分配内存??