• ベストアンサー

外部SWFファイルを再生バーでコントロールしたい

お世話になります。 上記の件について、ご質問させて頂きます。 作成したムービーは以下の通りです。 aaa.swf←ムービー1 bbb.swf←ムービー2 main.swf←aaa.swfとbbb.swfを順番にロードして表示 今回、main.swf上でaaa.swf及びbbb.swfの再生状況(時間)を表示させ、先へ進んだり、前に戻ったり等を管理する スライドバーを作成したいと思っています。 Flash初心者なので、やり方について調べてみてもわかりませんでした。。 教えてください。よろしくお願いします。

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

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

  • ベストアンサー
  • perse
  • ベストアンサー率74% (113/152)
回答No.1

シークバーですね まずはmain.swfとかbbb.swfのことは忘れて aaa.swfにシークバーをつけてみます。 _root上にseek_mc、box_mcというインスタンス名のmcを配置します。     図にすると     | ̄■■ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ■■ が seek_mc (■が2つありますが2つで一つのmcと見てください) その周りにあるのが box_mc です。 seek_mc : シークバーのつまみの部分(以下シークバーと書きます)  シンボル化するときの基準点は    □■□    □□□    □□□  真ん中の上 box_mc : シークバーの枠線  基準点は    ■□□    □□□    □□□  左上 //以下を_rootのフレームに記述----------------------- //ドラッグしたときにシークバーの動く範囲 var left = this.box_mc._x+this.seek_mc._width/2; var top = this.box_mc._y; var right = left+this.box_mc._width-this.seek_mc._width; var bottom = this.box_mc._y; this.seek_mc._x = this.box_mc._x; this.seek_mc._y = this.box_mc._y; //シークバーを摘んだとき--------------------- this.seek_mc.onPress = function() { // this は seek_mc を指す _root.stop(); //割り当てた関数を削除する delete _root.onEnterFrame; this.startDrag(false, _root.left, _root.top, _root.right, _root.bottom); //シークバーを移動させたとき this.onMouseMove = MoveFrame; }; //シークバーを離したとき--------------------- this.seek_mc.onRelease = function() { this.stopDrag(); // 下でちょっと説明あり ---------------------------(1)  var p = (this._x-_root.box_mc._x)/(_root.box_mc._width-this._width); _root.gotoAndPlay(Math.floor(_root._totalframes*p)); _root.onEnterFrame = _root.MoveSeek; //割り当てた関数を削除する delete this.onMouseMove; }; //onMouseMove(マウスを動かしたとき)に実行する関数 // (シークバーをドラッグ中) function MoveFrame() { // this は seek_mc を指す var p = (this._x-_root.box_mc._x)/(_root.box_mc._width-this._width); _root.gotoAndStop(Math.floor(_root._totalframes*p)); } //フレームが再生されているときに実行する関数 // (シークバーがドラッグされていないとき) function MoveSeek() { // this は _root を指す p = _root._currentframe/_root._totalframes; this.seek_mc._x = _root.left+(this.box_mc._width-this.seek_mc._width)*p; } // _root.onEnterFrame = MoveSeek; //-------------------------------------------------- まとめると、 ・ムービーが再生されているときシークバーが動く  onEnterFrameで   現在のフレームを取得   全体のフレームの何%の位置にあるかを求める   シークバーのx座標をその%位置に移動させる ・シークバーを動かしたときにムービーの再生位置を移動させる   シークバーを動かすたびにx座標を取得   box_mc内の何%の位置にあるかを求める   フレーム位置をその%位置に移動させる ・シークバーを離したときにムービーの再生位置を移動させる   離したときにシークバーのx座標を取得   box_mc内の何%の位置にあるかを求める   フレーム位置をその%位置に移動させる ・seek_mc._x の値 (1)の補足説明   seek_mcの水平方向の基準点は中心なので中心位置のx座標が返ってきます。   なのでx座標の範囲は      |■■ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄■■|    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄    |←────────────→ |  この範囲になる       ですのでシークバーの位置(%)は    [seek_mcのx座標 - box_mcのx座標 (左側の余白)]       / box_mcの幅 - seek_mcの幅の半分 * 2      =(this._x-_root.box_mc._x)/(_root.box_mc._width-this._width/2 * 2)   =(this._x-_root.box_mc._x)/(_root.box_mc._width-this._width)      という具合で求めています。       main.swfに読み込んだaaa.swfやbbb.swfの操作  main.swfで読み込み用のmc(例えばload_mc)を用意してそこにaaa.swfを読み込みます。  読み込み後、aaa.swfの_rootはmain.swfから見ると_root.load_mcとなります。 シークバーの動作範囲がおかしいとき(枠線をはみ出したり)は シンボルの基準点を確認してください。 もしも動かないときは以下の点を確認してください。 ・インスタンス名をつけたかどうか   インスタンス名はシンボルをステージに配置したときに付ける名前です。   シンボル名(ライブラリに表示される)とは違います。   ステージにあるシンボルを選択してプロパティからつけてください。    ・_rootのフレームが複数あるか   _rootにシークバーを配置したので_rootが1フレームしかないと   当然ですが動きません。

kyawami
質問者

お礼

シークバーと言うのですね。 丁寧なご回答、感謝しています。 おかげで私にも作成することができました。 本当にありがとうございました!

関連するQ&A

  • swfファイルが再生されません

    エックスサーバーというところで会社のホームページを作成するためにサーバーを借りました。試しにFlash cs3で簡単なflashを作成し、パブリッシュで「AC_RunActiveContent.js」「index.html」「index.swf」を作成しました。そこでサーバーにアップしたところ、index.htmlは読み込まれているのですが、index.swfが再生されません。 Flash再生エリアで右クリックをすると、「ムービーをロードできません」と表示されています。その下に「Adobe Flash Player 9について」と表示されているので、一応Flashであることは認識されているのでしょうか? 念のため、私が個人的に借りているロリポップのレンタルサーバーにアップしたところ、何の問題もなく再生されています。 そこで、ちょっと気になったのでMIME TYPEの追加設定画面(エックスサーバーのコントロールパネル)で、swfファイルについての設定をしましたが、何も変わりません。 エックスサーバーに問い合わせたところ、Flashなど、個別ソフトに関してはサポートしていないと言われてしまいました。 エックスサーバーではホームページのデータは/public_htmlというフォルダに置くようになっています。ロリポップはルートフォルダに置くようになっています。Flashからのパブリッシュの際に設定が何か必要になるのでしょうか?パブリッシュされた3つのファイルはHD上でちゃんと再生されていますし、ファイル自体が破損しているということはないと思うのですが... index.htmlやindex.swfをブラウザのアドレスバーで直接指定してやると認識はされています。しかし、swfは同じ症状で、再生できないんです。 SAFARIの「構成ファイル」で確認しても、ちゃんとindex.htmlとindex.swfが表示されています。 一体何の設定がまずいのでしょうか? どなたかアドバスお願いします。

  • loadMovieされたswf上の外部Textが

    表示されず困っています。 aaa.swfの中に01_mcがあり、そこにloadMovieでbbb.swfを表示させます。 そのbbb.swfにはTextFieldがあって、変数を使って外部テキストを読み込んで表示しています。 bbb.swfのプレビューでは、TextAreaの中にはきちんと変数で指定した外部テキストが表示されますが、それをaaa.swfに読み込んだ後に見ると、テキストが表示されません。 どなたかお力をお貸しくださいませんか? 環境はMacOS10.3.9 FLASH MX2004です。 よろしくお願いします!

    • ベストアンサー
    • Flash
  • 複数のswfを順番に再生するやり方

    失礼します。 再生時間が長いFlashアニメーションを作成するときアニメーションを分割して作成したほうが編集しやすいと思い、複数のFlashアニメーションを分割して作成してメインのFlashで順番に読み込んで再生するということをしたのですが、 メイン.swf ┣ローディング:loading.swf    ↓ ┣読み込んで1番目再生:no1.swf ↓ ┣読み込んで2番目再生:no2.swf ↓ ┣読み込んで3番目再生:no3.swf ↓ ┗読み込んで4番目再生:no4.swf 終わり 上記のような感じで再生させたいのです。 現在はno1.swf、no2.swf、no3.swfの最後のキーフレームに_root.nextFrame();を記述して、メイン.swfではmovie_spaceという名前のムービークリップを作成して2,3,4,5のフレームのステージに設置し、2,3,4,5のキーフレームに_root.movie_space.loadMovie("no1~4.swf");を記述して連続で再生するように作りました。 できればメイン.swfでこの複数のswfファイルを制御して、読み込んで再生、終わったら次のファイルを再生と順番に連続再生させたいのですがそういう方法ってあるでしょうか? ちなみに作成環境はFlash8 ProでActionScript2.0で作成しています。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 複数swfファイルの同時読込について

    環境:WindowsXP、Flash8 読み込んだswfファイルを表示するムービークリップと スライドバーを作りました。 スライドバーを左右に動かすと、 それに合わせて読み込んだ画像が切り替わる ということをやってみたいのです。 (動かした位置のx座標によって画像が切り替わる) 初心者でFlashのことがわからないため、 swfファイルの数だけムービークリップを配置し、 loadMovieを数十個行って読み込んだのですが、 動作が重くなり、どうにもなりませんでした。。。 そこで、最初に全てのswfファイルを読み込んで、 内部に持っておけば、動きが早くなるのかなと 思うのですが、どのようにすればいいのでしょうか? ご存知な方がいらっしゃいましたら、 教えていただけませんでしょうか? よろしくおねがい致します。 #ちなみに読み込みたいswfファイルは、  それぞれ20~30kと小さいのですが、  数が80個近くあります。。。

    • ベストアンサー
    • Flash
  • 外部swfの読込について

    1枚のFlashに二つの外部swfを読み込む方法を教えて下さい。 今参考書を見ながらやってみたのですが外部ファイルが読み込まれていないようで 書き出したswfファイルには何も表示されません。 試した方法ですが・・・ 外部swfファイル読込用ムービークリップを作成、 オブジェクトアクションを挿入 --------------------------------- onClipEvent (load) { function Load (file) {  this.loadMovie (file);   } } --------------------------------- フレームを作成し下記アクション挿入 --------------------------------- contents_mc.Load("about.swf") --------------------------------- 使用ソフトはFlash5です。 どうぞ宜しくお願いします。

    • ベストアンサー
    • Flash
  • loadMovieで外部swfの読込みについて

    現在、外部swfを連続で再生させるフラッシュを作成中です。 以下の方法で実現しています。 ------------------------------------------------- 親SWFの_rootに,例えば「loadMC」というインスタンス名のムービークリップを作ります。 このMCは小さくて透明のMCか,中に何も入っていない空のMCが良いと思います。 そして,親SWFのフレームのスクリプトに _root.loadMC.loadMovie("movie1.swf"); と書けば,「loadMC」というインスタンス名のムービークリップに「movie1.swf」が読み込まれます。 またはボタンにスクリプトを書いて,ボタンで読み込みをさせても良いです。 そして,「movie1.swf」の最終フレームに, _root.loadMC.loadMovie("movie2.swf"); と書いておきます。これで同じ「loadMC」に「movie2.swf」が読み込まれます。 同じ所に新たなムービーを読み込むと自動的に前のムービーは unload されるので, unloadMovie(); は必要ありません。 「movie2.swf」の最終フレームには _root.loadMC.loadMovie("movie3.swf"); 「movie3.swf」の最終フレームには _root.loadMC.loadMovie("movie4.swf");   …  … ------------------------------------------------- 作成後のプレビュー又はswfをダブルクリックなどで直接表示させると正常に表示されます。 しかし、HTMLに埋め込むと真っ白な状態でまったく表示されません。 調べているのですが原因がわかりません。 どなたかご教授のほど宜しくお願い致します。

    • ベストアンサー
    • Flash
  • swfファイルが削除できない_2

    先日、以下の質問を投稿いたしましたが、記事を加筆して再投稿いたします。 長文になりますが、よろしくお願い致します。 原因不明の理由によって、アップロードしたswfファイルが削除できなくなって困っています。 元々は www.aaa.jp/bbb/ccc.swfというファイルでした。 Googleで小社を検索すると、 www.aaa.jp/bbb/bbb/ccc.swfというアドレスがgoolgeの検索一位に表示されるようになりました。しかしながらftpで確認しても、bbbの下の階層のbbbのフォルダは存在しないフォルダで、削除ができずに困っています。 試みた対策は以下の通りです。 (1)オリジナルのwww.aaa.jp/bbb/ccc.swfのファイルがなんらかの悪さをしているのではないかと思い、削除しました。結果変わらず。 (2)レンタルサーバー会社に連絡し、サーバー内を確認してもらいましたが、やはりbbbの下のフォルダbbbは存在しない。なにかのファイルが影響しているかと思われるが、こちらでは対処の仕様がないとのこと。 (3)googleのsearch console URLの削除をリクエストしましたが、拒否されました。 (4)仮にwww.aaa.jp/bbb/bbb/bbb/bbb/bbb/ccc.swfといったでたらめなアドレスを入れても、同じページが表示されます。 (4)に関して、レンタルサーバー会社のご担当者から以下のようなご返事を頂戴しました。 >/bbb をいくつ付けても表示される という状況は /bbb をいくつ付けても表示できるようにコンテンツを作成しているためとなります。こちらが意図した動作であるか何らかのプログラムの不具合であるかは分かりかねます。 (自分にはそのような難しいwebpageはとても書けないと思うのですが、) Flashやjava script, html5などがそのような挙動をする可能性があるのでしょうか。 ご担当者氏からは、フォルダbbbごと削除する方法をご提案いただきましたが、 ことは大事で、その勇気がありません。

    • ベストアンサー
    • HTML
  • FLV再生時swfのスピードが遅くなります。

    はじめまして。初めて投稿します。 現在FLVを使用し、フラッシュ作品を作成してます。 まだFLVについて未熟者なもので、壁にぶつかる事が多いです。 是非皆さんのお力借してください。 現状は、 ADOBE PREMIERで作成したFLV(1MBほど)をFLASHに入れて、SWFを作成しました。これをMOVIE1.SWFとします。FLVは、MEDIADISPLAYのプログレッシブダウンロードで読み込まれていて、再生ボタンなどはついていません。単に再生するだけの状態です。 そして、このMOVIE1.SWFをメインのSWF(MAIN.SWF)の途中で読ませています。 が、どうしてもFLVを含むMOVIE1.SWFが読み込まれている時、MAIN.SWFの動きが遅くなるんです。 いろいろ自分なりに考えて、 1)FLVのバッファリングを設定した 2)MEDIADISPLAYをFLVPLAYBACKコンポーネント又は、埋め込みビデオに変えた 3)外部FLVファイルをプリロードさせた 4)HTML上に<param name="wmode" value="opaque" />タグを入れた けど、どれを試しても解決しません。 残るはストリーミングを試そうと思っているのですが、他に解決の方法ありませんか? 天のお声ください!お願いします。

  • FlashMx 外部swfの操作方法

    Flashをはじめたばかりの初心者です。 mainのswfから外部のswfを読み込み、その読み込んだ外部swfの状態(変数)をみて変更したり操作(外部がわのms内objの位置変更など)したいのですが、外部swfをロードすることはできたのですが、そのロードしたswfを読み込み元のmainから変数、またはfunctionを操作したいのですがどうもうまくいきませんでした。(_level1.変数 や関数で呼び出したりしてみたのですがダメでした) こういう場合どうやって操作すればいいのかおしえていただきたいのですがよろしくお願いします。 PS.外部swfは同ディレクトリ内に置いてます。

    • ベストアンサー
    • CSS
  • 外部swfが表示されません

    FLASH初心者です。 いろいろと調べながら、外部swfを取り込んだswfの作成にチャレンジしています。 今連続する外部swf(子swf)を a.swf b.swf c.swf として作成し、それらを表示させるための親swfを下記のように作成しているのですが表示されません。 親swf作成の作業としては 1.a.swfを外部から取り込んで表示させるためにムービークリップを作成 『挿入』⇒『新規シンボル』⇒『新規シンボルの作成』で名前:mc1 タイプ:ムービークリップとしてシンボルを作成。 2.b.swf、c.swfにもムービークリップを作成 1.同様にし、 b.swfのシンボル名を“mc2”、インスタンス名を“mc2” c.swfのシンボル名を“mc3”、インスタンス名を“mc3” 3.シンボル“mc1”の1フレーズ目に loadMovie("a.swf","mc1"); とアクションスクリプトを入力。 4.シンボル“mc2”、シンボル“mc3”も同様にしてそれぞれ loadMovie("b.swf","mc1"); loadMovie("b.swf","mc3"); と入力。 5.ステージ上に新規レイヤー“MC1”・“MC2”・“MC3”を作成。 6.“MC1”レイヤーをタイムライン上の1フレーズ目で『キーフレーム』に変更し、ライブラリから“mc1”をステージ上へドラッグして配置。 7.レイヤー“MC2”・レイヤー“MC3をそれぞれ12フレーズ目、24フレーズ目で同様にキーフレームを作成して“mc2”・“mc3”を配置。 子swf単体では表示されるのですが、上記の親swfはムービープレビューしても何も表示されません。 どのようにすれば子swfが親swfで表示されるようになるのでしょうか。 ちなみに子swfファイル・親swfファイルは全て同じフォルダ内にあります。 環境 OS:WindowsXP アプリケーション:FLASHI MX 7.2 よろしくお願いします。

専門家に質問してみよう