Ошибка 2025: предоставленный объект DisplayObject должен быть дочерним по отношению к вызывающей стороне - PullRequest
0 голосов
/ 06 апреля 2010

извините, новичок в ActionScript 3.

У меня есть функция display () для вращателя объекта (изображение основано на фильме объекта QT). Сначала он сохраняет текущее изображение во вспомогательной переменной, а затем выделяет новое изображение из библиотеки под старым. Чтобы получить хороший эффект перекрестного затухания, альфа старого изображения зацикливается с помощью 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);**              
    }
        ...
}

Ответы [ 3 ]

0 голосов
/ 06 апреля 2010

хорошо, onEnter кажется обработчиком ввода кадра.то, что вы забыли, это удалить слушателя, как только ваш объект исчезнет.если альфа равна 0, изображение удаляется.но один кадр спустя, обработчик все еще вызывается.теперь oldImg больше не является ребенком images.

edit: возможно, вам следует просто использовать библиотеку анимации.Лично я предлагаю eaze .

0 голосов
/ 06 апреля 2010

Спасибо, ребята, действительно я должен проверить на

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

если я не использую отдельный обработчик события enter_frame для каждого объекта изображения, что, я думаю, является лучшим решением.

0 голосов
/ 06 апреля 2010

Вы никогда не добавляете oldImg к images, поэтому oldImg не является потомком вызывающего (images) и не может быть удалено из этого мувиклипа. Я думаю, что это происходит при первом вызове EnterFrame.

...