• 締切済み

スライドの表示とアクションスクリプトの関連

こんにちわ。 現在、プレゼン風のスライドを作成しております。 親スライドがあり、その下に子スライドを数個作成しております。また、その子スライドにアクションを配置した仕様にしております。 また、アクションは、以前にこちらのサイトで教えていただきました、時間指定のアクションなのですが、子スライド2が表示されて数秒後に子スライド2内の指定のフレームに移動するアクションスクリプトを記述しています。というか、そういう風にしたいと想っています。 親スライド   |   子スライド1ー静止画   |   子スライド2-時間指定のスクリプト this.stop(); timerID = setInterval(startMovie, 28000); timerID2 = setInterval(startMovie2, 31000); function startMovie() { gotoAndPlay(5); clearInterval(timerID); } function startMovie2() { gotoAndPlay(10); clearInterval(timerID2); } 上記スクリプトは、子スライド2内の1フレーム目に記述しています。 また、各スライドの切り替えは、mediaDisplayのパラメーターで映像に合わせて、時間指定で切り替えています。 上記、スクリプトは稼動するのですが、スライド2が表示されてからではなく、全体が再生されてからの時間で動いてしまいます。 ですので、スライド1が表示されている裏でスライド2のアクションが動いてる感じです。 スライド2が表示されてから、アクションスクリプトが動くようになるには、どういう風に指定すればよいのでしょうか? ほかのとこでも聞いたのですが、ちょっと利き方が悪いのか、お返事がなくて。。。

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

みんなの回答

noname#35109
noname#35109
回答No.1

推測ですが, おそらく返事がなかったのは, プレゼン とか スライド とかいう言葉を使うからではないでしょうか。 Flash MX 2004 以降, 「新規ドキュメント作成」以外に,プレゼンのスライドを作成するとか色々なモードがあるのです。 そのプレゼンのスライドではそもそも gotoAndPlay() などが容易に使えないはずなのに, >> 上記、スクリプトは稼動するのですが、 とか書かれているので,再現不可能&理解不能で, はて?はて?はて????…現象になっているのだと思います。 という私も, はて?はて?はて????…現象で, よくわからないのですが, プレゼン とか スライド とかはどうでも良いのでしょう? とにかく,そういうことは関係なくて, 「28秒後に function startMovie() が実行され, "その",31秒後に function startMovie2() が実行」 されればいいわけですよね(この解釈にかなり自信なし)。 その,勝手な解釈, 「28秒後に function startMovie() が実行され, "その",31秒後に function startMovie2() が実行される」 方法を回答します。 一応,3つ方法を思いつきました。 1 最も簡単な方法 28000 + 31000 = 59000 ですから, timerID = setInterval(startMovie, 28000); timerID2 = setInterval(startMovie2, 59000); にする。 簡単でしょう。というより,これは思いつかれていると思います。 これではダメなのでしょうか? 2 普通の方法 最初のフレームに, this.stop(); timerID = setInterval(startMovie, 28000); function startMovie() { gotoAndPlay(5); clearInterval(timerID); } と書いておいて, この function startMovie() で飛んだ先のフレーム(つまり5フレーム目)に, this.stop(); timerID2 = setInterval(startMovie2, 31000); function startMovie2() { gotoAndPlay(10); clearInterval(timerID2); } と書く。 これが最も一般的だと思います。 ○フレームに行ったら setInterval をセットする。 という風にしておけば, 途中でフレームを止めたいとかいう場合が出てきても,大丈夫です。 でも,これも普通はすぐに思いつきますよね。 フレーム1 まとめて書くという不思議なことをする前に, こちらをまず思いつくはずですから。 だから,フレーム1 に書かなければならない何か特別な意味があるのだと推測します。 3 setInterval を function に入れて実行しなおす -------------------------------- this.stop(); function startMovie() { gotoAndPlay(5); // Interval をクリアしたあとに clearInterval(timerID); // 再度 setInt を実行 setInt("startMovie2", 31000); } function startMovie2() { gotoAndPlay(10); clearInterval(timerID); } // ユーザ定義関数 setInt の定義 function setInt(func, msec) { timerID = setInterval(_root[func], msec); } // setInt を最初に実行 setInt("startMovie", 28000); -------------------------------- setInterval( 引数1, 引数2); この 引数1 は直接関数名を書かなければなりませんから,変数は使えません。 そこで,[ ] (配列アクセス演算子) を使って func というのは関数名ではなく,変数ですよという意味にしてあります。 他ではあまり見ることのないであろう独特の技です。 setInterval で実行する 関数や,インターバルを動的に変更させていますから, timerID2 = setInterval… は不要です。 プレゼン と スライド の意味がぜんぜんわかっていないので, 全く自信はありませんが, 一応,setInterval の使い方に関することについて回答させていただきました。

tsuyoshi28
質問者

お礼

sassakunさま ありがとうございます。 私のお伝えの仕方が悪く申し訳ありません。 今回したかったことは、FLASH8のスライドプレゼンテーション機能を もちいて、その中でスライドが切り替わってから、指定時間後にフレームを移動させるといったものでした。 イメージとしては、こんな感じです。 http://www.bs-jp.com/pre.pdf ただ、ほかのサイトでも質問したところ、解決いたしました。 フレームにスクリプトを埋めるのではなく、スクリーンに配置することによって、解決いたしました。 このたびは、まことにありがとうございます。

関連するQ&A

  • スライドプレゼンテーション機能を使ったときのボタンでのスライド移動

    こんにちわ。 FLASH8のスライドプレゼンテーション機能を使用して、映像とリンクしたプレゼンテーションを作成しています。 仕様としては、各スクリーンにフレームアクションを作成し、 各スクリーンにスクリプトを記述し、フレームを時間制御しています。 スクリーンの時間制御スクリプト: on (reveal) { timerID3 = setInterval(startMovie3, 31000); timerID4 = setInterval(startMovie4, 38000); function startMovie3() { trace("31秒待った"); trace([currentSlide, currentSlide.gotoNextSlide]); // 確認用に追加 rootSlide.currentSlide.gotoAndPlay(10); clearInterval(timerID3); } function startMovie4() { trace("38秒待った"); trace([currentSlide, currentSlide.gotoNextSlide]); // 確認用に追加 rootSlide.currentSlide.gotoAndPlay(15); clearInterval(timerID4);} } 上記をスクリーンに記述して、各スライドのフレームを制御しています。状況としては、こんな感じなのですが、問題は、一度ボタンでスライドを移動し、そのスクリプトの全ての時間指定が終了する前に、違うスライドへボタンで移動した場合、前のスライドのスクリーンに記述した時間指定のスクリプトも一緒に裏で動き前のスライドに記述した時間にあわせて、現表示されているフレームも稼動してしまいます。 トレースの状況としては、 28秒待った _level0.bg.controls.slide02,[type Function] 31秒待った _level0.bg.controls.slide02,[type Function] 37秒待った null,undefined 38秒待った _level0.bg.controls.slide02,[type Function] 一度スライドをボタンで選択しても、違うスライドを選択した時点で前のスライドのスクリプトを無効なりに制御する方法はありませんでしょうか?何卒、よろしくお願いいたします。

  • 一定時間が経過した後のフレーム移動について

    Flash初心者です。うまく質問したいことが伝わるか心配ですが、どうぞ宜しくお願いします。 タブメニュー型のムービーを作成していまして、10秒経過すると次のタブが開き、 また10秒すると次のタブが開く…。このループです。 タブの数は4つ。1フレームごとにそれぞれのタブが開いているように画像で見せておいて(計4フレームを使用)、 スクリプトで10秒の間隔をおき、次のフレームに移動させる仕組みになっています。 タブにはクリックできるようにボタンが仕込んであり、クリックするとムービーの流れ(再生されている順)に関係なく、 そのタブに移動します(2つ目のタブなら2フレーム目を再生)。 (タブの部分のテキスト、タブが開いたときに表示されるバナー画像は外部読み込みになっています。 ただ、この外部読み込みに関しては質問の内容に影響しないと思いますので詳しくは説明しないでおきます。) スクリプトは下記のとおりです。(注:教えて!gooにあったものを使わせていただきました。) ※1フレーム目 --------------------------------------------------------------------- this.stop(); timerID = setInterval(startMovie, 10000); function startMovie() { gotoAndPlay(2); clearInterval(timerID); } ※2フレーム目 --------------------------------------------------------------------- this.stop(); timerID2 = setInterval(startMovie2, 10000); function startMovie2() { gotoAndPlay(3); clearInterval(timerID2); } ※3フレーム目 --------------------------------------------------------------------- this.stop(); timerID3 = setInterval(startMovie3, 10000); function startMovie3() { gotoAndPlay(4); clearInterval(timerID3); } ※4フレーム目 --------------------------------------------------------------------- this.stop(); timerID4 = setInterval(startMovie4, 10000); function startMovie4() { gotoAndPlay(1); clearInterval(timerID4); } これでちゃんと10秒経過すると次のフレームに移動し、それがループされるのですが 問題は、途中で順に再生されているタブと違うタブをクリックしたときに起こります。 一度、その再生順がクリックすることによって変わってしまうと、元々の『10秒後に次のフレームへの移動』の動きと、 クリックされたタブから『10秒後に次のフレームへの移動』の動きが重複しているようなんです。 ちゃんと確認できたわけではありませんが、複数回これを繰り返すと4つのタブがかなりの速度でパッパッパと遷移し、 まともに見ることすらできないものになってしまいます。 解決したいのは、クリックしたタブ(移動したフレーム)から新たに10秒がカウントされ、10秒後には次のフレームに移動し 10秒経過する前に他のタブをクリックしたときでも、そのタブ(フレーム)に移動してからまた新たに10秒がカウントされる…。 このようにするにはどうしたらいいでしょうか? どうぞご教示ください。

  • 数秒後に別フレームにとばす方法

    1フレーム目で画像を読み込み10秒表示させた後に2フレーム目でまた10秒表示させるといった事を試しています。 表示させる画像はムービークリップで最後の1秒でフェードアウトさせるようにしているのですが 完全にフェードアウトする前に2フレーム目に飛んでしまいます。 何か解決方法はないのでしょうか?? 1フレーム目 ---------------------------------------------------------- this.stop(); timerID = setInterval(startMovie, 10000); function startMovie() { clearInterval(timerID); gotoAndStop(2); } 2フレーム目 ---------------------------------------------------------- this.stop(); timerID = setInterval(startMovie, 10000); function startMovie() { clearInterval(timerID); gotoAndStop(1); } ちなみにgotoAndStop();を消すとそのフレームでループしますが完全にフェードアウトしてくれます…。

    • ベストアンサー
    • Flash
  • Flashのアクションスクリプトについて

    gotoAndPlayをMCに書いても指定したフレームに飛びません。ボタンに書いた場合は飛びます。MCをクリックしてgotoAndPlayを実行させたい場合、どのようなスクリプトをMCに書けばよいか教えてください。また、イベントハンドラメソッドでメインフレームに記述する場合もどのようなスクリプトを書けばよいか教えてください。よろしくおねがいたします。

  • jsのスライドショーのボタンの時間制御について

    jsのスライドショーについて質問です。 メイン画像とサムネール画像が連動していて、5秒間で次の画像及びサムネールに自動的にスライドするというものを作りました。そして、Prevボタンやnextボタンをつけ、クリックと、手動で次のスライドに移るようにしました。 これに、切り替わったスライドから5秒間止まり次の画像に切り替わるという設定を加えたいのですが、うまくいきません。自動再生中の4秒後にボタンをクリックすると、次のスライドが1秒で、また次のスライドに切り替わってしまうのです。 どうか方法を教えてください。 <スクリプト> //自動再生 var timerID = setInterval(function(){ $('#thumbsNext').click(); },5000); $('#gallery ul').hover(function(){ clearInterval(timerID); }, function(){ timerID = setInterval(show, 5000); // マウスアウト時にスライドショーを再開 }); function show(){ $('#thumbsInner').animate({ marginLeft:parseInt($('#thumbsInner').css('margin-left'))-248+'px' },'slow','swing', function(){ $('#thumbsInner').css('margin-left','-248px'); $('#thumbsInner ul li:first').appendTo('#thumbsInner ul'); $('#thumbsList .active').next().click(); }); }

  • 一定時間停止後フレーム移動

    初心者ですがよろしくお願いします。 ActionScript3.0にて 一定時間後に任意のフレームまで戻るを実行したいのですが 一定時間止まらずにフレームまで戻ってしまいます。 下記の記述は間違ってますか? 一定時間停止の記述法は色々あるみたいですが いくつかやってみたところエラーばっか出て動きませんでした。 この記述だとちゃんと停止するのですが gotoAndPlay(10); を付けると停止しません。 this.stop(); this.iid = setInterval (function (m) { m.play (); clearInterval (m.iid); }, 3000, this); gotoAndPlay(10);

    • ベストアンサー
    • Flash
  • 簡単なサンプルが動かないのはなぜ?

    超初心者です。 自力でがんばろうと、いろんなBBSの過去記事を除きやってるのですが 動きません。 たとえば //timerObjオブジェクトの設定 timerObj = new Object(); timerObj.timeout = function() { clearInterval(timerID); // インターバルの終了 }; //計測開始(5秒でタイムアウト) var timerID = setInterval(timerObj, "timeout", 5000); このようなサンプルを見つけ5秒間待つアクションを ちゃんとフレームアクションに入れました でも希望のとおり動きません。 初めは「制御」メニューのシンプルアクションをONにするのを知らずに やっていましたが、今は分かっています。 STOP(); だけのフレームアクションは利いていますので。。。 ちなみに //timerObjオブジェクトの設定 timerObj = new Object(); timerObj.timeout = function() { clearInterval(timerID); // インターバルの終了 stop(); }; //計測開始(5秒でタイムアウト) var timerID = setInterval(timerObj, "timeout", 5000); こうやってstop();をつけてもそこではとまりません。 シンタックスのエラーもないということは 何か設定かがおかしいのかもしれません。 もちろんキーフレームになっています。 もうちんぷんかんぷんです。 どなたかお助けを・・・・ VBAのソフト開発などはそれなりにしています。 なんでこんなこともわからんのか自己嫌悪になっております。

    • ベストアンサー
    • Flash
  • suzukaのスクリプトで

    suzukaでFlashを制作しております。 プログラムはさっぱりなので検索して出てきたactionscriptを切り貼りして試している状況です。 その1.フレームアクションにおいて、キーを押したら特定のフレームまで移動するスクリプトを入れたいので20フレーム目に以下のスクリプトを入れたのですが、どちらも使えませんでした。具体的な解決策はありますでしょうか。 ●[parse error]とエラーが出る this.stop(); on(keyPress ("a")){ _root.gotoAndPlay(21); } ●キーを押しても何も起こらない this.stop(); if(Key.isDown(Key.RIGHT)){ _root.gotoAndPlay(21); } else if(Key.isDown(Key.LEFT)){ _root.gotoAndPlay(31); } その2.フレームアクションの10フレーム目に this.stop(); buttonA.onPress=function(){ _root.gotoAndPlay(11); }; とボタンのスクリプトを入れると、 どこのフレームまで移動しようが 同じボタンへの命令で上書きするまで このボタンへの効果が持続されてしまうのですが、 押した瞬間に後に命令を引き継がせないスクリプトの記述はありますか?

    • ベストアンサー
    • Flash
  • setTimeoutあるいはsetIntervalの限界

    いつもお世話になっています。 タイマーの実験をしてみようかと思い、タイマー関数のサンプルをちょっと触ってみて、気になることがありました。 スクリプトとしては、次のようなものです。 <HTML> <HEAD> <SCRIPT Language="JavaScript"> <!-- timerID = 10; count = 0; function timerX(){ status = "Counter is " + count++; } function clr(){ clearInterval(timerID); } // --> </SCRIPT> <BODY bgColor="white" onLoad="timerID = setInterval('timerX()',1000);"> (以下略) このスクリプトを実行すると、1秒毎に1カウント増えていきますから、ステータスに表示される数値は10秒で10になります。 ですから、1を指定する、つまりsetInterval('timerX()',1);にすれば、論理上、10秒で10000になるはずですよね? ところが実際にステータスに出る数値はそうはならず、かなり低い数字になってしまいます。 そこで質問なのですが、setTimeoutまたはsetIntervalでタイマーを作る場合、ミリ秒はどのくらいまで有効なのでしょうか。 ひょっとして、マシンに依存するのでまちまちなのでしょうか。 経験等でご存じの方、お教えください。

  • clearIntervalの記述方法について

    よろしくお願い致します。 jQueryにて「setInterval」を使用して、オープニングムービー(?)のようなものを作りたいと思い、見よう見まねで下記のようなコードを作りました。 取りあえず動作するようになったのですが、繰り返し動作を止めるための「clearInterval」の使い方が分かりません。 この場合、どのようにコードを記述すればよいのでしょうか? お手数ですが、どうぞご教授下さいますようお願い致します。 $(document).ready(function(){ $("#A").fadeTo(0,0); $("#B").fadeTo(0,0); $("#C").fadeTo(0,0); var timerId1 = setInterval(function(){ $("#A").fadeTo(1000,1); var timerId2 = setInterval(function(){ $("#B").fadeTo(1000,1); var timerId3 = setInterval(function(){ $("#C").fadeTo(1000,1); }, 1000); }, 1000); }, 1000); });

専門家に質問してみよう