2010-02-12 4 views
0

좋아,이 시간이 지난 몇 시간 동안 너를 괴롭혔다. 나는 쉬운 대답을 알고있다.동영상 클립 삭제 as3

원본으로 right_container_mc라는 무비 클립이있는 scrollPane이 있습니다. 이 right_container_mc 안에는 for 루프가있는 배열에서 스테이지의 올바른 위치에 추가되는 execiseBox라는 다른 동영상 클립이 있습니다. 각 운동 상자에는 close_btn이라는 버튼 심볼이 있습니다.

우선이 방법을 사용하는 것이 가장 좋은 방법인지 잘 모르겠습니다. 더 나은 방법을 제안하는 것이 좋습니다.

내가하고 싶은 일은이 close_btn을 클릭하면 배열과 스테이지에서 특정 exerciseBox 무비 클립을 제거한 다음 배열을 다시 반복하여 모든 운동 상자 무비 클립이 스테이지에서 위치를 업데이트합니다.

무비 클립에 대한 참조를 가져 오는 중첩 된 배열 및 스테이지에서 제거하기 때문에 문제가 발생했습니다. 여기에 제가 지금까지 가지고있는 코드가 있습니다. 제거하고 업데이트하는 부분을 추가해야합니다. 또한 배열 루프가 매번 실행되기 전에 exerciseBox 무비 클립의 현재 인스턴스를 모두 제거해야합니까 ??

도움을 주시면 대단히 감사하겠습니다. 당신의 onRemoveBox 기능에

function addMovieClipsToStage(event:MouseEvent):void 
    { 
    scrollPaneRight.source = right_container_mc; 
    exerciseBox = new Exercisebox(); 
    exerciseBox.close_btn.addEventListener(MouseEvent.CLICK, onRemoveBox); 
    boxArray.push(exerciseBox); 
    sortBoxes(); 
    scrollPaneRight.update(); 
    } 

    function onRemoveBox(event:MouseEvent):void 
    { 

    } 

    function sortBoxes():void 
    { 
    for (var i:int =0; i<boxArray.length; i++) 
    { 
    right_container_mc.addChild(exerciseBox); 
    exerciseBox.x = 0; 
    exerciseBox.y = ((115 + 3)*i); 

    } 

    } 

답변

1

event.currentTarget는 기능에 의해 촉발 된 개체를 반환해야합니다. 나는 당신도 배열이 필요 확실하지 않다 당신이 게시 한 코드에 근거하여

right_container_mc.removeChild(event.currentTarget); 

: 그 개체로보고

은 어쩌면 당신이 시도 할 수 right_container_mc의 자식입니다. 아이들의 수를 추적하는 데 사용하는 것 같습니다. 표시 목록에서 이미이 작업을 수행합니다.

그래서 배열 종류 대신 right_container_mc.numChildren을 참조 할 수 있다고 생각합니다.

일부 도움이 되길 바랍니다.

+0

내가 얻을 다음과 같은 컴파일러 오류 : 1118 : 관련되지 않은 형 플래시 정적 Object 유형과 값의 암시 적 강제 .display : DisplayObject. –

+0

좋아, 그냥 event.currentTarget에 대한 추적을했는데 간단한 버튼이 보였다. 위의 내용을 right_container_mc.removeChild (event.currentTarget.parent)로 변경했습니다. 그게 효과가있는 것처럼 보입니다. 이제 나머지 동영상 클립을 가져 와서 위치를 업데이트하면됩니다. –

0

boxArray를 제거하려면 right_container_mc의 모든 ExerciseBox를 반복하면됩니다. "...의 각각에 대한 '에 대한 자세한 내용

function addMovieClipsToStage(event:MouseEvent):void 
{ 
    scrollPaneRight.source = right_container_mc; 
    exerciseBox = new Exercisebox(); 
    exerciseBox.close_btn.addEventListener(MouseEvent.CLICK, onRemoveBox); 
    right_container_mc.addChild(exerciseBox); 
    sortBoxes(); 
    scrollPaneRight.update(); 
} 

function onRemoveBox(event:MouseEvent):void 
{ 
    right_container_mc.removeChild(event.currentTarget); 
    sortBoxes(); 
} 

function sortBoxes():void 
{ 
    var count:int = 0; 
    for each(var exerciseBox:Exercisebox in right_container_mc) 
    { 
     count++; 
     exerciseBox.x = 0; 
     exerciseBox.y = (115 + 3) * count; 
    } 
} 

상기 sortBoxes 함수의 각 루프에 대한 소성되지 않은 어떤 이유로 http://help.adobe.com/en_US/AS3LCR/Flash_10.0/statements.html#for_each..in

0

을 확인. 나는이 일이 일어 아무것도를 확인하는 추적 문을 추가 한, 여기에 업데이트 된 코드입니다 :

public function addMovieClipsToStage(event:MouseEvent):void 
      { 
       scrollPaneRight.source = right_container_mc; 
       exerciseBox = new Exercisebox(); 
       exerciseBox.close_btn.addEventListener(MouseEvent.CLICK, onRemoveBox); 
       exerciseBox.x = 0; 
       exerciseBox.y = (118 * exerciseBoxAmt); 
       right_container_mc.addChild(exerciseBox); 
       exerciseBoxAmt++; // the position of the boxes added to stage variable 
       sortBoxes(); 
       scrollPaneRight.update(); 
      } 

      public function sortBoxes():void 
      { 
       var count:int = 0; 
       for each (var exerciseBox:Exercisebox in right_container_mc) 
       { 

        exerciseBox.x = 0; 
        exerciseBox.y = (118 * count); 
        count++; 
        trace(count); //does not display in output window!! 
       } 
      } 


      public function onRemoveBox(event:MouseEvent):void 
      { 
       right_container_mc.removeChild(event.currentTarget.parent); 
       exerciseBoxAmt--; 
       sortBoxes(); 

      } 
관련 문제