Flash AS3全局变量?

cod*_*rex 2 flash actionscript actionscript-2 actionscript-3

我有一个主要班级

//main.as

package {
    public class main {
        public var testGlobal:string = "testValue";

    }
}


//pop.as

package {
    public class pop {
        function pop():void {
            trace("testGloabl from main.as" + testGlobal);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何使用主类Object在pop.as宽度上获取testGlobal值.有没有全局变量的方法?

如何在AS3中使用全局变量.

ale*_*mce 14

如果你绝对肯定必须在as3中有一个全局变量,你总是可以在源文件夹的顶层创建一个文件,如下所示:

MULTIPLIER.as

package
{
    public var MULTIPLIER:int = 3;
}
Run Code Online (Sandbox Code Playgroud)

然后,只要您需要乘数,就可以像这样在任何需要的地方引用它:

DoSomeMultiplying.as

package multiplying
{
    public class DoSomeMultiplying
    {
        public function multiplyMe(n:int):int
        {
            var m:int = n * MULTIPLIER;
            MULTIPLIER = m;
            return m;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我强烈建议你不要这样做!这是非常糟糕的练习,非常慢,而且,太可怕了!

但就是这样,可以在默认包中创建一个全局变量或常量来充当全局常量或变量.

在AS3中声明全局函数

请注意,您也可以以相同的方式创建全局函数,并且不需要使用import语句(类似于内置跟踪函数):

greet.as

package {
  public function greet():String { return "Hello World" }
}
Run Code Online (Sandbox Code Playgroud)

与全局变量类似,可以从任何地方访问此全局函数而不使用import语句:

package bar {
    public class foo
    {
        public function foo():void
        {
            trace("New foo says: "+greet()+", no import necessary");
            // New foo says: Hello World, no import necessary
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果有人想知道,这是一个可怕的做法的原因是因为其他地方的另一个变量可能具有相同的名称.那么你将无法从那里访问全局变量(另一个变量所在的范围),因为它将覆盖全局变量. (2认同)

Ama*_*osh 6

testGlobal不是全局变量,它是类的公共实例变量Main.如果不使用Main类对象,则无法访问它,因为没有对象,属性就不存在.实例变量与对象相关联.

如果要访问创建未绑定到任何特定对象实例的属性,请将其声明为static.

//Main.as
package {
    public class Main {
        public static var testGlobal:string = "testValue";
    }
}


//Pop.as
package {
    public class Pop {
        function pop():void {
                trace("testGloabl from Main.as" + Main.testGlobal);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)