• 締切
  • 困ってます

Flash ASを使った画像フェードの方法について

  • 質問No.6687689
  • 閲覧数581
  • ありがとう数2
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 100% (12/12)

Flash ActionScriptを使った画像フェードの方法を教えてください

つい最近、興味をもってFlashを始めている初心者です。
Flash Proffesional CS5を使って複数の画像をじわーっと変えるようなFlashを
作りたいと思っています。

分からないながらもいろいろ試行錯誤したところ、モーショントゥイーンで
アルファを設定することで希望するフェード効果が得られるようになりましたが、
これをモーショントゥイーンではなく、ActionScriptをつかって実現する方法を
教えてください。

現在は添付画像のように作っており(説明用の画像で実際のものではありません)、
画像1の始まりをフェードインするところからスタートして、15フレーム目、画像2に
遷移するときに画像1と画像2がフェードで切り替わり、同じく画像2と画像3が
フェードで切り替わり、そして最後35フレーム目に『gotoAndPlay(6);』のアクション
を設定して画像1へループさせているのですが、このループ時にも画像3から画像1へ
切り替わるときにフェードさせたいのです。

いろいろ調べたりしているのですが、とっかかりが掴めずに困っております。

なにぶん始めたばかりでわからないことだらけなのですが一生懸命頑張りたいと
思っております。どなたか方法について教えていただければ幸いです。

回答 (全1件)

  • 回答No.1

ベストアンサー率 91% (1611/1754)

結局,
「ASの方法も,タイムラインの方法も,両方ともわからない。」という欲張ったご質問に見えますが。。。

字数も限られていますから手短に回答します。

まずタイムラインの方法は
添付した【下の図】↓のようにするのが普通です。


=== === ===

ActionScriptでやる場合も
基本的には同じことをさせるんです。
ですから
その同じことさせるイメージが思い浮かばなければどちらともできないということになります。

ActionScriptでやる場合はタイムラインを動かすとまずいことが多いです。
ですから,
画像1~3 は フレーム1 なら フレーム1 だけのような単フレームに配置します。

画像1~3 はそれぞれ別々の MC(ムービークリップ) に変換して
各MCには例えば「gazou1」「gazou2」「gazou3」というインスタンス名をつけて
その3つのMCが重なり合うように配置します。

それら3つのMCが存在するフレーム(フレーム1 なら フレーム1)に書くスクリプト例です↓。

//-------------------------------------------
//Tween クラスと easing クラスのインポート
import fl.transitions.Tween;
import fl.transitions.easing.*;

//このフレームで一応停止
stop();

//gazou○ の最後の番号を登録
var last_num:int = 3;

//変数iを1~last_numまで1ずつ加算しながらループ
for (var i:int=1; i<=last_num; i++) {
//初期状態で gazou○ を全て透明にする
this["gazou" + i].alpha = 0;
}

//カウント用変数を用意
var cnt:int = 1;

//関数 fadeinMC の定義
function fadeinMC(e:TimerEvent):void {
//gazou○ を最高深度に移動させる
this.setChildIndex(this["gazou" + cnt], this.numChildren-1);
//
//gazou○ の alpha を 0 から 1 に 2 秒で変化させる Tween を設定
var myTween:Tween = new Tween(this["gazou" + cnt],"alpha",None.easeIn,0,1,2,true);
//
//もし cnt の値が last_num 未満であれば
if (cnt < last_num) {
//cnt に 1 を加算
cnt++;
} else {
//それ以外は 1 に戻す
cnt = 1;
}
}

//関数 fadeinMC を即実行
fadeinMC(null);

//5000ミリ秒(5秒)間隔で実行する Timer インスタンスを作成
var myTimer:Timer = new Timer(5000,0);

//指定ミリ秒おきに関数 fadeinMC を実行
myTimer.addEventListener(TimerEvent.TIMER, fadeinMC);

//タイマースタート
myTimer.start();
//-------------------------------------------
 


「定期的に表示させるMCの 深度(表示順) を上にして
アルファを 0から1 (0%から100%) に トゥイーン で変える。」

どちらともやっている内容は同じです。


 
お礼コメント
its_a_sony

お礼率 100% (12/12)

お返事が遅くなりまして申し訳ございません。

初心者の私に親切にご説明いただきありがとうございました。
タイムラインについては説明用の画像が間違っていました。申し訳ありませんでした。
(タイムラインについては一応理解しているつもりです(たぶん・・・))

あらゆる手を尽くして頑張っているのですが、どうしてもうまくいかず、現在試行錯誤を繰り返しています。
このスクリプトをどこに記述すればいいのか?というありさまでして(どこに書いてもシンタックスエラー?
というものが続出します)どうも基礎知識がなさすぎるようです。

もう少し勉強する必要がありそうです。
また質問させていただくかと思います。もしよければまたご相談に乗っていただけると幸いです。
本当にありがとうございました。
投稿日時:2011/05/14 15:08
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ