• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:難関にぶつかりました )

初心者がActionScript 2.0で難関にぶつかる!

このQ&Aのポイント
  • 初心者がActionScript 2.0を学ぶのは困難です。参考書でも理解するのが難しいため、困っています。
  • 四つのボタンがあり、キーボードのTabキーを使ってボタンを選択し、Enterキーでボタンをクリックする仕組みです。特に「B」ボタンが重要な情報をサーバに送信します。
  • さらにEnterキーを押すと次のページに進むことができます。初心者の私には理解が難しい部分があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • joy_28
  • ベストアンサー率84% (45/53)
回答No.2

totorojpさん、 総じて、難しくしてるような気がしますが、 3)、最後、もう一回Enterキーを押下すると、「次」ボタンと連動して次のページへ進みます。 → ここは、あまり考えてないので、ご自分で考えて頂くとして、以下でいかがでしょうか? ■fla側:2フレームから構成し、第一フレーム目のscriptレイヤーに、以下を記載します。 //ここから this.stop(); _txt.text = "";//サーバーサイドのPHPから返信を表示するダイナミックテキストの設置、初期値は、ブランク var lv:LoadVars = new LoadVars(); lv.onLoad = function(success:Boolean) { if (success) { _txt.text = this.mess;//PHP処理結果の&mess=XXXXX&のXXXを代入 } else { _txt.text = "ロード失敗"; } }; /*こっちの方が簡単だと思いますがね・・・ a.onRelease = function():Void { lv.sendData = "あ"; lv.sendAndLoad("./receiver.php?"+getTimer(),lv); }; b.onRelease = function():Void { lv.sendData = "い"; lv.sendAndLoad("./receiver.php?"+getTimer(),lv); }; c.onRelease = function():Void { lv.sendData = "う"; lv.sendAndLoad("./receiver.php?"+getTimer(),lv); }; */ next.onRelease = function():Void { nextFrame();//次のフレームに移動、停止し、次のページを表示 }; //以下が、ボタンクリックの代わりに、ENTERキーを使うケース var n:Number = 0; this.onEnterFrame = function():Void { if (Key.isDown(Key.TAB)) { n++;//TABキーを押し下げする都度、カウントアップ trace(n); if (n == 1) {//1回目なら、 Selection.setFocus("a");//ボタン a に、フォーカスし、 lv.sendData = "あ";//LoadVarsの変数sendDataに、"あ"を代入 } else if (n == 2) { Selection.setFocus("b"); lv.sendData = "い"; } else if (n == 3) { Selection.setFocus("c"); lv.sendData = "う"; n = 0;//初期値に戻す } } if (Key.isDown(Key.ENTER)) {//ENTERキーを押し下げたなら、 lv.sendAndLoad("./receiver.php?"+getTimer(),lv);//同一階層のreceiver.phpに送信して、処理させ、結果を受け取る } }; //ここまで ■サーバーサイドアプリ側:receiver.phpを設置しました。 <?php $data=$_POST['sendData']; switch ($data){ case 'あ': print '&mess=「'.$data.'」を受け取りました&'; break; case 'い': print '&mess=「'.$data.'」を受け取りました&'; break; case 'う': print '&mess=「'.$data.'」を受け取りました&'; break; } となります。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

難関にぶつかりましたか。 しかし何が(どの部分が)難関なのか良くわかりませんねえ。。。 わかる範囲内(私が勝手に想像した範囲内)で, 日本語をコード化すると次のようになるような気がします。 4つのボタンのインスタンス名を, それぞれ「btnA」「btnB」「btnC」「btnNext」とした場合, それら4つのボタンが存在するタイムラインのフレームに書くスクリプト↓。 ---------------------------------------------- //ボタン「A」「B」「C」に「あ」「い」「う」というデータを持たせる btnA.dat = "あ"; btnB.dat = "い"; btnC.dat = "う"; //Tabキー移動順を「A」「B」「C」「次」の順にする btnA.tabIndex = 0; btnB.tabIndex = 1; btnC.tabIndex = 2; btnNext.tabIndex = 3; //ボタン「A」~「C」ロールオーバー時の動作を定義 btnA.onRollOver= btnB.onRollOver= btnC.onRollOver=function ():Void { // 自分自身のフラグをfalseにする this.flag = false; }; //ボタン「A」~「C」プレス時の動作を定義 btnA.onPress= btnB.onPress= btnC.onPress=function ():Void { // もし自分自身のフラグがfalseであれば if (!this.flag) { // 自分自身のデータを出力 trace("「"+this.dat+"」をサーバに送信します。"); // そして自分自身のフラグをtrueにする this.flag = true; // もし自分自身のフラグがtrueであれば } else { //ボタン「次」にフォーカスを当てる Selection.setFocus("btnNext"); // ボタン「次」プレス時の動作を実行 btnNext.onPress(); } }; //ボタン「次」プレス時の動作を定義 btnNext.onPress = function():Void { // 「次へ」を出力 trace("次へ"); }; ---------------------------------------------- ※「制御」→「ムービープレビュー」で動作確認する際は,   プレビューウィンドウで   「制御」→「キーボードショートカットを無効」に   チェックを入れておく必要があります。 > ボタン「B」が持っていた情報を、サーバ上に送くります。 ここは良くわかりません。 私が専門でないためよくわからないという意味もありますが, 送信のしかたや表示のさせかたなどの場合によって変わると思うので何とも言えないという意味もあります。 場合によって変わるので何とも言えませんが, Flash側としては, LoadVarsクラスの sendAndLoad 辺りでなんとかなるのではないでしょうか? ActionScript 2.0 リファレンスガイド sendAndLoad (LoadVars.sendAndLoad メソッド) http://livedocs.macromedia.com/flash/8_jp/main/00002336.html

すると、全ての回答が全文表示されます。

関連するQ&A