- ベストアンサー
ムービーを操作する方法について
noname#35109の回答
一応,スクリプトをコピペするだけで汎用的に使えるようなものを考えてみました。 ロード状況を示すバー(バーの伸び縮み)は,今回,考慮していません。 スライドバーを左右に動かすとMC(ムービークリップ)のムービーのフレームをコントロールする部分だけです。 ~完成予想図~~~ ┌────┐ │ムービー │ ←インスタンス名:mc_movie │ (MC) │ └────┘ ╋━━━━ ←インスタンス名:mc_bar ↑目盛り 兼 コントローラー ◎ 用意する物 (1) アニメーションするMC 仮インスタンス名:mc_movie (2) スライドバーのバーの部分 仮インスタンス名:mc_bar (3) 目盛り 兼 コントローラー(MC) インスタンス名:特に不要 ◎ (1)~(3)の各説明 (1) アニメーションするMC 1つのムービークリップ内にコントロールしたいアニメーションムービーを作ってください。 アニメーションさせる方法は,モーショントゥイーンなどタイムラインを使ったアニメーションにしてください。フレーム数は任意でかまいません。 コントローラーではMC内のフレームの動きを制御するので,ActionScriptで動かすアニメーションには対応していません。 作成できたら,一応,仮のインスタンス名を mc_movie にしてください。後で変更可です。 (2) スライドバーのバーの部分 (1)で作ったMCの横幅くらいに合わせたバーを書いてください。単なる線でもかまいません。バーの長さや装飾も後に変更できるので適当で良いです。 バーを作ったらそれをムービークリップシンボルに変換してください。 変換したらムービークリップの基準点(中心の丸いもの)を線の左端に動かしてください。 (「修正」→「変形」→「自由変形」などで,中央の○が動かせます。) 作成できたら一応,仮のインスタンス名を mc_bar にしてください。後で変更可です。 (3) 目盛り 兼 コントローラー ┃←こんな感じのものを作ってください。単なる縦の短い線でもかまいませんが,その場合動き出すとマウスで捕まえにくいので,周りに 20×20ピクセル以上の透明な塗りを書いた方が良いです。正方形の透明な塗りの中央に┃(線)を引く感じがいいです。 できた「目盛り 兼 コントローラー」は,(2)で作ったバーの横当たりに置いてください。バーに近ければどこでも良いです。 メインはこの「目盛り 兼 コントローラー」です。この「目盛り 兼 コントローラー」に以下のようなスクリプトを書けば出来上がりです。 ---コピペ可----------------------- onClipEvent (load) { //アニメMCのインスタンス名の設定("" 内は可変) mov = "mc_movie"; //バーのインスタンス名の設定("" 内は可変) bar = "mc_bar"; l_point = _parent[bar]._x; r_point = l_point+_parent[bar]._xscale*2; this._x = l_point; } onClipEvent (enterFrame) { total_frm = _parent[mov]._totalframes; move_spd = total_frm/(_parent[bar]._xscale*2); this._x = l_point+(_parent[bar]._xscale*2)/total_frm*_parent[mov]._currentframe; } on (press) { this.startDrag(true, l_point, this._y, r_point, this._y); this.onMouseMove = function() { now_frm = Math.round((this._x-l_point)*move_spd); _parent[mov].gotoAndStop(now_frm); }; } on (release) { this.onMouseMove = null; _parent[mov].play(); stopDrag(); } ------------------------------- 「スライドバーのバーの部分」のインスタンス名と「アニメーションするMC」のインスタンス名を他の名前にしたいときは mov = "mc_movie"; と bar = "mc_bar"; の部分を各名称に合わせればそれで使えます。 アニメーションの長さや大きさ(縦横サイズ)は全てスクリプト内でキャッチするようにしてあるので,他に変える場所はとくにありません。 この,「目盛り 兼 コントローラー」を取っておけばどこでも使い回せると思います。 ※loadMobieなどで読み込んだムービーにも対応していると思います。 mc_movieを小さめのMCにして,_rootのタイムラインに, loadMovie("○○.swf", "_root.mc_movie"); などと書けば外部SWFが読み込めます。 ただしロードされた割合でバーは伸び縮みはしません。 ◎ 上記スクリプトの説明 ---全角空白があるためそのままコピペは不可--- onClipEvent (load) { //アニメMCのインスタンス名の設定 mov = "mc_movie"; //バーのインスタンス名の設定 bar = "mc_bar"; //バーの左端ポイントの座標を取得 l_point = _parent[bar]._x; //バーの長さを取得 r_point = l_point+_parent[bar]._xscale*2; //この「目盛り 兼 コントローラー」をバーの左端座標にセット this._x = l_point; } //アニメMCのフレームよってこのMCの位置を変える部分 onClipEvent (enterFrame) { //アニメMCのフレーム数を取得 //(loadMovie対応のためここに書いています) total_frm = _parent[mov]._totalframes; //アニメMCのフレーム数/バーの長さを計算 //(loadMovie対応のためここに書いています) move_spd = total_frm/(_parent[bar]._xscale*2); //このMCの位置を変える this._x = l_point + (_parent[bar]._xscale*2)/total_frm*_parent[mov]._currentframe; } //このMCの位置によってアニメMCのフレームを変える部分 on (press) { //ドラッグできる座標を限定 this.startDrag(true, l_point, this._y, r_point, this._y); //このMCが動くとその座標によってアニメMCを制御 this.onMouseMove = function() { now_frm = Math.round((this._x-l_point)*move_spd); _parent[mov].gotoAndStop(now_frm); }; } //マウスアップしたときの処理 on (release) { this.onMouseMove = null; _parent[mov].play(); stopDrag(); } ----------------- 説明がうまくありませんがこんな感じでできます。 //(loadMovie対応のためここに書いています) の部分は本来上の,onClipEvent (load) {} の方に入れるべきですが, loadMovieを使用した場合,それではうまく値が得られないので, onClipEvent (enterFrame) {} に入れています。 その他難しいスクリプトは使っていません。 各プロパティを変数化して四則演算しているだけなので,よく見ればわかると思います。 こんなような感じで考えて行けば, 他にも「MCのスクロールバー」や, 「オブジェクトの拡大縮小バー」など色々できます。 =============================== ちなみに一時停止ボタンや再生ボタンは簡単ですよね。 ---一時停止ボタン--------- on (release) { _root.mc_movie.stop(); } ----------------------- ---再生ボタン------------ on (release) { _root.mc_movie.play(); } ----------------------- こんな感じでできます。 さらにちなみに, ---早送りボタン------------ on (press) { this.onEnterFrame = function() { _root.mc_movie.gotoAndPlay(_root.mc_movie._currentframe+2); }; } on (release, dragOut) { this.onEnterFrame = null; } ----------------------- ---早巻き戻しボタン------- on (press) { this.onEnterFrame = function() { _root.mc_movie.gotoAndStop(_root.mc_movie._currentframe-2); }; } on (release, dragOut) { this.onEnterFrame = null; _root.mc_movie.play(); } ----------------------- みたいな感じです。
関連するQ&A
- Flashでムービークリップを常に上に表示する方法
Flashの初心者で、次のことにつまずいています。 初心者のためにわかりやすく教えていただけたら助かります。 複数のムービークリップ(MC)があるとします。 その中のMCの1つをドラッグして他のMCに重なったときに、ドラッグしたMCが常に他のMCの上に表示されるようにしたいのですが・・・。 どのMCをドラッグした場合でも、他のMCの上に表示されるようにしたいです。 Flashのバージョンは、CS5.5で、アクションスクリプト2.0を使用しています。 どうぞよろしくお願いいたします。
- ベストアンサー
- Flash
- FLASHで作ったムービーをクリックしてから再生するように設定したい
ごらん頂有難う御座います。 DREAMWEAVERを使ってホームページを作っております、 その中にFLASHで作ったムービーを挿入し、そのムービーをクリックしてから再生をしたいのですがなかなかうまくいきません。 ムービーの最初のフレームをボタン・シンボルにして、そのボタンにアクションスクリプトを入れてもエラーが出てしまいます。 ちなみに on (press) { this.play(); } と記述しました。 半日この件で潰れてしまいました、宜しくお願い致します。
- ベストアンサー
- ホームページ作成ソフト
- 深い階層でのムービークリップの操作について
関連した質問で恐縮です。 ・シーン1 ┗Thumb_nail(ムービーインスタンス) ┗スクロールバー( sc_ bar ) ┗ sheet(ムービーインスタンス) ┗target(画像読み込み用ダミームービーインスタンス) targetを複製しながらJPEGファイルを読み込んでいます。(ファイルが存在するまで) そのScriptは全てThumb_naliのタイムラインのアクションです。 <1フレーム> var i = 1 ; var e_flg = 0 ; function Sheet_Scrolling() { sheet._x = sc_bar.getScrollPosition()*(-1) + 0 ; } sc_bar.setChangeHandler("Sheet_Scrolling"); <3フレーム> var fileload:LoadVars = new LoadVars(); fileload.load("b"+i+".jpg"); fileload.onLoad = function(success:Boolean) { if (!success) { e_flg = -1; } else { e_flg = 1 ; } }; <5フレーム> switch(e_flg ) { case 0: gotoAndPlay(4) ; break ; case 1 : sheet.target.duplicateMovieClip("b" + i, i) ; sheet["b" +i].loadMovie("b" + i+ ".jpg") ; sheet["b" +i]._name = "b" + i ; sheet["b" +i]._x += (i - 1) * 90 ; i++ ; e_flg = 0 ; gotoAndplay(3) ; break ; case -1: sc_bar.setScrollProperties(50, 0, (i-1)*90-360); stop() ; break; default: break ; } ここからが本題なのですが、読み込んだJPEGが押下された時のアクションはどこでどのように記述するのかご教授願えませんでしょうか?。(試した内容は文字数制限で書けません。)
- ベストアンサー
- Flash
- FLASHでボタンを押すと、FLASHムービーが再生から停止までいくようにしたいです。
FLASHの初心者です。 以下の物が作りたくてチャレンジをしております。 構成的には、一個の画面と、一個のボタンがあり、 あらかじめFLASHムービーを何個か作り、 一個のFLASHファイルに読み込んで、 ボタンを押すと一個目のムービーが再生、最終フレームで停止、 もう一回ボタンを押すと次のムービーが再生、最後… という具合にしていきたいです。 おそらくアクションスクリプトを使用して作らなければならないと 思うのですが、うまくできないのです… ついでにもう一つ、お聞きしたいことがあります。 フレーム数を右下に常に表示させたいです。 この方法も教えて欲しいです。 使用ソフトはFLASH CS3で、アクションスクリプトは3.0を使っています。 説明下手ですみません… よければ誰か助けてください>△<
- ベストアンサー
- グラフィックソフト
- 一定時間経過後、ムービー再生する方法を教えていただけますでしょうか?
FLASHのAction Script(setInterval?)について質問です。 現在タイムラインに4つのラベル(A,B,C,D)を指定して、順次A→B→C→D→A→(以下省略)へとループするムービーを制作しております。 次のラベルへと進む時間間隔をスクリプトで制御する方法を教えていただけますでしょうか。 例:) A→(10秒静止後)→B 上記の10秒となっている部分をスクリプトにて制御出来ればと思っております。 また、上記のムービー上に配置してあるボタンにオンマウスで、上記のカウントをリセットしてムービー停止、 マウスアウトで次のラベルへ進める方法も併せて教えていただきたくお願い申し上げます。 何卒、宜しくお願い致します。
- 締切済み
- Flash
- ムービーのコントロールについて教えてください。
ムービーのコントロールについて教えてください。 私は、フラッシュCS5を使用し、アクションスクリプト3.0で記述しています。 ムービーコントロールについて教えていただきたくてこちらに書き込みをさせていただきました。具体的には、ステージにムービー(インスタンス名:FLV_Play01)を読込み、そのムービーの上に再生ボタン(インスタンス名:Btn_1)を設置しました。添付画像をご覧ください。 ステージのタイムラインの1フレームに下記のようにスクリプトを記述しました。 import flash.events.MouseEvent; Btn_1.addEventListener(MouseEvent.CLICK, fl_ClickToPlayVideo); function fl_ClickToPlayVideo(event:MouseEvent):void { FLV_Play01.play(); } function removeMC(ev:MouseEvent):void{ removeChild(Btn_1); } Btn_1.addEventListener(MouseEvent.CLICK,removeMC); この記述ですと、ムービーの再生ボタン(インスタンス名:Btn_1)をクリックするとムービー(インスタンス名:FLV_Play01)がスタートして再生されます。再生と同時に再生ボタンが消去され、ムービーだけの表示となります。ただ、このスクリプトですと、ムービーが終了した後には再生ボタンが再表示されない為に繰り返し見る事が出来ないのです。 そこでですが、ムービーの再生終了後に再び再生ボタンを表示させるようにしたいのです(ユーチューブのようなイメージです)。そのためのスクリプトを記述したいのです。どなたか解る方がいましたらスクリプトの記述内容を教えてください。よろしくお願い致します。
- ベストアンサー
- Flash
- 2つのムービークリップをスクリプトを利用して同時に止めたいのですが、、。
はじめまして。私はスクリプトは初心者なのですが、2つのムービークリップが同時に進行してまして、同じタイムラインの長さなのですが、ずれないように同じ長さにしております。そのひとつがボタンになっているのですが、このボタンにロールオーバーした時、またはムービークリップのほうにロールオーバーした時に両方ともに一時停止してほしいのです。ロールアウトしたら2つとも動き出し、つぎのムービークリップに行ったとき、同じようにボタンも色が変わって常に同時進行してる状態を作りたいのですが、どうすれば良いか、だれか詳しい方教えていただけないでしょうか。よろしくお願いいたします。
- 締切済み
- Flash
- Quick time ムービーのコントロールを消すには?
Quick time Player のムービーで動画を再生しているのですが、画面下のコントロール(再生や一時停止などができるバー)を消すことができません。 再生した動画を見ているとこれが画面にかぶさっていて邪魔なのですが、これを隠すにはどうしたらいいでしょうか? バージョンは2です。それから画面を縦にデジカメで撮影したものを再生すると横になってしまうのですが、これをPC上で直す方法はありますか?
- 締切済み
- 画像・動画・音楽編集
- ムービークリップを一定時間ごとに実行したい。
ムービークリップを読み込むと、タイムラインに関係なく動き続けるかとおもいますが、それを時間、もしくはフレームごとに動きを止めて再度動かすような動きはスクリプトでどのようにかくのでしょうか? 作りたいアクションは、画面左からスライドして入ってきて、真ん中で減速しながら停止、3秒ほど待って、今度は加速しながら画面右にスライドしていく動きを作りたいです。 flashMx2004、windowsXPです。
- ベストアンサー
- Flash
- 回転運動の減速停止方法
こんにちは。以下の動作のアクションスクリプトを教えて 頂きたいと思い、書き込み致しました。 「回転 停止」というキーワードで過去質問を検索しましたが、 見つけることができませんでした。 よろしくお願い致します。 --------------------------------- http://hakuhin.hp.infoseek.co.jp/main/as/move.html#MOVE_04 ↑こちらで紹介されております「円の動きを作りたい 」で、 ある一定の角度(例えば300度とか)まで回転したら停止する 動きを制作したいと思っております。 また、停止する際に、 http://hakuhin.hp.infoseek.co.jp/main/as/move.html#MOVE_02 ↑こちらで紹介されております「減速(摩擦)する動きを作りたい 」 で、減速させて停止する動きが付けられればと思っております。 --------------------------------- 「300度回転してから減速して停止」という動きであれば、 上記サイトで公開されておりますスクリプトの形式でなくても 問題ありません。 お手数ですが、よろしくお願いします。 最後にこちらの環境です。 ------------------------ アクションスクリプト経験 :回転運動、曲線運動などは初めて挑戦。 マシン環境 :WinXP FLASH8 ------------------------ 以上、よろしくお願い致します。
- ベストアンサー
- Flash
お礼
大変分かりやすくご説明いただきありがとうございます! 早速コピペで試したのですが、 マウスアップしてもドラッグした状態と同様に mc_movieが目盛りにくっ付いてきてしまいます・・・。 シーン1にmc_movie、mc_bar、目盛りmcをそれぞれ別レイヤーに配置し、目盛りmcにお教えいただいたアクションを貼り付けた形です。 色々試してみたのですが原因がわからず、 お手数ですが再度お力をお貸しください。。 尚、遅れましたが、当方MX2004 proを使用しております。