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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     AS2のボタンスクリプトの記述をAS3で記述する場合
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
asdfg
Åê¹ÆNo.39142
投稿日時: 2008-6-9 11:17
新米
居住地:
投稿: 5
使用環境:
AS2のボタンスクリプトの記述をAS3で記述する場合
お世話になります。
asdfgと申します。

今まで使っていたAS2のボタンのスクリプト書き方がAS3でもっと
スマートに記述できる方法があるかご教授いただければ幸いです。

スクリプトが記述されいるフレームにはmybtn1?mybtn50というMovieClipが配置されています。

<as2>
var myURL:Array = new Array();
myURL[0] = "http://www.yahoo.co.jp";
myURL[1] = "http://www.google.co.jp";
//…
myURL[50] = "http://www.foo.?????.jp";

var URLlength:int = myURL.length;
for(var i=0;i<URLlength;i++){
	this["mybtn"+i].id = i;
	this["mybtn"+i].onRelease = function(){
		getURL(myURL[this.id]);
	}
}


AS3の場合よくわからかったので以下のように
書いています。

<as3>
var myURL:Array = new Array();
myURL[0] = "http://www.yahoo.co.jp";
myURL[1] = "http://www.google.co.jp";
//…
myURL[50] = "http://www.foo.?????.jp";

var URLlength:int = myURL.length;
for(var i=0;i<URLlength;i++){
	this["mybtn"+i].id = i;
	this["mybtn"+i].addEventListener(MouseEvent.CLICK,mybtnjump);
}

function mybtnjump(event:Event){
	var requestURL:URLRequest = new URLRequest(myURL[event.target.id]);
	navigateToURL(requestURL);
}


個人的にはaddEventListenerで指定する関数に引数つきで
渡せればうれしいのですが。。。できるのかどうかや
もっといい方法があればご教授よろしくお願いいたします。




野中文雄
Åê¹ÆNo.39143
投稿日時: 2008-6-9 15:53
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: AS2のボタンスクリプトの記述をAS3で記述する場合
現在の記述で、とくに問題はないように思われます。ActionScript 2.0では同じ内容の名前のない関数が50作成されてイベントハンドラメソッドに設定されているのに対して、3.0ではひとつの関数(mybtnjump())を50のインスタンスから参照していますのでより最適化されています。

記述を短くしたいということでしたら、1行くらいなら減らせます。「引数つき」というのは、何を引数にされたいのでしょう?
引用:
asdfgさんは書きました:
今まで使っていたAS2のボタンのスクリプト書き方がAS3でもっと
スマートに記述できる方法があるかご教授いただければ幸いです。
...[中略]...
var URLlength:int = myURL.length;
for (var i=0; i<URLlength; i++) {
	// this["mybtn"+i].id = i;
	this["mybtn"+i].requestURL=new URLRequest(myURL[i]);
	this["mybtn"+i].addEventListener(MouseEvent.CLICK,mybtnjump);
}

function mybtnjump(event:Event) {
	// var requestURL:URLRequest = new URLRequest(myURL[event.target.id]);
	// navigateToURL(requestURL);
	navigateToURL(event.currentTarget.requestURL);
}

個人的にはaddEventListenerで指定する関数に引数つきで
渡せればうれしいのですが。。。できるのかどうかや
もっといい方法があればご教授よろしくお願いいたします。


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

asdfg
Åê¹ÆNo.39147
投稿日時: 2008-6-9 22:58
新米
居住地:
投稿: 5
使用環境:
Re: AS2のボタンスクリプトの記述をAS3で記述する場合
Fumio様

ご返信ありがとうございます。
添削して頂いている記述は求めている理想形でした。

引数をつけてというのは、記述が無茶苦茶ですが、


var URLlength:int = myURL.length;
for (var i=0; i<URLlength; i++) {
	 this["mybtn"+i].id = i;
	this["mybtn"+i].requestURL=new URLRequest(myURL[i]);
	this["mybtn"+i].addEventListener(MouseEvent.CLICK,mybtnjump(this.id));
}

function mybtnjump(id:Number) {
	var requestURL:URLRequest = new URLRequest(myURL[id]);
	navigateToURL(requestURL);
}
if(条件){
	mybtnjump(1);
}


関数mybtnjumpをMC:mybtn以外からも参照する必要がある場合
配列の番号を引数として渡せたらなという考えでした。

野中文雄
Åê¹ÆNo.39149
投稿日時: 2008-6-10 3:35
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: AS2のボタンスクリプトの記述をAS3で記述する場合
基本としては、関数を別に定義することだと思います。ただ、実際にはもっと処理内容が多くて、同じ記述を2度することが堪え難いという場合には、入り口だけ分ける方法もあります。いわゆる「田舎の混浴温泉方式」です。
function mybtnjump(eventObject:MouseEvent):void {
	// navigateToURL(event.currentTarget.requestURL);
	gotoURL(eventObject.currentTarget.requestURL);
}
function gotoURLbyID(nID:int):void {
	var myURL:URLRequest = new URLRequest(myURL[nID]);
	gotoURL(myURL);
}
function gotoURL(myURL:URLRequest):void {
	navigateToURL(myURL);
}

if (条件) {
	// mybtnjump(1);
	gotoURLbyID(1);
}

引用:
asdfgさんは書きました:
関数mybtnjumpをMC:mybtn以外からも参照する必要がある場合
配列の番号を引数として渡せたらなという考えでした。


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

asdfg
Åê¹ÆNo.39151
投稿日時: 2008-6-10 14:34
新米
居住地:
投稿: 5
使用環境:
Re: AS2のボタンスクリプトの記述をAS3で記述する場合
Fumio様

お世話になります。
丁寧なご返信ありがとうございます。

なるほど、参考になりました。
田舎の混浴温泉方式ですね^^;

頂いたスクリプトを参考に最適してみたいと
思います。

ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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