アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

かなり長くなってしまいました。すいません。よろしくお願いします。

A 回答 (1件)

「ビヘイビア」で挿入したスクリプトがエラーになるとは、原因がよく分かりませんが。


Ver.7.2 にアップデートする前のバージョンには、スライド(スクリーン)に関するビヘイビアにもバグがあったそうです。
ただ、階層の指定が正しくないというバグのようなので、今回の件とは直接関係はないかもしれませんが、アップデートがお済みでない場合はアップデートしてみてはいかがでしょう。
Ver.7.2 で修正されたバグの詳細は、アップデータのリリースノートをご参照ください。

 ・Macromedia Flash MX 2004 および Flash MX Professional 2004 リリースノート
  http://www.macromedia.com/support/documentation/ …


ビヘイビアでは、変数で基準となるスライドを決めることで、どの階層で 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番目のボタン)を押して、全てのフレームを移動してはいかがでしょうか。
もちろん、コピー元とコピー先とで基準点を統一できる方法があれば一番いいのですけれど、こんなことで悩んでいるくらいなら、とりあえずフレームをペーストした後で位置を直す方が早いと思います。


度々長くなりまして、すみませんでした。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!