在前台移动MC的问题

时间:2011-08-12 12:10:59

标签: actionscript-3

我在设置Movieclip的不同子索引时遇到问题。这是代码:

function processMusica():void
{

    var loadStatus:int=0
    var lastHeight:int=0

    for (var m=0; m < myXML.BLADE[sup].child("brano").length(); m++)
    {
       var titolobrano:TextField=new TextField  
       bladearray[sup].contenitore.addChild(titolobrano)
       titolobrano.text=myXML.BLADE[sup].brano[loadStatus].titolo

       lastHeight=titolobrano.height
       titolobrano.doubleClickEnabled=true
       titolobrano.addEventListener(MouseEvent.DOUBLE_CLICK, riproducibrano)
       loadStatus+=1   
    }

    if (isPlaying==false)
    {
       var riproduzioneDetails:MovieClip=new MovieClip
       riproduzioneDetails.name="riproduzioneDetails"
       var artista:TextField=new TextField
       artista.name="artista"
       bladearray[sup].contenitore.addChild(riproduzioneDetails)
       riproduzioneDetails.x=475
       riproduzioneDetails.addChild(artista)

    }
    setChildIndex(bladearray[sup].contenitore.riproduzioneDetails, bladearray[sup].contenitore.numChildren-1) //<------ PROBLEM HERE!

我想在前台移动“riproduzioneDetails”MC,但是当我尝试启动应用程序时,它会给我这个错误: TypeError:错误#2007:参数child必须为非null

1 个答案:

答案 0 :(得分:0)

我可以看到两个潜在的问题,但很难说,因为所有的变量都没有在你的代码中声明。您的测试条件可能存在问题:

if (isPlaying==false)
{
  ...
}

如果“isPlaying”为true,则永远不会创建对象“riproduzioneDetails”,因此它当然为null。在测试“isPlaying”之前,您必须在“if”条件之外创建对象。

另一个潜在的问题是您使用“bladearray [sup] .contenitore.riproduzioneDetails”访问对象的方式。当您使用“addChild”方法存储对象时,逻辑上应该是一种“getChild”方法。例如,

setChildIndex(bladearray[sup].contenitore.getChildByName("riproduzioneDetails"),bladearray[sup].contenitore.numChildren-1)

......可能会更好。