いずれかが私にそれに接続されているオブジェクトとactionscript3にイベントをディスパッチする方法についての簡単な例を与えることができ、result
は、そのオブジェクトでありますイベントと一緒に過ごしたい。- ここ</p> <pre><code>dispatchEvent(new Event(GOT_RESULT,result)); </code></pre> <p>のようなAS3
答えて
イベントを介してオブジェクトを渡す場合は、カスタムイベントを作成する必要があります。コードはこのようなものでなければなりません。
public class MyEvent extends Event
{
public static const GOT_RESULT:String = "gotResult";
// this is the object you want to pass through your event.
public var result:Object;
public function MyEvent(type:String, result:Object, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
this.result = result;
}
// always create a clone() method for events in case you want to redispatch them.
public override function clone():Event
{
return new MyEvent(type, result, bubbles, cancelable);
}
}
は、その後、あなたは、このように上記のコードを使用することができます。
dispatchEvent(new MyEvent(MyEvent.GOT_RESULT, result));
そして、あなたが必要なこのイベントのために聞きます。
addEventListener(MyEvent.GOT_RESULT, myEventHandler);
// more code to follow here...
protected function myEventHandler(event:MyEvent):void
{
var myResult:Object = event.result; // this is how you use the event's property.
}
これはそれを行う方法です。いくつかの小さな追加。私は常にイベントデータのパブリックフィールドの代わりにゲッターフィールドを使用します。また、GOT_RESULTの名前をRESULTに変更して明確にします。 –
Btw私はカスタムas3イベントhttp://projects.stroep.nl/EventGenerator/を作成するためのオンラインツールを作成しました。お気軽にご利用ください。 –
私はイベント定数の名前をRESULTに変更することに同意します。私は、混乱を避けるために、OPの変数名に可能な限り近いものを維持しようとしていました。 –
正しく設計されていれば、イベントにオブジェクトを渡す必要はありません。
代わりに、ディスパッチクラスにpublic varを作成する必要があります。
public var myObject:Object;
// before you dispatch the event assign the object to your class var
myObject = ....// whatever it is your want to pass
// When you dispatch an event you can do it with already created events or like Tomislav wrote and create a custom class.
// in the call back just use currentTarget
public function myCallBackFunction(event:Event):void{
// typecast the event target object
var myClass:myClassThatDispatchedtheEvent = event.currentTarget as myClassThatDispatchedtheEvent
trace(myClass.myObject)// the object or var you want from the dispatching class.
オブジェクトを渡すことは、設計上の決定が悪いということですか、あるいは代替案を提示するだけですか?私はFlash/Flex APIがオブジェクトをかなり頻繁に渡すように見えるので頼んでいる。 – bfavaretto
あなたがちょうど言ったことを私が理解すれば;私は正直に反対します。イベントオブジェクトに値を追加すると、カプセル化が有効になります。多くの場合、現行のターゲット(またはターゲット)をイントロスペクトして、インスタンス上のパブリック・バールからデータを取り出すのではなく、そのアプローチを使用します。私はこれが特に有益であることを発見しました。イベントが表示階層内の複数のレベルにバブルアップする表示リストでは、 – JeffryHouser
私はこの方法論を時々使用しますが、すべてのシナリオに適しているわけではありません(最初の文で示唆される)。たとえば、同じイベントをディスパッチする複数のクラスがある(しかし、共通のサブクラスを持たない)場合、カスタムイベントはよりクリーンなルートになります。さらに、興味の分離について何か言われることがあります。イベントをディスパッチするクラスが、イベントをリスン/処理しているクラスについて知る必要がない場合は、カスタムイベントもその状況に適しています。ユニットテストがずっと楽になります – BadFeelingAboutThis
この投稿は少し古いですが、それが誰かを助けることができるならば、あなたはとても似によってDataEventクラスを使用することができます。
dispatchEvent(new DataEvent(YOUR_EVENT_ID, true, false, data));
- 1. SQL:(私はこの</p> <p><strong>ユーザー</strong><br> ID <br> matricule</p> <p><strong>ドキュメント</strong><br> ID <br> タイトル<br> user_idのようなデータベースのスキーマを持って
- 2. Swift <<, ><, <=< and > = <
- 3. "**/* /"と "** /"の違いは?出力は、少なくとも小さなサブツリーのために、同じように見える</p> <p><code>Dir.glob("**/*/")</code></p> <p><code>Dir.glob("**/")</code></p> <p>:ここ
- 4. メイキングこの</p> <p><code><ol> <li>first</li> <li>second</li> <li>third</li> </ol></code></p> <p>と<strong>高度なレイアウト・エディタ</strong>(編集への以降のスイッチのように、WordPressの高度なレイアウトエディタ
- 5. は私がこの</p> <p><strong>ページ名</strong>ようなページIDの
- 6. <<<
- 7. Heredoc <<<または<<?
- 8. Ubuntuのリダイレクタ "<<<"?
- 9. は、どのように私は<code>string</code>あるこの</p> <pre><code>var alldest = cc.returnallfullDestinations(mainElement).Split('|'); </code></pre> <p><code>returnallfullDestionations</code>のようなデータを取得していますC#
- 10. の優先順位! * ++はかっこが必要ですか?</p> <pre><code>!(*(++buffer)) </code></pre> <p>同じもののように:</p> <pre><code>!*++buffer </code></pre> <p>
- 11. LINQ ToListがここで使用されないのはなぜですか? <code>source</code>が<code>IEnumerable<T></code>ある</p> <pre><code>using(var iterator = source.GetEnumerator()) {...} </code></pre> <p>:
- 12. <<<ここの文書の近くのBash予期しないトークン
- 13. Iterator <Item = io :: Result <u8>>をパニックにすることなくio :: Result <Vec<u8>に変換できますか?
- 14. RecyclerViewスワイプ私はこの</p> <pre><code><Layout> <BackgroundView> <ForegroundView> </Layout> </code></pre> <p>よう<code>RecyclerView</code>行レイアウトを持つ
- 15. NGリピート:私はNGリピートを使用して、このようなテーブルを描きたい</p> <pre><code>{'A': 'L', 'B': 'L', 'C': 'G', 'D': 'L', 'E': 'G', 'F': 'L' } </code></pre> <p>、ここで</p> <pre><code>L G A C B E D F </code></pre> <p>:オブジェクト
- 16. ルーティングレガシーリンク私は</p> <blockquote> <p>/signedin/mypage.aspx?my_key=152372</p> </blockquote> <p>にこのような何かをリダイレクトしたい
- 17. プロトタイプ、オブジェクト、コンストラクタ、 "これは"、</p> <ul> <li>プロトタイプ</li> <li>オブジェクト</li> <li>コンストラクタ</li> <li>"この"</li> <li>機能JSで</li> </ul> <p>仕事はどうすればよい
- 18. 私は色の性質を持っていないこの</p> <pre><code><View style={[color: 'red']}> <Text>Text1</Text> <Text>Text2</Text> <Text>Text3</Text> </View> </code></pre> <p>ビューコンポーネントのようなJSXを定義している要素
- 19. []と{{}}のプロパティの状態のバインディングの違いは?ここで</p> <pre><code><span count="{{currentCount}}"></span> <span [count]="currentCount"></span> </code></pre> <p>両者が同じことを行います
- 20. Gitは<<<<<<< HEADをファイルに追加し続けます
- 21. このASPXマークアップ・シーケンスが</p> <p><%何
- 22. <p>は、私が聞いてもどこで、どのように</p> <pre><code>http://domain.com, http://www, https://domain.com </code></pre> <p></p> <pre><code>https://www </code></pre> <p>にリダイレクトするために?</p>あなたのnginxの設定ファイルで
- 23. THREE.Camera.prototype.lookAt</ <() -</ <はどういう意味ですか?
- 24. ハスケル/フレーゲ<= <や= <<連想
- 25. std :: operator <<とstd :: ostream :: operator <<
- 26. は、どのように私は</strong>テーブルのこの</p> <p><strong>カスタマーのようなもので二つのテーブル</p> <ul> <li>顧客の両方のテーブルの</li> <li>CUSTOMERUPDATE</li> </ul> <p>構造を持っているトリガー
- 27. NG-バインドHTML私はこの</p> <pre><code><div id="{{item.id}}" ng-repeat="item in itemList"> <div ng-bind-html="item.html"></div> </div> </code></pre> <p>のような単純なプレゼンテーションがitem.htmlは、このようなHTMLが含まれている必要があり、画像のSRC
- 28. コルーチンが期待されるところで、どのように通常の関数を呼び出しますか? <code>bar</code>がコルーチンである場合、これは正常に動作します</p> <pre><code>async def foo(bar): result = await bar() return result </code></pre> <p>:
- 29. これは、サブクエリが=、=、<, <= , >、> =
- 30. ダイナミックオブジェクトは、これは、この中</strong></p> <pre><code>IResultSEt rs = db.SELECT.COLUMNS(db.GetTable(data.ToString()).ColumnNames).FROM(data.ToString()).Execute(); </code></pre> <p>、動作しない作品</p> <p><strong>
あなたが例を自分で与えました。あなたはどこにいらっしゃいますか? – bfavaretto
返信いただきありがとうございます。私はas3を初めて使用しており、ディスパッチイベントでオブジェクトを渡す方法を知りたいですか? – user1022521
独自のカスタムイベントオブジェクトを作成するには、Eventクラスを拡張する必要があります。以下の例を参照してください。http://cookbooks.adobe.com/post_AS3__Creating_and_dispatching_Custom_Events-17609.html – bfavaretto