• 締切済み

画像ロールイン・ロールアウト

フラッシュ作成で困っているので質問いたします。 【環境】Windows XP(Professional) 【使用ソフト】Macromedia Flash MX 2004 まず、どのようなフラッシュを作成したいのかを 以下に記載いたします。 http://www.windowsmedia.com/MediaGuide/jaHome?WMPFriendly=true&version= このメディアプレーヤーサイトのガイドようなイメージで作成途中です。 サイト上部にあります、画像のロールイン・アウトを 右から左へと4枚の画像で繰り返したいのですが その際のスクリプトがわかりません。 画像のロール方法は丸っきりメディアプレーヤーガイドと 同様にロールアウトしてる際に、次の画像がすでに右から ロールインする、という形式です。 スクリプトはまったくの初心者です。 他に同様の質問があるか、検索はしてみたのですが 見当たらないようでしたので新たに質問させていただきました。 質問内容でわかりにくい部分、明記していない部分等 もしありましたらお知らせ下さい。 よろしくお願いいたします。

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

みんなの回答

noname#35109
noname#35109
回答No.1

> その際のスクリプトがわかりません。 なぜスクリプトでするという結論を出されたのでしょうか。 ちゃんと考えられましたか,普通の方法で。 考え方にもよりますが, ActionScript と言えば ActionScript である, stop() や gotoAndPlay() くらいは使うかもしれませんが, 動きの基本はモーショントゥイーンでできますよ。 モーショントゥイーン以外も Flash の基礎知識でできます。 仮に ActionScript でするとしても, モーショントゥイーン や Flash の基礎知識がなければ, ActionScript ではできないと思います。 その普通の方法を1つ考えました。 基本的には画像の上にマスクレーヤーを用意して, そのマスクレイヤーに写真と同じサイズの塗りのあるムービークリップを重ねて, のマスクを画像にすべてかけた状態(ぴったり重ねた状態)から, マスクムービークリップを左に動すという方法です。 「マスクとは?」 http://www.1art.jp/flash/le/lesson9/lesson9-2.htm 「アニメーションの基本(シェイプトゥイーン、マスクレイヤー)」 http://www.db.tokushima-u.ac.jp/miyoshi/opencourse/?flash/4.html (→マスクに関しては下の方にあります。) しかし, マスクは 「かかっている」か 「かかっていない」か のどちらかしかありませんね。 半分くらいマスクをかける(半分くらい下のレイヤーを見せる)ということはできません。 そうなら,そうで,どうすれば出来るかを考えるのです。  『鳴かぬなら 鳴かせてみせよう ホトトギス』 これは,普通に Flash を作るときでも,ActionScript を使うときでも全く同じです。 また,他言語や他ソフトでも同じだと思います。 --- 具体的方法例 ------ 1つのムービークリップを用意して, そのムービークリップの中のレイヤーを 30レイヤー くらいにします。 そして,写真を ムービークリップ(MC) に変換した物と, その写真と同じサイズのマスクを交互にぴったり重ねて配置します。 Flash はレイヤーごとに配置されたオブジェクトを横から見ることができませんが, 仮に横から見ることができた場合のイメージ図です↓。 /////////////////////////////////////////////////  □□□□□□□□□□□□□□ = マスク  ■■■■■■■■■■■■■■ =写真1(MC)  □□□□□□□□□□□□□□ = マスク  ■■■■■■■■■■■■■■ =写真1(MC)  □□□□□□□□□□□□□□ = マスク  ■■■■■■■■■■■■■■ =写真1(MC)  □□□□□□□□□□□□□□ = マスク  ■■■■■■■■■■■■■■ =写真1(MC)    ~ 省略 ~ ///////////////////////////////////////////////// そして,一番上の写真(MC)のみのアルファ(不透明度)を 100% にして, それより下のレイヤーの写真(MC)のアルファを, プロパティインスペクタで例えば 10% にします。 そして, マスクを左にモーショントゥイーンさせれば良いのですが, このとき,動かすタイミングをずらしてモーショントゥイーンさせます。 /////////////////////////////////////////////////  □□□□←動かす (マスク)  ■■■■■■■■■■■■■■ =写真1 アルファ100  □□□□□□←動かす (マスク)  回回回回回回回回回回回回回回 =写真1 アルファ10  □□□□□□□□←動かす (マスク)  回回回回回回回回回回回回回回 =写真1 アルファ10  □□□□□□□□□□←動かす (マスク)  回回回回回回回回回回回回回回 =写真1 アルファ10    ~ 省略 ~ ///////////////////////////////////////////////// これで, 右端から徐々に消える 写真1 入りのムービークリップが1つ完成します。 その 写真1 が徐々に消え出す前に, 同じ構造の違う 写真2 を入れたムービークリップを下のレイヤーに準備しておけば, 上の写真1 が徐々に消え出すと同時に違う 写真2 が徐々に見えて来ます。 //--- 一番目のMC --------------------------//  □□□□←動かす (マスク)  ■■■■■■■■■■■■■■ =写真1 アルファ100  □□□□□□←動かす (マスク)  回回回回回回回回回回回回回回 =写真1 アルファ10  □□□□□□□□←動かす (マスク)  回回回回回回回回回回回回回回 =写真1 アルファ10  □□□□□□□□□□←動かす (マスク)  回回回回回回回回回回回回回回 =写真1 アルファ10    ~ 省略 ~ //--- 二番目のMC --------------------------//  □□□□□□□□□□□□□□ = マスク  ■■■■■■■■■■■■■■ =写真2(MC)  □□□□□□□□□□□□□□ = マスク  回回回回回回回回回回回回回回 =写真2(MC)  □□□□□□□□□□□□□□ = マスク  回回回回回回回回回回回回回回 =写真2(MC)  □□□□□□□□□□□□□□ = マスク  回回回回回回回回回回回回回回 =写真2(MC)    ~ 省略 ~ //---------------------------------------// このパターンで4枚目まで作り, 最後は,最初の写真のみを置いて,その 写真1 が完璧に見えた時点で, メインムービーの最初のフレームに戻してループ再生させれば良いのです。 //--- 四番目のMC --------------------------//  □□□□←動かす (マスク)  ■■■■■■■■■■■■■■ =写真4 アルファ100  □□□□□□←動かす (マスク)  回回回回回回回回回回回回回回 =写真4 アルファ10  □□□□□□□□←動かす (マスク)  回回回回回回回回回回回回回回 =写真4 アルファ10  □□□□□□□□□□←動かす (マスク)  回回回回回回回回回回回回回回 =写真4 アルファ10    ~ 省略 ~ //--- 一番目の写真 --------------------------//  ■■■■■■■■■■■■■■ =写真1 アルファ100 //-----------------------------------------// 写真1 が完璧に見えた時点で, gotoAndPlay(1); を書いても良いですし, そこが最終フレームであれば, 何も書かなくても,勝手にループ再生します。 ここまで考えたら, そのまま上のように作れば良いのです。 また,ActionScript でするのなら, 上のように動作するようにプログラミングすれば良いのです。 少なくとも上のようなことが考えられなければ, ActionScript で動きをプログラミングすることはできません。 ActionScript で "物を動かす" 必要があるのは, 主に次の3つの場合があると思います。  1.マウスの座標など動的要因によって動きが変化する場合  2.立体図形 や 数学的図形を表現するなど    手で描く絵では表現出来ないものを表現する場合  3.モーショントゥイーンで作るのがやたら面倒な場合 普通は1と2の場合です。 プログラミングが達者で,手間をかけるのが嫌だというときのみ, 3の場合が考えられます。 上で書いた具体的方法例は, 普通は 1 にも 2 にも 3 にも該当しませんが, 人によっては3にだけは該当するかもしれませんね。 手間をかけることが嫌でなければ上の方法で作ってみても良いです。 Flash においては,これくらいのことは手間なうちに入りません。 手間をかけるか頭を使ってプログラムでするかです。 一応,以下には, 手間をかけることが嫌な場合の ActionScriptでする方法を書いておきます。 ======================= 写真まで ActionScript で用意するわけには行かないので, サンプル作成に, これを使わせていただきますか↓。 http://www.windowsmedia.com/CAPS/ImagesContent/AEEC5B10-3730-42B2-858A-C4A082C08036.jpg http://www.windowsmedia.com/CAPS/ImagesContent/4BF8E704-D6D5-42AD-823C-E0FD0DA448B8.jpg http://www.windowsmedia.com/CAPS/ImagesContent/4B1E0967-D50D-4786-9325-1C639F7AA9B1.jpg 上のJPEGを使わなくても, 大きさが同じであれば何でも良いです。 > 右から左へと4枚の画像 と,ご質問では書かれていますが,枚数は気にしなくて良いです。 枚数は1文字変えるだけで OK のActionScriptにしますから。 説明はとりあえず上記3枚を使うと言うことで説明します。 3枚をローカルに保存しましたら, Flash で新規ドキュメントを作成して, その3枚のJPEGを,Flash のステージに読み込みます。 読み込みましたら,順はとうでも良いので, 3枚ともムービークリップに変換してください。 ただし,ムービークリップに変換するときに, 基準点を左上にしてください。 ----------------------------------------- 名前(N):[ 任意の名前         ] タイプ(T): ◎ ムービークリップ 基準点(R):■□□        ○ ボタン                □□□        ○ グラフィック             □□□ ----------------------------------------- 基本的にはどこを基準点にしても良いのですが, 今回の方法の場合,基準点を左上にすると色々操作しやすいです。 3枚ともムービークリップに変換しましたら, ステージ上には3枚とも不要なので, 「右クリック」→「カット」などで, ステージ上からそのムービークリップを消してください。 _root(メインムービー)のタイムラインはこれで空になるはずです。 きれいサッパリステージ上が空になりましたら, 一辺 5mm くらいの四角を描いてください。 色や大きさや線のあるなしはどうでも良いです。 とにかく適当で良いです。 その四角を選択して,ムービークリップに変換します。 こちらの基準点はどこでもかまいません。 四角のムービークリップができましたら, ダブルクリックでそのムービークリップ内のタイムラインの編集に入ります。 ダブルクリックすると,さっき描いた四角のシェイプがあると思いますから, その四角を消し去ってください。 これで,ムービークリップの編集は終わりです。 結局,空のムービークリップを用意するだけです。 空のムービークリップができましたら, ドキュメントの編集 で _root のタイムラインに戻ってください。 _root のタイムラインに戻ると,空のムービークリップが小さな    ○ のようにステージ上のどこかにあると思いますから, この ○ にインスタンス名を付けます。 この説明では 「TopMC」 というインスタンス名にしておきます。 この「TopMC」をステージの左上のコーナーに移動させてください。 このポイントに全ての画像の左上コーナーを表示させるようにします。 ここまでできたら, 「表示」→「ライブラリ」などで,「ライブラリパネル」を表示させてください。 「ライブラリ」には3枚のJPEGと,4つのムービークリップがあると思いますから, 4つのムービークリップのうち, 1番目に表示させたい写真の入っているムービークリップを選択し, 「右クリック」→「リンケージ」と選択します。 すると「リンケージプロパティ」 ダイアログが出てきますから,  □ ActionScript に書き出し にチェックを入れます。  □ 最初のフレームに書き出し にも自動的チェックが入りますからそれは入れたままで良いです。 そして,  識別子[        ] の部分に p0 と記入してください。  識別子[p0       ] この p0 がこのムービークリップの識別子(名前)になります。 2番目に表示させたい写真の入っているムービークリップにも 同様の操作で今度は p1 と記入してください。 3番目に表示させたい写真の入っているムービークリップにも 同様の操作で今度は p2 と記入してください。 ステージに戻って, タイムラインにレイヤーを1つ追加してください。 追加したレイヤーを スクリプト専用レイヤーと勝手に決めておきます。 その,追加したレイヤーの フレーム1 の空白キーフレームを選択して, 次のような ActionScript を書き(コピペし), 任意の場所に SWF をパブリッシュするか, 「ムービープレビュー」すると完成です。 ------------------------------------------ // 写真の枚数の設定(可変) var pNum = 3; // 写真の動く速さの設定(可変) var spd = 20; // 写真を切り換える時間の設定(可変(ミリ秒)) var change = 9000; // 写真を重ねる深度の上限の設定(可変(奇数)) var rank = 35; // ずらす幅の設定(可変) var slip = 2; // // 通し番号 n の初期値 var n = 0; // 写真番号 pn の初期値 var pn = 0; // // 最初の写真を配置 TopMC.createEmptyMovieClip("myMC"+n, n); TopMC["myMC"+n].attachMovie("p"+pn, "pMC0", 0); // // ユーザー定義関数 makeMC の定義 function makeMC() { delete (TopMC["myMC"+n].onEnterFrame); removeMC(); n++; pn++; TopMC.createEmptyMovieClip("myMC"+n, n); if (pn>=pNum) { pn = 0; } for (var i = 0; i<=rank; i++) { TopMC["myMC"+n].attachMovie("p"+pn, "pMC"+i, i); } for (var i = 0; i<=rank; i += 2) { TopMC["myMC"+n]["pMC"+i].setMask(TopMC["myMC"+n]["pMC"+(i+1)]); TopMC["myMC"+n]["pMC"+(i-2)]._alpha = 8; TopMC["myMC"+n]["pMC"+(i+1)]._x = TopMC["myMC"+n].pMC0._width+(i*slip); } moveMC(); } // // ユーザー定義関数 moveMC の定義 function moveMC() { TopMC["myMC"+n].onEnterFrame = function() { for (var i = 0; i<=_root.rank; i += 2) { if (this["pMC"+(i+1)]._x<=_root.spd) { this["pMC"+(i+1)]._x = 0; } else { this["pMC"+(i+1)]._x -= _root.spd; } } }; } // ユーザー定義関数 removeMC の定義 function removeMC() { if (TopMC["myMC"+(n-1)] != undefined) { TopMC["myMC"+(n-1)].removeMovieClip(); } } // change ミリ秒ごとに makeMC を実行 myID = setInterval(makeMC, change); ------------------------------------------ (可変) が付いている部分は, カスタマイズ可能です。 4枚の写真があるのでしたら, 同様に 4枚をステージに読み込み, ムービークリップに変換し, 識別子を p0,p1,p2,p3 にして,  // 写真の枚数の設定(可変)  var pNum = 3; の部分を,  // 写真の枚数の設定(可変)  var pNum = 4; にしてください。 モーショントゥイーンでする方の説明と, ActionScript での動きは若干違いますが, 基本的には同じ考え方です。 setMask で,マスクも使っていますし, _alpha = 8; でアルファも使っています。 結局, 手作業で作れる物をプログラムで自動化しているだけです。

maviarum
質問者

お礼

sassakunさん まずはお礼をさせてください。本当に、本当にありがとうございました!! とても丁寧に、またこれほどまでに詳しく説明していただけるとは・・・。 どこを探してもダイレクトに理解できるものはネット上になく、 自分のやりたいことをピタッと回答していただけるだなんて 感謝のしようがありません・・・。ありがとうございました。 モーショントゥイーンで、というのはまったく頭に浮かびませんでした。 最初の概念が違うだけでできないこともさせることが出来るのですね。 でもレイヤーの使い方がイマイチわからなかったので、 sassakunさんの書いてくださったURLを参考にしてみたいと思います。 手間がかかっても、わからないスクリプトを記述するよりは はるかに自分で出来ることの一つですよね。 スクリプトを自由に記述できるようにするより、まずは最も重要な レイヤーを知らないと意味がないですね。 私が出来たことといえば、モーショントゥイーンで全体的に フェードイン・アウトのみでした。 そして、スクリプトの記述・・・。大変ありがとうございました。 今回はこの記述を使用させていただき、完璧に作ることが出来ました!! とても丁寧な説明だったので、問題なく出来上がりました。 もう感動して大騒ぎです。 でも、今回はsassakunさんがこのように丁寧に記述していただけたので まったくの無知である私にも出来たことですね。 とても丁寧に回答してくださったこともなんとも大変嬉しかったのですが、 角度を変えた視点でのやり方というのはもっとも勉強になりました。 他ソフトでも・・・というのもごもっともですね!! 人それぞれやり方もあって、問題から回避するのですよね。 sassakunさんの回答で一発でスッキリ難問も解決できてしまいました。 この回答はメモして大事にしておきます。 本当にありがとうございました!!

関連するQ&A

  • 画像の保存

    ある画像を保存したいのですが、Macromedia Flash Playerのやつなんで右クリックから保存できません。 どうしたら保存できるか教えてください!

  • ホームページビルダー上で「画像がだんだんとフェイドアウトして新しい画像が現れる」やり方を知りたいです

    こんにちは。 ホームページビルダー11でホームページを開いています。 「ホットメディア アニメーション」という機能を使って サイト上の画像の上に新しい画像が右下から現れて左上に重なるよう に設定しています。 ただ、この場合、往々にして画像が完全には重ならずに多少ずれたり して見苦しいです。 IBMのサポートの方に聞いたら、「スライドショー」といって 新しい画像が左から(右から?)既存の画像の上に重なるように 現れる機能もあるようです。 ただ、世間の大抵のHPの場合、画像がだんだんとフェイドアウト? のように薄くなって、代わりに新規の画像が現れるやり方が 多いですよね。これを「FLASH」というのでしょうか。 ネット上で「ADOBE FLASH PLAYER10 ACTIVEX」を無料ダウンロードしました。 これを、ホームページビルダーの「プラグイン機能」で「挿入」 して、所定の手順を経れば「画像がだんだんとフェイドアウト? のように薄くなって、代わりに新規の画像が現れる」ようになるの でしょうか? IBMのサイトのFAQで「HPB-1059」に「FLASHの挿入」 の項はあるのですが、上記のように画像が入れ替わるように 出来ません。 お詳しい方、御教示下さいませんか。

  • MacroMedia Flash Player8の画像

    MacroMedia Flash Player 8 の画像は マイドキュメントに保存できないのですか? MacroMedia Flash Player 8 の静止画像を保存して デスクトップの背景に設定したいのですが 何かいい方法はありませんか? よろしくお願いします。

  • メデイアプレイヤー8の不調

    メディアガイドで読み込みエラーが表示されるようになりました。今までこんなことはなかったのですが・・・。 以下がエラーの内容です。 Internet Explorer スクリプトエラー (黄色のビックリマーク)このページのスクリプトでエラーが発生しました。 ライン 11 文字 2 エラー oMAINHOMESPOTは宣言されていません。 コード 0 URL http://windowsmedia.com/mediaguide/static.asp?WMPFriendly=true&locale=411&version=8.0.0.4477&Page=0 このページのスクリプトを実行しますか? はい     いいえ

  • FLASH5で、ボタンにロールアウト時にもアニメーションさせたい

    FLASH5を使用しているのですが、ボタンにマウスのロールオーバーで アニメーションを設定することはできますが、ロールアウトしたときにも アニメーションを設定したい場合、どのような方法があるか教えていただきたいです。 今私が作りたいのは「何もないところにロールオーバーするとボタンがゆっくり表示され、 ロールアウトするとゆっくり消える」というものです。 現時点では、私はムービークリップの中にボタンを入れ、最初のフレームで フレームアクションに stop (); を設定し、そこに配置してあるボタン(ここでは、透明なボタン)に on (rollOver) { play (); } で次のフレームに行くようにし、そこでロールオーバー時のアニメーション(ゆっくりボタンが現れる) を作成して、止めたいところでフレームアクションに stop (); を設定し、その停止時に配置してあるボタン(表示されている可視状態)に on (rollOut) { play (); } を設定し、その次のフレームからはロールアウト時のアニメーション(ゆっくりボタンが消える) を作成しています。 これだと、動作はするのですが メニュー等のようにボタン(この場合はボタンを含んだ ムービーですね)を隣接させて複数置いた場合などに on (rollOut) { play (); } のスクリプトがうまく効かず、他のボタンにロールオーバーしているにも関わらず前にロールオーバーした ボタンがそのままの状態(ボタンが消えず表示されたままの状態)で残ってしまいます。 tellTargetとifを使用するのかな?とも考えたのですがよくわからず困っています、、、、 長文で申し訳ないのですが、よろしくお願いします。

  • ロールオーバーでテキストスクロール

    XMLからデータを取得し、タイトルをリスト表示(5件)し、 タイトルにロールオーバーでタイトルのテキストが左に流れていく。 テキストが流れきったら、右から流れ始める。 ロールアウトでテキストは初期の場所に戻る。 以上のようなflashを作成しようとしているのですが、 悩んでいる部分があります。 テキストが流れきったかどうかの判定は、テキストのMCのX座標の位置に よって判断しています。 テキストの長さは長いものもあれば、短いものもあります。 あらかじめ、テキストエリアの幅を長いものに合わせておくと、 テキストが流れきった後、右からまた流れ始める際に短いテキストだと 流れ始めるまで間が空いてしまいます。 テキストが流れきったら、テキストの長短に関わらず、 すぐに右から流れ始めるようにしたいのですが、良い方法などありますでしょうか。 よろしくお願いします。 環境は以下です。 FLASH CS3 ActionScript2.0

    • ベストアンサー
    • Flash
  • 一度ロールオーバーして表示させた画像をそのまま残したい

    Flash AS初心者です。 ボタンにロールオーバーした際に、別フレームで作成した吹き出しが任意の場所で表示されるような動きを作成しています。 通常であれば on (rollOver) { gotoAndStop(4); } で済むと思うのですが、ロールアウトした時、別のボタンにロールオーバーした時にも、もともと表示されていた吹き出しをそのまま残したいのです。(上記だと当然ながら消えてしまいます) ボタンとリンクする吹き出しは8つあるので、全て表示した際には重ならないようなレイアウトは考えているのですが・・・ つたない説明ですみません。 ご教授いただければ幸いです。

    • ベストアンサー
    • Flash
  • フラッシュ>>action script ボタンロールオーバーで、他のmcの画像がさしかわる方法

    すみません、大変困っています。 いま、action script2.0で Aというボタンをロールオーバーした際に、他のmcの画像がさしかわるスクリプトがわかりませんで困っています。 ソフトは、flash CS3で、scriptは2.0です 細かく説明しますと A:ボタン B:鳥の画像  C:シマウマの画像 1.ボタンAをマウスオーバー 2.鳥がシマウマに変わる 3.ボタンAをロールアウトすると元のBに戻る 大変恐縮ですが、わかるかたがいらっしゃれば教えてください。 よろしくお願いいたします。

  • 画像表示をアルファでフェードイン&アウト AS3

    AS3初心者です。 ステージ上にサムネールを並べ、ロールオーバーで対応する大きい画像を表示するムービー http://gihyo.jp/dev/serial/01/as3/0032?page=1 ロールオーバーすると大きい画像がアルファでフェードアウト(今表示している大きい画像)&フェードイン(新しく表示する大きい画像)で入れ替わるようにしたいのですが。 うまくアルファのスクリプトを入れることができません。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • フラッシュ画像のURLについて、教えてください。

    ブログペットの背景にフラッシュ画像を貼りたいのですが、DLしてswfのファイル形式にまでできたのですが、それをアップロードした後、貼り付けるためのフラッシュ画像のURLを表示することができません。 その背景サイトでのレクチャーでは、普通の静止画のように右クリックでプロパティからURLが見れると書いてあるのですが、右クリックしてもプロパティの項目が出てこなく、「Macromedia Flash Player 8 について」としか出てきません。 どのようにすればフラッシュ画像のURLが見れますか? ちなみに、この件に関係あるか分かりませんが、OSはW98SEです。

専門家に質問してみよう