0
votes

sorry, new to actionscript 3.

I have a display() function for an object rotator(image based like a QT object movie). It first saves the current image in a helper variable and then allocates a new image, from the library, beneath the old one. To get a nice crossfade effect, the old image's alpha is looped down via enter_frame and then removed.

Which is where there seems to be an issue with the display list, maybe recognizing oldImg's value as being already added? (it's not a first pass error)

Btw, do i have to remove the old image or can i leave it, for when it's being called up via the mouse position again? (the image number can get fairly large)

Does anyone have further insight? Thanks!

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
What is 'images' and where does the error get thrown - Matti Lyra
Images is just a mc, layered beneath a cursor mc (grab hand), which has to be visible all the time. The error gets thrown at removeChild. - Mocca
is the fade out occuring? if it is then you are likely trying to remove teh image multiple times, try using if(oldImg && images.contains(oldImg)) - longstaff

3 Answers

0
votes

Thanks guys, indeed i have to test for

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

if i don't use a separate enter_frame event handler for each image object, which i guess is the better solution.

0
votes

well, onEnter seems to be an enter frame handler. what you forgot is to remove the listener, once your object is faded out. once alpha is 0, the image is removed. but one frame later, the handler still gets called. now oldImg is no longer a child of images.

edit: maybe you should just use a tween library. Personally, I suggest eaze.

-1
votes

You never add oldImg to images, thus oldImg is not a child of the caller (images) and cannot be removed from that movieclip. I think this happens the first time EnterFrame is called.