2014-05-09 7 views
0

일반적인 hitObject 인 MC에 드래그 앤 드롭 할 수있는 8 개의 무비 클립 배열이 있습니다.AS3 : e.target을 기반으로하는 MC 배열에서 addChild를하는 방법은 무엇입니까?

내가 떨어 뜨렸을 때 hitObject MC의 자식으로 끌어 놓기 위해 mc를 끌어오고 싶습니다. 그러나 코드를 설정하는 데 문제가 있습니다. 현재 특정 인스턴스 이름 이외에 addChild() 매개 변수 내에서 쓸 내용을 알지 못하기 때문에 특정 인스턴스가 hitObject의 자식으로 추가됩니다 (다음 중 하나도 허용되지 않습니다. e.target, 배열 이름, MovieClip 이름).

여기에 내 코드 --any의 모든 도움을 대부분 이해할 수있을 것이다 :

import flash.events.MouseEvent; 
import flash.display.MovieClip; 

var redArray:Array = [red,red1,red2,red3,red4,red5,red6,red7]; 

redArray.forEach(setupDrag); 
function setupDrag(dragger:MovieClip, index:int, array:Array):void { 
    dragger.addEventListener(MouseEvent.MOUSE_DOWN, dragRed); 
    dragger.buttonMode=true;} 

redArray.forEach(setupDrop); 
function setupDrop(dropper:MovieClip, index:int, array:Array):void { 
    dropper.addEventListener(MouseEvent.MOUSE_UP, dropRed); 
    dropper.buttonMode=true;} 

var dirt:MovieClip 

function dragRed(e:Event):void{ 
     dirt = e.currentTarget as MovieClip; 
     e.target.startDrag(); 
} 

function dropRed(e:Event):void{ 
     e.target.stopDrag(); 
     if (e.target.hitTestObject(drawer_mc)) 
     { 
     drawer_mc.addChild(red1); 
     red1.y=10; 
     } 
} 

사전에 감사!

답변

0

거의 다 왔어. target 또는 currentTargetaddChild의 인수로 전달하려고합니다. 나는 다음과 같이해야한다고 생각한다.

그리고 targetcurrentTargethere의 차이점에 대한 좋은 설명이 있습니다.

var dirt:MovieClip; 

function dragRed(e:Event):void { 
     // sounds like currentTarget and target will both work in your 
     // case, but stick to one or the other for consistency 
     dirt = e.currentTarget as MovieClip; 
     dirt.startDrag(); 
} 

function dropRed(e:Event):void{ 
     // assigning the currentTarget to your dirt variable means you don't 
     // keep needing to refer to e.currentTarget throughout the function 
     dirt = e.currentTarget as MovieClip; 
     dirt.stopDrag(); 
     if (dirt.hitTestObject(drawer_mc)) { 
      // now you're always adding the instance that triggered 
      // the mouse up event 
      drawer_mc.addChild(dirt); 
      dirt.y=10; 
     } 
} 
+0

감사합니다. 이것은 내가 필요한 것입니다! 나는 그저 내 마음을 감쌀 수 없었다. 내가 기다리고있는 동안 나는 쫓겨 났고 또 다른 해결책을 찾았다. 내가 제공 한 링크에 감사드립니다. 건배! – llyfre

0

이미 이벤트 대상 속성을 통해 드롭 된 개체에 액세스하고 있습니다. 다음으로하는 AddChild() 메소드를 전달 DisplayObject 인이나 영화 클립으로 전송 :

function dropRed(e:Event):void 
{ 
    var droppedObject:MovieClip = e.currentTarget as MovieClip; 
    droppedObject.stopDrag(); 

    if(droppedObject.hitTestObject(drawer_mc)) 
    { 
    drawer_mc.addChild(droppedObject); 
    droppedObject.y=10; 
    } 
} 
  • e.target가 클릭 된 오브젝트를 말한다.
  • e.currentTarget은 에 적용된 addEventListener() 객체를 참조합니다.
+0

그 코드는 컴파일되지 않을 것입니다. –

+0

나는 그것을 고쳤다. 지금 그것은 할 것이다;) – dxb

+1

그것은 더 좋다 :) –