我在设置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
答案 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)
......可能会更好。