我想从我的类中访问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
?
这是一个假设性问题,请不要考虑解决方法.我需要完全按照上面的要求解决问题.提前致谢!
trace
在public
命名空间中,所以它可以到达调用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") } }