2010-04-06 93 views
0

抱歉,新爲ActionScript 3.錯誤2025:提供的DisplayObject必須是呼叫者的子

我有(基於像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

什麼是'圖像'以及錯誤發生在哪裏 – 2010-04-06 09:55:24

+0

圖像只是一個mc,層疊在光標mc(抓手)之下,必須始終可見。 錯誤將在removeChild中拋出。 – Mocca 2010-04-06 10:14:46

+0

是淡出現象?如果是,那麼你很可能試圖多次刪除圖像,嘗試使用if(oldImg && images.contains(oldImg)) – longstaff 2010-04-06 10:49:14

回答

-1

你從不添加oldImgimages,從而oldImg不是調用(images)的孩子,無法從該MovieClip刪除。我認爲這是第一次調用EnterFrame

+0

'oldImg'是'newImg'(或者是'null',它被排除)已被添加。 – back2dos 2010-04-06 10:43:24

+0

你不知道,如果沒有看到代碼 – 2010-04-06 10:46:01

+0

上面的代碼,基於發佈的代碼都是相關的以及OP對他所做的描述的假設,我非常確定。這肯定比可能性更大,被編輯出來的代碼會產生副作用,導致「oldImg」永遠不會被添加到「images」中。 – back2dos 2010-04-06 11:40:37

0

好吧,onEnter似乎是一個輸入框架處理程序。一旦你的對象淡出,你忘記的是刪除偵聽器。一旦alpha爲0,圖像被移除。但是一幀之後,處理程序仍然被調用。現在oldImg不再是images的孩子。

編輯:也許你應該只使用補間庫。我個人建議eaze

+0

謝謝!我會嘗試。 – Mocca 2010-04-06 11:55:32

0

謝謝你們,我實在要測試

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

如果我不使用單獨的ENTER_FRAME事件處理程序的每個圖像對象,我的猜測是更好的解決方案。

相關問題