错误2025:提供的DisplayObject必须是调用者的子级

时间:2010-04-06 09:47:04

标签: flash actionscript-3 actionscript cs4

抱歉,对于动作脚本3来说是新手。

我有一个对象旋转器的display()函数(基于像QT对象影片的图像)。它首先将当前图像保存在辅助变量中,然后从库中分配旧图像。为了获得良好的交叉渐变效果,旧图像的alpha通过enter_frame循环下来然后被删除。

显示列表似乎存在问题,可能认为oldImg的值已经添加了? (这不是第一次通过错误)

顺便说一句,我是否必须删除旧图像,或者我可以将其留下,因为当它再次通过鼠标位置调出时? (图像编号可以变得相当大)

有没有人有进一步的见解?谢谢!

function display(num:Number):void   //num: image number
{
   ...    
   oldImg = newImg;   

   ClassReference = getDefinitionByName("Class"+num) as Class;
   imgBD = new ClassReference(0,0);
   newImg = new Bitmap(imgBD);

   images.addChild(newImg); 
   newImg.x=0;
   newImg.y=0;

}


function onEnter(evt:Event):void
{
    if (oldImg) 
    {
        if (oldImg.alpha > 0) oldImg.alpha -= 0.15; 
        **else images.removeChild(oldImg);**              
    }
        ...
}

3 个答案:

答案 0 :(得分:0)

好吧,onEnter似乎是一个输入框架处理程序。你遗忘的是,一旦你的对象消失,就删除了监听器。一旦alpha为0,图像就会被删除。但是一帧后,处理程序仍然被调用。现在oldImg已不再是images的孩子。

编辑:也许您应该只使用补间库。就个人而言,我建议eaze

答案 1 :(得分:0)

谢谢你们,我确实要测试

if ( (oldImg) && images.contains(oldImg) ) 

如果我没有为每个图像对象使用单独的enter_frame事件处理程序,我猜这是更好的解决方案。

答案 2 :(得分:-1)

您永远不会将oldImg添加到images,因此oldImg不是来电者的孩子(images),并且无法从该动画片段中删除。我认为这是第一次调用EnterFrame时发生的。