2

我在舞台上有两个按钮,在彼此的顶部。我试图使用 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;
}

请帮忙。

4

2 回答 2

0

我希望您track1成为一个带有资产的电影剪辑,trackOff1trackOn1. 如果是这样,您必须将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;
}
于 2012-11-22T12:49:17.000 回答
0

有一些简单的方法可以做到这一点:

swapChildren(track1, track2);

两个按钮都可以调用这个函数,它的效果与使用 setChildIndex 交换它们的效果相同,或者只是调用addChild(track1)addChild(track2)将影片剪辑放在同一层中的任何其他内容之前。

于 2012-11-22T14:12:32.450 回答