如何在actionscript中声明一个全局变量

Joe*_*eld 0 apache-flex actionscript actionscript-3

我期待一些讽刺,但到底是什么.我搜索了actionscript参考页面,似乎无法找到如何声明简单的全局变量.

Val*_*nov 8

已经有几个很好的答案.我只想指出YOU CAN在AS3 中创建全局变量.只需在classes文件夹的根目录中创建一个文件,例如MyGlobal.as:

package {
    public var MyGlobal:String = "bla";
}
Run Code Online (Sandbox Code Playgroud)

你可以访问它,MyGlobal因为它是最顶级的包.这种技术可以用于几种不那么具有破坏性的方式.例如,你可以有一个类似于单例的全局常量,但它不是静态的,而只是某个类的实例:

package {
    public const MySingleton:IMySingleton = new MySingletonImpl();
}
Run Code Online (Sandbox Code Playgroud)

更新; 不是我之前从未听说过的原始海报,所以我整理了一个快速的样本:

在根目录中:

package
{
    public var MyGlobal:String = "bla";
}
Run Code Online (Sandbox Code Playgroud)

测试类:

package com.flextras.stackOverflow
{
    public class MyGlobalTest
    {
        public function MyGlobalTest()
        {
            trace(MyGlobal);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和测试应用程序:

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx" initialize="windowedapplication1_initializeHandler(event)">
    <fx:Script>
        <![CDATA[
            import com.flextras.stackOverflow.MyGlobalTest;

            import mx.events.FlexEvent;

            protected function windowedapplication1_initializeHandler(event:FlexEvent):void
            {
                trace(MyGlobal);
                var a :MyGlobalTest = new MyGlobalTest();
            }

        ]]>
    </fx:Script>
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
</s:WindowedApplication>
Run Code Online (Sandbox Code Playgroud)

运行应用程序,跟踪确实显示两次正确的'bla'值.