Joe*_*eld 0 apache-flex actionscript actionscript-3
我期待一些讽刺,但到底是什么.我搜索了actionscript参考页面,似乎无法找到如何声明简单的全局变量.
已经有几个很好的答案.我只想指出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'值.