AS3.0初心者です。
恐れ入りますが、教えていただきたいことがあります。
【開発環境:WinXP FlashCS4】
『
・a_btnボタンをクリックすると、外部1フォルダの中の複数イメージファイル(jpg)が同時に表示される。
・b_btnボタンをクリックすると、外部2フォルダの中の複数イメージファイルが同時に表示される
但し、他のフォルダの画像が出ている時は、前表示されていた画像は削除される
』
というものを制作しております。
a_btnをクリックすると、外部フォルダが同時に表示されるところまでは作れたのですが、b_btnをクリックした時に、a_btnをクリックした時に出てきた画像を削除して、新たに画像を表示させるというところでつまづいております。
現在のスクリプト↓
------------------------------------------------------------
var loader:Loader=new Loader();
a_btn.addEventListener(MouseEvent.CLICK,xClick);
//配列の設定
var song01:Array = ["1/e01.jpg","1/e02.jpg","1/e03.jpg","1/e04.jpg"];
var loaderList:Array = new Array();
//iの初期値
var i:int = 0;
//spaceの設定
var space:Number =50;
function xClick(evt:MouseEvent):void{
for(var i:int=0; i < song01.length;i++){
loaderList[i] = new Loader();
var urlReq:URLRequest= new URLRequest(song01[i]);
addChild(loaderList[i]);
loaderList[i].load(new URLRequest(song01[i]));
loaderList[i].y = space * i+ 250;
trace(song01[i]);
}
}
----------------------------------------------------------
最終的にはXMLからファイルを読み出して、読み出したファイルをクリックすると音データが再生されるものを作成しようと思っております。
書籍などを見ても、うまく応用できず…恐れ入りますがヒントだけでもいただけると大変助かります。よろしくお願いできませんでしょうか?
No.1
- 回答日時:
shotakaさん、
こういう時は、複数JPGを並べて表示するカスタム関数を、引数を、フォルダー名として、作成し、ボタンで、切り替えると楽です。
//ここから
var max:uint=4;//400×300を、120×90に縮小して、4枚読み込むケース
function Display(n:uint) {//カスタム関数化
for (var i:uint=0; i<max; i++) {
var loader:Loader=new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT,xInit,false,0,true);//縮小してるので、記載、なければ、不要
loader.load(new URLRequest("../../fotos"+n+"/"+i+".jpg"));//引数nで、フォルダー名を指定する
if (i<2) {//横2枚、縦2枚の適当な位置づけ
loader.x=67+173*i;//数値は、ステージサイズに応じて、適当に決める
loader.y=53;
} else {
loader.x=67+173*(i-2);
loader.y=180;
}
addChild(loader);
}
}
function xInit(e:Event):void {//原寸400×300を120×90に縮小してるので、縮小がなければ、不要
e.target.content.scaleX=0.3;
e.target.content.scaleY=0.3;
}
a_btn.addEventListener(MouseEvent.CLICK,aClick,false,0,true);
b_btn.addEventListener(MouseEvent.CLICK,bClick,false,0,true);
function aClick(e:MouseEvent):void {
Display(0);//fotos0の0を引数に、カスタム関数を呼び出す
}
function bClick(e:MouseEvent):void {
Display(1);//fotos1の1を引数に、カスタム関数を呼び出す
}
//ここまで
joy_28さま
ありがとうございます。非常によくわかりました。
実際に利用させていただいたところ、綺麗に表示できました。
重ねてで申し訳ないのですが…今後、
(1)表示させたイメージファイルをクリックして音を出す
(2)読みこむファイルが増えていくので更新を楽にするために、外部XMLからよみこみ。
としようと思ってるのですが、今回教えていただいたスクリプトを元に作っていくのがよいでしょうか?
アドバイスをいただけると大変ありがたいです。
※初歩的な質問で申し訳ありません。
No.2ベストアンサー
- 回答日時:
shotakaさん、
(1)表示させたイメージファイルをクリックして音を出す
→
音がないので、検証してないですが、以下の例は、イメージをクリックすると、配列で定義した、サイトにリンクされる例です。キーは、イメージをクリックした際に、そのイメージが保有してる番号を取得できるかどうかです。それさえ取得できれば、外部サイトへのリンクであろうと、音であろうと、自由に出来るはずです。
//ここから
var max:uint=4;//400×300を、120×90に縮小して、4枚読み込むケース
//音の変わりに、著名サイトのURLを使って、配列を作っておき、
var url:Array=["http://yahoo.co.jp","http://google.com/","http:/ …];
function Display(n:uint) {//カスタム関数化
for (var i:uint=0; i<max; i++) {
var mc:MovieClip=new MovieClip();//loaderを包む、dyamic クラスのMovieClipを生成しておく
addChild(mc);
mc.id=i;//iをmcに動的に追加したプロパティであるidに、保存しておき、mcがクリックされた時に、このidを使う
mc.buttonMode=true;
mc.mouseChildren=false;//包まれたloaderが、マウスに反応しないようじしておく
if (i<2) {//横2枚、縦2枚の適当な位置に、mcを配置する
mc.x=67+173*i;//数値は、ステージサイズに応じて、適当に決める
mc.y=53;
} else {
mc.x=67+173*(i-2);
mc.y=180;
}
var loader:Loader=new Loader();
mc.addChild(loader);//mcで、loaderを包む
loader.contentLoaderInfo.addEventListener(Event.INIT,xInit,false,0,true);//縮小してるので、記載、なければ、不要
loader.load(new URLRequest("../../fotos"+n+"/"+i+".jpg"));//引数nで、フォルダー名を指定する
mc.addEventListener(MouseEvent.CLICK,mClick,false,0,true);//mcがクリックされたら、
}
}
function xInit(e:Event):void {//原寸400×300を120×90に縮小してるので、縮小がなければ、不要
e.target.content.scaleX=0.3;
e.target.content.scaleY=0.3;
}
function mClick(e:MouseEvent):void {
trace(e.target.id);//クリックされたmcのiが復元される
var req:URLRequest=new URLRequest(url[e.target.id]);//mc.id番目の配列を採取し、
navigateToURL(req,"_blank");//リンク
}
a_btn.addEventListener(MouseEvent.CLICK,aClick,false,0,true);
b_btn.addEventListener(MouseEvent.CLICK,bClick,false,0,true);
function aClick(e:MouseEvent):void {
Display(0);//fotos0の0を引数に、カスタム関数を呼び出す
}
function bClick(e:MouseEvent):void {
Display(1);//fotos1の1を引数に、カスタム関数を呼び出す
}
//ここまで
(2)読みこむファイルが増えていくので更新を楽にするために、外部XMLからよみこみ。
→
なんとも言えないです。理由は、XMLで何を定義されようとしてるのか分からないからです。ファイルが、単に増えるだけなら、フォルダー0、フォルダー1、フォルダー2・・・と増やして、それに見合う、ボタンを増やせばいい訳ですから、XMLで出来ると思いますし、これだけなら、XML使わずに、外部テキストで、数だけ、指定してやれば、事足りうような気もします。
やはり、how toの前に、whatを決めることが、肝要ではないでしょうか。
初心者の私に丁寧に教えていただきありがとうございます。
非常によくわかりました。
人にXMLを使って作って欲しいと頼まれていたのですが…
確かに仰るとおりXMLで作る必要は無さそうです。
音データに入れ替えて、応用させていただきたいと思います。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- その他(プログラミング・Web制作) Leafletで画像をon、offさせる方法について 2 2022/11/01 15:34
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- Windows 8 Route Generator の使い方 1 2023/05/03 00:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
actionscript3.0 オブジェクト...
-
テキストボックスにセルの値を...
-
VBAで改行の入ったデータの正規...
-
プログラミング、アーキテクチ...
-
テキストボックスの中身をリセ...
-
【Photoshop】レイヤー効果の境...
-
テキストエリア内の文字列にリ...
-
ipconfig /releaseって何ですか?
-
【VB.NET】別Formのボタンが押...
-
【ExcelVBA】ファイル名をセル...
-
SNMPの標準MIBについて
-
フォームのテキストの入力数字...
-
Access2000 実行時エラー '3061':
-
IP Address 入力フォームについて
-
FLASHのActivescriptでオブジェ...
-
photoshopで書いた四角の枠の中...
-
VB.NETで数十行のプログラムを...
-
YOASOBI
-
VB6.0のHideのバグ?
-
CreateDialogについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
for文を使ったボタン
-
AS3.0 ループを利用したムービ...
-
複数mcのランダム再生とmc指定...
-
actionscript3.0 オブジェクト...
-
photoshopで書いた四角の枠の中...
-
VBAで改行の入ったデータの正規...
-
YOASOBI
-
VBScriptでMsgBoxのYesNoボック...
-
プログラミング、アーキテクチ...
-
python ボタンを押すと複数の関...
-
別のアプリケーションのテキス...
-
テキストボックスの中身をリセ...
-
テキストボックスにセルの値を...
-
五芒星は、悪魔崇拝とどういう...
-
else if文の順序を変えることに...
-
変数に256文字以上のテキストを...
-
RPG(AS400)の本、サイトってあ...
-
PYTHONのtkinterについて
-
Pythonのtkinterについて
-
ダブルクリックと2回クリックの...
おすすめ情報