スライドプレゼンテーション機能でのフレーム操作の問題

このQ&Aのポイント
  • スライドプレゼンテーション機能でのボタンでのフレーム操作について、シンタックスエラーや移動の問題が発生しています。
  • 30フレーム規模のアニメーションを含むムービークリップをスライドに配置すると、プレビューで途中から再生されてしまいます。
  • スライドプレゼンテーションの基準点が普通のタイプと異なり、オブジェクトの位置がずれてしまいます。
回答を見る
  • ベストアンサー

スライドプレゼンテーション機能を使ったときのボタンでのフレーム操作#2

 「次のスライド」ではなく「任意のスライド」に移動させたくて、「スライドに移動」ビヘイビアを使ってみたんですが、シンタックスエラーがでて、「')'が必要です」とでてしまいます。実際に閉じ括弧の数は合っています。スライドでの移動はタイムラインのレベルをどこに指定してもうまくいかない感じです。ビヘイビアでムービークリップのフレーム移動のダイアログボックスでは子スライドのレベルを選択できません。何か他の方法あるでしょうか?あるいは僕のが間違っているのでしょうか?  もう一つ、30フレーム規模のアニメーションで構成されたムービークリップをスライドにそのまま配置したが、プレビューでそのステージに進んだときには既にそのアニメーションがスタートしており、途中から流れてしまう。最初のスライドを開始したときに全てのスライド内の入れ子MC全てが再生開始してしまいます。スライドが入れ替わったときにスライド内で入れ子になっているMCも1フレーム目からスタートしたいです。どんなスクリプトを書けばいいのでしょうか。かなり基本的なことなはずなんですが、いろいろやってみてもだめでした。  ついでにもう一つの謎。スライドプレゼンテーションのときの基準点と普通のタイプのときの基準点が違います。スライドの基準点を左上端にしたいんですが、自動吸着で左上を選択してもそうはならない。普通のタイプでつくったタイムラインのフレームをそのままスライドプレゼンタイプにコピーアンドペーストすると、ペースト先の基準点が異なるためすべてのオブジェクトの位置がずれる。画面サイズはどちらのタイプでも同じです。スライドプレゼンの基準点を普通のタイプの基準点と同じにすることってできないんでしょうか? かなり長くなってしまいました。すいません。よろしくお願いします。

  • tda
  • お礼率66% (8/12)
  • Flash
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

「ビヘイビア」で挿入したスクリプトがエラーになるとは、原因がよく分かりませんが。 Ver.7.2 にアップデートする前のバージョンには、スライド(スクリーン)に関するビヘイビアにもバグがあったそうです。 ただ、階層の指定が正しくないというバグのようなので、今回の件とは直接関係はないかもしれませんが、アップデートがお済みでない場合はアップデートしてみてはいかがでしょう。 Ver.7.2 で修正されたバグの詳細は、アップデータのリリースノートをご参照ください。  ・Macromedia Flash MX 2004 および Flash MX Professional 2004 リリースノート   http://www.macromedia.com/support/documentation/jp/flash/mx2004/releasenotes.html ビヘイビアでは、変数で基準となるスライドを決めることで、どの階層で gotoSlide を実行しても、相対パスで移動先のスライドを正確に指定できるようになっています。 スライドを変数を使って指定する際に、変数の中身が空っぽだったり、Slide クラス以外のターゲット名が入っていたりすると、バグの原因になります。そこで、if や while で変数の値に問題がないことを確認してから、スライドを移動するようになっているのです。 スライドプレゼンテーションのテンプレートでは、一番下のルートスライドにだけ、スライドを移動するボタンが配置されています。このボタンでは、どの階層のスライドが再生されていても、必ず次のスライドや1つ前のスライドに移動できます。こうした汎用的な移動を可能にするスクリプトとなると、このように複雑になります。 「スライドに移動」のビヘイビアも、汎用的に使えるようにと組まれているので複雑になっているのですが、単に指定のスライドに移動するだけなら、移動先のターゲットパスにさえ注意すれば、gotoSlide だけでも移動できます。 例えば、スライド内のタイムラインにあるボタンでは、  on(release)  {   gotoSlide( 移動先のスライドまでのターゲットパス );  } で、移動できます。 移動先のスライドまでのターゲットパスが分からない場合は、「ターゲットパスを挿入」機能を利用してください。 「ビヘイビア」がどうしても上手くいかないようであれば、こちらをお試しください。 なお、スライド間の移動には、表示のこと・移動に伴う様々なイベントの発生などに伴い、ただ別のタイムラインに移るというだけでなく、専用の処理も必要になります。ムービークリップのフレームの移動とは性質が異なりますので、「ビヘイビア」の「フレームの移動」のダイアログでは、スライドは選択できません。 ---------------------- スライドを制御する Slide クラスは、スクリーンに関するコンポーネントを、よりスライドとして便利に制御できるようにと作られたクラスです。 コンポーネントは他にも様々な種類がありますが、その正体はいずれも、ムービーの編集画面でも編集可能なパラメータを持つ”ムービークリップ”です。 スライドにも普通のムービークリップと同様にタイムラインがあり、入れ子にしたムービークリップやボタン、はたまたスライドまでをも階層的に管理できるのも、スライドは元々がムービークリップで、これを拡張したものであるためです。 コンポーネントがムービークリップでもある以上、ムービークリップで利用できるスクリプトやイベントは、コンポーネントでも利用可能です。 (ただし、文法上は誤りでなくても、使うとコンポーネントの動作に支障をきたすスクリプトもあります) スライドでも、スライドがステージに登場した時には、ムービークリップと同様に load イベントが発生します。 ちょっと鈍くさいですけれど、スライドで load イベントが発生した時、入れ子になっているムービークリップのタイムラインを止めておくか、ムービークリップ側の load イベントを利用してタイムラインを止めておく、という方法はいかがでしょう。 止めたムービークリップのタイムラインを動かすタイミングですが。 スライドでは、そのスライドが非表示から表示に変わった時に発生する、reveal や revealChild というイベントが使えます。 「ビヘイビア」でトランジョンを追加すると分かりますが、トランジョンのスクリプトは reveal イベントを利用して呼び出されています。 トランジョンを利用しない時は、reveal イベント発生時にムービークリップのタイムラインを動かすと、スライドが切り替わるまで入れ子のムービークリップのアニメを止めておくことができます。 トランジョンを利用している場合、トランジョンの実行と同時にムービークリップのタイムラインを動かすと、画面エフェクトとアニメが重なって見苦しくなることがあります。 この場合は、トランジョンの実行が終わった場合に発生する、allTransitionsInDone (アウトのトランジョンを利用している時は allTransitionsOutDone )イベントを利用してみてください。 例えば、スライドのタイムラインに clip というムービークリップがあり、clip は複数のフレームで構成されたムービークリップだとします。 トランジョンなしの場合、スライドが切り替わるまで clip のタイムラインを止めるスクリプトは、次のようになります。 このスクリプトは、clip を配置したスライドに設定してください。 (コピーする場合は、各行頭の全角のスペースにご注意ください)  //最初はムービークリップのタイムラインを止めておく  onClipEvent(load)  {    clip.stop();  }  //スライドが切り替わった時、ムービークリップのタイムラインを動かす  on(reveal)  {   clip.play();  } トランジョンを利用している時は、「ビヘイビア」により、on(reveal) の中にトランジョンを実行するスクリプトが挿入されているかと思います。 ビヘイビアが挿入されていても構いません。先述の onClipEvent と、reveal イベントを allTransitionsInDone イベントに変えた on アクションを追加してください。 スライド機能は、_root のタイムラインのフレーム1にスライド用のコンポーネントを配置することで実現されています。 コンポーネントはムービークリップを拡張したものですから、_root のフレーム1にムービークリップがいくつも重なって配置されているようなものと考えると、分かりやすいかもしれません。 再生されていないスライドのタイムラインは、基本的にはフレーム1で再生ヘッドが止まっており、再生されるまでは非表示になっていて見えないだけで、ステージに存在はしています。 普通のムービーでも、親のタイムラインが止まっていても、フレームに存在する子のムービークリップのタイムラインは、特に指示がない限りは再生され続けます。 スライドで、入れ子になったムービークリップのアニメが勝手に再生されるのは、この仕様によるものだと思います。 スライドが非表示になっている間、スライドのタイムラインはフレーム1で止まっていても、フレーム1に配置されたムービークリップのタイムラインは動いています。そのため、スライドが切り替わって表示状態になった時には、ムービークリップのアニメが既に始まってしまっているという、奇妙な現象が起きるのだと思われます。 ---------------------- 基準点のズレを直す、直接の方法ではありませんが。 「フレームのコピー」→「フレームのペースト」で必要なフレームを全て貼り付けた後、「複数フレーム編集」ボタン(タイムラインの下に並んでいる5つのボタンの、右から2番目のボタン)を押して、全てのフレームを移動してはいかがでしょうか。 もちろん、コピー元とコピー先とで基準点を統一できる方法があれば一番いいのですけれど、こんなことで悩んでいるくらいなら、とりあえずフレームをペーストした後で位置を直す方が早いと思います。 度々長くなりまして、すみませんでした。

関連する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] 一度スライドをボタンで選択しても、違うスライドを選択した時点で前のスライドのスクリプトを無効なりに制御する方法はありませんでしょうか?何卒、よろしくお願いいたします。

  • ターゲットパスでフレーム指定はできますか

    FlashCS3で作業中です。 メインタイムラインの中の、6フレーム目にsyousai6というムービークリップがあります。9フレーム目にsyousai9というムービークリップがあります。 このsyousai9の中の2フレーム目にボタンを設置し、押したらsyousai6の9フレーム目に画面が切り替わるようにしたいのですが、ビヘイビアパネル>ムービークリップ>フレームまたはラベルへ移動して再生を停止 で、 on (release) { //Movieclip GotoAndStop Behavior this._parent.syousai6.gotoAndStop("9"); //End Behavior } と記述しても無反応です。絶対パスにしても結果は同じでした。どこか記述が間違っていますでしょうか?

  • ActionScript3.0フレーム移動について

    お世話になります。 Flash ActionScript3.0で、ボタンをクリックしたら、 階層違いのシーンに移動するという 単純なところでつまずいています。 一番上の階層には、 1フレーム目 フレームラベル "a" 2フレーム目 フレームラベル "b" として、それぞれ this.stop();を書いてあります。 "a""b"には、それぞれムービークリップが配置してあって、 今やりたいことは、"a"に配置してあるムービークリップの 2つ下(中?)の階層にあるボタンをクリックしたら、一番上の階層の"b"に移動して、 "b"に配置してあるムービークリップを表示するようにしたいのです。 "a"のムービークリップのボタンのあるフレームには、 this.stop(); button01.addEventListener(MouseEvent.CLICK,jumpB); function jumpB(event:MouseEvent):void { MovieClip(parent.parent).gotoAndStop("b"); } と書いてみましたが、 [TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。] と怒られます。 試しに MovieClip(stage).gotoAndStop("b"); とか、"b"に配置してあるムービークリップにインスタンス名"b_mc"を与えて MovieClip(parent.parent).b_mc.play(); などと苦し紛れにやってみましたが、すべて同じように怒られます。 どのようにすれば、下の階層から一番上の階層の別フレームに 移動することができますでしょうか? よろしくお願い致します。

  • ActionScriptで、押したボタンの判別方法を教えてください。

    ActionScriptで、押したボタンの判別方法を教えてください。 ActionScript3.0で作成しています。 6フレームの【oya_mc】というムービークリップの各フレームに フレーム1ラベル[m1]に【ko1_mc】 フレーム2ラベル[m2]に【ko2_mc】 フレーム3ラベル[m3]に【ko3_mc】 フレーム4ラベル[m4]に【ko4_mc】 フレーム5ラベル[m5]に【ko5_mc】 フレーム6ラベル[m6]に【ko6_mc】 というムービークリップを配置しています。 配置しているムービークリップには、それぞれ6個のボタンを呼び出して配置しています。 【btn1】【btn2】【btn3】【btn4】【btn5】【btn6】 【btn3】を押したときに【oya_mc】を3フレーム目に移動。 【btn6】を押したときに【oya_mc】を6フレーム目に移動。 というようにしたいのですが、なかなかうまくいきません。 FLASH初心者ですが、どうかご指導よろしくお願いします。 【ko1_mc】に書いたスクリプトを抜粋して書きます。 ------- for(var i:int = 1; i <= 6; i++){ this["btn" + i].addEventListener(MouseEvent.CLICK,Down); function Down(mo:Event):void{ MovieClip(parent).gotoAndPlay("m"+i); } } ------- よろしくお願いします。

    • ベストアンサー
    • Flash
  • Flash、ボタンが動かない!?

    Flashでコンテンツ制作中です。 ボタンが思うとおりに動きません。 まず、シーン1上に、レイヤー10枚400フレームほどでアニメーションを作っています。 まずは、あるボタンをクリックすると、他のフレームに移動するように作っています(移動はすべてフレームラベルをつけて移動しています)。 移動先はアニメーションなのでシンボルでアニメーションクリップ化しています。 そのアニメーションクリップはいくつかのボタンの集合体です。ボタンをクリックするとまた別のフレームに飛ばしたいのですが、うまく出来ません。 ボタン自体が動いていないわけではありませんでした。 on (release) {getURL("http://www.~~/");}にするとちゃんとページを表示します。 on (release) {gotoAndPlay("main");}とすると移動しません。 on (release) {gotoAndPlay("シーン 1", "main");} でもダメでした。 ラベルのスペル間違えではないとした場合、他に何かダメな理由が考えられることはありますか? よろしくお願いします。

  • ボタンによるムービークリップ移動

    flashmx2004/actionscript2.0です。 ボタンにrollOverすると、別の場所にあるムービークリップが所定の位置まで移動する、と言う動きをさせたいと思っています。 ムービークリップがMC1としますと、単純にボタンに MC1._x=0; MC1._y=0; と指定したらその位置に移動はしますが、これのように瞬時に移動ではなく、動きがわかる程度のスピードで動くようにしたいのです。 イメージとしましては画像の上にシャッターのように次の画像が来る形にしたいのです。 フレームをあまり使わず、可能であればボタン1個で動作させたいのですが、どうにも手詰まりです。 ご教授戴ければ幸いです。

    • ベストアンサー
    • Flash
  • ムービークリップの制御について

    スクリプト初心者です。 ムービークリップの制御について、まったくわからず困っています (1)シーン1、5フレーム目にムービークリップ、インスタンス名a_mc配置 (2)a_mcの中にb_mc配置。b_mcをクリックすると→a_mcの1フレーム目に移動。もう1度b_mcクリックすると→a_mcの10フレーム目に移動。もう1度b_mcをクリックすると→a_mcの1フレーム目に移動・・・と、 b_mcをクリックするごとにa_mcの1フレーム目、10フレーム目、1フレーム目・・繰り返す制御をしたいのですが。。 どなたか分かる方いましたら 教えてください!!

  • キーボードで複数のMCを操作するには・・・

    FLASH初心者です。 色々検索してみたり試したりしたんですが、上手くいかなかったのでこの場を借りて質問させていただきます。 分かりにくい部分があったら申し訳ありません。 今、キーボードを使って複数のムービークリップを制御するFLASHを作成しているのですが、 画面上に複数のMCが配置してあって、その1フレーム目を何もない状態にし、2フレーム目からアニメーションが開始するようになっています。 キーを押してアニメーションが再生するところまではできたのですが、"A"に対応するMCを動かしたあと"B"に対応したMCを動かすと"A”のMCが消えてしまいます。 一度読み込んだMCを消えないようにするにはどうしたらいいでしょうか。 MCには下記のようにかきこんでいます。 onClipEvent (keyDown) { this.gotoAndStop(1); if (Key.isDown(66)) { this.gotoAndPlay(2); } } 深度のせいなのだろうかと思うのですが、いまいち深度をどう定義していいものか理解できず苦戦しております。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 外部swfのフレームを指定して読み込み

    あるムービークリップ(mc1とします)に外部swf(001.swfとします) を読み込むことはできるのですが、 mc1に001.swfを読み込み、001.swfの50フレーム目から再生ということは可能でしょうか。 いろいろと調べたのですが、どうしてもうまくいきませんでした。 ボタンを作りボタンを押したら読み込み50フレーム目から再生という指示を書いたのですが、、、 on (press) { _root.mc1.loadMovie("top.swf"); _root.mc1.gotoAndPlay(50); } 1フレーム目から再生されてしまいます。

  • Flash フレームを指定してムービークリップ再生

    ActionScript超初心者です。 よろしくお願いします。 ステージ上にボタン「A」「B」「C」を配置、 ボタン脇のスペースにムービークリップを配置、各ボタンで切り替え再生させたいと思っています。 2フレーム目に簡単なアニメーションのムービークリップ「animA」を、 3フレーム目に同様の「animB」4フレーム目に「animC」を配置し、 各ボタンon (release)で各ムービークリップの再生をしたいのですが うまくいきません。 どこにどのようなスクリプトを書けば良いか教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Flash

専門家に質問してみよう