トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     SWF間でのグローバル変数の変更・参照について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
yuuyuu
Åê¹ÆNo.3561
投稿日時: 2004-2-6 11:39
常連
居住地: 茨城県
投稿: 118
使用環境:
Win2000,XP
Flash MX2004
SWF間でのグローバル変数の変更・参照について
こんにちは。

CD-ROMコンテンツを制作しているのですが、題記についてうまくいきません。内容は・・・

オープニング(L0レベル)で必要なグローバル変数を宣言しておいて、メニュー(L1)のボタンでグローバル変数に値を入れて、フォーマットswf(L0)をロードします。フォーマットswfは、始めにグローバル変数を参照し、表示する内容をロードします。
コードは以下の通りです。

■オープニング1フレーム目(L0)

_global.gPage = "" //各ページ番号

■メニュー画面ボタン(L1<--L0にはタイトル画面があります)

on(Press) {
 gPage = 1
 loadMovieNum("format.swf", 0)
 unloadMovieNum(1)
}

■フォーマット画面1フレーム目(L0)

loadMovieNum(gPage+".swf", 1);

以上です。
ここで、メニューからフォーマットswfに移動しても、内容部分がロードされないのです。グローバル変数宣言時に直接値を入れた場合はうまくいくのですが・・・。
なお、ボタンpress時にtraceするとgPageに値は入っていて、フォーマットの、内容ロード前でtraceすると何も表示されません。でも、変数生成時に値を入れておくと内容ロード前traceに値はあります。

これはどいういう現象なのでしょうか?
また、どうすれば解決できるのでしょうか。
どうか、ご教示ください。よろしくお願いします。
森 なおき
Åê¹ÆNo.3578
投稿日時: 2004-2-7 1:19
モデレータ
居住地: 福岡(心は大阪)
投稿: 527
使用環境:
:MacOSX10.6.8
:FlashCS5.5
Re: SWF間でのグローバル変数の変更・参照について
なおきです。
どうもyuuyuuさんは宣言と書かれていることから
勘違いされているような気がします。
以下のように書き換えれば正常に動作するはずです。

■メニュー画面ボタン(L1<--L0にはタイトル画面があります)

on(Press) {
 //gPage = 1;
 _global.gPage= 1;
 loadMovieNum("format.swf", 0);
 unloadMovieNum(1);
}

■フォーマット画面1フレーム目(L0)

//loadMovieNum(gPage+".swf", 1);
loadMovieNum(_global.gPage+".swf", 1);

さて、では何故、
■オープニング1フレーム目(L0)

_global.gPage = 1; //各ページ番号

などとしたときには動作したのでしょうか?
これは変数のスコープのおかげです。
偶々動いたと言ってもいいでしょう。
スコープに関しては以下の野中さんが作成されているページが
参考になります。(勝手に引用してすみません>野中さん(^^;)
http://www.fumiononaka.com/TechNotes/Flash/FN0203003.html
ただしこの説明だけでは難しいかも知れないので
それ以上は自分で探してみて下さい
一応、
_global.test = 1;
trace(test); //1
test=2;
trace(test); //2
trace(_global.test); //1

以下のコードの動作を冷静に見つめればわかるんじゃないでしょうか?

ところでスクリプトに「;」が結構ぬけてるので
つける癖をつけておいた方がいいと思いますよ。


----------------
な お き
Dev.:MacOSX+FlashCS5.5
View:---

yuuyuu
Åê¹ÆNo.3630
投稿日時: 2004-2-9 22:25
常連
居住地: 茨城県
投稿: 118
使用環境:
Win2000,XP
Flash MX2004
Re: SWF間でのグローバル変数の変更・参照について
naoki様

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

教えて頂きました通りでうまくいきました。
いままでグローバル変数は一度作ってしまえばあとは変数名のみでいいと思っていました。
どうやら、それまではおっしゃられる通り、フォーカスの関係で偶々機能していたようです。それを変数名のみでOKとカン違いしていたのですね。

間違いに気づかせて頂きましてありがとうございました。


Flashのスクリプトウインドウの自動フォーマットボタンに頼りすぎていたのでもので・・・(^^;
いけないですね。意識して自分でつけるようにします。
引用:

ところでスクリプトに「;」が結構ぬけてるので
つける癖をつけておいた方がいいと思いますよ。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops