2009-10-09 121 views
2

調試CRASHING Flash應用程序的最佳方式是什麼? (也不例外,我的應用程序只是崩潰) 我actualy面臨着一個很大的問題:我的應用程序(全flash網站)工作正常使用的Adobe Flash 9,但崩潰與版本的Adobe Flash 10 ...調試崩潰的Flash應用程序

這裏是BAD方法誰與FP10崩潰我的應用程序。 刪除對此方法的調用後,所有工作都正常使用FP10。

public static function drawWedgeCrown(g : Graphics,a : Number,r : Number,r2 : Number, n : Number, c : Number, t : Number) : void { 
      var x : Number ; 
      var y : Number;    
      g.beginFill(c, t); 
      g.moveTo(r, 0); 
      g.lineTo(r, 0); 
      var teta : Number = 0; 
      var dteta : Number = 2 * Math.PI/n; 
      while(teta < a) { 
       x = r * Math.cos(teta); 
       y = -r * Math.sin(teta); 
       g.lineTo(x, y); 
       teta += dteta; 
      } 
      x = r * Math.cos(a); 
      y = -r * Math.sin(a); 
      g.lineTo(x, y);   
      x = r2 * Math.cos(a); 
      y = -r2 * Math.sin(a); 
      g.lineTo(x, y); 
      teta = a; 
      dteta = 2 * Math.PI/n; 
      var cpt : int = 0;   
      while(teta > 0) { 
       cpt++; 
       x = r2 * Math.cos(teta); 
       y = -r2 * Math.sin(teta); 
       g.lineTo(x, y);       
       teta -= dteta; 
      } 
      x = r2 * Math.cos(0); 
      y = -r2 * Math.sin(0); 
      g.lineTo(x, y); 
      g.lineTo(r, 0);   
      g.endFill(); 
     } 

好吧,我最終發現真正的問題......它不是它自己的方法。 我是通過NaN的「A」參數導致無限循環...

+0

你用過標準的調試器嗎?看看究竟是哪裏出了問題... –

+0

是的,但它並沒有幫助...因爲玩家崩潰,沒有發生後... – OXMO456

回答

2

您是否嘗試過使用調試器運行它?在應用程序的入口處設置一個斷點,然後遍歷它直到崩潰。這樣你可以看到哪一行代碼是負責任的以及變量的狀態。當然,實際的問題可能是先前發生的事情,但至少你已經縮小了搜索範圍並且可以追溯到後面。

另一種方法是在代碼中添加一些trace()語句,並查看該段是否被擊中。然後你可以知道它發生在之前還是之後,並重復,直到找到問題區域。

+0

謝謝,我已經設置了一個斷點,我finaly發現崩潰的方法flashplayer 10 – OXMO456

+0

@ oxmo456只是出於好奇 - 那是什麼方法? – Amarghosh

+0

@Amarghosh我已經更新了問題... – OXMO456