• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【Flash】パズルのクリア時間によって飛び先を変更したいのですが。)

【Flash】パズルのクリア時間によって飛び先を変更したいのですが。

このQ&Aのポイント
  • 15パズルのクリア時間に応じて異なるURLへ飛び先を変更する方法を教えてください。
  • 参考サイトで配布されている15パズルのFlashを改良して使用しているが、クリア時間によって異なるURLに飛び先を変更したい。試行錯誤したがうまくいかず、助言をいただきたい。
  • Flashで作成した15パズルのゲームで、クリア時間が300秒以内ならURL:Aに、200秒以内ならURL:Bに飛び先を変更したい。15パズルのソースは外部ASで管理されており、自分で試行錯誤したがうまくいかなかった。助言をお願いします。

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

  • ベストアンサー
  • perse
  • ベストアンサー率74% (113/152)
回答No.2

私も試してみましたが問題なく動きました。 #1で書いたif文を書き換えるだけです後は同じです。 if ( p < 100 ){   getURL("google.co.jp");  }else if ( p < 200 ){   getURL("yahoo.co.jp"); }else{   getURL("goo-net.com"); } 他に気になるところは2点です。 (1)15puzzle.flaのパブリッシュ 15puzzle.asを修正して保存しただけではダメですよ。 このasファイルはパブリッシュ時にflaの中に書かれた #include "15puzzle.as" の部分と入れ替わる感じでswfファイルがasファイルを見ているわけではありません。 ですのでasファイルを修正した場合はflaファイルをパブリッシュし直す必要があります。 (2)設定ファイルの設定 15puzzle.iniの中身は修正しましたか? ここでタイマーの時間をtimer=300などとして制限時間を設定しなければなりません。 0のままだとif(TIMER){}は通らないので当然アドレスに飛ぶことはありません。 タイマーが設定されていればswf実行中に下に残り時間が表示されるようです。 またテスト時はshuffle=1として置くと楽です。

sawatari
質問者

お礼

perseさん、丁寧な回答ありがとうございます。 おかげさまで無事動きました! 原因は「(1)15puzzle.flaのパブリッシュ」でした。 htmlファイルがswfを読み込むのと同じ仕組みかと思い込んでいた為、一切パブリッシュはしないで作成していました。 まさにご指摘通りのミスでした・・・ 今回、いろいろと参考になることばかりで大変勉強になりました。 わからなかったscript部分も理解できるように今後勉強していこうと思います。 またこちらでお世話になるかもしれませんが、その時はどうぞよろしくお願いします。 今回は本当にありがとうございました!

その他の回答 (1)

  • perse
  • ベストアンサー率74% (113/152)
回答No.1

経過時間を取得するにはgetTimer()を使います。 getTimer()はswfを起動してからの経過時間(ミリ秒)を取得するものです。 ─────────────────────────→ 時間の流れ (1)■■■■■(2)□□□□□□□□□□□□□□(3)▲▲▲▲▲ (1) : swf開始 (2) : ゲーム開始 (3) : ゲーム終了 ■ : loading処理 □ : ゲーム中 △ : ゲーム終了後の処理 どこでgetTimer()を実行しても返ってくる値は(1)からの経過時間です。 ・(2)でgetTimer()したときの値は(1)~(2)間の経過時間です。 -----A ・(3)でgetTimer()したときの値は(1)~(3)間の経過時間です。 -----B 今取得したいのは(2)から(3)までの時間です。 つまりB-Aの値です。 AS内で見るとAの部分が132行目: this.startTime = getTimer(); B-Aをしている部分が135行目: var t = Math.floor ( TIMER - ( getTimer() -this.startTime )/1000 ); のgetTimer() -this.startTimeの部分です。 これまでの説明をまとめると 経過時間 = Math.floor (( getTimer() -this.startTime )/1000 ) で求められます。(1000で割って単位をミリ秒から秒に変換しています) これをゲーム終了時のところに記述します。 ゲーム終了時の処理は253行目: var stageView = function(){}関数内です。 最終的に変更するソースは以下の場所です。(全角入りのため要置換) 277行目:   if(TIMER){             //制限時間が設定されているとき     this.timeBar._visible = false;     this.time._visible = false;          //以下を追加----------------------------------          //経過時間を取得     var p = Math.floor (( getTimer() -this.startTime )/1000);          if ( p < 100 ){    //100秒以内       getURL("A.html");      }else if ( p < 200 ){        //200秒以内       getURL("B.html");     }else{      //それ以外     }   }

sawatari
質問者

補足

perseさん、とてもわかりやすい説明ありがとうございます! また、週末はネット環境の無い場所に出かけていた為、返事が遅くなってしまい申し訳ありませんでした。 Flashについてですが、未だにAS全体の理解は出来ていない状態ですが、perseさんの説明してくれた部分については理解出来ました。 さっそく教えて頂いたものを参考に、ASに追加記述したのですが、クリアしても指定したページへジャンプしてくれません。 いろいろ試してみたのですが、自分ではこれ以上は解決できそうにありません。 もしよろしければ、どこがおかしいのか指摘していただけないでしょうか。 動作内容は以下の通りです。 100秒以内にクリアした場合はgoogleへ 200秒以内にクリアした場合はYahooへ それ以外の時間にクリアした場合はgooへ お手数おかけしますが、どうぞよろしくお願いいたします。

関連するQ&A

専門家に質問してみよう