メイン コーダーズルーム【スクリプト系】
Class名に応じて処理を分岐させたい | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| testatoo | Åê¹ÆNo.42114 投稿日時: 2009-4-15 19:31 |
新米 ![]() ![]() 居住地: 投稿: 8
使用環境:
|
Class名に応じて処理を分岐させたい はじめまして。
最近AS3を使用するになった初心者です。 表題のとおりClass名に応じて処理を分岐したいのですが、 その方法がよくわかりません。 現在は下記の方法にて対応していますが別の方法がありましたらご教授ください。宜しくお願いします。 ○現在の方法 ? var hoge:HogeClass = new HogeClass(); var foo:FooClass = new FooClass(); if(hoge is HogeClass) { HogeClassの場合の処理 } if(foo is FooClass) {FooClassの場合の処理 }? ? var className:String = 任意のインスタンス as Object; switch(className) { case "[object HogeClass]" : //HogeClassの場合の処理 brake; case "[object HogeClass]" : //FooClassの場合の処理 brake; } のような感じでコーディングしていますが、もう少しスマートな方法はないでしょうか?とくの?の方法は文字列ではなくて別の方法たとえばClassクラス等で評価したいのですがいまいちその方法がわかりません。わかる方いましたらどうか宜しくお願いいたします。 |
| うじゅ | Åê¹ÆNo.42121 投稿日時: 2009-4-15 21:52 |
半人前 ![]() ![]() 居住地: 投稿: 31
使用環境:
WinXP MX Pro2004, Flash8 |
Re: Class名に応じて処理を分岐させたい AS3はよく分かりませんが、instanceof は使えないんでしょうか?
また、クラスの判定では無いのでこのケースで使えるか分かりませんが、if,case 内の処理をクラスの同名メソッドとして用意する形に設計するのがスマートではないでしょうか?
|
| testatoo | Åê¹ÆNo.42129 投稿日時: 2009-4-16 14:31 |
新米 ![]() ![]() 居住地: 投稿: 8
使用環境:
|
Re: Class名に応じて処理を分岐させたい なるほど、スマートにやるにはやはりオブジェクト指向的な設計が必要になってくるんです。ありがとうございます。その方法をとりいれてやってみます。返信ありがとうございます。
|
| 野中文雄 | Åê¹ÆNo.42134 投稿日時: 2009-4-17 11:51 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: Class名に応じて処理を分岐させたい 本題の前に、まず機種依存文字はご使用をお控えください。
本題については、具体的におやりになりたい内容によって、適した方法は変わってくると思われます。インスタンスの継承するクラスを判別したいというだけでしたら、is演算子で調べるのでも差支えないでしょう。 引用: testatooさんは書きました: ある具体的な処理で、クラスによってその内容を変えたいという場合には、それをクラスにメソッドとして定義することが有効です。そのメソッドが備わっていることを保障するには、インターフェイスという仕組みが使えます。 |
| testatoo | Åê¹ÆNo.42151 投稿日時: 2009-4-19 23:02 |
新米 ![]() ![]() 居住地: 投稿: 8
使用環境:
|
Re: Class名に応じて処理を分岐させたい 引用:
機種依存文字件、申し訳ございませんでした。 以後気をつけます。 なるほど、インターフェイスの仕組みを利用して先にメソッドを保証しておくわけですね。その上で各クラスで具体的な実装を行っていくと。そうすると、if文を使用した処理分岐も少なくなるという ことですね。大変参考になりました。ここ数週間AS3に没頭していますが。かなりAS3が好きになりました。今後もこちらで色々と質問させていただくことになるとおもいますがなにとぞ宜しくお願いいたします。 |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |



ログイン




WinXP
MX Pro2004,
Flash8


CS5.5
.6.8 

