メイン ActionScript 3.0 特設会議室
_mc.onRelease();はAS3では? | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| kirarin | Åê¹ÆNo.39049 投稿日時: 2008-5-30 11:16 |
職人 ![]() ![]() 居住地: 彩の国 投稿: 214
使用環境:
Windows7 IE 8 Flash CS4 Flash Player WIN 10,0,45,2 ------------------------- WindowsXP Professional SP3 IE7.0 Flash 8 Professional Flash Player 10.0.12.36 ------------------------- Windows2003 Sp1 IE6.0 SP1 Flash MX 2004 ... |
_mc.onRelease();はAS3では? いつもお世話になっております。
kirarinです。 AS3になってonRelease→addEventListenerになりましたが、これに関して質問です。 hoge_mc.onRelease = function(){ trace("Click!"); } hoge_mc.onRelease(); 上記の記述で、hoge_mcのクリック動作を1回実行できました。 これと同じことをAS3で行いたい場合、 hoge_mc.addEventListener(MouseEvent.CLICK, xHandler); function xHandler(evt:MouseEvent):void { trace("Click!"); } のあと、hoge_mc.onRelease();に代わる記述はどのようになりますでしょうか。 そのままxHandler();として関数を呼び出すと、引数の数が正しくないということでコンパイルエラーとなりました。(当然ですね) このような場合は、 function xHogeClick(){ trace("Click!"); } のような関数を別で定義して、xHandlerの中ではxHogeClickを呼ぶ、という感じに入れ子(?)にする必要がありますでしょうか。 検索したのですが、思うような記事にたどりつけませんでした。 情報いただけますと幸いです。 よろしくお願いいたします。
|
| とんび | Åê¹ÆNo.39050 投稿日時: 2008-5-30 11:39 |
Bak@Fla大巨匠 ![]() ![]() 居住地: 佐賀県 杵島郡 投稿: 275
使用環境:
MX CS3:Flash CS6:CS6 .7.5 |
Re: _mc.onRelease();はAS3では? ダミーのイベントを送ってやればいいと思います.
受け取ったイベントを使って、色々やっているのでしたら、それに必要なイベントに仕立てたやつを送ってやるといいかと. 特にevtを使ってないなら、これでOK
|
| 野中文雄 | Åê¹ÆNo.39051 投稿日時: 2008-5-30 11:44 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: _mc.onRelease();はAS3では? です。 引用: kirarinさんは書きました: あるいは、関数の側にデフォルト値を設定しておく方法もあります。 |
| kirarin | Åê¹ÆNo.39064 投稿日時: 2008-5-30 18:15 |
職人 ![]() ![]() 居住地: 彩の国 投稿: 214
使用環境:
Windows7 IE 8 Flash CS4 Flash Player WIN 10,0,45,2 ------------------------- WindowsXP Professional SP3 IE7.0 Flash 8 Professional Flash Player 10.0.12.36 ------------------------- Windows2003 Sp1 IE6.0 SP1 Flash MX 2004 ... |
Re: _mc.onRelease();はAS3では? とんびさん、野中さん、ご回答ありがとうございました。
どちらの記述でもスクリプトでボタン押下時と同じ動作を実行することができました。 関数の側にデフォルト値を定義しておく方法は、初めて知りました。 試しにxHandlerの中で trace(evt.currentTarget); を表示してみました。 xHandler( new MouseEvent( MouseEvent.CLICK ) ); とした場合は、nullが出力され、 xHandler(null); とした場合は、「null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません」という実行時エラーとなりました。 受け取ったevtを使う必要があるかないかで注意したほうがよいようですね。 今回は特に必要ないのでxHandler(null)で対応しようと思います。 >受け取ったイベントを使って、色々やっているのでしたら、それに必要なイベントに仕立てたやつを送ってやるといいかと. 上記についてもう少しお伺いしてもよいでしょうか。 例えば、今回のxHandlerの中身が、押下されたボタン自体の横幅を倍にする・・・などのような処理をしたい場合、 function xHandler(evt:MouseEvent):void { trace("Click!"); evt.currentTarget.width *= 2; } のように定義されると思います。 このボタンをスクリプトで押下したい場合も、xHandlerに渡すイベント定義の部分をどうにか「仕立て」れば、可能なのでしょうか。 もしこのスレッドの内容からは少し外れる、ということであれば、参考となる資料、URLなどの情報でも教えていただけると助かります。 どうぞよろしくお願いいたします。
|
| とんび | Åê¹ÆNo.39068 投稿日時: 2008-5-31 1:14 |
Bak@Fla大巨匠 ![]() ![]() 居住地: 佐賀県 杵島郡 投稿: 275
使用環境:
MX CS3:Flash CS6:CS6 .7.5 |
Re: _mc.onRelease();はAS3では? MouseEventのコンストラクタで、プロパティを設定できるようになっていますので、ここで必要なプロパティをガツンと設定してやると、上手い具合に「仕立てる」ことができます。
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/events/MouseEvent.html targetは残念ながらread onlyの書き込み不可のプロパティなので、仕立てることはできません。 しかし、nullを送るというのはまったく気づかなかったなぁ。勉強になりました。
|
| kirarin | Åê¹ÆNo.39072 投稿日時: 2008-5-31 10:14 |
職人 ![]() ![]() 居住地: 彩の国 投稿: 214
使用環境:
Windows7 IE 8 Flash CS4 Flash Player WIN 10,0,45,2 ------------------------- WindowsXP Professional SP3 IE7.0 Flash 8 Professional Flash Player 10.0.12.36 ------------------------- Windows2003 Sp1 IE6.0 SP1 Flash MX 2004 ... |
Re: _mc.onRelease();はAS3では? ご回答ありがとうございます。
targetやcurrentTargetがセットできたらよかったなぁと思いますが、read only以外なら可、ということですね。 どのような場合に使うかは今のところ思いつきませんが、今後の参考とさせていただきたいと思います。 ありがとうございました!
|
| とんび | Åê¹ÆNo.39103 投稿日時: 2008-6-6 2:21 |
Bak@Fla大巨匠 ![]() ![]() 居住地: 佐賀県 杵島郡 投稿: 275
使用環境:
MX CS3:Flash CS6:CS6 .7.5 |
Re: _mc.onRelease();はAS3では? よく考えたら、イベントを本当に発生させればいいのでした。
ちゃんと、targetも拾えます。
|
| kirarin | Åê¹ÆNo.39104 投稿日時: 2008-6-6 7:36 |
職人 ![]() ![]() 居住地: 彩の国 投稿: 214
使用環境:
Windows7 IE 8 Flash CS4 Flash Player WIN 10,0,45,2 ------------------------- WindowsXP Professional SP3 IE7.0 Flash 8 Professional Flash Player 10.0.12.36 ------------------------- Windows2003 Sp1 IE6.0 SP1 Flash MX 2004 ... |
Re: _mc.onRelease();はAS3では? とんびさん、再度ありがとうございます!
できました! as2の時も似たようなことをしていましたが、実際にボタンを押下したときと、スクリプトで関数を実行した時では、関数内部のthisの参照が異なっていたため、ちょっと下策と思いつつ処理の分岐をしていましたが、これならtargetもばっちり一致しますね。 dispatchEventという名前は何となく目に映ってはいたのですが、実際にどのように使うかがピンと来ていなかったのですが、とてもすっきりしました。 ありがとうございました! -------------------- [6/6追記] サーバー移転で6月移行の投稿が反映されなかったようですね。 6/1にとんびさんが投稿していくれた記事も拝見しました。ありがとうございました。 私の返信も、一応再投稿しておきます。
|
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |



ログイン





MX
CS3
.7.5

Vista Home Premium (SP1)

