我有一个对象旋转器的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);**
}
...
}
答案 0 :(得分:0)
好吧,onEnter
似乎是一个输入框架处理程序。你遗忘的是,一旦你的对象消失,就删除了监听器。一旦alpha为0,图像就会被删除。但是一帧后,处理程序仍然被调用。现在oldImg
已不再是images
的孩子。
编辑:也许您应该只使用补间库。就个人而言,我建议eaze。
答案 1 :(得分:0)
谢谢你们,我确实要测试
if ( (oldImg) && images.contains(oldImg) )
如果我没有为每个图像对象使用单独的enter_frame事件处理程序,我猜这是更好的解决方案。
答案 2 :(得分:-1)
您永远不会将oldImg
添加到images
,因此oldImg
不是来电者的孩子(images
),并且无法从该动画片段中删除。我认为这是第一次调用EnterFrame
时发生的。