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.
精彩评论