質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.93%

HTMLのdrawCircleが動作しません。

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 968

Tan3

score 39

youtubeのチュートリアルを参考にワンタップゲームを作っています。
(ログイン後のゲーム画面をつくるところでつまづいています。
ログイン画面が完成して、動作を確認してから、次のゲーム画面を作り始めたのですが、ログイン画面も表示されなくなってしまいました。)
drawCircleが動作していません・・・
アプリを作るのは初めてなので右も左もわかりません。
ご教授お願いいたします。

(アプリキーとクライアントキーは偽です。)

発生している問題

  1. ログイン画面が表示されない。
  2. ゲーム開始画面が表示されない
  3. drawCircleが表示されない。 
  4. コンソールにエラーメッセージを表示させたい。
      console.error("表示テスト");は何行目に入れたらよろしいでしょうか?

問題の発生している環境

HTML5
iMac(10.11.2)
Chrome(48.0.2564.116 (64-bit))

game.html

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <link rel="stylesheet" href="components/loader.css">
    <link rel="stylesheet" href="css/style.css">
    <script src="components/loader.js"></script>
    <script src="js/ncmb-2.0.0.min.js"></script>
    <script>
        // Add your code here
    </script>
    <style>
        body {
            background-color: #BBDEFB;
        }
        form {
            width: 320;
            margin: 30px auto;
            text-align: center;
        }
        input {
            border-radius: 5px;
            padding: 7px;
            margin-bottom: 10px;
            width: 200px;
            font-size: 20px;
        }
    </style>
</head>
<body>

    <form>
        <input type="text" id="username" placeholder="User name" />
        <input type="password" id="password" placeholder="Password" />
        <input type="submit" value="Register/Login" />
    </form>

    <script>
        (function() {
            // mBaaSの初期化
            var application_key = "5c27d2358af5fba85be1226b05c7a9cf9d3a13dc0d40b4136e49c168c8a1";
            var client_key = "3e53a2f7dbf33deef6e5b5316c31bdb7b73f9e1aaa1df6a957f729ee8ef4";
            var ncmb = new NCMB(application_key, client_key);

            // ログインチェック
            var user = ncmb.User.getCurrentUser();
            if (user !== null) {
                location.href = "./game.html";
            }

            // ログイン処理
            $("form").on("submit", function() {
                var username = $("#username").val();
                var password = $("#password").val();

                ncmb.User.login(username, password)
                .then(function() {
                    // ログイン成功
                    location.href = "./game.html";
                    // alert("ログイン" + ncmb.User.getCurrentUser().userName);
                })
                .catch(function() {
                   // ログイン失敗
                   var user = new ncmb.User({
                       userName: username,
                       password: password
                   });
                   // 新規登録処理
                   user.signUpByAccount()
                   .then(function() {
                        ncmb.User.login(username, password)
                        .then(function() {
                            // ログイン成功
                            location.href = "./game.html";
                            // alert("会員登録" + ncmb.User.getCurrentUser().userName);
                        });

                   });
                });
                return false; 
            });
        })();
    </script>
</body>
</html>

index.html

<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <meta http-equiv="Content-Security-Policy" content="default-src * data:; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">
    <link rel="stylesheet" href="components/loader.css">
    <link rel="stylesheet" href="css/style.css">
    <script src="components/loader.js"></script>
    <script src="js/ncmb-2.0.0.min.js"></script>
    <script>

        (function(){
            //mBaaSの初期化
            var application_key = "5c27d2358af5fba85be1226b05c7a9cf9d3a13dc0d40b4136e49c168c8a1";
            var client_key = "3e53a2f7dbf33deef6e5b5316c31bdb7b73f9e1aaa1df6a957f729ee8ef4";
            var ncmb = new NCMB(application_key, client_key);

            var user = ncmb.User.getCurrentUser();

            // ログインチェック
            if (user == null) {
                location.href = "./index.html";
            } else {
                $("#username").text(user.userName + '(Log out)');
            }

           // ログアウト
           $("#username").on("click", function() {
               ncmb.User.logout()
               .then(function() {
                   location.href = "./index.html";
               })
           });

           // canvasの設定
           var canvas = document.getElementById("mycanvas");
           var ctx = canvas.getContext("2d");

           //変数
           var centerX = canvas.width / 2;
           var centerY = canvas.height / 2;
           var r;
           var timerId;

          //スタート画面
           ctx.font = "normal 28px Verdana";
           ctx.textAlign = "center";
           ctx.fillStyle = "#FFFFFF";

           ctx.fillText("Stop at Target!", centerX, centerY);

          //イベントの設定
           $("#mycanvas").on("click", function() {
               r = 0;
               drawCircle();
           });

           //円を描く
           function drawCircle() {
               // クリア
               ctx.fillStyle = "#BBDEFB";
               ctx.fillRect(0, 0, canvas.width, canvas.height);

               //円を描く
               ctx.fillStyle = "#1976D2";
               ctx.beginPath();
               ctx.arc(centerX, centerY, r, 0, Math.PI * 2, false);
               ctx.fill();

               r++;
               timerId = setTimeout(function() {
                   drawCircle();
               }, 12);
           }
        })();        
    </script>
    <style>
        body{
            background-color: #BBDEFB;
            padding-top: 20px;
            font-family: Verdana, sans-serif;
            text-align: center;
        }
        #mycanvas {
            margin: 10px auto;
        }
    </style>
</head>
<body>
    <div id="username"></div>
    <canvas id="mycanvas" width="300" height="300"></canvas>
</body>
</html>
</html>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • gakintosh

    2016/03/03 22:23 編集

    $(function(){ の行ですが、以下のように記載するのではないでしょうか?


    (function() {

    })();


    適当に以下のURL先を参考にしましたが・・
    http://blog.livedoor.jp/eeu/archives/55310188.html


    間違えていたらすみません。

    あと、コードを載せて誰かに質問するときはコードに行番号をつけると、回答もしやすいと個人的に思います。

    キャンセル

  • Tan3

    2016/03/03 22:58

    gakintoshさん回答ありがとうございます。
    $(function(){ の行に()を追加しました。しかし、まだ動きません・・・。コードの行番号のつけ方を教えていただけるとありがたいです。丁寧な回答ありがとうございます。

    キャンセル

  • gakintosh

    2016/03/03 23:29

    Tan3さん
    > $(function(){ の行に()を追加しました。
    いえいえ、「 $(function(){ 」の行では、$を消してみてください。
    そして、それと対応する「 }); 」を「 })(); 」にしてみてください。

    行番号を出力する方法ですが、windows、Linuxかで方法は変わりますが、
    Windowsだったら、コマンドプロンプト開いて、
    > find /v /n "" game.html
    Linuxだったら
    > cat -n game.html
    とすると行番号がついたもので出力されるのでそれをコピーして貼り付け、といった感じで私はよくやっています。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.93%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る