
Flash8 Win-XP で作業しています。
SharedObject を利用して計算式をFlashクッキーに「保存」「読み込み」するデータを作っていますが、「ダイナミックテキスト」の「保存」「読み込み」のスクリプトが分かりません。以下の例で教えて下さい。
aaa → テキスト入力 インスタンス名:aaa
bbb → テキスト入力 インスタンス名:bbb
ans → ダイナミックテキスト 変数:ans
btn01
の4つを同じレーヤーに作りました。
計算式は「a-b クリック(btn01) = ans」 としてあります。
フレームスクリプトとして以下を書き込みました。
aaa には、
myLocalSO=SharedObject.getLoval("flashcookie");
if(myLocalSO.data.aaa !=null)
{
aaa.text=myLocalSO.data.aaa;
}
aaa.onChanged=function ()
{
myLocalSO.data.aaa=aaa.text;
};
bbb も同様に、
if(myLocalSO.data.bbb !=null)
{
bbb.text=myLocalSO.data.bbb;
}
bbb.onChanged=function ()
{
myLocalSO.data.bbb=bbb.text;
};
ans01 も同様に、
if(myLocalSO.data.ans01 !=null)
{
ans01.text=myLocalSO.data.ans01;
}
ans01.onChanged=function ()
{
myLocalSO.data.ans01=ans01.text;
};
にしてあります。
次に同一のレイヤーに次のスクリプトを書き込みました。
function hikizan()
{
aaa_num=Number(aaa.text);
bbb_num=Number(bbb.text);
ans01=aaa_num-bbb_num;
}
そして「btn01」には、
on(release){
hikizan();
}
のスクリプトを書き込んであります。
以上のスクリプト書き込みで、HTML 上で 「500-30=470」 と計算し、HTML を「更新」しても「500」と「30」はクッキーされていて再表示されるのですが、「470」は非表示のままです。
再度「btn01」をクリックすると「470」は計算・表示されますが、この「ダイナミックテキスト」で作成されたデータのクッキー・表示の方法が分かりません。
スクリプトの間違いをご教授頂けましたら嬉しいです。宜しくお願いいたします。
No.1ベストアンサー
- 回答日時:
全体的な感想ですが
スクリプトやインスタンス1つ1つについて
もう少しヘルプを見直された方が良いように思います。
まず
ご質問の最初の方の説明には次のように書いてあります。
> ans → ダイナミックテキスト 変数:ans
しかし
その後の説明やスクリプトにはこの ans が一切出てきません。
ここで「???」状態になります。
またヘルプにも書いてありますが
Flash Player 6 以上用の SWF をパブリッシュするときには
テキストフィールド に 変数名 を付けることは「非推奨」事項になっています。
(ヘルプで「非推奨」と検索。)
ですから
答えを出力するダイナミックテキストの変数名は削除しましょう。
混乱の元になるだけです。
そして
答えを出力するダイナミックテキストには
「ans01」というインスタンス名のみを付けます。
したがってこの時点で関数 hikizan 内の
ans01=aaa_num-bbb_num;
は,
ans01.text = aaa_num - bbb_num;
のように変更する必要があります。
次に,
これもヘルプに書いてあることですが,
TextField クラスの onChanged ハンドラは,
ユーザーの操作によってTextField の値が変更された場合にのみ発動します。
スクリプトで変更されたときには発動しません。
もしこのときに発動するとイベントが無限連鎖する場合もあり得てしまいます。
またスクリプトで変更するタイミングは把握済みで
ボタン「btn01」をクリックしたときに「ans01」を変更するのですから
そのときに保存すれば良いだけです。
わざわざ
『ボタン「btn01」をクリックしたときに変化する「ans01」の変化をonChangedで感知して保存する』
みたいなすごい遠回りなことは考えなくて良いです。
あと...
SharedObject.getLoval("flashcookie");
ではなくて
SharedObject.getLocal("flashcookie");
ですよね。
というわけでフレームのスクリプト書き直し例↓
===========================
myLocalSO = SharedObject.getLocal("flashcookie");
//---aaa---
if (myLocalSO.data.aaa != null)
{
aaa.text = myLocalSO.data.aaa;
}
aaa.onChanged = function()
{
myLocalSO.data.aaa = aaa.text;
};
//---bbb---
if (myLocalSO.data.bbb != null)
{
bbb.text = myLocalSO.data.bbb;
}
bbb.onChanged = function()
{
myLocalSO.data.bbb = bbb.text;
};
//---ans01---
if (myLocalSO.data.ans01 != null)
{
ans01.text = myLocalSO.data.ans01;
}
//---関数hikizanの定義---
function hikizan()
{
aaa_num = Number(aaa.text);
bbb_num = Number(bbb.text);
//↓変更
ans01.text = aaa_num - bbb_num;
//↓ココで保存
myLocalSO.data.ans01 = ans01.text;
}
===========================
結局 SharedObject "以外" の部分に問題があるように思います。

この回答への補足
BlurFiltan 様
遅くなりましたが大変有難うございました。ご指摘のとおり、
> ans01.text = aaa_num - bbb_num;
としてダイナミックテキストを「...text」として処理いたしましたところ、「ans01.text」は「ローカル共有オブジェクト」に保存されたようで、常時表示されます。
ところで今回の制作物は複数ページがあり、それぞれの頁(タイムライン上)に例えば、
ans01.text=aaa_num-bbb_num; //1頁目
ans02.text=ccc_num-ddd_num; //2頁目
ans03.text=eee_num-fff_num; //3頁目
と計算式を設定いたしてあります。
「ans01.text」の部分を「SharedObject」を使用して「ローカル共有オブジェクト」に保存した場合には「ans01.text」がデータとして保存されましたが、「SharedObject」を使用しない場合には、1頁目の計算答え「ans01.text」は一度他のページへ行き、戻ってきたときには消えてしまうため「ans01」を「変数」として処理いたしておりました。
「SharedObject」を使用しない場合の処理は、これでよろしいのでしょうか?
改めて「スラ」を立てないままの質問ですが、ご回答いただけるようでしたら、再度ご教授をお願いいたします。
大変ご親切な解説で、スクリプトの作り直しがスムースにできました。
有難うございました。
追加質問の表示がわかりませんでしたので、解答欄にコメントを掲載してしまったような気がします。
この質問の仕方でOKでしたら、ご回答頂けましたら幸いです。
改めて御礼申し上げます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
私のコンピューター上のファイ...
-
potplayerについて質問です
-
FLASHでゲームを作っていた人は...
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
-
Flashをブロックしないで
-
ダウンロードしたデジブックはa...
-
ad or script について
-
Flashplayerの運用について
-
VBAのコンボボックスの年月表示...
-
Adobe Flash Player
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XMLの&が&に変換されない
-
ランダムに4桁の数字を表示する...
-
ver8 でのsuccess
-
AS3 時計のコロンの点滅を0.5s...
-
VBAユーザーホームテキストボッ...
-
変数に256文字以上のテキストを...
-
VB6.0で、フォームから、別のフ...
-
四乗根を英語で言うと・・・
-
photoshopで書いた四角の枠の中...
-
python ボタンを押すと複数の関...
-
テキストボックスの中身をリセ...
-
【VB.NET】別Formのボタンが押...
-
マウス自体の移動量の取得
-
VBAで改行の入ったデータの正規...
-
UWSCのBTN関数について。
-
テキストボックスにセルの値を...
-
FLASHで脱出ゲームを作る時の、...
-
テキストエリア内の文字列にリ...
-
VBScriptでMsgBoxのYesNoボック...
-
arduino プログラムについて
おすすめ情報