刚上天地会看到有一个帖子很有意思,之前我也遇到过。注意看下面的代码,似乎没有问题。但是执行的时候会提示://1119: 访问可能未定义的属性 st (通过 static 类型 flash.display:DisplayObjectContainer 引用)。不信试试看:)
类代码:
package
{
import flash.display.Sprite;
import flash.display.MovieClip;
public class ParentTest extends Sprite
{
public function ParentTest ()
{
//te ();
}
public function te ()
{
trace (this.parent.st);
}
}
}
时间轴代码:
import ParentTest;
var pt:ParentTest;
var st:String = "为什么找不到????";
pt = new ParentTest();
addChild(pt);
pt.te();
把类代码改成这样就好了:
package
{
import flash.display.Sprite;
import flash.display.MovieClip;
public class ParentTest extends Sprite
{
public function ParentTest ()
{
//te ();
}
public function te ()
{
var tmp=this.parent; //用一个临时变量来偷梁换柱
trace (tmp.st); //为什么找不到????
}
}
}
分析:这种情况在用子对象操作父对象的时候经常会遇到。原因是编译器一看你的parent是MC啊,MC可没有st这个变量哦,所以提示出错。
你如果用一个变量替代一下,骗过编译器就可以了。