スライドショーのサムネイルにフェードをかけたい

このQ&Aのポイント
  • FLASH CS3とAS2.0を使用して、スライドショーのサムネイルにフェード効果を追加したいです。
  • 現在、サムネイルに50%のフェード効果をかけ、ロールオーバーした時に100%で表示されるようにしたいです。
  • 具体的な実装方法について教えてください。
回答を見る
  • ベストアンサー

スライドショーのサムネイルにフェードをかけたい

FLASH CS3 AS2.0 まず、ここのサイトで7-04の減速しながら写真が止まるを参考にしました。http://book.mycom.co.jp/support/e5/actionscript10/ これをフレームにアクションを記述して修正しようとしたがうまく出来ず、自分のできる範囲で 次に到達しました。サムネイルには写真の表示に応じて四角い枠(インスタンス名:waku)を 移動させます。サムネイルのインスタンス名をbt1からbt4とします。 import mx.transitions.Tween; import mx.transitions.easing.*; bt1.onRelease = function() { var mcTween = new Tween(Photo, "_x", Regular.easeOut, Photo._x, 0, 1, true); var mcTween = new Tween(waku, "_x", Regular.easeOut, waku._x, 0, 1, true); }; bt2.onRelease = function() { var mcTween = new Tween(Photo, "_x", Regular.easeOut, Photo._x, -400,1, true); var mcTween = new Tween(waku, "_x", Regular.easeOut, waku._x, 100, 1, true); }; bt3.onRelease = function() { var mcTween = new Tween(Photo, "_x", Regular.easeOut, Photo._x, -800, 1, true); var mcTween = new Tween(waku, "_x", Regular.easeOut, waku._x, 200,1, true); }; bt4.onRelease = function() { var mcTween = new Tween(Photo, "_x", Regular.easeOut, Photo._x, -1200, 1, true); var mcTween = new Tween(waku, "_x", Regular.easeOut, waku._x, 300,1, true); }; 今、やろうとしていることはサムネイルに50%程度のフェードをかけ、ロールオーバーした時に 100%で表示するというものです。ムービーのスタートでは左端のサムネイルに四角い枠があり 100%で表示、他3つは50%。 その方法を教えてください。

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

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

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

> サムネイルに50%程度のフェードをかけ この「50%のフェード」の意味がよくわかりません。 まず思いついたのは フェードではなくてアルファ(_alpha/不透明度)ではないかということです。 「50%のアルファをかける」であれば意味がわかります。 その「50%のアルファをかける」場合の とりあえず元のスクリプトをそんなに変えないバージョンのスクリプト例です↓。 //---------------------------------------- import mx.transitions.Tween; import mx.transitions.easing.*; //bt1~bt4のアルファを変える 関数changeAlpha の定義 //(引数:アルファを100にするボタンインスタンス) function changeAlpha(btn:Button):Void { for (var i:Number = 1; i<=4; i++) { this["bt"+i]._alpha = 50; } btn._alpha = 100; } //関数changeAlpha を初回実行(引数:ボタン「bt1」) changeAlpha(bt1); bt1.onRelease = function() { var mcTween = new Tween(Photo, "_x", Regular.easeOut, Photo._x, 0, 1, true); var mcTween = new Tween(waku, "_x", Regular.easeOut, waku._x, 0, 1, true); //関数changeAlpha を実行(引数:クリックされたボタン自身) changeAlpha(this); }; bt2.onRelease = function() { var mcTween = new Tween(Photo, "_x", Regular.easeOut, Photo._x, -400, 1, true); var mcTween = new Tween(waku, "_x", Regular.easeOut, waku._x, 100, 1, true); changeAlpha(this); }; bt3.onRelease = function() { var mcTween = new Tween(Photo, "_x", Regular.easeOut, Photo._x, -800, 1, true); var mcTween = new Tween(waku, "_x", Regular.easeOut, waku._x, 200, 1, true); changeAlpha(this); }; bt4.onRelease = function() { var mcTween = new Tween(Photo, "_x", Regular.easeOut, Photo._x, -1200, 1, true); var mcTween = new Tween(waku, "_x", Regular.easeOut, waku._x, 300, 1, true); changeAlpha(this); }; //---------------------------------------- 上のスクリプトは 同じこと(お決まりのパターン)を何度も書きすぎなので 上と同じ内容をもう少しまとめると 次のように書くこともできます。 //---------------------------------------- import mx.transitions.Tween; import mx.transitions.easing.*; //bt1~bt4のアルファを変える 関数changeAlpha の定義 //(引数:アルファを100にするボタンインスタンス) function changeAlpha(btn:Button):Void { for (var i:Number = 1; i<=4; i++) { this["bt"+i]._alpha = 50; } btn._alpha = 100; } //関数changeAlpha を初回実行(引数:ボタン「bt1」) changeAlpha(bt1); //bt1~bt4に関するループ for (var i:Number = 1; i<=4; i++) { //各ボタンの 変数n に i-1 を保存しておく this["bt"+i].n = i-1; //各ボタンクリック時の動作 this["bt"+i].onRelease = function() { var mcTween = new Tween(Photo, "_x", Regular.easeOut, Photo._x, -this.n*400, 1, true); var mcTween = new Tween(waku, "_x", Regular.easeOut, waku._x, this.n*100, 1, true); //関数changeAlpha を実行(引数:クリックされたボタン自身) changeAlpha(this); }; } //---------------------------------------- 最初の話に戻ります。 > サムネイルに50%程度のフェードをかけ の解釈についてですが, 次のような意味に捉えることもできます。 スクリプトでの状態説明になりますが 「50%のフェード」とはこんな感じのことでしょうか↓? //---------------------------------------- import mx.transitions.Tween; import mx.transitions.easing.*; //bt2~bt4のアルファを50にする for (var i:Number = 2; i<=4; i++) { this["bt"+i]._alpha = 50; } //bt1~bt4に関するループ for (var i:Number = 1; i<=4; i++) { //各ボタンの 変数n に i の値を保存しておく this["bt"+i].n = i; //各ボタンクリック時の動作 this["bt"+i].onRelease = function() { var mcTween = new Tween(Photo, "_x", Regular.easeOut, Photo._x, -(this.n-1)*400, 1, true); var mcTween = new Tween(waku, "_x", Regular.easeOut, waku._x, (this.n-1)*100, 1, true); for (i=1; i<=4; i++) { if (i != this.n) { var btTween = new Tween(this._parent["bt"+i], "_alpha", Regular.easeOut, this._parent["bt"+i]._alpha, 50, 1, true); } else { var btTween = new Tween(this, "_alpha", Regular.easeOut, this._alpha, 100, 1, true); } } }; } //----------------------------------------     =========== ◎オマケ > これをフレームにアクションを記述して > 修正しようとしたがうまく出来ず、 元のファイルのムービークリップやボタン自体に書いてあるスクリプトを全部消して 4つのボタンに「bt1」~「bt4」というインスタンス名を付けた場合 _rootのフレームに書くアクションは次のようになります↓。 //---------------------------------------- var position:Number = 0; Photo.onEnterFrame = function() { this._x -= (this._x+position)/3; }; for (var i = 1; i<=4; i++) { this["bt"+i].n = i; this["bt"+i].onRelease = function() { position = Photo["p"+this.n]._x; }; } //---------------------------------------- ※「Photo」の動く先の座標指定は   「Photo」内にあるMC(p1~p4)の   各座標が使われています。 ※上記全スクリプト   Flash Player 6 以上で動作   ActionScript 2.0

x_izumin
質問者

お礼

いつもお世話になります。 > サムネイルに50%程度のフェードをかけ と言うのは、フェードイン・フェードアウトのフェードを指します。だから後半に書かれている >スクリプトでの状態説明になりますが >「50%のフェード」とはこんな感じのことでしょうか↓? が大変参考になります。 また、同じような構文をまとめる方法も教えていただきありがとうございます。応用できるよう 勉強してまいります。 そして、オマケもわざわざ書いてくれており重ね重ね感謝いたします。

関連するQ&A

  • for文でまとめる

    FLASH CS3 アクション 2.0 Tweenを用いてイーズアウトの5種類をballを使って表現しようとしています。 ステージにball1からball5を置き、ボタンbt1を押すと右方向に移動させます。 //Tweenクラスを使用できるようにインポート import mx.transitions.Tween; import mx.transitions.easing.*; bt1.onRelease = function() { //インスタンス「ball」の動きをTweenクラスを使って制御 var myTween1:Tween = new Tween(ball1, "_x", Regular.easeOut, 39, 400, 2, true); var myTween2:Tween = new Tween(ball2, "_x", Strong.easeOut, 39, 400, 2, true); var myTween3:Tween = new Tween(ball3, "_x", Elastic.easeOut, 39, 400, 2, true); var myTween4:Tween = new Tween(ball4, "_x", Back.easeOut, 39, 400, 2, true); var myTween5:Tween = new Tween(ball5, "_x", Bounce.easeOut, 39, 400, 2, true); }; http://okwave.jp/qa/q7042246.htmlの回答で教えていただきましたfor文を 参考にして書き直しをしてみましたがBounce.easeOutのみ動きますが本来のもの とは異なります。どのように変更すればいいのか教えてください。 //Tweenクラスを使用できるようにインポート import mx.transitions.Tween; import mx.transitions.easing.*; var easeList:Array = new Array(); //イージングの種類 easeList[1] = "Elastic.easeOut"; easeList[2] = "Strong.easeOut"; easeList[3] = "Elastic.easeOut"; easeList[4] = "Back.easeOut"; easeList[5] = "Bounce.easeOut"; bt1.onRelease = function() { for (var i:Number = 1; i<=5; i++) { _root["ball"+i]; for (var i:Number = 1; i<=5; i++) { easeList[i+1]; //インスタンス「ball」の動きをTweenクラスを使って制御 var myTween = new Tween(_root["ball"+i], "_x", easeList[i+1], 39, 400, 2, true); } } };

    • ベストアンサー
    • Flash
  • ボタンの有効と無効

    FLASH CS3 AS2.0で作っています。始めたばかりの初心者です。 スライドショーを作りました。画像6枚をつなげてインスタンス名をmy_mcとしました。 ボタンを1つ置きインスタンス名をbt1としました。 import mx.transitions.Tween; import mx.transitions.easing.*; bt1.onRelease = function() { var myTween = new Tween(my_mc, "_x", Regular.easeOut, my_mc._x, my_mc._x-200, 3, true); }; これで動作はするのですが、Tweenを3秒間で行います。3秒のうち、2秒でボタンを押すと 移動が狂ってしまい、うまくいきません。 押された時の、my_mc._xが200区切りでなくなるためと思います。 ボタンを3秒間というか1画面がスライドするのを完了した時点で、ボタンが押せるように したいのです。どんな方法がありますか、教えてください。 どうぞよろしくお願いします。

    • ベストアンサー
    • Flash
  • Tweenを使って元の位置に戻したい

    はじめまして。 制作環境 flashCS3 アクションスクリプト2.0 Tweenクラスを使ってアニメーションを楽しんでいます。 座標100、200に円(直径75のボタン)を配置し、クリックすると座標300、200に拡大移動できます。 ここまでは動作するのですが、再度クリックして元の位置に戻す方法がわかりません。 //クラスのインポート import mx.transitions.Tween; import mx.transitions.easing.*; grobal_btn.onRelease = function() { mc_tween = new Tween(grobal_btn, "_xscale", Elastic.easeOut,grobal_btn._xscale, 150, 1, true); mc_tween = new Tween(grobal_btn, "_x", Elastic.easeOut,grobal_btn._x,300, 4, true);//スタートx座標、移動した後の座標 mc_tween = new Tween(grobal_btn, "_yscale", Elastic.easeOut,grobal_btn._yscale, 150, 1, true); mc_tween = new Tween(grobal_btn, "_y", Elastic.easeOut,grobal_btn._y,100 , 4, true);//スタートy座標、移動した後の座標 }

    • ベストアンサー
    • Flash
  • for文を使ったボタン

    for文を使ったボタン ボタンが2つあり、そのボタンをロールオーバー、ロールアウトでそれぞれ違うmcを動かしたいのですが、うまくいきません。ボタンを「maru1、maru2」として動かしたいmcを「btn1、btn2」とインスタンス名をつけて以下のスクリプトを書きました。 maru1.addEventListener(MouseEvent.ROLL_OVER,onMouse1); maru1.addEventListener(MouseEvent.ROLL_OUT,outMouse1); maru1.buttonMode = true; maru2.addEventListener(MouseEvent.ROLL_OVER,onMouse2); maru2.addEventListener(MouseEvent.ROLL_OUT,outMouse2); maru2.buttonMode = true; function onMouse1(e:MouseEvent):void{ mc_tween = new Tween(btn1, "scaleX", Elastic.easeOut, 0.7, 1, 1, true); mc_tween.start(); } function outMouse1(e:MouseEvent):void{ mc_tween = new Tween(btn1, "scaleX", Elastic.easeOut, 1, 0.7, 1, true); mc_tween.start(); } function onMouse2(e:MouseEvent):void{ mc_tween = new Tween(btn2, "scaleX", Elastic.easeOut, 0.7, 1, 1, true); mc_tween.start(); } function outMouse2(e:MouseEvent):void{ mc_tween = new Tween(btn2, "scaleX", Elastic.easeOut, 1, 0.7, 1, true); mc_tween.start(); } これでも動くのですが、ボタンが沢山あった場合にfor文を使ってできないかと考え、ttp://www.oro.co.jp/web/creator/flash/actionscript/soft-button.htmlを参考に var mc_tween:Tween; //イベント登録 for(var i:int = 1; i < 3; i++){ this["maru"+i].addEventListener(MouseEvent.ROLL_OVER, rollOverEvent); this["maru"+i].addEventListener(MouseEvent.ROLL_OUT, rollOutEvent); this["maru"+i].buttonMode = true; } function rollOverEvent(event:Event):void{ var btn:MovieClip = event.target as MovieClip; mc_tween = new Tween(btn, "scaleX", Elastic.easeOut, btn.scaleX, 1.5, 1, true); mc_tween = new Tween(btn, "scaleY", Elastic.easeOut, btn.scaleY, 1.5, 1, true); addChildAt(btn, 5); } function rollOutEvent(event:Event):void{ var btn:MovieClip = event.target as MovieClip; mc_tween = new Tween(btn, "scaleX", Elastic.easeOut, btn.scaleX, 1, 1, true); mc_tween = new Tween(btn, "scaleY", Elastic.easeOut, btn.scaleY, 1, 1, true); } と書いたのですが、上手く行きません。<var btn:MovieClip = event.target as MovieClip;>の部分でどのように「btn1、btn2」を参照したらいいのでしょうか。 作業環境はmacOSX flashCS5 actionscript3です。よろしくお願い致します。

    • ベストアンサー
    • Flash
  • 移動位置が狂ってしまう

    いつもお世話になります。 「ボタンの有効と無効」及び「左右ボタンで方向切替」を合体させてアクションスクリプトを記述しました。ボタンが1個の時に、falseとtrueで有効・無効を教えていただきました。 次にボタンを2個とした場合、右ボタンを押し、即座に左ボタンを押すとやはり移動位置が狂ってしまいます。私にとっては行数が増え、どのように対処すればいいのかわかりません。 教えてください。 //クラスのインポート import mx.transitions.Tween; import mx.transitions.easing.*; //画像1枚の横幅を設定 var g_w:Number = 120; //画像の枚数を設定 var g_n:Number = 7; //カウンタ用変数 var cnt:Number = 0; //「L_btn」を非表示にしておく L_btn._visible = false; //「R_btn(→ボタン)」クリック時の動作を定義 R_btn.onRelease = function():Void { //もしカウンタが 画像の枚数-1 未満であれば (cnt<g_n-1) { var myTween = new Tween(my_mc, "_x", Regular.easeOut, my_mc._x, my_mc._x-g_w, 3, true); //bt1のボタン機能を無効にする R_btn.enabled = false; //myTweenのモーション終了時に実行するメソッドを定義 myTween.onMotionFinished = function() { //ボタン機能を有効にする R_btn.enabled = true; } //L_btnを表示する L_btn._visible = true; //なおかつカウンタが 画像の枚数-2になれば if (cnt == g_n-2) { //R_btnを非表示にする R_btn._visible = false; } //カウンタに1を加算 cnt++; } } //L_btnクリック時の動作を定義 L_btn.onRelease = function():Void { //もしカウンタが 0 より大きい場合は if (cnt>0) { var myTween = new Tween(my_mc, "_x", Regular.easeOut, my_mc._x, my_mc._x+g_w, 3, true); //bt1のボタン機能を無効にする L_btn.enabled = false; //myTweenのモーション終了時に実行するメソッドを定義 myTween.onMotionFinished = function() { //ボタン機能を有効にする L_btn.enabled = true; } //R_btnを表示する R_btn._visible = true; //なおかつカウンタが 1 になれば if (cnt == 1) { //L_btnを非表示にする L_btn._visible = false; } //カウンタから1を減算 cnt--; } };

    • ベストアンサー
    • Flash
  • AS3 mc0~5をまとめて処理する

    AS3初心者です。 forにてmc0~5をまとめて処理したいのですが、 下記スクリプトで、function内mc0の書き換え方が分かりません。 よろしくお願いします。 ///////////////////////////////////////// import fl.transitions.easing.Regular; import fl.transitions.TweenEvent; var twObj:Tween; for(var i:int=0;i<=5;i++){ this["mc"+i].addEventListener(MouseEvent.ROLL_OVER, hiraku); this["mc"+i].addEventListener(MouseEvent.ROLL_OUT, modoru); } function hiraku(eventObj:MouseEvent):void { //mc0を["mc"+i]としまとめて処理したい twObj=new Tween(mc0,"rotation",Regular.easeInOut,0,30,1,true); } function modoru(eventObj:MouseEvent):void { //mc0を["mc"+i]としまとめて処理したい twObj=new Tween(mc0,"rotation",Regular.easeInOut,30,0,1,true); } //////////////////////////////////////////

    • ベストアンサー
    • Flash
  • AS3.0

    ボタン(btn_start)を押したらMC(main1)が動く指定をしたつもりですが ボタンを押すとmain1が消えてしまいます。 間違っている部分がお分かりになる方、宜しくお願い致します。 import fl.transitions.Tween; import fl.transitions.easing.*; var main_uptween:Tween; btn_start.addEventListener(MouseEvent.CLICK,main_start); function main_start(event:MouseEvent):void { main1.addEventListener(Event.ENTER_FRAME,main_up); } function main_up(event:Event):void { main_uptween = new Tween(main1, "y", Bounce.easeOut, 400, 10, 4, true); }

  • Tweenクラス

    下記のTweenクラスで指定したMCを、任意のタイミングで動かしたいのですが 方法はありますでしょうか? ao_1 = new Tween(ao1_mc, "y",Back.easeOut, 100,200, 1, true); ao_2 = new Tween(ao2_mc, "y",Back.easeOut, 100,200, 1, true); ao_3 = new Tween(ao3_mc, "y",Back.easeOut, 100,200, 1, true); ao_4 = new Tween(ao4_mc, "y",Back.easeOut, 100,200, 1, true); ao_5 = new Tween(ao5_mc, "y",Back.easeOut, 100,200, 1, true); 宜しくお願い致します。

  • Tweenで動かないことがある

    for(var i:int=0; i<arr.length; i++){   new Tween(sprite[i], "x", Regular.easeOut, from , to , 0.3, true).start(); } のように配列arrに入っているスプライトを移動させたいのですが、たまに一部のスプライトが動かないことがあります。 動かない時、スプライトは散り散りにはならず、一部がまとまって動きません。 同じiでも時によって動く時と動かない時があります。 グローバルにtweenという配列を作って、Tweenをその要素としても起こることがあります。 どうしてでしょうか?

  • this.nの記述について

    ムービクリップのa1,a2,a3,a4をロールオーバするとそれぞれ対応する数字のh1,h2,h3,h4のムービクリップのalphaが0から100にtweenを使って動かすことを考えたいと思います。 //初期設定 var obj_array:Array = new Array(); for (var i = 1; i<=4; i++) { obj_array[i] = eval("a"+i); obj_array[i]._alpha = 0; } //ここからロールオーバの操作 import mx.transitions.*; import mx.transitions.easing.*; for (var i = 1; i<=4; i++) { // 各ボタンの固有値 n を設定 this["h"+i].n = i; // 各ボタンの onRollOver 動作定義 this["h"+i].onRollOver = function() { var tween_handler:Object = new Tween("a"+this.n, "_alpha", Strong.easeOut, 0, 100, 1, true); };  しかし、まったく動作しません。理由としては何が考えられるでしょうか。

    • ベストアンサー
    • Flash

専門家に質問してみよう