- ベストアンサー
Flashゲームでの点数表示
点数を加算するようにプログラムしているのですが、点数を表示するテキストを作りました。 そしてその部分に加算されるごとに点数が表示されるようにしています。 しかし、点数が加算されません(0から動きません)0は最初から入力されている数字です。 時間制限のテキストも配置してあり、そのテキストを表示できたら今度は点数表示ができなくなってしまったのです。 どのように修正すればいいのかアドバイスをお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> スタートボタンにタイムの設定とタイムが0になったときに > ジャンプするフレームを設定した場合、 > スコアはどこにどのように設定したら表示されるのでしょうか? この質問で、質問者さんがどの程度理解されているかは、なんとなく分かりました。 「インスタンスへのパス指定方法が分からない」という理解でよろしいでしょうか? スクリプトをそのまま読み取るのであれば、スコア表示に指定されているscore_txtをrootに配置してください。簡単な回答ですが、これ以上の表現が思い浮かびません。具体的なパスの指定方法は参考URL(「flash 相対パス 絶対パス」でのgoogle検索結果の先頭)が参考になります。 もしくは、 ・scoreに0は表示される(1フレーム目のscore初期化は動いている) ・scoreの加算、減算の部分に不具合があるっぽい(puraScore()やmaiScore()が怪しい) ・変数(score)への指定はあるが、インスタンスscore_txtへの指定が見当たらない。 以上のことから、もしかしたら、puraScore()やmaiScore()に以下を追加すると動くかもいしれませんね。 もちろん、加算、減算のあとに追加してくださいね。 _root.score_txt.text=score;
その他の回答 (3)
- tracer
- ベストアンサー率41% (255/621)
回答をしたあとに気づいたんですが、もしかすると、インスタンス変数を使ったり使わなかったりしてるんじゃないでしょうか。 インスタンス変数についてはググッてください。
- tracer
- ベストアンサー率41% (255/621)
スクリプトだけを提示されたということは、文法が間違っているかどうかを知りたいということでしょうか? それならば特段問題は見当たりません。 ただし、「点数表示ができなくなってしまった」の解決には至らないですね。。 この情報から判断できることはこれくらいです。 おそらく判断しなければならないのはスクリプトの整合性です。 特に例の場合はフレームスクリプトで構成されているため、「なぜそのスクリプトが書かれているか」は、フレームとインスタンスの配置構造がわからないと判断のしようがないのです。
補足
スタートボタンにタイムの設定とタイムが0になったときにジャンプするフレームを設定した場合、スコアはどこにどのように設定したら表示されるのでしょうか?
- tracer
- ベストアンサー率41% (255/621)
回答者の立場からすると、質問者さんが前提としている情報が完全に伏せられている状態ですよ。^^; たとえば、Flashのバージョンは? ActionScriptのバージョンは? どこまでは理解できていて、どこからからが理解できないの? 何をしたら問題が生じたの? とかそんなところです。 それでも至極強引に原因を想像すると、たとえば、埋め込むべきフォントを埋め込み忘れている、といったミスはあるかもしれませんね。その場合は、スクリプトに問題はないのですが、表示するフォント情報がないため、結果的に表示できないことになります。とはいえ、かなりあてずっぽうな回答ですよ。
補足
すいませんでした。慌ててました。 詳細は以下の通りになります。 Flash CS5 Actionscript2.0 でパソコン用のゲームを作っています。 スタート画面でスタートボタンを押すとゲームステージに進みゲームが始まると言うゲームです。 ステージ画面ではカウントダウンする時間とマウスで対象物をクリックして点数を稼ぐ形になっています。点数は2種類あります。 制限時間が過ぎると点数によって進むフレームを変えてます。 以下のように設定してあります。 時間を表示するテキスト・・・インスタンス名 time_txt スコアを表示するテキスト・・・インスタンス名 score_txt 埋め込みはしてあります。 スタートボタンに設定してあるスクリプト on (press) { this.play(); _root.puraScore(); _root.maiScore(); var start_time = getTimer()/1000; _root.onEnterFrame =function() { var now_time =getTimer()/1000; var cd_time = Math.ceil(60-(now_time-start_time)); _root.time_txt.text = cd_time; if (cd_time<=0) { if (score > 300) { this.gotoAndPlay("GOOD"); } else { this.gotoAndPlay("bad"); } delete_root.onEnterFrame; } }; } フレーム1に設定してあるスクリプト this.stop(); var score = 0; function puraScore() { score += 100; } // End of the function function maiScore() { score -= 100; } // End of the function _root.score_txt.text = score;
お礼
おかげさまで、無事できました。 ありがとうございました。