AS3.0で拡大縮小と透明度調整

このQ&Aのポイント
  • FLASH初心者のために、Actionscript3.0を使ってタイトルの透明度をフェードインフェードアウトさせながらゆっくり拡大するアニメーションを作成する方法について教えてください。
  • 現在、タイトルの透明度をフェードインさせるためのスクリプトを試していますが、ゆっくりとしたフェードインが再現できません。より効果的な方法があれば教えてください。
  • フェードインフェードアウトしながら拡大するアニメーションを実現するために、Actionscript3.0でどのようにスクリプトを書けば良いか、具体的な方法を教えてください。
回答を見る
  • ベストアンサー

AS3.0で拡大縮小と透明度調整

FLASH初心者です。 FLASHのActionscript3.0を使ってタイトルが透明度をフェードインフェードアウトさせながらゆっくり拡大していくようなアニメーションを作成しようと思いますが、どういったスクリプトを書けばいいのか分かりません。 現状では intro.addEventListener(Event.ENTER_FRAME,function(event){ intro.alpha *= 0.98; }); intro.addEventListener(Event.ENTER_FRAME,function(event){ intro.scaleX += 0.005; intro.scaleY += 0.005; }); このように記述していますが、 この状態ではゆっくりフェードインが再現できないので、手詰まりの状態になりました。 フェードインフェードアウトを再現するために何か良い方法は無いでしょうか? 是非ともご教授いただければと思います。

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ゆっくり点滅させたいってだけなら intro.alpha=Math.abs((getTimer()/2000)%2-1) ってカンジに時間に連動してやるのもあり これを言っちゃあ元も子もないですが TweenerとかTweenMax使っちゃえば楽ですよ 例えば2秒毎にゆっくり点滅させたいなら TweenMax.fromTo(intro,2,{alpha:0},{alpha:1,yoyo:true,repeat:-1}) この1行で済んじゃいます とりあえずなんらかトゥイーンライブラリは 一つは使えた方がいろいろと楽できますよ TweenクラスってもともとFlashにいるのがありますけど これを選ぶ理由って正直あんまりないです

tomi82
質問者

お礼

ご回答ありがとうございます!おかげで解決できました。

関連するQ&A

  • AS3に関しまして

    mc.addEventListener(Event.ENTER_FRAME,function(event){ mc.scaleX += 0.01; mc.scaleY += 0.01; mc.x = mc.x+1; }); mc.xが10すすんだらストップさせるにはどう記述したら良いですか??

    • ベストアンサー
    • 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でフェード

    10個あるスプライトを順番にタイミングをずらしてフェードインで表示するものを 作りたいのですが、どのようにすれば良いでしょうか。 下記のようにウエイト関数つって挟み込めばできそうなのですが、 もっとスマートな方法はないでしょうか。 for (var i:int=0; i<containers.length; i++){   //フェードスタート   containers[i].addEventListener(Event.ENTER_FRAME, slideContainer);   //ウエイト挟む?   //イベント   function slideContainer(e:Event):void{      e.target.alpha += 0.01;      if (e.target.alpha = 1 ) {         e.target.removeEventListener(Event.ENTER_FRAME, slideContainer);      }   } }

    • ベストアンサー
    • Flash
  • AS3の拡大と縮小について

    下記の外部ASで試しているのですが比率を維持して拡大されます。 予想では横は100%で縦に300%伸びて表示されるはずなのですがなぜ比率が 維持されるのでしょうか? また、縦だけとこ横だけ拡大や縮小するにはどう書けばいいのでしょうか? package { import flash.display.*; import flash.events.*; import flash.text.*; public class Main extends MovieClip { private var mc:MovieClip; private var text:TextField; public function Main():void { mc = new MovieClip(); addChild(mc); text = new TextField(); text.text = "テスト"; text.scaleX = 1; text.scaleY = 3; mc.addChild(text); } } }

    • ベストアンサー
    • Flash
  • AS3.0 Timerの使い方

    AS3.0 Timerの使い方 a_mc、b_mc、c_mcがあり、a_mcが再生された1秒後にb_mcを作動させ b_mcが再生された0.5秒後にc_mcを再生というようにしたいのですが その場合、Timerはどのようにすれば良いのでしょうか? 初心者ですので、なるべく基本的な作り方が理想です。 下記のコードを参照にして頂ければと思います。 また、下記で間違っている部分がありましたらご指摘ください。 Flash CS3を使用しております。 宜しくお願い致します。 a_mc.y = 450; b_mc.y = 450; c_mc.y = 450; a_mc.alpha = 0; a_mc.addEventListener(Event.ENTER_FRAME, a_up); function a_up(event:Event):void { a_mc.y -= 2; a_mc.x -= 1; a_mc.alpha += 0.03; if (a_mc.y == 200) { a_mc.removeEventListener(Event.ENTER_FRAME, a_up); } } b_mc.addEventListener(Event.ENTER_FRAME, b_up); function b_up(event:Event):void { b_mc.y -= 2; b_mc.rotation += 6; if (b_mc.y == 200) { b_mc.removeEventListener(Event.ENTER_FRAME, b_up); } } c_mc.addEventListener(Event.ENTER_FRAME, c_up); function c_up(event:Event):void { c_mc.y -= 2; c_mc.x += 1; if (c_mc.y == 200) { c_mc.removeEventListener(Event.ENTER_FRAME, c_up); } }

    • ベストアンサー
    • Flash
  • ASだけで○秒停止する方法

    AS3で下記のスクリプトを書いています。 画像をぼかした状態で徐々に表示させ、ぼかしがなくなったら○秒見せて ぼかしながら消していくという内容を想定しています。 ひとまず動くのですが、ぼかしながら消していく関数を実行する前に任意の 秒数(フレーム数?)停止させたいのですが、どうすればいいのでしょうか? package { import flash.display.*; import flash.events.*; import flash.utils.* import fl.events.*; import flash.filters.*; public class Main extends MovieClip { public var logoObj1:MovieClip = new logo1(); public var blur:BlurFilter; public var i:uint = 70; public var ii:uint = 0; public function Main():void { opening(); } private function opening(e:Event = null):void { blur = new BlurFilter(); addEventListener(Event.ENTER_FRAME, BlurMinus); } private function BlurMinus(e:Event):void { blur.blurX = i; blur.blurY = i; logoObj1.filters = [blur]; logoObj1.x = w / 2; logoObj1.y = h / 2; addChild(logoObj1); if ( i == 0 ) { // ここで任意の秒数を経過したらBlurPlasを実行させたい! addEventListener(Event.ENTER_FRAME, BlurPlas); } i = i - 2; } private function BlurPlas(e:Event):void { blur.blurX = ii; blur.blurY = ii; logoObj1.filters = [blur]; logoObj1.alpha += (0 - logoObj1.alpha) / 50; if ( logoObj1.alpha == 0 ) { removeEventListener(Event.ENTER_FRAME, BlurMinus); removeEventListener(Event.ENTER_FRAME, BlurPlas); } ii = ii + 2; } } }

    • ベストアンサー
    • Flash
  • AS 3 mouseout & over

    以下のようにMOUSEOUT,MOUSEOVERをつかって、 インスタントにマウスオーバーするとその幅が増えていき、幅200のところで止まる。 インスタントからマウスアウトするとその幅が減っていき、幅60のところで止まる。 という事を意図して、記述しました。 しかしながら、マウスオーバーの内容は意図した通りのいくのですが、 マウスアウトの場合は少し幅が減っただけで、すぐに止まってしまいます。 どのように直せば、意図した通りに行くのでしょうか? お知恵をいただければ幸いです。 package { import flash.events.MouseEvent; import flash.events.Event; import flash.display.Sprite; public class main extends Sprite { var _sikaku:Sprite = new Sprite(); public function main(){ _sikaku.graphics.lineStyle(6,0x330066); _sikaku.graphics.drawRect(0,0,120,120); this.addChild(_sikaku); _sikaku.addEventListener(MouseEvent.MOUSE_OVER,big_off); _sikaku.addEventListener(MouseEvent.MOUSE_OUT,big_on); function big_on(event:Event):void { _sikaku.addEventListener(Event.ENTER_FRAME,tijimi); function tijimi(event:Event):void { if(_sikaku.width==60 ) { _sikaku.removeEventListener(Event.ENTER_FRAME,tijimi); } if(_sikaku.width > 60) { _sikaku.width -= 1} trace("stop!") } } function big_off(event:Event):void { _sikaku.addEventListener(Event.ENTER_FRAME,kakudai); function kakudai(event:Event):void { if(_sikaku.width < 200) { _sikaku.width += 1 trace("stop?") } if(_sikaku.width == 200) { _sikaku.removeEventListener(Event.ENTER_FRAME,kakudai); } } } } } }

  • AS3でのNowLoading処理について

    いつもお世話になっております。 ActionScript3(環境:FLASH CS4)にてフルFLASHサイトの制作を行なっております。 サイトにアクセスした際に表示されるNowLoading部分に関するご質問です。 ローディング処理部分をタイムラインの『1』に記載し、ローディング完了後にタイムライン『2』 に移動してページの表示処理が行なわれる仕組みで作りましたが、下記の点でつまずいております。 ■ローディングゲージが伸びていかない。 loadingImageというMovieClipのscaleXを0にし、ローディングの読み込み完了分に あわせて徐々にscaleXの値が上がっていき、ローディングが全て読み込みされた時点でscaleXが 1になるような仕組みで作ったつもりですが、実際にサーバにアップして確認しても scaleXが一瞬伸びただけでローディング処理が完了してしまい、ロード完了となって次のフレームに行ってしまいます。 swfファイルの容量は320KBですが、容量が小さいことが正しくローディングされない原因なのでしょうか。 一般的なFLASHサイトのように徐々にゲージが伸びていき、ローディング処理とscaleの値を連動させるにはどのようにしたら良いでしょうか? お手数では御座いますが、ご教授の程、宜しくお願い申し上げます。 (『loadingImage.scaleX += (per - loadingImage.scaleX)/8;』はscaleXをイージングさせる為の処理です) // =============================================================================== this.stop(); var info:LoaderInfo = root.loaderInfo; // ローディングゲージMC var loadingImage:MovieClip = new loadingImage_mc(); loadingImage.scaleX = 0; // このタイムラインにイベントリスナーを登録 root.addEventListener(Event.ENTER_FRAME, watchLoading); function watchLoading(event:Event) {   var per:Number = info.bytesLoaded / info.bytesTotal;   loadingImage.scaleX += (per - loadingImage.scaleX)/8;   if (per >= 1) {     // このタイムラインに登録したイベントリスナーを削除     root.removeEventListener(Event.ENTER_FRAME, watchLoading);     // タイムライン2に移動     play();   } } // ===============================================================================

    • ベストアンサー
    • Flash
  • ボタンについて(CS4,AS3)

    HPのメニュー用に、クリックするとフレーム移動するボタンを作っています。 フレーム1以外のフレームには、フレーム1に設置してあるボタンで指定したフレームとは異なるフレームに 移動させたいので、新たにフレーム1のボタンとは別のボタンを設置しています。 プレビューでフレーム1のボタンをクリックすると正常に動くのですが、 フレームが移動した後に再度ボタンをクリックすると動かず、全てのボタンが反応しません。 ■フレーム1に設置してあるボタン test_a1.addEventListener(MouseEvent.CLICK , testA1); test_b1.addEventListener(MouseEvent.CLICK , testB1); test_c1.addEventListener(MouseEvent.CLICK , testC1); function testA1(event : MouseEvent) :void{ gotoAndPlay(1); } function testB1(event : MouseEvent) :void{ gotoAndPlay(51); } function testC1(event : MouseEvent) :void{ gotoAndPlay(101); } ※フレーム1、51、101にはstop();で停止するようにしています。 ■フレーム51に設置してあるボタン test_a2.addEventListener(MouseEvent.CLICK , testA2); test_b2.addEventListener(MouseEvent.CLICK , testB2); test_c2.addEventListener(MouseEvent.CLICK , testC2); function testA2(event : MouseEvent) :void{ gotoAndPlay(11); } function testB2(event : MouseEvent) :void{ gotoAndPlay(61); } function testC2(event : MouseEvent) :void{ gotoAndPlay(111); } コンパイルエラーは出ていません。 ネットで調べても何故、フレーム1以外のボタンが動かないのか分かりません。 どなた様か教えていただけると助かります。 使用しているソフトはAdobe Flash CS4で、スクリプトはActionScript3.0です。 よろしくお願いします。

  • 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); }

専門家に質問してみよう