フレーム間移動時に変数を保存しておく方法
フレーム間移動時に変数を保存しておく方法
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」のデータを残す必要があります。
【フレーム間移動時に変数を保存しておく方法】での処理が必要のようですが、その処理方法がわかりません。ご教授頂ければと思います。
お礼
他を調べてようやく理解できました。 有難うございます。