2016-12-07 7 views
-1

내가하려는 일을하는 swf 파일을 발견했습니다. 그래서 나는 그것을 적재하고 그것을 디 컴파일하여 어떻게 올바르게 할 수 있는지 배울 수 있었다. 그런 다음 제가 작업하고있는 것에 적용하십시오. 많은 항목이 있다고 가정하고 개인은 올바른 항목으로 끌어다 놓는 것입니다. 그것이 풀어 놓일 때 정확한 경우에, 체재하면 incorect 그것은 시작으로 돌아갑니다. What it looks like여러 항목을 하나의 대상에 끌어서 놓기

원본 파일이 제대로 작동하지 않아 몇 가지 변경을했습니다. (onClipEvent)와 같은 원래 코드가있는 곳을 볼 수 있습니다. 대부분의 문제가 해결 된 것 같지만 드래그 한 항목을 올바른 위치에 놓을 수는 없습니다. 또한 액션 스크립트를 스프라이트에 추가했습니다. 왼쪽에서 오른쪽으로 1에서 5까지 번호가 매겨진 각 색상의 삼각형입니다 (이것이 정확했기를 바랍니다). 도움을 주셔서 감사합니다. 좌절 한 과학 선생.

// Action script… 

// [onClipEvent of sprite 2 in] 
//onClipEvent (load) 
this.addEventListener(Event.ENTER_FRAME, this.loading); 
function loading(e:Event) 
{ 
this.numItems = 2; 
} 

// [onClipEvent of sprite 2 in] 

//onClipEvent (load) 
this.addEventListener(Event.ENTER_FRAME, loading); 
function loading(event:Event){ 
this.numItems = 3; 
} 

// [onClipEvent of sprite 2 in] 

//onClipEvent (load) 
this.addEventListener(Event.ENTER_FRAME, loading); 
function loading(event:Event){ 
this.numItems = 3; 
} 

// [onClipEvent of sprite 8 in] 

//onClipEvent (load) 
this.addEventListener(Event.ENTER_FRAME, loading); 
function loading(event:Event){ 
    this.defx = _x; 
    this.defy = _y; 
    if (this.theText.text.length > 20) 
    { 
     this.theText._height = 31; 
     this.theBox._height = 27; 
    } 
    else 
    { 

     this.theText._height = 19; 
     this.theBox._height = 19; 
    } // end else if 
} 

// [onClipEvent of sprite 8 in frame 1] 

//on (press) 
this.addEventListener(MouseEvent.MOUSE_DOWN, pressed); 
function pressed(event:Event){ 
    if (this.noDrag != true) 
    { 
     startDrag (this, false); 
    } // end if 
} 

// [onClipEvent of sprite 8 in frame 1] 

//on (release) 
this.addEventListener(MouseEvent.MOUSE_UP, relea); 
function relea(event:Event){ 
    if (this.noDrag != true) 
    { 
     stopDrag(); 
     if(this.hitTest(_root["dz" + this.answer])) 
     { 
      totalHeight = 0; 
      for (v = 0; v < _root.dbCount; v++) 
      { 
       if (_root["dbutton" + v].answer == this.answer) 
       { 
        totalHeight = totalHeight + _root["button" + v].theBox._height ; 
       } // end if 
      } // end of for 
      ++_root.dbCount; 
      this .duplicateMovieClip("dbutton" + _root.dbCount, _root.dbCount * 100); 
      _root["dbutton" + _root.dbCount]._x = this.defX; 
      _root["dbutton" + _root.dbCount]._y = this.defY; 
      _root["dbutton" + _root.dbCount].answer = _root.answerdest[_root.dbCount + 1]; 
      _root["dbutton" + _root.dbCount].theText.text = _root.answername[_root.dbCount +1]; 
      if (_root["dbutton" + _root.dbCount].theText.text == "undefined") 
      { 
       _root["dbutton" + _root.dbCount].theText.text = "Finished!"; 
       _root["dbutton" + _root.dbCount].noDrag = true; 
      } // end if 
      this.noDrag = true; 
      this._y = _root["dz" + this.answer]._y + totalHeight; 
      this._x = _root["dz" + this.answer]._x - _root["dz" + this.answer]._width/2; 
      ++_root["dz" + this.answer].numItems; 
      _root.glamp1.gotoAndPlay (1); 
     } 
     else 
     { 
      this.x = this.defX; 
      this._y = this.defY; 
      _root.rlamp1.gotoAndPlay(1); 
     } // end if 
    } // end else if 
} 

// [onClipEvent of sprite 2 in frame 1] 

//onClipEvent (load) 
this.addEventListener(Event.ENTER_FRAME, loading); 
function loading(event:Event){ 
this.numItems = 2; 
} 

// [onClipEvent of sprite 2 in frame 1] 

//onClipEvent (load) 
this.addEventListener(Event.ENTER_FRAME, loading); 
function loading(event:Event){ 
this.numItems = 3; 
} 

// [Action in Frame 1] 

answername = Array(); 

answerdest = Array(); 

answername[0] = "gravel"; 

answerdest[0] = "1"; 
answername[1] = "water"; 

answerdest[1] = "2"; 

dbCount = 0; 

dbutton.duplicateMovieClip("dbutton" + dbCount,dbCount * 100); 

dbutton.visible = false; 

dbutton0.answer = answerdest[dbCount]; 

dbutton0.theText.text = answername[dbCount]; 
+2

"끌린 항목을 올바른 위치에 놓을 수 없습니다." 이는 문제를 이해하는 데 도움이되지 않습니다. 어떤 일이 발생했는지 정확히 알 수 있습니다. 오류 메시지가 있습니까? 디버거로 실행 해 보셨습니까? 또한 원하는 목표가 매우 단순한 것처럼 들립니다. 왜 이것을 디 컴파일합니까? 당신이 기술하고있는 것을 스크립트로 만드는 것은 처음부터 쉽습니다. 나는 다른 사람의 코드를 리버스 엔지니어링하는 대신 처음부터 시작할 것입니다. 그러나 무엇이든지 당신에게 어울립니다. –

+0

마우스를 놓을 때 끌어온 항목을 대상 위에 떨어 뜨리지 않습니다. 대신 그것은 마우스로 유지됩니다. 두 번째로 처음부터 시작하고 싶지만 한 대상에 세 항목을 설정하는 방법과 다른 대상에 또 다른 세 항목을 설정하는 방법의 예제를 찾을 수 없습니다. 이것은 제가 발견 할 수있는 가장 가까운 예입니다. 나는 액션 스크립트 코드 작성에 비교적 새로운 편이다. – user7259892

답변

0
//on (release) 
this.addEventListener(MouseEvent.MOUSE_UP, relea); 
function relea(event:Event){ 

당신이 볼

//on (release) 
this.addEventListener(MouseEvent.MOUSE_UP, relea); 
function relea(event:MouseEvent){ // **** MouseEvent, not Event 

해야 하는가? 함수가 Event을 기대한다고 말합니다. MouseEvent이 필요합니다. 그게 고칠 수 있니?

+0

오류를 찾아 주셔서 고맙지 만 유감스럽게도 문제가 해결되지 않았습니다. 내가 버튼을 놓을 때 여전히 드래그 된 객체를 해제하지 않을 것입니다. – user7259892

+0

"this.addEventListener"에서 "this"가 무엇입니까? 당신이 풀어 놓은 것이어야합니다. 디버그 모드에서 추적 (this)을 추가하고 출력 창에 무엇이 표시되는지 알려줄 수 있습니다. 출력 아래 –

+0

이 _level0을 보여줍니다. 나는 "this"가 내가 움직이고있는 텍스트 박스라고 생각했다. – user7259892

0

도움을 주셔서 감사합니다.이 질문에 대한 답은 스프라이트 작업 프레임과 주 타임 라인 액션 프레임 모두에서 동일한 코드를 배치했기 때문에 스프라이트에만 있어야한다는 것입니다.