単純な回答です。はい、イベントは常にクローンされます。
the documentation to confirmを参照してください。
私の元の答えは間違っていました。イベントが必ずしもクローン化されるわけではありません。 @weltraumpiratが指摘しているように、ドキュメンテーションによると、これは、手動でイベントを再配布する場合にのみ発生します。 Adobeが書いたクラスがいくつあるのかは分かりませんが、いくつかのクラスがそうすることも可能です。それでも私の答えは「常にクローンになる」というのは間違っていた。
ただし、これはイベントがあなたのパフォーマンスに問題ではないことを意味するものではありません。既存のイベントを再ディスパッチする場合にのみクローンが作成されますが、そうでない場合は、新しいインスタンスとしてディスパッチされます。クローンメソッドはまったく同じように動作します。
最後に、我々は、特にglobals.asで、タマリンソースコードでdispatchEvent
メソッドの実装を見ることができます:
public function dispatchEvent(event:Event):Boolean {
if (event.target && event.target!=null) {
return dispatchEventFunction (event.clone());
} else {
return dispatchEventFunction (event);
}
}
あなたが見ることができるように、クローニングはどうか、特定のイベントプロパティに基づいて、ここで起こりますポピュレートされます。私はまだターゲットプロパティが設定されているコードを見つけていませんが、あなたはそれを持っています。クローンメソッドは、既存のイベントが再ディスパッチされる場所でのみ呼び出されます(少なくとも、われわれが見ることができます)。私は訂正した。 :)
私はこれがフラッシュプレーヤーの大きな欠陥だと思います。 AdobeはこれをVMの特別なケースとしていたはずですが、内部的には、AVM2のベースデザインがイベント駆動型システムであると仮定すると、イベントがどこかで必要とされるたびにクローニングするのではなく、 。
私の答えを更新しました、私は間違っていました!私は決して起こらないことを誓う。 ;) –