いずれかが私にそれに接続されているオブジェクトと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. "**/* /"と "** /"の違いは?出力は、少なくとも小さなサブツリーのために、同じように見える</p> <p><code>Dir.glob("**/*/")</code></p> <p><code>Dir.glob("**/")</code></p> <p>:ここ
- 2. メイキングこの</p> <p><code><ol> <li>first</li> <li>second</li> <li>third</li> </ol></code></p> <p>と<strong>高度なレイアウト・エディタ</strong>(編集への以降のスイッチのように、WordPressの高度なレイアウトエディタ
- 3. Ubuntuのリダイレクタ "<<<"?
- 4. Heredoc <<<または<<?
- 5. は私がこの</p> <p><strong>ページ名</strong>ようなページIDの
- 6. は、どのように私は<code>string</code>あるこの</p> <pre><code>var alldest = cc.returnallfullDestinations(mainElement).Split('|'); </code></pre> <p><code>returnallfullDestionations</code>のようなデータを取得していますC#
- 7. LINQ ToListがここで使用されないのはなぜですか? <code>source</code>が<code>IEnumerable<T></code>ある</p> <pre><code>using(var iterator = source.GetEnumerator()) {...} </code></pre> <p>:
- 8. ルーティングレガシーリンク私は</p> <blockquote> <p>/signedin/mypage.aspx?my_key=152372</p> </blockquote> <p>にこのような何かをリダイレクトしたい
- 9. プロトタイプ、オブジェクト、コンストラクタ、 "これは"、</p> <ul> <li>プロトタイプ</li> <li>オブジェクト</li> <li>コンストラクタ</li> <li>"この"</li> <li>機能JSで</li> </ul> <p>仕事はどうすればよい
- 10. Gitは<<<<<<< HEADをファイルに追加し続けます
- 11. []と{{}}のプロパティの状態のバインディングの違いは?ここで</p> <pre><code><span count="{{currentCount}}"></span> <span [count]="currentCount"></span> </code></pre> <p>両者が同じことを行います
- 12. このASPXマークアップ・シーケンスが</p> <p><%何
- 13. THREE.Camera.prototype.lookAt</ <() -</ <はどういう意味ですか?
- 14. 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
- 15. これは、サブクエリが=、=、<, <= , >、> =
- 16. ダイナミックオブジェクトは、これは、この中</strong></p> <pre><code>IResultSEt rs = db.SELECT.COLUMNS(db.GetTable(data.ToString()).ColumnNames).FROM(data.ToString()).Execute(); </code></pre> <p>、動作しない作品</p> <p><strong>
- 17. PHP式<<< EOB
- 18. PHP <<< OUTとOUT;
- 19. JSON要素は、私はEJSに初心者です、と私はここで、この</p> <pre><code><input class="form-control" id="inputName" type="text" <% { %>value='<%= JSON.stringify(result.firstname) %>'<% } %> </code></pre> <p>のように入力タグを持つ、印刷データが空である
- 20. のWinforms:</p> <ol> <li><code>Enviroment.Exit(0)</code></li> <li><code>Application.Exit()</code></li> <li><code>Form.Close()</code></li> </ol> <p>何:Form.Close
- 21. Visual Studioの自動フォーマット:私は、Visual Studioがこの</p> <pre><code>if (itRains) { teleportToSahara(myPapyrus); } </code></pre> <p>のように、この</p> <pre><code>if (itRains){ teleportToSahara(myPapyrus); } </code></pre> <p>をフォーマットしたいの移動ブラケット
- 22. 分割は私がカンマでスプリットを使用しました。..この配列に</p> <pre><code>["a", "b", "c"] </code></pre> <p>をこの文字列</p> <pre><code>"a,bc,c" </code></pre> <p>をオンにしようとしています
- 23. NSOperationQueue mainQueueとperformSelectorOnMainThread?</p> <pre><code>[[NSOperationQueue mainQueue] addOperationWithBlock:^{ [self doSomthing:object]; }]; </code></pre> <p>と、この:この違いは何
- 24. エラー:このコードで</p> <blockquote> <p>error: expected ')' before 'CLLocation'</p> </blockquote> <p>:私はこのエラーを取得する 'CLLocation'
- 25. Intellijソースコードのこの注釈は何を意味していますか?</p> <pre><code>void m() { <selection><caret>System.out.println("");</selection> } </code></pre> <p>この<code><selection></code>注釈はどういう意味:
- 26. は私が</p> <pre><code>List[(String, Object)] </code></pre> <p>どのように私はこのリストをループ<code>for</code>を使用することができ、以下のようなサンプル<code>List</code>を持ってScalaの
- 27. がどのように要素を削除して、今、私はこのHTMLを解析したい私はこの</p> <pre><code>Hello<i class="emoji emoji_smile" title=":smile:"></i><i class="emoji emoji_angry" title=":angry:"></i>World </code></pre> <p>のようなHTMLスニペットを持って
- 28. 「<%:」は何をしますか?</p> <pre><code><%: Model.FirstName %> </code></pre> <p>「<%:」何をん:行う
- 29. Angularjs:私は3 <code><select></select></code>を構築したい。このことから</p> <pre><code>$scope.myArr = ["a_b_c","a_b_d","a_e_g","f_t_r","f_t_g","f_u_m"]; </code></pre> <p>:リスト
- 30. リスト(<%の#、<%=、など...)
あなたが例を自分で与えました。あなたはどこにいらっしゃいますか? – bfavaretto
返信いただきありがとうございます。私はas3を初めて使用しており、ディスパッチイベントでオブジェクトを渡す方法を知りたいですか? – user1022521
独自のカスタムイベントオブジェクトを作成するには、Eventクラスを拡張する必要があります。以下の例を参照してください。http://cookbooks.adobe.com/post_AS3__Creating_and_dispatching_Custom_Events-17609.html – bfavaretto