当前位置:  开发笔记 > 编程语言 > 正文

如何在ActionScript中访问顶级包?

如何解决《如何在ActionScript中访问顶级包?》经验,为你挑选了1个好方法。

我想从我的类中访问ActionScript 3.0顶级函数,其中trace已经定义了与顶级函数具有相同名称()的符号:

class A {
  public static function trace():void {
  }
  trace("Test");
}

我想用全局ActionScript trace函数调用trace("Test"),但这是不可能的,因为function trace()定义了另一个符号.

在我想要访问的外部定义将位于包(flash.utils或左右)中的情况下,我可以访问该外部定义flash.utils.[definitionName],就像我在这里使用ByteArray一样:

import flash.utils.*;
class ByteArray {
  var data:flash.utils.ByteArray;
}

ActionScript 3.0中是否有类似的语法表达式允许我在第一个示例中访问跟踪函数而不更改类方法的名称trace

这是一个假设性问题,请不要考虑解决方法.我需要完全按照上面的要求解决问题.提前致谢!



1> Patrick..:

tracepublic命名空间中,所以它可以到达调用public::trace,但是这里的问题是你正在重新定义另一个公共跟踪,所以你不能调用前一个.

你能做的是:

1 -如果你的方法跟踪还没有被public制作它protected or private,然后你就可以调用原始的痕迹:

public class Main extends Sprite 
{
    protected function trace(...args):void {
        public::trace(args) // access to the public function trace
    }
    public function Main():void 
    {
        trace("hello world")
    }       
}

2 - 如果您无法更改签名,请将原始跟踪分配到静态var/const中,以便稍后使用它:

public class Main extends Sprite 
{
    // here save the original trace function
    private static const _trace:Function = trace

    public function trace(...args):void {
        _trace(args) // call the original trace
    }
    public function Main():void 
    {
        trace("hello world")
    }       
}

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有