フレーム間移動時に変数を保存しておく方法
Windows-XP、Flash8 で作業しています。
フレーム#1に下記の算式を作ってあります
a - b = c h - i → j
d - e = f k - l → m
c + f = g n
この内 a b d e は「テキスト入力・変数名はそれぞれ a b d e 」に設定して、c f g h i j k l m n は「ダイナミックテキスト・変数名はそれぞれ「c f g …… n」と設定しました。
a~gで計算した結果をh~nに代入して「計算の控え」とします。
同じくフレーム#2には下記の算式を作りました。
a1 - b1 = c1 h1 - i1 → j1
d1 - e1 = f1 k1 - l1 → m1
c1 + f1 = g1 n1
a1~e1は「テキスト入力・変数名はそれぞれ a b d e 」、g1~n1は全て「ダイナミックテキスト・変数名はg1 h1 …n1」と設定します。そして、a1~g1で計算した結果は、フレーム#1のh~nでの各項目と「足し算」をして、フレーム#2のh1~n1に「累計額」として表示させます。
即ち、各フレームで「a~g」の計算をして、フレームが増えてゆく毎に前フレームの「a~g」欄を累積加算して「h~n」欄に累計を表示してゆくデータを作っています。
■フレームのスクリプトに、
a = b = d = e = "";
function Keisan() {
var a_num,b_num,d_num,e_num;
a_num = a = (a == "") ? 0 : getNumber(a);
b_num = b = (b == "") ? 0 : getNumber(b);
d_num = d = (d == "") ? 0 : getNumber(d);
e_num = e = (e == "") ? 0 : getNumber(e);
c = c_num = a_num - b_num;
f = f_num = d_num - e_num;
g = c_num + f_num;
return g;
}
function getNumber(val){
if(val.indexOf("<") > -1){
val = val.toUpperCase();
val = val.substring(val.indexOf('">',val.indexOf('KERNING')) + 2,val.lastIndexOf('</FONT'));
}
return Math.abs(val);
}
■それぞれの「=」にボタンスクリプトとして、
on(Release){
Keisan();
}
を書き込み、「a b d e」「a1 b1 d1 e1」が空欄時であっても「Nan」の出現を防ぐ処理をいたしました。
ところが、「フレーム#1 → フレーム#2」で「フレーム#2」のデータ作成後、「フレーム#1」に戻ると「フレーム#1」でのデータの内「a b d e」が消去されてしまいます。
フレームスクリプトでの「a = b = d = e = "";」が理由と思われますが、「フレーム#1」に戻った時でも「a b d e」のデータを残す必要があります。
【フレーム間移動時に変数を保存しておく方法】での処理が必要のようですが、その処理方法がわかりません。ご教授頂ければと思います。
No.1ベストアンサー
- 回答日時:
> 「a = b = d = e = "";」が理由と思われますが、
ということでしたら,
a = b = d = e = "";
この部分↑を次のように↓変更すれば良いと思います。
//もし変数 stat_flag の値が未定義であれば
if (stat_flag == undefined) {
//変数 a,b,c,d の値を空白文字にして
a = b = d = e = "";
//変数 stat_flag の値を true にする
start_flag = true;
}
Flash Player 7 以上用 SWF をパブリッシュする場合
値を代入していない変数の値は「undefined」 になります。
※Flash Player 6 以下でも基本的には 「undefined」 ですが
あえて計算などをしようとすると
自動的に 0 または ""(空白文字列) として扱われます。
--- ちなみに ------------------
テキストフィールド の変数名は
Flash Player 4 用の SWF や Flash Lite 1.x 用の SWF をパブリッシュするときのみに使う機能(すごく古い機能)で,
それより後のバージョン用 SWF をパブリッシュする場合は 非推奨 になっています。
(簡単に言えば,通常はテキストフィールド に変数名を付けてはいけません。)
Flash Player 6 以上用の SWF をパブリッシュするときは
テキストフィールド には変数名を付けず,インスタンス名を付けて
テキストフィールド インスタンス.text でその値にアクセスするようにします。
・例1
//変数a_num に テキストフィールド a の値を代入
var a_num = Number(a.text);
・例2
//テキストフィールド a に変数a_num の値を表示
a.text = a_num;
※ Flash 8 のヘルプで
「変数名 ダイナミックテキスト」などと検索すると
上記に関する事項がたくさん出てきます。
※ ActionScript 3.0 などでは
var my_txt:TextField = new TextField();
のように
テキストフィールドに変数を当てて使うことが良くありますが
これは全く意味が違います。
ActionScript 3.0 などでの変数は
テキストフィールドインスタンスを参照する変数であって
テキストフィールド内に示された値の入れ物ではありません。
ActionScript 1.0(通常) でも 2.0 でも 3.0 でも
「テキストフィールド」は「インスタンス」として扱うべきものです。
その「テキストフィールドインスタンス」の「text」プロパティが
テキストフィールドに表示されている文字列プロパティです。
ご連絡とお礼が遅れまして大変失礼いたしました。
>if (stat_flag == undefined) {
以下を追加したスクリプトでフレーム間の移動に伴うデータの抹消が解消されました。
実際のデータ画面では、「フレーム間移動」を行うデータが複数ありましたので、当初「stat_flag」一本で処理をしていて混乱いたしました。データ各一つに対して「stat_flag」に「stat_flag01」「stat_flag02」「…」としましたら、全部に対応してくれました。(実はここに至までに時間が必要だったのですが、)
ご親切な解説共々大変有難うございました。利用させていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のアプリケーションのテキス...
-
変数に256文字以上のテキストを...
-
[VBS] 自分自身が改竄されてい...
-
IP Address 入力フォームについて
-
HTMLのtextbox類に文字を残す
-
テキストボックスの中身をリセ...
-
エディットボックス内での追記
-
stringのデータ型はメモ型とテ...
-
テキストエリア内の文字列にリ...
-
Access2000 実行時エラー '3061':
-
改行含むテキストの表示の仕方
-
POIでのテキストボックス作成に...
-
修正候補:エラー
-
テキストボックスにセルの値を...
-
python ボタンを押すと複数の関...
-
VBScriptでMsgBoxのYesNoボック...
-
photoshopで書いた四角の枠の中...
-
Excel VBA によるマウス操作
-
C# chart controlの透過について
-
ラグランジュ補間のプログラムです
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスの中身をリセ...
-
テキストボックスにセルの値を...
-
別のアプリケーションのテキス...
-
変数に256文字以上のテキストを...
-
VB6.0 でメニューを作りたいん...
-
全てのテキストボックスをセル...
-
VB.NETで数十行のプログラムを...
-
pdfのテキスト全文コピー、テキ...
-
PDFからepubに変換するウェブサ...
-
RPG(AS400)の本、サイトってあ...
-
'2465'指定した式で参照してい...
-
VBSでMid関数を使ったらエラー...
-
外部テキストのタグ
-
flashでテキストの表示
-
IP Address 入力フォームについて
-
DirectXでの読み込みについて
-
コモンダイアログのshowopenに...
-
VB.NET2005 DataGridViewでレコ...
-
多言語を混在できるか。
-
漢字入力した値のカタカナ変換...
おすすめ情報