【问题标题】:AS3 Scope issue, How do I dynamically create a new MC in a package/class?AS3 范围问题,如何在包/类中动态创建新的 MC?
【发布时间】:2011-01-14 15:34:48
【问题描述】:
非常感谢您的宝贵时间!这是我的问题,...
public function addNewMc():void{
var newMC:MovieClip= new MovieClip();
this.addChild(newMC);
}
public function removeOldMc(newMC):void{
this.removeChild(newMC);
}
如何在一个方法中创建一个新的 MovieClip,它可以在整个类中使用,而不是在类的顶部定义它?并且对于加分,不使用返回。
我可以让它工作,如果第一个函数 addNewMc 返回值 newMC,并将它传递给任何其他方法......但是对于我正在写的内容,我希望用其他东西用完我的回报。谢谢!
【问题讨论】:
标签:
actionscript-3
class
scope
movieclip
【解决方案1】:
不知道我是否完全理解你,但听起来你想要访问动态创建的影片剪辑而不明确定义它?!那正确吗?
如果是这样,那么你可以做你现在所拥有的,但添加一个检索方法:
public function addNewMc():void{
var newMC:MovieClip= new MovieClip();
this.addChild(newMC);
}
public function getMC():MovieClip
{
var len:uint = this.numChildren;
while(len--)
{
var tempObj:* = this.getChildAt(len);
if(tempObj is MovieClip)
return MovieClip(tempObj);
}
return null;
}
您还可以为动态创建的影片剪辑添加名称属性:
public function addNewMc():void
{
var newMC:MovieClip= new MovieClip();
newMC.name = "new_MC";
this.addChild(newMC);
}
然后你可以像这样检索:
this.getChildByName("new_MC");
再次不知道我是否理解您的确切要求
干杯
埃里克 ;)