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

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

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

初めてこちらに書き込みさせて頂きます。 15パズルのソースを配布しているサイトを見つけ、改良して使用してよいとの事だったので、参考書片手にいろいろと試してみたいのですが、思ったように動いてくれ無い為こちらに書き込みさせていただきました。 恐らく、まだ私の実力では完全に理解できない物だとは思うのですが、HPの企画上どうしても必要なのでご教授いただけたらと思います。 ▼参照サイト http://www.ochaden.net/games/15puzzle/ チャレンジしているFlashはこのサイトの15パズルなんですが、外部ASで管理されている物です。 ▼やりたい事 制限時間を300秒に設定した場合、100秒以内にクリアでURL:Aへ、200秒以内にクリアでURL:Bへ と設定したいのですが、どうしたらよいのでしょうか? 自分で試行錯誤したソースは、書いてもややこしくなる上に、全然見当違いのソースだと思うので省かせていただきました。 可能でしたら上記サンプルをダウンロードして15puzzle.asを参照していただけると助かります。 完全に人任せな状況になってしまい大変申し訳ないんですが、どうかご教授ください。 どうぞよろしくお願いいたします。 使用OS:Windows2000 ソフト:FlashMX2004

  • Flash
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • 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

  • 特定のパズルサイトで答えの保存が出来ません

    Puzzle.ch(http://www.tubumikan.com/puzzle/)というパズルを扱ったサイトにて 現在10種類のパズルが公開されていて、無料で遊ぶことの出来るサイトです。 問題を解くと、一覧の表示が“正解済み”である表示に変わるのですが、 ある時期から特定の種類のパズルに限って、表示が変わらなくなってしまいました。 添付画像の「問題161」はクリア済みのアイコン表示。 「問題162」と「問題163」はクリアしたのにアイコン表示が変わらないままです。 ちなみにアイコン表示が変わらなくなってしまった問題は 「お絵かきロジック」「スリザーリンク」「美術館」「カラーロジック」「ブリッジ」「パイプライン」で 他の問題はちゃんと表示が変化します。 また、各問題とも症状が出始めた時期はバラバラでした。 そのサイトでは一切質問を受け付けていないので、こちら側の設定やバージョンの問題なのかも 特定できないので、解決法が解る方よろしくお願いします。 Win7-64bit、FireFox3.6.12 JavaConsole6.0.22、javaスクリプト有効

  • ゲームキューブの『パズルコレクション』で分からない事があります。教えて下さい!

    ゲームキューブの『パズルコレクション』の中の 『パネルでポン』の一人用の一番下にある 『パズル』のハードにあるラウンド5の九番目がどうしてもクリアできないんです。 何回やっても三回で全消し出来なくて本当に困っています。 これについての攻略方法をご存知の方、教えて下さい。 やはり買った以上は全部クリアしたいです。 回答して下さる場合は、その画面などがある参考URL(サイト)も添えてくれると助かります。 (言葉だけではクリアできるか分からないからです) お願いします。 ◎あと、それから先ももしかするとこうゆう感じで躓くかもしれませんので全部の攻略方法があるサイトを書き添えて下さったら本当に助かります。 我侭だとは思いますが、お願い致します。

  • 自作Flashをiモードで・・・

    FOMA 900iシリーズの待ち受け画像に自作の Flashムービーを設定したくて色々試したのですが 上手くいきません。 使っているのはFlashMXで、ドコモのサイトから Flash Liteをダウンロードしてインストールして Flash4形式で保存したものをWebにアップしたの ですが、iモードで表示ができず、いきづまって しまいました。 Flashを配置するHTMLのソースに問題があるのでしょうか。 どなたかご教授お願いします。 ちなみにFOMA P900iで使いたいと思っています。

  • cssのclear:both;を利用した場合の余白が・・・

    いまXHTML+CSSでサイトを作っています。 CSSで「clear:both;」を使うとFirefoxでは上にIEでは下に余分な余白が出来てしまいす。 また「clear:both;」を使わないとカラム落ちをしてしまいます。 XHTMソース ■http://openlab.ring.gr.jp/k16/htmllint/htmllint.cgi?Stat=on&ViewSource=on&Method=URL&URL=http%3A%2F%2Flabo.fesly.net%2Ftest2%2Findex.php CSSソース ■http://jigsaw.w3.org/css-validator/validator?profile=css21&warning=0&uri=http%3A%2F%2Flabo.fesly.net%2Ftest2%2Findex.php 「clear:both;」はXHTMLソースの44行目のdivです。 44行目のdivを入れないとカラム落ちしてしまい、入れると余分な余白ができてしまいす。 回避方法や間違っている場合はご指摘をお願いします。 ご指導のほど宜しくお願いします。

    • ベストアンサー
    • HTML
  • 複数テーブルを検索するクエリの実行時間を短縮したい

    feedというテーブルには site_name, site_url, feed_name, feed_url, date, count feed_urlがプライマリーの6つのフィールドがあり、 siteというテーブルには site_name, site_url, first_date, last_date site_urlがプライマリーの4つのフィールドがあります。 feedテーブルのsite_urlとsiteテーブルのsite_urlには全く同じものが入っています。 この二つのテーブルを用いて、以下のような条件でレコードを取り出したいです。 ・site_urlごとのfeed.countの平均値を取得 ・取得した平均値をソート(DESC) ・一週間前までのfeed.dateの中から ・site_urlとsite_nameとfirst_dateとlast_dateと算出した平均値を取り出したい 以下のようなSQL文を作ってphpMyAdminから実行してみたのですが、2秒ほどかかってしまいました。より高速に取り出すことはできますでしょうか? //0.5程度で終わる //これプラスsiteテーブルのfirst_dateとlast_dateも取り出したい。 SELECT site_name, site_url, AVG( count ) FROM `feed` WHERE DATE > '2011-01-10 00:00:00' GROUP BY site_url ORDER BY AVG( count ) DESC LIMIT 0 , 30 //2秒ほどかかる //目的のレコードが取り出せる。 //このSQLを高速化したい。 SELECT site.first_date, site.last_date, feed.site_name, feed.site_url, AVG( feed.count ) FROM `feed` , `site` WHERE feed.date > '2011-01-10 00:00:00' AND feed.site_url = site.site_url GROUP BY feed.site_url ORDER BY AVG( feed.count ) DESC LIMIT 0 , 30 できれば1秒以内が理想なのですが、そこまで高速にすることは可能でしょうか? もし可能な場合は、そのSQL文を教えて頂ければ幸いです。(1秒以内でなくても高速になれば嬉しいです。) よろしくお願いします。

    • ベストアンサー
    • MySQL
  • FlashとPHPを使ったチャット

    初めまして、よろしくお願いします。 自分は今あるサイトを見ながらFlashとPHPを連動させた チャットを作っています。 そのサイトにはソースプログラムもそのまま載っており わかり易い解説も載っているのですが、 載ってるソースをそのままコピーして作成し、実装させたところ なぜか、「全角カナの一部」「全角記号の一部」が正しく表示させず 半角ローマ字に変換されてしまうのです。 例 「アイウエオ」 → 「ACNGI」 「・。、」→「EAB」 これはいったい何が原因なのでしょうか? サイトへのURLは ttp://ponk.jp/flash_php/index.php?page=3 です。(無断リンクなのでhを消す事をお許しください。) よかったら解決へのご教授をお願いしますm(_ _)m 使用しているバージョンは windows XP home Macromedia Flash MX PHP 5.2 です。

    • ベストアンサー
    • Flash
  • FLASHメニューのURL外部読み込み

    FLASH初心者です。 現在イントラ環境でサイトの管理・更新をしているのですが、 フラッシュメニューで悩んでいます。 9個のボタンから絶対パスで各URLにジャンプするという とても簡単なスクリプトが入ったFLASHメニューを作成しました。 通常ならページ更新ごとにFLASHでURLを書き換えれば済むのですが、 社内サーバのキャッシュが非常に強く、FLASHファイルをアップしても なかなか反映されず、過去のキャッシュを読み続けたりします。 そこで、テキストファイルの外部読み込みならキャッシュは関係ないかも・・・と思い、 様々なサイトを見ましたが、テキストフィールドについては記述があるのですが、 URLの読み込みという物が見当たらなくて困っています。 あとはFLASHのキャッシュを消す方法くらい?(←あるんでしょうか?) 上司にせかされる毎日です(T T;) どなたか、参考になるサイト・本・できればソースがあれば 教えて頂けないでしょうか? どうぞよろしくおねがいいたします。

  • アドレスバーのアイコンの変更

    いつもお世話になっております。 アドレスバーのアイコンの変更を行いたいと思っています。 いろいろ調べたのですが、まだ不安要素があるため質問させていただきました。 HTMLで <link rel="shortcut icon" href="***.icon"> と書けばいいということが分かりました。 IE で表示させることは難しいということも分かりました。 上記のようなソースを書いて試してみたのですが Netscape では確認できました。 Firefox でも確認できました。 Sleipnir では一度確認できたのですが、キャッシュをクリアしたら 表示されなくなってしました。 他のサイトでアドレスバーのアイコンを変更している場合 ソースを見ても上記のようなソースが書かれていないのです。 サーバー側の設定で何かあるのでしょうか? ご教授よろしくお願いいたします。 <環境> Apache:2.0.40 (Red Hat Linux)

  • Flashについて

    現在FlashCS5 actionscript2.0でサイトを制作しております。 内容としましては、TOPページに簡易的な音楽プレーヤー(再生・停止・一時停止)が あり、サイト訪問時に音楽が再生するというものです。 今回の質問なのですが、初回訪問時に音楽再生をさせ、2度目以降の訪問時には 音楽をとめる。ただし、再生ボタンを押すと再び音楽が再生するということを行いた いのです。 色々調べてみて、下記の方法が近いのではと思いました。 ただ、下記の方法だと再生ボタンが効かなくなってしまいます。 なにか良い方法はありませんか? ------------------------------------------------------------------------------- 【Flash Q&A参照】 アクションレイヤー、1フレームのフレームアクション・・・ span = 15; ←変数spanを定義、そこに一定の秒数以内の値を設定(例は「15秒以内」)  nowDate = new Date(); ←現在年月日時分秒を取得、nowDateというDateオブジェクトを作成  nowAC = nowDate.getTime(); ←その時点の世界標準時点からの経過ミリ秒をnowACに代入  cookie = SharedObject.getLocal("accessTime"); ←cookieという名のHD読書きオブジェクト  if (cookie.data.beforeAC != undefined) { HD変数beforeACが未定義でないなら    Time = Math.floor((nowAC-cookie.data.beforeAC)/1000); ←Timeに経過秒数を代入    cookie.data.beforeAC = nowAC; ←HD変数beforeACに今回経過ミリ秒を保存    if (Time < span) { 経過秒数が、変数spanの値より小さいとき      this.gotoAndStop("menu"); ←”menu”フレームに移動して停止    }  } else { そうでない(初回アクセス)なら    cookie.data.beforeAC = nowAC; ←HD変数beforeACに今回経過ミリ秒を保存  } -------------------------------------------------------------------------------

  • アクセスログに覚えのないリファラがあります

    HPを持っています。アクセスが急に増えたので、ログの参照元URLを確認すると、アダルトサイトでした。 「リンクを貼られたのか」と思い、ソースで確認しましたら、私のサイトへのリンクはありませんでした。 一体どうなっているのでしょう。 気持ちが悪いので、どなたか教えてください。