2011-09-14 4 views
0

창 왼쪽에 일부 차량이있는 툴바가 있는데, 요소 하나를 클릭하여 보드로 드래그하여 복제본을 만들고 싶습니다.하지만 할 수 없습니다. .AS3의 MovieClip 드래그 및 복제

내 응용 프로그램은 다음과 같습니다 왼쪽에

enter image description here

자동차 내 드래그 요구된다.

내 소스 코드는 다음과 같습니다

public class Car extends MovieClip 
    { 

     // imports... 

     var newcar:Car; 

     public function Car(){ 
      addListeners(); 
     } 

     private function addListeners():void{ 
      this.addEventListener(MouseEvent.MOUSE_DOWN,clone); 
     } 

     private function clone(e:MouseEvent):void{ 
      // Clone the object 
      newcar = new dibujo(); 
      newcar.graphics.copyFrom(this.graphics); 
      newcar.x = this.x; 
      this.parent.addChild(newcar); 

        // Asign new events to recently created mc 
      newcar.addEventListener(MouseEvent.MOUSE_OVER,dragCar); 
      newcar.addEventListener(MouseEvent.MOUSE_UP,dropCar); 
     } 

     private function dragCar(e:MouseEvent):void{ 
      this.startDrag(); 
     } 

     private function dropCar(e:MouseEvent):void{ 
      this.stopDrag(); 
     } 

    } 

빨간 자동차와 트럭이 '자동차'라는 내 자신의 기본 클래스를 사용합니다.

미리 감사드립니다. 누군가가 나를 도울 수 있기를 바랍니다.

답변

1

그리고 작동하지 않는 것은 무엇입니까? 내가보기에 주요 문제는 새 차를 만들지 만 표시 목록에 추가하지 않는다는 것입니다. 당신이 그것을 변경할 수 없습니다, 그래서 내가 의견에 말했듯이 그래서, 문제는, TAH 속성 그래픽은 읽기 전용 : 당신의 복제 기능, 당신은

this.parent.addChild(newcar); 

편집 같은 것을해야합니다. 당신의 자동차 (그렇지 않은 경우, 당신은 쉽게 할 수있다) 당신의 자동차를 확장하는 클래스의 instaces 인 경우 , 당신이 사용할 수 있습니다 이

newcar = new e.target.constructor; 

newcar = new dibujo(); //I think you menat new Car() here 

을 대체이 마지막으로해야 작동하게 만들다. 그러면 끌기에 문제가 발생합니다. 멈추지 않습니다. 그러나 해결책은 간단합니다. stopDrag 함수에 다음 줄을 추가하십시오.

e.target.removeEventListener(MouseEvent.MOUSE_MOVE, dragCar); 
+0

나는 당신의 제안을 시도했지만 didnt 작업 중 하나를 시도했습니다. 어쨌든, 나는'this.parent.numChildren'을 추적하고 원래 자동차를 클릭 할 때마다 증가합니다. 그래서 문제는 드래그 앤 드롭 기능과 관련이 있습니다 : \ –

+0

그리고 새 차의 y 좌표를 설정 했습니까? x를 설정하는 것과 같은 방법으로. – Kejml

+0

그래, 그리고 didnt도 작동합니다. 어쩌면 영화 클립이 만들어졌지만 그 위에 그래픽이있을 수도 있습니다. 그러나 아직도 이유를 모른다. –

관련 문제