开发者

Error 2025: The supplied DisplayObject must be a child of the caller

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 开发者_C百科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);**              
    }
        ...
}


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.


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.


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜