2014-12-01 3 views
0
function addEffect() 
{ 
var thisEffect = new MyEffect; //Simple movieClip 
addChild(thisEffect); 
effectArray[0] = thisEffect; 
} 

위의 작동합니다. 그리고 나중에 그것을 제거 ... 아래는 잘 작동합니다. 내가 다시 기능을 사용한 후배열에서 아이들을 제거하는 중 ... 가끔

function removeEffect() 
{ 
    if(effectArray[0] != null) 
    { 
    removeChild(effectArray[0]); 
    } 
} 

그러나, 때로는 두 바퀴 나중에 내가 얻을, 다음 턴을 somtimes : 오류 # 2025 : 제공된 DisplayObject는 호출자의 자식이어야합니다. 이상하게도 다른 동영상 클립을 추가하고 제거하는 데 같은 기술을 사용하고 있으며 다른 모든 작업에는 정상적으로 작동합니다. 나는이 두 함수의 외부에있는 effectArray 또는 내부의 내용을 참조하지 않고 있습니다. Main.as에있는 두 함수의 내부에 있습니다.

+0

일부 추적 문을 수행했을 때 스테이지에서 개체를 제거했지만 개체가 배열 안에 머물렀고 반복하려고 시도했을 때 동일한 클립이 다시 제거되는 것으로 나타났습니다. 더 이상 무대에 있지 않았습니다 ... effectArray = []이 문제를 해결했습니다. – randyHurd

답변

2

이것은 매우 정상입니다. 배열에 myEffect를 추가하면 myEffect에 대한 참조 만 배열에 저장됩니다. 배열을 통해 해당 객체에 접근하려고하면 모든 것이 올바르게 작동하고 배열 포인트의 myEffect를 참조 할 때마다 정확하게 객체화됩니다.

하지만 매번 올바르게 진행되지 않는 것은 참조가 가리키는 개체가 있는지 여부입니다. 삭제 된 경우 더 이상 대상 객체의 자식이 될 수 없으므로 오류가 발생합니다.

에서 수행하는 작업 removeEffect 기능은 참조가 아닌 객체가 있는지 확인하는 것입니다. 배열에서 배열을 제거하지 않으면 참조가 항상 있습니다. 개체를 제거한 후에도 참조를 제거하십시오. 모든 것이 올바르게 작동합니다.

+0

감사합니다. 그것은 나를 위해 그것을 모두 지 웁니다. – randyHurd

관련 문제