0

レガシープロジェクトに慣れようとしています。ある特定の関数では、次のコードがあります。

public function update(userObj:Object):void
{
    var comm2:CommManager;
    comm2 = CommManager.getInstance();
    comm2.statusManager.employeeStatus(employeeId);
}

キャッチするブレークポイントを設定することはできますが、対応するコードを表示するためにこれら2行のいずれかにトレースすることはできません。最初のケースでは、コールスタックの最上位は次のようになります。

comm::CommManager$/getInstance

次に、コールスタックの一番上に次のように表示されます。

comm::StatusManager/employeeStatus

どちらの場合も、出力ウィンドウに新しい行が表示されます。

Cannot display source code at this location.

このコードがどこから来ているのかをどうやって知ることができますか?私は外部リンクを知りませんが、それは確かに私を驚かせません。

補遺:CommManager.asには一致するAPIがありますが、キャッチしない対応するブレークポイントをその中に追加しました。また、ファイルの名前を変更すると、CommManagerタイプが見つからなかったというコンパイルエラーが発生します。これは、CommManager.asが部分的にしか使用されていないかのようです。CommManagerはBaseCommComponent(flash.events.EventDispatcherを拡張する)という名前のクラスを拡張しますが、BaseCommComponentにはCommManagerと同じ名前の関数はありません。

4

1 に答える 1

0

したがって、コードは実際には外部swfを使用していたことがわかります。幸い、一致するflaファイルもありました。[公開設定]に移動し、[デバッグを許可する]チェックボックスをオンにして、再コンパイルすると修正されたようです。これが同様の問題を抱えている人に役立つことを願っています。

于 2013-01-16T17:28:14.353 に答える