0

抱歉,actionscript 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);**              
    }
        ...
}
4

3 回答 3

0

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

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

于 2010-04-06T10:45:23.793 回答
0

谢谢大家,确实我必须测试

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

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

于 2010-04-06T11:38:17.260 回答
-1

您永远不会添加oldImgimages,因此oldImg不是调用者 ( images) 的子级,并且无法从该影片剪辑中删除。我认为这是第一次发生这种情况EnterFrame

于 2010-04-06T10:39:51.480 回答