`

[转]ApplicationDomain.currentDomain的细节

阅读更多
http://flashteam.tencent.com/post/288/foreac/

ApplicationDomain.currentDomain的细节
Published by Demon.S
平时使用这个属性的时候,一般不会注意什么,直接无脑拿来用的。。。
今天作一些代码验证时,发现了一个问题:

trace(ApplicationDomain.currentDomain==ApplicationDomain.currentDomain)
直接这样判断居然是不相等的!
于是查找了下帮助,上面写着:
currentDomain property
currentDomain:ApplicationDomain [read-only]
Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9, Flash Lite 4
Gets the current application domain in which your code is executing.
Implementation
public static function get currentDomain():ApplicationDomain
貌似看起来没啥帮助,直接理解基本上就是一个只读指针了,怎么会同样的东东不一致呢。
分析估计是一个工厂模式的实现,即每次会找到stage的所在,然后包装成一个新的ApplicationDomain返回。
这样用对于URLLoader使用loadercontext时略方便,以及在无法获得stage的情况下也能够正确得到applicationDomain。
但每次不一致有时还是很纠结
不过好在每个loaderinfo的applicationDomain是真正的只读指针,即下面这样用肯定是会相等的:
trace(stage.loaderInfo.applicationDomain==stage.loaderInfo.applicationDomain)
既然ApplicationDomain.currentDomain不能直接的得到stage的applicationDomain的直接引用,也不能判断多domain的情况的正确性对比,所以要用的话最好还是单独封装到一个另一个静态类中,如StageApplicationDomain.currentDomain,并且由stage初始化时简单赋值即可。。。
真不知道adobe咋想的,简单做成一个指针不就得了……
分享到:
评论

相关推荐

    ApplicationDomain的误解,安全沙箱有关内容

    // context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); loader.load(urlRequest, context); ``` 2. **从加载的SWF文件中获取类定义并实例化**: ```as3 // ...

    AS3.0模块基础知识

    context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); context.applicationDomain = ApplicationDomain.currentDomain; context.applicationDomain = new ApplicationDomain(); ...

    AppDomain编程

    - **创建应用程序域**:可以通过 `AppDomainSetup` 类来设置应用程序域的属性,然后使用 `AppDomain.CreateDomain` 方法来创建一个新的应用程序域。 - **加载程序集**:可以在创建应用程序域后,使用 `AppDomain....

    详细介绍ApplicationDomain和SecurityDomain

    var parentAppDomain:ApplicationDomain = ApplicationDomain.currentDomain; var childAppDomain:ApplicationDomain = new ApplicationDomain(parentAppDomain); ``` 这段代码展示了如何创建一个新的应用程序域,...

    Flex ApplicationDomain

    通过`ApplicationDomain.currentDomain`可以访问当前运行时的ApplicationDomain,然后使用`loadClassFile()`或`loadScript()`方法加载类文件。 2. 类的查找:一旦类被加载,可以通过`hasDefinition()`方法来检查...

    C#的path.GetFullPath 获取上级目录实现方法

    获取当前目录可以使用 代码如下:appdomain.currentdomain.basedirectory 获取当前目录的上级目录 代码如下:path.getfullpath(“..”) 具体代码如下: 代码如下:using system; using system.collections.generic; ...

    C#获取当前路径的7种方法

    这个属性与`System.AppDomain.CurrentDomain.BaseDirectory`相似,都是获取包含应用程序的目录,但可能在某些情况下有所不同,例如在自定义部署场景下。 6. **`System.Windows.Forms.Application.StartupPath`** ...

    c#获取相对路径的方法详解

    通过使用System.Windows.Forms.Application.StartupPath可以获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。例如: string str = System.Windows.Forms.Application.StartupPath; Result: C:xxxxxx...

    数据库连接操作

    打开数据库连接 string dataDir = AppDomain.CurrentDomain.BaseDirectory; if (dataDir.EndsWith(@"\bin\Debug\") || dataDir.EndsWith(@"\bin\Release\")) { dataDir = System.IO.Directory.GetParent(dataDir...

    打开应用程序路径设置语句(C#)

    7. **`AppDomain.CurrentDomain.SetupInformation.ApplicationBase`**:返回应用程序的基础目录,这对于Web应用程序尤其有用。 #### 三、具体实现方法详解 下面我们将逐一分析每种方法的实现细节: ##### 1. `...

    web程序或者web服务中获取当前目录的方法

    ### 方法一:使用 `System.AppDomain.CurrentDomain.BaseDirectory` 在.NET框架中,`System.AppDomain.CurrentDomain.BaseDirectory` 属性可以用来获取当前应用程序域的基本目录。这个目录通常是应用程序的根目录,...

    C#获得当前程序的路径

    `System.Windows.Forms.Application.ExecutablePath` 返回当前正在运行的应用程序的完整可执行文件路径,包括文件名和扩展名。这是获取当前程序路径的另一种常见方式。 ### 7. System.IO.Directory....

    将DLL嵌入到EXE大众

    AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);//添加代码 InitializeComponent(); JObject obj = new JObject(); } //添加代码 System.Reflection....

    C#获取程序运行路径的几种方式

    1. **AppDomain.CurrentDomain.BaseDirectory** 或 **System.Threading.Thread.GetDomain().BaseDirectory** ```csharp string path = AppDomain.CurrentDomain.BaseDirectory; ``` 2. **Environment.Current...

    flex调用swf——swf可以转成具体的对象,而非MovieClip

    context.applicationDomain.loadClass("MyComponent"); var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onSWFLoaded); loader.load(new URLRequest("path_to_your_...

    取相对路径方法

    //可获得当前执行的exe的文件名。 string str1 =Process.GetCurrentProcess().MainModule.FileName;// 获取和设置当前目录(即该进程从中启动...string str7=AppDomain.CurrentDomain.SetupInformation.ApplicationBase

    NET根目录取得方法

    2. **`AppDomain.CurrentDomain.BaseDirectory`**:此属性返回应用程序域的基目录。它通常指向应用程序执行文件所在的位置,因此可以用来获取应用程序的根目录。 ```csharp string baseDirectory = AppDomain....

    C# 获取文件路径

    2. `AppDomain.CurrentDomain.BaseDirectory`:获取基目录,它由程序集冲突解决程序用来探测程序集。 Web 应用程序获取文件路径 在 Web 应用程序中,可以使用以下方法获取文件路径: 1. `HttpRuntime....

    C#路径问题小结 包括多种路径的获取方法

    string applicationBase = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase; ``` #### 6. System.Windows.Forms.Application.StartupPath 此方法用于获取应用程序的启动路径。这个路径通常是指...

Global site tag (gtag.js) - Google Analytics