2010-04-06 5 views
0

새로운 미안 3.오류 2025 : 제공된으로 DisplayObject가

내가 (A QT 오브젝트 영화 같은 기반 이미지) 객체 회전의 표시() 함수가 액션 호출자의 자식이어야합니다. 먼저 현재 이미지를 도우미 변수에 저장 한 다음 라이브러리에서 이전 이미지 아래에 새 이미지를 할당합니다. 멋진 크로스 페이드 효과를 얻으려면 오래된 이미지의 알파가 enter_frame을 통해 반복 된 다음 제거됩니다.

표시 목록에 문제가있는 곳이 어디입니까? oldImg의 값이 이미 추가 된 것으로 인식되는 곳이 어디입니까? (첫 번째 패스 오류가 아닙니다)

Btw, 이전 이미지를 제거해야합니까, 아니면 마우스 위치를 통해 다시 호출 될 때까지 남길 수 있습니까? (이미지 번호가 상당히 커질 수 있습니다)

누구도 더 많은 통찰력을 갖고 있습니까? 감사!

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

'이미지'란 무엇이며 오류는 어디서 던져 질까요 –

+0

이미지는 단지 mc이며 커서 mc (손 잡기) 아래에 계층화되어 있으며 항상 표시되어야합니다. removeChild에서 오류가 발생합니다. – Mocca

+0

은 페이드 아웃 발생입니까? (oldImg && images.contains (oldImg)) – longstaff

답변

-1

당신은 따라서 oldImg가 호출자 (images)의 아이가 아닌 그 무비 클립에서 제거 할 수 없습니다, imagesoldImg를 추가하지 않습니다. 나는 이것이 처음으로 EnterFrame이 호출 된 것이라고 생각한다.

+0

'oldImg'가'newImg' (또는'null' 제외)이므로 und를 사용하여보십시오. 따라서 이전에 추가되었습니다. – back2dos

+0

위의 코드를 보지 않고 코드 –

+0

을 게시하지 않고 게시 된 코드가 관련성이 있고 그 사람이하는 일에 대한 OP의 설명에 기반한다는 전제하에 나는 모릅니다. 가능성보다 확실히 가능성이 높습니다. 편집 된 코드는 부작용 때문에 "oldImg"가 결코 "이미지"에 추가되지 않습니다. – back2dos

0

잘, onEnter은 입력 프레임 처리기 인 것 같습니다. 당신이 잊은 것은 일단 개체가 사라지면 청취자를 제거하는 것입니다. 알파가 0이면 이미지가 제거됩니다. 그러나 한 프레임 후에 핸들러가 여전히 호출됩니다. 현재 oldImg은 (는) 더 이상 images의 하위 항목이 아닙니다.

편집 : 아마도 트위닝 라이브러리 만 사용해야합니다. 개인적으로는 eaze을 제안합니다.

+0

감사합니다! 나는 그것을 시도 할 것이다. – Mocca

0

감사들, 참으로 나는 내가 더 나은 솔루션 것 같다 각각의 이미지 객체에 대해 별도의 ENTER_FRAME 이벤트 핸들러를 사용하지 않는 경우

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

을 테스트해야합니다.