私有函数dataLevel():void {
//Level 2
a1=new Array(b1,b2);
a2=new Array(b3,b4);
//Level 1
allA=new Array(a1,a2);
//trace if the following level exist
//if the following level exist, create the Branch
if (allA is Array==true) {
createBranch(this);
if (allA[0] is Array==true) {
createBranch(allA[0]);
}
if (allA[1] is Array==true) {
createBranch(allA[1]);
}
}
}
private function createBranch(event:Object):void {
trace(event.target);
}
答案 0 :(得分:1)
将变量命名为 event 不会使其成为Event
对象(并为其指定目标属性)。使用trace(event);
跟踪传递的参数。更好的是,将变量名称更改为arg1(argument1)或更有意义的内容。
private function createBranch(arg1:Object):void
{
trace(arg1);
}
event
通常用于事件处理程序中Event
类型的变量或其子类。
答案 1 :(得分:0)
听起来你基本上试图获得堆栈跟踪的内容。您可以在运行时从Error异常类中获取堆栈跟踪的字符串表示形式,但仅限于Flash Player中的调试模式。
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Error.html#getStackTrace%28%29
private function createBranch(arg1:Object):void
{
var stacktrace:String = new Error().getStackTrace();
//parse 'stacktrace' and do what you want here.
}
现在这仅适用于播放器的 debug 版本,'getStackTrace()'在标准版本中返回null,因此这对任何生产应用程序都不起作用。
唯一的另一种选择是将一个令牌传递给'createBranch'以指示调用的来源(我假设它也会确定你正在创建什么类型的'分支'?)这将是一个更好的方法为了让你的逻辑更清洁,我想:
private function createBranch(arg1:Object, branchType:String):void
{
switch(branchType){
case "type1":
//create your branch type1 here
break;
case "type2":
//create your branch type2 here
break;
case "type3":
//create your branch type3 here
break;
}
}
类似的东西。