2

クラッシュするフラッシュ アプリをデバッグする最良の方法は何ですか? (例外なく、私のアプリケーションはただクラッシュします)私は実際に大きな問題に直面しています:私のアプリ(フルフラッシュのウェブサイト)はflashplayer 9では問題なく動作していましたが、flashplayer 10ではクラッシュしました...

これは、FP10 でアプリをクラッシュさせる BAD メソッドです。このメソッドへの呼び出しを削除した後、すべてが 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();
        }

OK、ついに本当の問題を見つけました...それはそれ自体の方法ではありませんでした。「A」引数に NaN を渡していたため、無限ループが発生していました...

4

1 に答える 1

2

デバッガで実行してみましたか?アプリのエントリにブレークポイントを設定し、クラッシュするまでステップ実行します。このようにして、責任のあるコード行と変数の状態を確認できます。もちろん、実際の問題は以前に発生したものである可能性がありますが、少なくとも検索を絞り込んで遡ることができます。

また、別の方法として、コードに trace() ステートメントをいくつか入れて、そのセクションがヒットするかどうかを確認することもできます。次に、問題が発生する前か後かを判断し、問題の領域が見つかるまで繰り返します。

于 2009-10-09T10:07:28.670 に答える