トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     連番でたくさんあるボタンの処理を、カンタンに定義したい
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
Fumio
Åê¹ÆNo.40885
投稿日時: 2008-11-29 1:05
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
Re: 連番でたくさんあるボタンの処理を、カンタンに定義したい
「ボタン」が「30個」でなく、ひとつならおわかりになるのですか?ActionScript 3.0でも、「myFuncに引数をわた」すことは問題なくできます。

ひとつご注意として申し上げるなら、マウスイベントに設定した(コールバックまたはリスナー)関数内におけるthisの参照先が、ActionScript 3.0では2.0とは変わりました。そのため、関数が受取るイベントオブジェクトのcurrentTargetプロパティからDisplayObject.nameプロパティを取得すればよいと思います。

ところで、インスタンス名の文字数は4?5で10よりつねに小さいでしょうから、すべてのインスタンス名に共通な"btn"の"t"が必要なのですか?

なお、「スーパークラスBaseClassにメソッドを定義」というのは、シンボルにクラス定義をした場合の話です。「最後の解決策」の手前までの、議論の経過はおわかりになったのでしょうか?
引用:
larrabieさんは書きました:
ボタンが30個あるとして、それぞれ[btn1]?[btn30]という名前だとします。
[btn1]をおしたときは関数myFuncに「1」の処理を、[btn5]をおしたときは「5」の処理をさせたいときに
AS2.0まではmyFuncに引数をわたしていたのですが
以下のように書いていたのですが、AS3.0ではどのようにするのでしょうか。
for(i=1; i<=30; i++){
	this["btn"+i].onRelease = function(){
		var namestr:String = this._name;
		var id:String = 
		namestr.length < 10 ? namestr.substr(1,1) : namestr.substr(1,2) ;
		// ...[後略]...

こちらの記事がかなり近いのですが、最後の解決策となる
スーパークラスBaseClassにメソッドを定義して対処する事にします。
というところが具体的に分かりませんでした。。
http://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=8163&forum=20


----------------
 

フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   連番でたくさんあるボタンの処理を、カンタンに定義したい larrabie 2008-11-28 15:25
     Re: 連番でたくさんあるボタンの処理を、カンタンに定義したい gaienboy 2008-11-28 17:23
   » Re: 連番でたくさんあるボタンの処理を、カンタンに定義したい Fumio 2008-11-29 1:05
       Re: 連番でたくさんあるボタンの処理を、カンタンに定義したい kingofkofs 2008-11-29 13:50
         Re: 連番でたくさんあるボタンの処理を、カンタンに定義したい larrabie 2008-11-29 14:34
           Re: 連番でたくさんあるボタンの処理を、カンタンに定義したい kingofkofs 2008-11-29 14:44
             Re: 連番でたくさんあるボタンの処理を、カンタンに定義したい Fumio 2008-11-29 15:01
               Re: 連番でたくさんあるボタンの処理を、カンタンに定義したい kingofkofs 2008-11-29 20:05
     Re: 連番でたくさんあるボタンの処理を、カンタンに定義したい larrabie 2008-11-29 14:10
       Re: 連番でたくさんあるボタンの処理を、カンタンに定義したい Fumio 2008-11-29 14:55

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops