setchildindex正在制造问题

时间:2015-02-05 09:34:58

标签: actionscript-3 flash

我为孩子们做了一个简单的拖拉游戏。

我使用setchildindex来拖动影片剪辑但是当我点击下一个按钮并转到另一个帧但是影片剪辑仍然在同一个阶段。我该怎么办?

以下是我使用的代码:(drag_1, this.numChildren0);

当我重装时,它无效。

drag_1.buttonMode = true;    
drag_1.addEventListener(MouseEvent.MOUSE_UP, dropMe_1);    
drag_1.addEventListener(MouseEvent.MOUSE_DOWN, dragMe_1);     
var back_1X:Number = back_1.x;    
var back_1Y:Number = back_1.y;    
var hit_2X:Number = hit_2.x;    
var hit_2Y:Number = hit_2.y;    

function dragMe_1(event:MouseEvent)    
{
    drag_1.startDrag()    
    setChildIndex(drag_1, this.numChildren-1);    
}

function dropMe_1(event:MouseEvent)    
{
    drag_1.stopDrag();
    if(drag_1.hitTestObject(drop_2))
    {
        TweenMax.to(drag_1, 0.5, {
            x:hit_2X, 
            y:hit_2Y, 
            ease:Cubic.easeOut
        });
        drag_1.mouseEnabled = false;
        SoundMixer.stopAll();
    }
    else
    {
        TweenMax.to(drag_1, 0.5, 
        {
            x:back_1X,
            y:back_1Y, 
            ease:Bounce.easeOut
        });
     }
}

1 个答案:

答案 0 :(得分:0)

您需要使用MovieClips删除removeChild()

现在,你为什么需要这样做呢?嗯,这是将时间线与代码混合时遇到的奇怪问题之一。在时间轴关键帧上放置符号时,Flash Player将在到达该帧时实例化该符号。之后,更新符号(补间,效果等)的时间轴上的任何帧都将执行此操作,并且任何缺少该符号的帧都将删除它。但是,Flash Player在时间线的每一帧上识别该符号时非常挑剔。当您使用setChildIndex移动它时,您基本上打破了时间轴链接,并且Flash Player不再识别它并根据关键帧将其删除。您还会发现,如果您重新访问具有该符号的关键帧,则无论您移动的那个是否仍然存在,Flash Player都将实例化第二个符号。如你所见,它可能会变得非常混乱。