重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

はじめまして。
現在ActionScriptを勉強中なのですが、ここの掲示板を見てもわからない部分があった為質問させてください。

1、シーンの結合
一連の流れをわかりやすくするため、いくつかのシーンをわけて作業していました。
これらのシーンをひとつのフレームに繋げる事はできるのでしょうか?
例)「シーン1」の最終フレームの続きに「シーン2」、「シーン2」の最終フレームの続きに「シーン3」を繋げる。

いくつか試してみたのですが、多数のフレームを一度にコピペは出来ない上に、ひとつのフレームだけコピペしても1フレーム目から配置されてしまい最終フレームの後に持っていくのですべてやろうとすると手間がかかりすぎでした。


2、ActionScriptでのシーンの指定方法
ボタンで飛ばす方法の質問はあったので、それを見つつ試したのですができませんでした。
私がやろうとしている事は、ボタンが押されたら飛ばすのではなく、ActionScriptでイベント開催日からの残り日数を計算し、その残り日数に応じて指定したシーンに飛ばす。というものです。
同じタイムライン上の指定したフレームに飛ばす事はできたのですが、別のシーンに飛ばそうとすると止まってしまいます。
ボタンでないとシーンを指定して飛ばす事は出来ないのでしょうか?

シーン1の最終フレームに以下のActionScriptを記述してあります。
※main2などは、それぞれのシーンの1フレーム目にフレームラベルとして同一の物を書いてあります。

this.stop();
dtObj=new Date();
dd=dtObj.getDate();
eventDay=31;
dayCount=eventDay-dd;

if(dayCount>3){
gotoAndPlay( "シーン2".main2);
}

if(dayCount=3){
gotoAndPlay( "シーン3".main3);
}

if(dayCount=2){
gotoAndPlay( "シーン4".main4);
}

if(dayCount=1){
gotoAndPlay( "シーン5".main5);
}

よろしくお願いします。

A 回答 (1件)

まず、シーンの結合についてですが。


タイムラインでどこか一箇所(どこでも構いません)を選択した状態で、右クリック( Mac では control +クリック)でメニューを出します。
この中から「すべてのフレームを選択」を選ぶと、全てのレイヤーに含まれるフレームを、一度に全部選択することができます。
続けて「フレームのコピー」を選び、結合したいシーンの最後のフレームを選択した状態で同じく右クリックのメニューを出し、「フレームのペースト」を選択してください。2つのシーンを簡単に結合できます。
コピー元のシーンは不要になりますから、「シーン」パネル(「ウィンドウ」メニュー、MX 2004 ではその中の「デザインパネル」の中にあります)で削除しておくといいでしょう。

------------------------

gotoAndPlay には、シーンを移動できるものとできないものの2種類があります。
シーンの移動は、メインのタイムラインのフレームか、ステージに配置したボタンシンボルのインスタンスでのみ、利用できます。


メインのタイムラインに設定しているのにシーンの移動ができないとなると、スクリプトの方に問題があることになります。
よくあるのが、シーンの名前が間違っている場合です。
シーンを追加すると、「シーン 1 」「シーン 2 」というように、仮の名前が付いたシーンが挿入されます。
この名前が意外にクセモノで、”シーン”の文字と番号の間には半角のスペースが入っています。
また、番号は半角の数字です。
番号を全角にしたり、半角のスペースが抜けていると、移動先のシーンが見付からないことになり、正常に移動できません。
シーンの名前は「シーン」パネルで予め分かりやすい名前に変えておくと、間違いも少なくなります。


ご質問文のスクリプトでは、

 gotoAndPlay( "シーン2".main2);

となっていますが。
例えばシーン 2 のフレームラベル” main2 ”のあるフレームに移動する場合のスクリプトは、

 gotoAndPlay( "シーン 2" , "main2" );

このようになります。
シーンの指定とフレームラベルの指定の区切りがカンマ( , )ではなくピリオド( . )になっている点と、フレームラベルを " " でくくっていない点がまず1つの原因です。

それから、変数 dayCount の値がある値であるかどうかを判断する場合は、

 if( dayCount == 3 )

このように、イコール( = )を2つ続けて書きます。
イコールが1つの時は、値を変数に代入するという意味になります。
例えば、

 dayCount = eventDay - dd;

これは、変数 eventDay の値から dd の値を引いた結果を dayCount に入れる、という意味になっています。


以上の点を確認してみてください。
    • good
    • 0
この回答へのお礼

ご返事どうもありがとうございます。

指摘された点を修正して試してみたところ無事動きました。
こんな基本的な部分が間違っていたとは・・・
おかげさまでシーンを利用したFLASH作成が格段に楽になりました!
これからももっと勉強して知識を増やしていきたいと思います。

あと、動作環境を書かずにどうもスミマセンでした。
質問の事ばかりで、すっかり頭から抜けていました。
(ちなみにMX2004、WINでした。)
今後質問する場合は気を付けたいと思います。

DPEさん本当にありがとうございました。

お礼日時:2005/03/25 10:38

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