dal*_*ege 4 actionscript global actionscript-3
我想从我的类中访问ActionScript 3.0顶级函数,其中trace已经定义了与顶级函数具有相同名称()的符号:
class A {
public static function trace():void {
}
trace("Test");
}
Run Code Online (Sandbox Code Playgroud)
我想用全局ActionScript trace函数调用trace("Test"),但这是不可能的,因为function trace()定义了另一个符号.
在我想要访问的外部定义将位于包(flash.utils或左右)中的情况下,我可以访问该外部定义flash.utils.[definitionName],就像我在这里使用ByteArray一样:
import flash.utils.*;
class ByteArray {
var data:flash.utils.ByteArray;
}
Run Code Online (Sandbox Code Playgroud)
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")
}
}
Run Code Online (Sandbox Code Playgroud)
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")
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
303 次 |
| 最近记录: |