- 締切済み
Flash ASを使った画像フェードの方法について
Flash ActionScriptを使った画像フェードの方法を教えてください つい最近、興味をもってFlashを始めている初心者です。 Flash Proffesional CS5を使って複数の画像をじわーっと変えるようなFlashを 作りたいと思っています。 分からないながらもいろいろ試行錯誤したところ、モーショントゥイーンで アルファを設定することで希望するフェード効果が得られるようになりましたが、 これをモーショントゥイーンではなく、ActionScriptをつかって実現する方法を 教えてください。 現在は添付画像のように作っており(説明用の画像で実際のものではありません)、 画像1の始まりをフェードインするところからスタートして、15フレーム目、画像2に 遷移するときに画像1と画像2がフェードで切り替わり、同じく画像2と画像3が フェードで切り替わり、そして最後35フレーム目に『gotoAndPlay(6);』のアクション を設定して画像1へループさせているのですが、このループ時にも画像3から画像1へ 切り替わるときにフェードさせたいのです。 いろいろ調べたりしているのですが、とっかかりが掴めずに困っております。 なにぶん始めたばかりでわからないことだらけなのですが一生懸命頑張りたいと 思っております。どなたか方法について教えていただければ幸いです。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- BlurFiltan
- ベストアンサー率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%) に トゥイーン で変える。」 どちらともやっている内容は同じです。
お礼
お返事が遅くなりまして申し訳ございません。 初心者の私に親切にご説明いただきありがとうございました。 タイムラインについては説明用の画像が間違っていました。申し訳ありませんでした。 (タイムラインについては一応理解しているつもりです(たぶん・・・)) あらゆる手を尽くして頑張っているのですが、どうしてもうまくいかず、現在試行錯誤を繰り返しています。 このスクリプトをどこに記述すればいいのか?というありさまでして(どこに書いてもシンタックスエラー? というものが続出します)どうも基礎知識がなさすぎるようです。 もう少し勉強する必要がありそうです。 また質問させていただくかと思います。もしよければまたご相談に乗っていただけると幸いです。 本当にありがとうございました。