setChildIndex在重叠按钮

问题描述:

我有两个按钮在舞台上,在彼此之上。我试图使用setChildindex,以便当我按下on按钮时,关闭按钮将出现在它的顶部。反之亦然。但我不断收到这个错误,我似乎无法理解。setChildIndex在重叠按钮

Track On ArgumentError:错误#2025:提供的DisplayObject必须是调用者的孩子。 在flash.display一::级DisplayObjectContainer/setChildIndex() 在com.audio::Sequencer/trackOn1()

private var trackOnOff:Boolean = true; 

this.track1.trackOn1.addEventListener(MouseEvent.CLICK, trackOn1); 
this.track1.trackOff1.addEventListener(MouseEvent.CLICK, trackOff1); 

public function trackOn1(event:MouseEvent = null):void 
{ 
trace("Track On") 
this.setChildIndex(this.track1.trackOff1, this.numChildren - 1); 
trackOnOff = true; 
} 

public function trackOff1(event:MouseEvent = null):void 
{ 
trace("Track Off") 
this.setChildIndex(this.track1.trackOn1, this.numChildren - 1); 
trackOnOff = false; 
} 

请帮助。

我希望你的track1是一个有资产的影片剪辑,即trackOff1,trackOn1。如果是这样,您必须将您的setChildIndex()呼叫定位到该MC,而不是this

public function trackOn1(event:MouseEvent = null):void 
{ 
    trace("Track On") 
    this.track1.setChildIndex(this.track1.trackOff1, this.track1.numChildren - 1); 
    trackOnOff = true; 
} 

public function trackOff1(event:MouseEvent = null):void 
{ 
    trace("Track Off") 
    this.track1.setChildIndex(this.track1.trackOn1, this.track1.numChildren - 1); 
    trackOnOff = false; 
} 
+0

完成这个伎俩谢谢。 – Robster

有几个简单的方法来做到这一点:

swapChildren(track1, track2);

两个按钮可以调用这一功能,它会产生同样的效果与使用setChildIndex左右交换它们,或者简单地调用addChild(track1)addChild(track2)将movieclip带到同一图层中的任何其他位置。