2011-04-25 2 views
0

나는 디지털 미디어의 수업에서 게임을 프로그래밍하려고했는데 드래그 가능한 항목과 관련하여 엄청난로드 블록을 실행했습니다. 내가 처음이 코드를 사용하여 마우스로 드래그 할 수있는 하나 개의 항목을 관리 (무비 클립은 '꿀'이라고합니다) :Adobe Flash CS3에서 두 개 이상의 항목 끌기 액션 스크립트

//set listeners 
honey.addEventListener(MouseEvent.MOUSE_DOWN, startHoneyDrag); 
stage.addEventListener(MouseEvent.MOUSE_UP, stopHoneyDrag); 
honey.addEventListener(Event.ENTER_FRAME, dragHoney); 

//offset between sprite location and click 
var clickOffset:Point = null; 

//user clicked 
function startHoneyDrag(event:MouseEvent) { 
     clickOffset = new Point(event.localX, event.localY-7); 
} 

//user released 
function stopHoneyDrag(event:MouseEvent) { 
    clickOffset = null 
} 
//run every frame 
function dragHoney(event:Event) { 
    if (clickOffset != null) { // must be dragging 
    honey.x = mouseX - clickOffset.x; 
    honey.y = mouseY - clickOffset.y; 
    } 
} 

을하지만, 하나 개 이상의 이동 무비 클립은 지금까지 불가능 입증하고. 동일한 코드를 여러 번 사용하면 코드의 충돌하는 부분으로 인해 오류가 발생합니다. 내가 더 나은 프로그래밍 학생 중 한 명에게 물었을 때 그는 내가했던 어레이를 만들라고했다.

var honeyBall:Array = new Array(); 
honeyBall = ["honey, honey1, honey2"]; 

하지만 지금은 무비 클립을 참조하는 코드를 만드는 방법을 알지 못합니다. 배열을 참조하십시오. 이러한 문제로 인해 심각한 문제가 발생했기 때문에 도움을 주시면 감사하겠습니다.

답변

1
honeyBall = ["honey, honey1, honey2"]; 

이것은 하나의 문자열을 포함하는 배열입니다. 이 같은 배열에 무언가를 클립의 인스턴스를 얻어야한다 :

honeyBall = [honey1, honey2, honey3]; 

그런 다음 당신이 드래그

function dragHoney(event:Event) { 
    if (clickOffset != null) { 
     for each (var honey:DisplayObject in honeyBall) { 
      honey.x = mouseX - clickOffset.x; 
      honey.y = mouseY - clickOffset.y; 
     } 
    } 
} 

(그것은 하나 개 또는 여러 개의 클립 수, 배열의 모든 것을 끌어됩니다.)

관련 문제