• 締切済み

AS3.0でギャラリーのボタンの透明度を変えたい

環境:MacOSX Flash CS5 AS3.0 写真がステージに読み込まれた際にその写真に該当するボタンの透明度を 50%にしたいと思ったのですが、うまくいかなくて困っています。 btnArr[imageNum].alpha = 0.5; 上記のスクリプトでいけるとおもったのですが、うまくいきません。。 別の写真がステージに配置された時には透明度を戻したいのですが 分からず困っています。 どなたかどうかよろしくお願いします。 // 写真のURLを保存する配列 var photoArr:Array // var btnArr:Array // 写真を自動的に変更するタイマー var imageTimer:Timer; // 大きな画像を読み込むローダー var bigImageLoader:Loader; // 現在表示されている画像の番号 var imageNum:Number = 0; //-------------------------------- // 初期化の処理 //-------------------------------- // 配列を設定する photoArr = new Array(); photoArr[0] = "c00.jpg"; photoArr[1] = "c01.jpg"; photoArr[2] = "c02.jpg"; photoArr[3] = "c03.jpg"; photoArr[4] = "c04.jpg"; // btnArr = new Array(); btnArr[0] = btnA; btnArr[1] = btnB; btnArr[2] = btnC; btnArr[3] = btnD; btnArr[4] = btnE; // タイマーを起動 startTimer(); // 大きな画像を読み込む loadImage(); // タイマーをスタートする function startTimer() { imageTimer = new Timer(1000, 0); imageTimer.start(); imageTimer.addEventListener(TimerEvent.TIMER, onTimerCalled); } // タイマーが呼ばれるたびに実行される function onTimerCalled(evt) { btnA.y -= 85; btnB.y -= 85; btnC.y -= 85; btnD.y -= 85; btnE.y -= 85; if(btnA.y <= 0){ btnA.y = 380; } if(btnB.y <= 0){ btnB.y = 380; } if(btnC.y <= 0){ btnC.y = 380; } if(btnD.y <= 0){ btnD.y = 380; } if(btnE.y <= 0){ btnE.y = 380; } imageNum+=1; if (imageNum >= photoArr.length) { imageNum = 0; } // 大きな画像を読み込む loadImage(); } //btn01をクリックした時の処理 btn01.addEventListener(MouseEvent.CLICK,xClick01); function xClick01(evt:Event):void { btnA.y -= 85; btnB.y -= 85; btnC.y -= 85; btnD.y -= 85; btnE.y -= 85; if(btnA.y <= 0){ btnA.y = 380; } if(btnB.y <= 0){ btnB.y = 380; } if(btnC.y <= 0){ btnC.y = 380; } if(btnD.y <= 0){ btnD.y = 380; } if(btnE.y <= 0){ btnE.y = 380; } imageNum+=1; if (imageNum >= photoArr.length) { imageNum = 0; } // 大きな画像を読み込む loadImage(); } //btn02をクリックした時の処理 btn02.addEventListener(MouseEvent.CLICK,xClick02); function xClick02(evt:Event):void { btnA.y += 85; btnB.y += 85; btnC.y += 85; btnD.y += 85; btnE.y += 85; if(btnA.y >= 381){ btnA.y = 40; } if(btnB.y >= 381){ btnB.y = 40; } if(btnC.y >= 381){ btnC.y = 40; } if(btnD.y >= 381){ btnD.y = 40; } if(btnE.y >= 381){ btnE.y = 40; } imageNum-=1; if (imageNum <= -1) { //photoArr.lengthを-1に変更 imageNum = 4; } // 大きな画像を読み込む loadImage(); } // 大きな画像を読み込む function loadImage() { // 新しい画像を読み込む var url = "gallery_img/"+photoArr[imageNum]; btnArr[imageNum].alpha = 0.5;//読み込まれた画像に該当するボタンの透明度を50%にする処理 var req = new URLRequest(url); bigImageLoader = new Loader(); bigImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoad); bigImageLoader.load(req); mainTarget.addChild(bigImageLoader); } // 大きな画像が読み込まれたら実行される処理 function onImageLoad(eventObj) { bigImageLoader.alpha = 0; stage.addEventListener(Event.ENTER_FRAME, onFadeIn); } // フェードインをつける function onFadeIn(eventObj) { bigImageLoader.alpha += 0.1; } // フェードインの処理を取り除く if (bigImageLoader.alpha >= 1) { removeEventListener(Event.ENTER_FRAME, onFadeIn); }

  • Flash
  • 回答数2
  • ありがとう数0

みんなの回答

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

~~~字数制限により#1からの続き~~~ というわけで 全体的にスクリプトを考えなおしてみました。 Loader インスタンスは2つだけにして 画像を交互にロードし ロードした方の Loader のインデックス(表示順/Z軸方向順番/昔で言う深度)を上に持って行くという方法のスクリプト例です。 //===================== // 写真のURLを保存する配列 var photoArr:Array; // ボタンの参照を保存する配列 var btnArr:Array; // 写真を自動的に変更するタイマー var imageTimer:Timer; // 大きな画像を読み込むローダー2つ var bigImageLoader0:Loader; var bigImageLoader1:Loader; //ローダーを作成&「mainTarget」内に配置 bigImageLoader0 = new Loader(); mainTarget.addChild(bigImageLoader0); bigImageLoader1 = new Loader(); mainTarget.addChild(bigImageLoader1); // 上側にあるローダーの番号 var loaderNum:int = 1; // 現在表示されている画像の番号 var imageNum:Number = 0; //-------------------------------- // 初期化の処理 //-------------------------------- // 写真のURLの配列を設定する photoArr = new Array(); photoArr[0] = "c00.jpg"; photoArr[1] = "c01.jpg"; photoArr[2] = "c02.jpg"; photoArr[3] = "c03.jpg"; photoArr[4] = "c04.jpg"; // ボタンの配列を設定する btnArr = new Array(); btnArr[0] = btnA; btnArr[1] = btnB; btnArr[2] = btnC; btnArr[3] = btnD; btnArr[4] = btnE; // タイマーを起動 startTimer(); // 大きな画像を読み込む loadImage(); // タイマーをスタートする function startTimer() { imageTimer = new Timer(2000,0); imageTimer.start(); //タイマーイベントで関数 gotoNextPhoto を実行 imageTimer.addEventListener(TimerEvent.TIMER, gotoNextPhoto); } //btn01をクリックした時に関数 gotoNextPhoto を実行 btn01.addEventListener(MouseEvent.CLICK,gotoNextPhoto); //関数 gotoNextPhoto の定義 function gotoNextPhoto(evt:Event = null):void { for (var i=0; i <=btnArr.length-1; i++) { btnArr[i].y -= 85; if (btnArr[i].y<=0) { btnArr[i].y=380; } } imageNum+=1; if (imageNum>=photoArr.length) { imageNum=0; } // 大きな画像を読み込む loadImage(); } //btn02をクリックした時に関数 gotoPrevPhoto を実行 btn02.addEventListener(MouseEvent.CLICK,gotoPrevPhoto); function gotoPrevPhoto(evt:Event):void { for (var i=0; i <=btnArr.length-1; i++) { btnArr[i].y+=85; if (btnArr[i].y>=381) { btnArr[i].y=40; } } imageNum-=1; if (imageNum<=-1) { imageNum=photoArr.length-1; } // 大きな画像を読み込む loadImage(); } // 大きな画像を読み込む function loadImage() { //loaderNum の 0 と 1 を入れ替える loaderNum^=1; // 新しい画像を読み込む var url="gallery_img/"+photoArr[imageNum]; var req=new URLRequest(url); this["bigImageLoader"+loaderNum].contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoad); this["bigImageLoader"+loaderNum].load(req); } // 大きな画像が読み込まれたら実行される処理 function onImageLoad(eventObj) { //↓全ての btnArr[○○] のアルファを 100% にしておく for (var i = 0; i <= btnArr.length-1; i++) { btnArr[i].alpha=1; } //↓読み込まれた画像に該当するボタンのアルファ 50% にする btnArr[imageNum].alpha=0.5; //ロードされたローダーの表示順を一番上にする mainTarget.setChildIndex(this["bigImageLoader" + loaderNum],mainTarget.numChildren-1); this["bigImageLoader"+loaderNum].alpha=0; this.addEventListener(Event.ENTER_FRAME, onFadeIn); } // フェードインをつける function onFadeIn(eventObj) { this["bigImageLoader" + loaderNum].alpha+=0.1; // フェードインの処理を取り除く if (this["bigImageLoader"+loaderNum].alpha>=1) { this.removeEventListener(Event.ENTER_FRAME, onFadeIn); } } //=====================

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

実際に書かれていらしゃるままのものを作成してみましたが btnArr[imageNum].alpha = 0.5; これでちゃんと btnArr[imageNum] は半透明になりましたよ。 ただし, btnArr[imageNum] は順番に半透明になって行くだけなので 一周すると btnA~btnE は全て半透明になってしまします。 そうならないようにするには btnArr[imageNum].alpha = 0.5;//読み込まれた画像に該当するボタンの透明度を50%にする処理 と書かれていらしゃる部分を 次のようにする方が良いと思います。 //↓全ての btnArr[○○] のアルファを 100% にしておく for(var i = 0; i <= btnArr.length-1; i++){ btnArr[i].alpha=1; } //↓読み込まれる画像に該当するボタンのアルファ 50% にする処理 btnArr[imageNum].alpha=0.5; とにかくこうしてもしなくても btnArr[imageNum].alpha = 0.5; でちゃんと半透明になりますよ。 あと, 上のスクリプトが今の場所にあるままだと 「画像が読み込まれたとき」ではなく「画像を読み込むとき」になりますよね。 「画像が読み込まれたとき」にするには // 大きな画像を読み込む function loadImage() {…} この↑中からこちらの↓中に引っ越しすべきでしょう。 // 大きな画像が読み込まれたら実行される処理 function onImageLoad(eventObj) {…}   ================================================= ただ, ボタンが半透明になるかならないかではなく, またコードの書き方が良い悪いではなく, 仕組み(プログラム自体)に致命的な欠陥があります。 今のように, どんどんどんどん bigImageLoader = new Loader(); で Loader インスタンスを作成して行って そこに次から次へとJPEGをロードして行ったら 閲覧者のメモリがパンクしてしまいます。 Loader の座標がどれも同じ位置なので どんどんどんどん Loader が増えて行っていることがわかりにくいだけです。 座標を少しずつでもずらせば大量に画像が配置されて行くのがわかると思います。 これを解決するには, 例えば 最初に写真の数だけの Loader インスタンスを作成しておいて 該当 Loader に写真をロードし インデックス(表示順/Z座標の上下関係)を上にするなどの方法をとる方が良いと思います。 もしそうするとなると 何度も何度も同じ Loader に同じ画像をロードするのは変なことになりますから 最初に全画像を各 Loader にロードしておいて ボタンクリック や Timer で順番に該当 Loader のインデックス(表示順/Z座標の上下関係)を上に上げる方が自然な流れになります。 または Loader インスタンスは写真の数だけ用意するのではなく 2つだけ(固定)にしても良いと思います。 例えば bigImageLoader0 と bigImageLoader1 の2つを最初に作って両方とも addChild() しておいて ボタンクリック や Timer で ある変数の 0 と 1 を切り替えて該当画像を bigImageLoader0 または bigImageLoader1 にロードし ロードした Loader の方のインデックス(表示順/Z座標の上下関係)を上にしても良いでしょう。 他にも方法はあると思います。 例えば Loader は今のままのようにガンガンに作りまくるのだけれども 前の前の前に画像をロードした Loader (例えば3つ下の Loader)は 順番に removeChild() した上で null にして参照を切る とかいう方法もあります。 (ただしこれは管理が結構難しい(ややこしい)ですよ。) (また実際の Loader 削除はガベージコレクタ待ちになるのであまりお薦めできません。) (↑Loader を removeChild() した上で参照を切っても,ステージ上の表示から消えるだけで,ガベージコレクションの対象にならない限りメモリから消えることはないという意味です。) まだ他にも方法はあると思いますが, とにかく今のままの仕組み(プログラム)は欠陥品ですよ。   =================================== それと... 最後の // フェードインの処理を取り除く の部分全体が 独立してしまっていますから動作していませんよ。 ちゃんと // フェードインをつける function onFadeIn(eventObj) {…} 内に入れないと。 また入れたとしても そのままでは stage.addEventListener(Event.ENTER_FRAME, onFadeIn); が対象としているもの(この場合 stage)と removeEventListener(Event.ENTER_FRAME, onFadeIn); が対象としているもの(この場合 root)とがズレてますから 延々とアルファは上がりっぱなしになってしまいますよ。     =================================== 何だか全体的にガタガタで見ていられないので #2で Loader インスタンスを2つだけ用意する方法のスクリプト例を回答します。 ~~~字数制限のため#2へ続く~~~

関連するQ&A

  • AS3.0でフェードインできない

    まず制作環境ですが、 MacOSX Flash CS5 AS3.0 です。 下記スクリプト内の 「onFadeOut();」 が、効かずに困っています。 どなたかどうすればこの「onFadeOut();」が効く様になるか 教えていただけませんでしょうか? よろしくお願いいたします。 // 写真のURLを保存する配列 var photoArr:Array // var btnArr:Array // 写真を自動的に変更するタイマー var imageTimer:Timer; // 大きな画像を読み込むローダー var bigImageLoader:Loader; // 現在表示されている画像の番号 var imageNum:Number = 0; //-------------------------------- // 初期化の処理 //-------------------------------- // 配列を設定する photoArr = new Array(); photoArr[0] = "test01.swf"; photoArr[1] = "test02.swf"; photoArr[2] = "test03.swf"; photoArr[3] = "test04.swf"; photoArr[4] = "test05.swf"; // btnArr = new Array(); btnArr[0] = btnA; btnArr[1] = btnB; btnArr[2] = btnC; btnArr[3] = btnD; btnArr[4] = btnE; // タイマーを起動 startTimer(); // 大きな画像を読み込む loadImage(); // タイマーをスタートする function startTimer() { imageTimer = new Timer(2000, 0); imageTimer.start(); imageTimer.addEventListener(TimerEvent.TIMER, onTimerCalled); } // タイマーが呼ばれるたびに実行される function onTimerCalled(evt) { btnA.y -= 60; btnB.y -= 60; btnC.y -= 60; btnD.y -= 60; btnE.y -= 60; if(btnA.y <= 0){ btnA.y = 280; } if(btnB.y <= 0){ btnB.y = 280; } if(btnC.y <= 0){ btnC.y = 280; } if(btnD.y <= 0){ btnD.y = 280; } if(btnE.y <= 0){ btnE.y = 280; } onFadeOut(); // フェードアウトをつける function onFadeOut(eventObj) { bigImageLoader.alpha -= 0.1; } // フェードアウトの処理を取り除く if (bigImageLoader.alpha <= 0) { removeEventListener(Event.ENTER_FRAME, onFadeOut); //配置されている画像の削除 mainTarget.removeChild(bigImageLoader); } btnArr[imageNum].alpha = 1; // imageNum+=1; if (imageNum >= photoArr.length) { imageNum = 0; } // 大きな画像を読み込む loadImage(); } //btn01をクリックした時の処理 btn01.addEventListener(MouseEvent.CLICK,xClick01); function xClick01(evt:Event):void { btnA.y -= 60; btnB.y -= 60; btnC.y -= 60; btnD.y -= 60; btnE.y -= 60; if(btnA.y <= 0){ btnA.y = 280; } if(btnB.y <= 0){ btnB.y = 280; } if(btnC.y <= 0){ btnC.y = 280; } if(btnD.y <= 0){ btnD.y = 280; } if(btnE.y <= 0){ btnE.y = 280; } //ボタンの透明度を戻す処理 btnArr[imageNum].alpha = 1; imageNum+=1; if (imageNum >= photoArr.length) { imageNum = 0; } // 大きな画像を読み込む loadImage(); } //btn02をクリックした時の処理 btn02.addEventListener(MouseEvent.CLICK,xClick02); function xClick02(evt:Event):void { btnA.y += 60; btnB.y += 60; btnC.y += 60; btnD.y += 60; btnE.y += 60; if(btnA.y >= 281){ btnA.y = 40; } if(btnB.y >= 281){ btnB.y = 40; } if(btnC.y >= 281){ btnC.y = 40; } if(btnD.y >= 281){ btnD.y = 40; } if(btnE.y >= 281){ btnE.y = 40; } //ボタンの透明度を戻す処理 btnArr[imageNum].alpha = 1; imageNum-=1; if (imageNum <= -1) { //photoArr.lengthを-1に変更 imageNum = 4; } // 大きな画像を読み込む loadImage(); } // 大きな画像を読み込む function loadImage() { // 新しい画像を読み込む var url = "gallery_img/"+photoArr[imageNum]; //ボタンの透明度を戻す処理 btnArr[0].alpha = 1; btnArr[1].alpha = 1; btnArr[2].alpha = 1; btnArr[3].alpha = 1; btnArr[4].alpha = 1; //読み込まれた画像に該当するボタンの透明度を30%にする処理 btnArr[imageNum].alpha = 0.5; var req = new URLRequest(url); bigImageLoader = new Loader(); bigImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoad); bigImageLoader.load(req); mainTarget.addChild(bigImageLoader); } // 大きな画像が読み込まれたら実行される処理 function onImageLoad(eventObj) { bigImageLoader.alpha = 0; stage.addEventListener(Event.ENTER_FRAME, onFadeIn); } // フェードインをつける function onFadeIn(eventObj) { bigImageLoader.alpha += 0.1; } // フェードインの処理を取り除く if (bigImageLoader.alpha >= 1) { removeEventListener(Event.ENTER_FRAME, onFadeIn); }

    • ベストアンサー
    • Flash
  • AS3のコードをシンプルに

    AS3のコードについてご教授お願いします。 下記のようなコードがあるとします。 btnA_mc.addEventListener(MouseEvent.CLICK,aClick); btnB_mc.addEventListener(MouseEvent.CLICK,bClick); btnC_mc.addEventListener(MouseEvent.CLICK,cClick); function aClick(e:MouseEvent):void { this.gotoAndPlay("A"); // trace("Aclick"); btnB_mc.addEventListener(MouseEvent.CLICK,bClick); btnC_mc.addEventListener(MouseEvent.CLICK,cClick); btnA_mc.removeEventListener(MouseEvent.CLICK,aClick); } function bClick(e:MouseEvent):void { this.gotoAndPlay("B"); // trace("Bclick"); btnA_mc.addEventListener(MouseEvent.CLICK,aClick); btnC_mc.addEventListener(MouseEvent.CLICK,cClick); btnB_mc.removeEventListener(MouseEvent.CLICK,bClick); } function cClick(e:MouseEvent):void { this.gotoAndPlay("C"); // trace("Cclick"); btnA_mc.addEventListener(MouseEvent.CLICK,aClick); btnB_mc.addEventListener(MouseEvent.CLICK,bClick); btnC_mc.removeEventListener(MouseEvent.CLICK,cClick); } btnA_mc.buttonMode = true; btnB_mc.buttonMode = true; btnC_mc.buttonMode = true; この中の、 btnA_mc.addEventListener(MouseEvent.CLICK,aClick); btnB_mc.addEventListener(MouseEvent.CLICK,bClick); btnC_mc.removeEventListener(MouseEvent.CLICK,cClick); のような、重複する部分を、配列か何かでまとめたいのですが、いまいち方法が分かりません。 ボタンAをクリックで、ボタンAは効かなくなる。ボタンBorCをクリックでボタンAが復活みたいな感じです。 宜しくお願いします。 flashCS3 ASはver3.0でお願いします。

    • ベストアンサー
    • Flash
  • 【AS3.0】画像をクリックして外部複数ファイルの読み出しと削除を行う方法

    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からファイルを読み出して、読み出したファイルをクリックすると音データが再生されるものを作成しようと思っております。 書籍などを見ても、うまく応用できず…恐れ入りますがヒントだけでもいただけると大変助かります。よろしくお願いできませんでしょうか?

    • ベストアンサー
    • Flash
  • ActionScript3.0の修正に関して

    下記スクリプトは、A_btnをマウスオーバーすると、mcを表示し、 A_btnをマウスアウトすると、mcを非表示にするというスクリプトです。 これのマウスオーバー、マウスアウトを クリックしたら表示し、もう一度クリックしたら非表示にするというものに 変更したいのですが、 単にMouseEvent.CLICKにすると動作しなかったので どなたか教えていただけないでしょうか? よろしくお願いします。 ---------------------- 環境 action script3.0 Mac OSX Flash CS4 ---------------------- var mc:Fukidashi = new Fukidashi(); A_btn.addEventListener(MouseEvent.MOUSE_OVER,xMouseOver); function xMouseOver(evt){ mc.alpha = 0; addChild(mc); mc.x = 0; mc.y = 0; mc.addEventListener(Event.ENTER_FRAME,imgAlpha); function imgAlpha(event:Event){ mc.alpha += 0.05; if (mc.alpha > 1){ mc.removeEventListener(Event.ENTER_FRAME,imgAlpha); } } } A_btn.addEventListener(MouseEvent.MOUSE_OUT,xMouseOut); function xMouseOut(evt){ removeChild(mc); mc.alpha = 0; }

    • ベストアンサー
    • Flash
  • swfを読み込む毎にランダムに画像を読み込むには、

    下記のように決まった画像を読み込むスクリプトを現在使用しています。 フラッシュを開く毎に20枚程度の画像の中からランダムに7枚選んで表示させたいのですが、ここから修整するにはどのように考えたら良いのでしょうか? 現在はまったく固定の画像を読み込んでいるだけなのでいいのですが、、。 // 写真のURLを保存する配列 var photoArr:Array // 写真を自動的に変更するタイマー var imageTimer:Timer; // 大きな画像を読み込むローダー var bigImageLoader:Loader; // 現在表示されている画像の番号 var imageNum:Number = 0; //-------------------------------- // 初期化の処理 //-------------------------------- // 配列を設定する photoArr = new Array(); photoArr[0] = "b00.jpg"; photoArr[1] = "b01.jpg"; photoArr[2] = "b02.jpg"; photoArr[3] = "b03.jpg"; photoArr[4] = "b04.jpg"; photoArr[5] = "b05.jpg"; photoArr[6] = "b06.jpg"; // タイマーを起動 startTimer(); // サムネイルを表示 setThumbnail(); // 大きな画像を読み込む loadImage(); //-------------------------------- // 関数 //-------------------------------- // サムネイルを並べる function setThumbnail() { for (var i=0; i<photoArr.length; i++) { // MovieClipを並べる var mc:Thumbnail = new Thumbnail(); mc.y = i * 74; mc.mouseChildren = false; mc.addEventListener(MouseEvent.CLICK, onThumbnailClick); mc.buttonMode = true; mc.num = i; thumbnailTarget.addChild(mc); // サムネイル画像をロードする var loader:Loader = new Loader(); var url = "gallery_img/"+photoArr[i]; var urlRequest = new URLRequest(url); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onThumbnailLoad); loader.load(urlRequest); loader.x = 4; loader.y = 17; mc.addChild(loader); } } // タイマーをスタートする function startTimer() { imageTimer = new Timer(8000, 0); imageTimer.start(); imageTimer.addEventListener(TimerEvent.TIMER, onTimerCalled); } // 大きな画像を読み込む function loadImage() { // サムネイルの背景色を変える for (var i=0; i<photoArr.length; i++) { var mc = thumbnailTarget.getChildAt(i+1); if (i == imageNum) { mc.gotoAndStop(2); mc.scaleX = 1.1; mc.scaleY = 1.1; } else { mc.gotoAndStop(1); mc.scaleX = 1; mc.scaleY = 1; } } // 表示されている画像を消す if (bigImageLoader != null) { mainTarget.removeChild(bigImageLoader); } // 新しい画像を読み込む var url = "gallery_img/"+photoArr[imageNum]; var req = new URLRequest(url); bigImageLoader = new Loader(); bigImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoad); bigImageLoader.load(req); mainTarget.addChild(bigImageLoader); } //-------------------------------- // イベント //-------------------------------- // サムネイルが押されたら実行される function onThumbnailClick(eventObj) { imageNum = eventObj.target.num; loadImage(); imageTimer.stop(); imageTimer.start(); } // サムネイルがロードされたら実行される function onThumbnailLoad(eventObj) { var mc = eventObj.target.loader; mc.width = 80; mc.height = 55; } // タイマーが呼ばれるたびに実行される function onTimerCalled(eventObj) { imageNum++; if (imageNum >= photoArr.length) { imageNum = 0; } // 大きな画像を読み込む loadImage(); } // 大きな画像が読み込まれたら実行される function onImageLoad(eventObj) { // bigImageLoader.alpha = 0; stage.addEventListener(Event.ENTER_FRAME, onFadeIn); } // function onFadeIn(eventObj) { // フェードインをつける bigImageLoader.alpha += 0.05; if (bigImageLoader.alpha >= 1) { removeEventListener(Event.ENTER_FRAME, onFadeIn); } }

    • ベストアンサー
    • Flash
  • AS2.0からAS3.0にうまく変換できません。

    AS2.0からAS3.0にうまく変換できません。 はじめまして、ActionScriptを勉強し始めたばかりの初心者です。 http://blog.bonkura.jp/2008/07/flash-4.html のページのスクリプトをas3.0に直そうと思って勉強しながらやってみたんですが、 どうもうまくいきません。 書いてみたコードは以下です。 だれか添削してもらえると助かります。宜しくお願いします! stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.LEFT; var bg:MovieClip = new MovieClip(); this.setChildIndex(bg, 1); var bgPic:MovieClip = new MovieClip(); this.setChildIndex(bgPic, 0); bgPattern(); function bgPattern():void{ var myMcl:Loader = new Loader(); var oListener:Object = new Object(); var UrL:URLRequest = new URLRequest(); UrL.url = "http://blog.bonkura.jp/2008/07/08/swf/bg.jpg"; myMcl.addChild(oListener); myMcl.load(UrL, bgPic); oListener.addEventListener( Event.COMPLETE, StageSize); for(var i:Number=0; i<stage.width/100; i++){ for(var j:Number=0; j<stage.height/100; j++){ var bgP:String = "bg"+i+j; bg.addChild(new (getDefinitionByName(bgP))); this.setChildIndex(bgP, i+j*100); bg[bgP].x = i * 100; bg[bgP].y = j * 100; } } } var alphaFlag:Boolean = new Boolean(); alphaFlag = true; bg.addEventListener(Event.ENTER_FRAME, onENTERFrame); bg.addEventListener(Event.RESIZE, bg.resizeHandler); stage.addChild(bg); stage.addChild(bgPic); function StageSize():void{ bgPic.x = (stage.width/2) - (bgPic.width/2); bgPic.y = (stage.height/2) - (bgPic.height/2); } // イベントリスナー function onENTERFrame(event:Event) { if(alphaFlag){ this.alpha -= 5; if(this.alpha <= 0){ alphaFlag = !alphaFlag; } } else{ this.alpha += 5; if(this.alpha >= 100){ alphaFlag = !alphaFlag; } } } function resizeHandler(event:Event = null):void{ bgPattern(); };

    • ベストアンサー
    • Flash
  • 【AS3.0 変数をPHPにPOSTする方法】

    【AS3.0 変数をPHPにPOSTする方法】 開発環境:WinXP ADOBE CS4 ActionScript3.0 すいません。教えてください。 Flashで得た複数の値を外部ファイルに出力したいと考えています。 例えば、btnA・btnB・btnCという3つのボタンがあり、 ボタンをクリックすると、クリック数がカウンターになり、 その値をPHPファイルにPostしたいと考えています。 現在のソース(btnAのみ) ---------------------------------------------------------------- var req:URLRequest = new URLRequest ("http:++++++.php"); req.method = URLRequestMethod.POST; var variables:URLVariables = new URLVariables(); //送信パラメータ variables.num01 = 0; req.data = variables; var loader:URLLoader = new URLLoader (req); var are01=0 var num01=0 a_btn.addEventListener(MouseEvent.CLICK,aClick); function aClick(event:MouseEvent):void{ var num01=are01++ trace(num01) var printdata:URLVariables = new URLVariables(event.target.data); loader.load(req); } -------------------------------------------------------------- num01の数値がトレースはされているのですが、 phpの値に代入されません。 --------------------------------------------------------------- phpソース $comment = $_POST['num01']; print "rData=" . $comment;</body> ---------------------------------------------------------------- 同時に複数の値・仮にnum02・num03も同様にPHPにPOSTしたいと考えているのですが、 その際の方法がわかりません。 恐れ入りますが、ヒントだけでもよいので教えていただけないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • AS3.0 でフェードイン、

    AS3.0 でフェードイン、フェードアウトを繰り返したいんです。 _btnをマウスオーバーするとimg_mcがフェードインし、 _btnをマウスアウトするとimg_mcがフェードアウトするというものをつくりたいのですが、 下記スクリプトだと一通り動作を完了すると、ボタンにマウスを持っていっても反応しなくなります。 繰り返し動作させるにはどうしたらよいのでしょうか? var img_mc:MovieClip; img_mc.alpha = 0; _btn.addEventListener(MouseEvent.MOUSE_OVER,xClick0); function xClick0(evt){ img_mc.addEventListener(Event.ENTER_FRAME,imgAlpha); function imgAlpha(event:Event){ img_mc.alpha += 0.05; //スピード if (img_mc.alpha > 1){ img_mc.removeEventListener(Event.ENTER_FRAME,imgAlpha); } } } _btn.addEventListener(MouseEvent.MOUSE_OUT,xClick); function xClick(evt){ img_mc.addEventListener(Event.ENTER_FRAME,imgAlpha2); function imgAlpha2(event:Event){ img_mc.alpha -= 0.05; //スピード if (img_mc.alpha == 0){ img_mc.removeEventListener(Event.ENTER_FRAME,imgAlpha2); } } }

    • ベストアンサー
    • Flash
  • AS3でうまく動作しません

    使用環境 Mac OSX Flash CS4 下記スクリプトを1フレーム目に記述し、 動作確認をしたところmcの縦の長さが伸びたり縮んだりといった意図しない 動作をしてしまいます。 mcの大きさは幅200px高さ100pxです。 よろしくお願いいたします。 var mc:MovieClip = new test_mc(); addChild(mc); mc.x = 100; mc.y = 100; var testNum:Number = 1; mc.addEventListener(Event.ENTER_FRAME,testEF); function testEF(evt:Event):void { mc.y += testNum; if(mc.y <= 0 || mc.y >= 400){ testNum *= -1; } }

    • ベストアンサー
    • Flash
  • as3でボタンにリンクをはる方法!

    質問ばかりで申し訳ないですが、お世話になります。 flashCS4&Actionscript3を使っているものです。 「ボタンにリンクをはる方法を探しています。 (どうしても 1093のシンタックスエラーになってしまい、困っています。)」 現在作成しているものは、以下のような構造です。 ************************************************************* ステージ ↓ムービークリップ【インスタンス名(menu_mc)】 ________________________________________ ・ボタン【インスタンス名(btn1_btn)】 ・ボタン【インスタンス名(btn2_btn)】 ・ボタン【インスタンス名(btn3_btn)】 ________________________________________ *************************************************** menu_mcの中で、以下のように記述しました。 btn1_btn.addEventListener(MouseEvent.CLICK,gotowebpage1); function gotowebpage1(event : MouseEvent) :void { navigateToURL(new URLRequest("​http://www.yahoo.co.jp"));​ } btn2_btn.addEventListener(MouseEvent.CLICK,gotowebpage2); function gotowebpage2(event : MouseEvent) :void { navigateToURL(new URLRequest("​http://www.yahoo.co.jp"));​ } btn3_btn.addEventListener(MouseEvent.CLICK,gotowebpage3); function gotowebpage3(event : MouseEvent) :void { navigateToURL(new URLRequest("http://www.yahoo.co.jp")); } すると、1093のシンタックスエラーになってしまいます。 うまく動作させる為には、他にどんな作業を行ったらいいのでしょうか、 よろしくお願いします!!!

    • ベストアンサー
    • Flash