メイン ActionScript 3.0 特設会議室 リスナー関数の定義場所について | 投稿するにはまず登録を |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
野中文雄 | Åê¹ÆNo.40722 投稿日時: 2008-11-11 11:21 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: リスナー関数の定義場所について 「何をするものなの」かというのは、「役割」「機能」を尋ねています。ActionScriptのビルトインクラスにSimpleButtonがあるのに、なぜクラスBtnをわざわざ定義するのか、それにより何をさせたいのかということです。
自分の役割を尋ねた選手に、「フォワードです」ではまともに答えたことにならないでしょう。チームのフォーメーションや他のポジションに配置した選手たち、チームの戦い方の中で、どういう「役割」が期待されるのか、監督は明確にする必要があります。 そうした「役割」は、デザインをする人(設計者)が自分の目的をよく考え、自分で決めなければなりません。 Btnクラスのインスタンスは、画像をロードするためだけのボタンなのでしょうか。クリック時に、画像をロードする以外の処理はしなくてよいのですか。それでよいとした場合、Loaderインスタンスはなぜクラス内で生成せず、外からコンストラクタに引数として渡すのですか。また、ロード完了時の処理は、どのクラスが行うのですか。 これらの「機能」や「役割」について、きちんとお考えになり、その説明をされたうえで、ある処理をどこに書くのが「機能」や「役割」と整合性をもつか、というご質問にでしたら、具体的にお答えできるでしょう。 逆に、それらが決まっていない場合には、どこに処理を書いてもさして違いはないでしょうし、クラスになどせずフレームアクションで十分かもしれません。 引用: TJFORDさんは書きました: 以前ご質問された「flash lite 1.xで動的にメニューを生成」は、解決したのでしょうか? 引用: Fumioは書きました: |
TJFORD | Åê¹ÆNo.40721 投稿日時: 2008-11-11 10:29 |
半人前 居住地: Tokyo 投稿: 42
使用環境:
:Flash CS3 |
Re: リスナー関数の定義場所について 度々失礼します。 引用:
|
TJFORD | Åê¹ÆNo.40711 投稿日時: 2008-11-10 23:17 |
半人前 居住地: Tokyo 投稿: 42
使用環境:
:Flash CS3 |
Re: リスナー関数の定義場所について 野中さん
ありがとうございます。 何度読み返しても理解できませんのでまだまだ私の知識不足のようです。日本語の勉強が先のようです…。 お手数おかけしました。 もう少し考えてみます。 |
野中文雄 | Åê¹ÆNo.40709 投稿日時: 2008-11-10 22:59 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: リスナー関数の定義場所について 回答は、よくお読みになりましたか?→【回答をきちんと読まない・回答者から聞かれたことに答えない】
引用: Fumioは書きました: |
TJFORD | Åê¹ÆNo.40708 投稿日時: 2008-11-10 22:03 |
半人前 居住地: Tokyo 投稿: 42
使用環境:
:Flash CS3 |
Re: リスナー関数の定義場所について 野中さん
ありがとうございます。 たとえば下記のBtnクラスはコンストラクタでリスナー登録。 ----------------------------------------------------------- package { import flash.display.Loader; import flash.display.Sprite; import flash.events.*; import flash.net.URLRequest; public class Btn extends Sprite { private var imgLoader:Loader; private var pass:String; public function Btn(ldr:Loader,str:String) { imgLoader = ldr; pass = str; addEventListener(MouseEvent.CLICK, onClick); } private function onClick(e:Event):void { imgLoader.load(new URLRequest(pass)); } } } ----------------------------------------------------------- 一方ドキュメントクラスでリスナー登録 (ここでインスタンス化しているのBtnクラスは上記のものとは違い、loaderをコンストラクタで渡していません。ドキュメントクラスでインスタンス化したloaderを使用) ----------------------------------------------------------- for(var i=0;i<imgPassList.length;i++){ var myBtn:Btn = new Btn(imgPassList[i]); myBtn.addEventListener(MouseEvent.CLICK, onClick); } private function onClick(e:Event):void { imgLoader.load(new URLRequest(e.target.pass)); } ----------------------------------------------------------- といった具合なのですが…(スクリプト省きすぎでしょうか…) どちらも動くことは動くと思いますが、使いどころの違いが分かっておりません。 どうぞよろしくお願いいたします。 |
野中文雄 | Åê¹ÆNo.40707 投稿日時: 2008-11-10 21:19 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: リスナー関数の定義場所について 「クラス内でリスナー関数を定義する」というクラスは、何をするものなのでしょう?
サッカーで監督がフォーメーションを決定し、選手のポジションを定め、各自の果たす役割を決めるのと同じことです。誰がパスを出し、誰がシュートすればよいかは、それらの帰結として導かれます。 「リスナー関数を定義する」のがそのクラスの役割であれば、そうすべきです。また、ドキュメントクラスに任せると決めたのなら、それでよいでしょう。こうすべきというルールがある訳ではなく、それを考えることは、監督の仕事です。 それらクラスのデザインと機能・役割を明らかにされたうえで、どちらの方が整合性をもつかというご質問でしたら、もう少し具体的にアドバイスできるでしょう。 引用: TJFORDさんは書きました: なお、ご質問に対して回答が得られたなら、フィードバックをしましょう。→【フィードバックをしない】 |
TJFORD | Åê¹ÆNo.40703 投稿日時: 2008-11-10 18:27 |
半人前 居住地: Tokyo 投稿: 42
使用環境:
:Flash CS3 |
リスナー関数の定義場所について ボタンを押したら画像をロードするといった仕様の場合、ボタンをインスタンス化したところでリスナー登録するのがよいのか、クラスの中に内包しておく(コンストラクタなどでリスナー登録)のがよいのか迷っています。
複数のボタンがあり、それぞれクリックするとLoader(実際はLoaderを拡張したカスタムクラスです)に画像が読み込まれる(全てのボタンが同じLoaderを参照)ような時、各ボタンインスタンスにLoaderの参照を渡して、クラス内でリスナー関数を定義する方法と、インスタンス化した場所、例えばドキュメントクラスでリスナー関数を定義する方法を思いついたのですがどちらがよいでしょうか? 時と場合によるのでしょうか…。 説明が至らないところもあるかもしれませんがよければアドバイスいたけますでしょうか。 どうぞよろしくお願いいたします。 |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |