2013-12-20 87 views
0

我是學生我有一個最終項目希望在兩天後交付它。 我正在做一個拖放遊戲,我看了一個教程來做到這一點。 但結束編碼後,我面臨一個奇怪的錯誤! 我檢查過我的代碼與本教程中的代碼相同。


這是調試錯誤報告:

Attempting to launch and connect to Player using URL E:\FL\ActionScript\Drag and Drop Project\DragAndDrop.swf 
[SWF] E:\FL\ActionScript\Drag and Drop Project\DragAndDrop.swf - 87403 bytes after decompression 
TypeError: Error #1034: Type Coercion failed: cannot convert paper1$ to DragDrop. 
    at Targets()[E:\FL\ActionScript\Drag and Drop Project\Targets.as:23] 

.fla文件是包含12個對象拖動和另一個12個對象就可以了下降。

這裏的想法是,當放置目標上的對象時,對象將變爲不可見並且目標變爲可見(在.fla文件target alpha = 0中)。

我做了兩個類:

DragDrop.as:對,我要拖動的對象。 Targets.as:針對我要放置對象的目標。

注意:匹配功能是動畫「GameOver」MovieClip動畫完成遊戲時。

DragDrop.as:

package 
{ 
    import flash.display.*; 
    import flash.events.*; 

    public class DragDrop extends Sprite 
    { 
     var origX:Number; 
     var origY:Number; 
     var target:DisplayObject; 

     public function DragDrop() 
     { 
      // constructor code 
      origX = x; 
      origY = y; 
      addEventListener(MouseEvent.MOUSE_DOWN, drag); 
      buttonMode = true; 
     } 

     function drag(evt:MouseEvent):void 
     { 
      stage.addEventListener(MouseEvent.MOUSE_UP, drop); 
      startDrag(); 
      parent.addChild(this); 
     } 

     function drop(evt:MouseEvent):void 
     { 
      stage.removeEventListener(MouseEvent.MOUSE_UP, drop); 
      stopDrag(); 

      if(hitTestObject(target)) 
      { 
       visible = false; 
       target.alpha = 1; 
       Object(parent).match(); 
      } 

      x = origX; 
      y = origY; 
     } 

    } 

} 

Targets.as:

package 
{ 

    import flash.display.*; 
    import flash.events.*; 


    public class Targets extends MovieClip 
    { 
     var dragdrops:Array; 
     var numOfMatches:uint = 0; 
     var speed:Number = 25; 

     public function Targets() 
     { 
      // constructor code 
      dragdrops = [paper1,paper2,paper3,paper4,paper5,paper6, 
         paper7,paper8,paper9,paper10,paper11,paper12,]; 

      var currentObject:DragDrop; 
      for(var i:uint = 0; i < dragdrops.length; i++) 
      { 
       currentObject = dragdrops[i]; 
       currentObject.target = getChildByName(currentObject.name + "_target"); 
      } 
     } 

     public function match():void 
     { 
      numOfMatches++; 
      if(numOfMatches == dragdrops.length) 
      { 
       win.addEventListener(Event.ENTER_FRAME, winGame); 
      } 
     } 

     function winGame(event:Event):void 
     { 
      win.y -= speed; 

      if(win.y <= 0) 
      { 
       win.y = 0; 
       win.removeEventListener(Event.ENTER_FRAME, winGame); 
       win.addEventListener(MouseEvent.CLICK, clickWin); 
      } 
     } 

     function clickWin(event:MouseEvent):void 
     { 
      win.removeEventListener(MouseEvent.CLICK, clickWin); 
      win.addEventListener(Event.ENTER_FRAME, animateDown); 

      var currentObject:DragDrop; 
      for(var i:uint = 0; i < dragdrops.length; i++) 
      { 
       currentObject = dragdrops[i]; 
       getChildByName(currentObject.name + "_target").alpha = 0; 
       currentObject.visible = true; 
      } 
      numOfMatches = 0; 
      addChild(win); 
     } 

     function animateDown(event:Event):void 
     { 
      win.y += speed; 

      if(win.y >= stage.stageHeight) 
      { 
       win.y = stage.stageHeight; 
       win.removeEventListener(Event.ENTER_FRAME, animateDown); 
      } 
     } 
    } 

} 

...謝謝

回答

0

你確定你把什麼到陣列中的目標實例的數組是IS DragDrop實例?

 dragdrops = [paper1,paper2,paper3,paper4,paper5,paper6, 
        paper7,paper8,paper9,paper10,paper11,paper12,]; 

我沒有看到代碼「paper1」任何定義。你的錯誤告訴paper1不是一個DragDrop實例。 OMG!

+0

OMG!不,似乎我忘記了! 我花了超過3天的這個項目..... 添加實例名稱後的對象顯示一個新的錯誤: E:\ FL \ ActionScript \拖放Project \ Targets.as,行11 \t 1046:未找到類型或不是編譯時常量:paper1。 這個錯誤是繼續paper2 ....到paper12! 請下載下面的.fla文件,如果我無法修復該項目,我將陷入災難:'( 鏈接:https://www.dropbox.com/s/8mdg5w17vvryzso/Drag%20and%20Drop %20Project.rar – Anas

+0

恩,編譯器仍然無法識別「什麼是paper1」。請仔細檢查拼寫和類名,並確保您在代碼中正確地引用了對象。 我正在度假,我不想現在沒有任何訪問Adobe工具的幫助,對不起,我無法直接查看fla文件來幫助您。 – enigmatoP

+0

感謝您的幫助:DI欣賞 – Anas

相關問題