私はより多くのイベント駆動型環境に慣れていますが、私は現在作業中のコピーを関数呼び出しのバックとしてすべて使います。私はこのデベロッパーについて尋ねたところ、バブルのためにコールバックが速かったためだと言いましたが、バブリングプロパティは常にfalseに設定できました...ファンクションコールバックを見つけるための速い方法...
だから私はコールバック関数が参照されています。例えば
:
public class A {
public function A(){}
public function func_1():Number{ return 1; }
public function func_2():Number{ return 2; }
public function doSomething:Function{
if(Math.random > 0.5) return func_1; else return func_2;
}
}
その後、私はクラスBでコードを実行する可能性があります
public class B{
public var a:A = new A();
private var action:Function;
public function B(){ action = a.doSomenthing(); }
}
私はBI内のブレークポイントを置くときに(34567 @)アクション=関数を取得しています本当に完全に役に立たない...私はfunc_1とfunc_2の両方にブレークポイントを置くことができることを実現しますが、私はこれを一般的な例として使用しています。関数コールバックがコードを振りかざしています...名前を取得する方法はありますか関数のメモリアドレスによる?ありがとう
私はあなたがスタックトレースについて何を言っているのか分かります。しかし、コード内の関数を物理的に踏み越えなければなりません。以下の例では、コールバック()にブレークポイントを置く必要があります。スタックトレースの更新を確認するためにステップオーバーします。問題は、呼び出される前にコールバックを知りたいということです。時には他の場所で呼び出されることもあります。コールバックを取得する他の方法はありませんか?
public var callbacks:Array = [];
public function loadURL(url:String, callback:Function){
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
callbacks.push(callback);
var request:URLRequest = new URLRequest(url);
loader.load(request);
}
public function completeHandler(event:Event):void
{
for(var i:int = 0; i < callbacks.length; i ++){
var callback:Function = callbacks[i];
callback();
}
}
ルック:
そして、ここでは、後世のためのコードの技術です。 –
私はあまりにも時々コールバックを使用しますが、私もasdocコメントを使用しているので、以前は何の問題もありませんでした。また、コールバックはクラス内の 'Function'型の唯一の変数かもしれないので、それらを識別するのは簡単なはずです。私はあなたの例が公共のプロパティを使用しているのを見ます。私は保護された変数とgetter/setterを使用しています。それが助けになると、次のようなことができます: 'public function getFunctionVars(instance:*):XMLList { \t \t \t return describeType(インスタンス).method。(@ returnType ==" Function "); \t \t} '...しかし、理想的には、あなたが扱うコードはできるだけ単純で文書化されるべきです –