エラーが出る理由について

このQ&Aのポイント
  • 超初心者がenchant.jsを使ってコードの練習をしている中で、特定の一文でエラーが出ています。
  • エラーメッセージは「Expected an assignment or function call and instead saw an expression.Reloaded Site.」です。
  • このエラーは、関数コールの予定が式として扱われていることが原因で発生している可能性があります。
回答を見る
  • ベストアンサー

if(条件式){メソッド、メソッド}でエラー

超初心者です。enchant.jsというゲームエンジンでコードの練習をしています。 質問の部分は↓です。 bear.addEventListener(Event.ENTER_FRAME, function() { var input = game.input; if (input.up){ bear.tl.moveBy(0, -120, 12, enchant.Easing.QUAD_EASEOUT),bear.tl.moveBy(0, 120, 12, enchant.Easing.QUAD_EASEIN); } else if (input.right) { bear.x += 7; } else if (input.left) { bear.x -= 7; } }); ifのすぐ下の bear.tl.moveBy(0, -120, 12, enchant.Easing.QUAD_EASEOUT),bear.tl.moveBy(0, 120, 12, enchant.Easing.QUAD_EASEIN); の部分にエラーが出てるようで、エラー内容は→「Expected an assignment or function call and instead saw an expression.Reloaded Site.」です。 訳を調べると「代入か関数コールの予定じゃないの?式じゃなくて。」という意味だそうですが、僕の認識だと上の一文は関数コールにしか見えません。なんでこういうエラーが出るんでしょうか? 上の一文の引数はこれ→http://www.atmarkit.co.jp/ait/articles/1306/25/news026_2.htmlを参考にしています。

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5082/13279)
回答No.2

> ちなみになんですが引数にメソッドなどを複数並べるときはコンマのみだと勝手に思ってたんですが、セミコロンで区切るというのは初めて知りました。 if文の構文は  if (条件式) { 処理 } です。 { ... } の部分は引数ではありません。 enchant.js の勉強をする前に、JavaScriptの基本を勉強しましょう。

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5082/13279)
回答No.1

if(条件式){メソッド、メソッド}ではなく if(条件式){メソッド ; メソッド}のようにセミコロンで区切るのが正しい記述じゃないでしょうか。 もしくは bear.tl.moveBy(xxxxxx).moveBy(yyyyyyy); のように順次実行するメソッドをピリオドで繋ぐ記述方法もありますが、例示されているような書き方ならセミコロンじゃないと構文としておかしいと思います。

natyo4235
質問者

お礼

回答ありがとうございます。解決しました! ちなみになんですが引数にメソッドなどを複数並べるときはコンマのみだと勝手に思ってたんですが、セミコロンで区切るというのは初めて知りました。調べてみましたが、行末のセミコロンなど関係ないものしか出てきません。それについてのわかりやすいサイトがあったら教えてください。お願いしますm(__)m

関連するQ&A

  • 超初心者の質問

    今enchant.jsというライブラリで実際に自分でコードを書いてみようと思い、数列ほどのコードを見よう見まねで足してみたのですがうまくいきません。 enchant (); window.onload = function(){ var game = new Game(); game.fps = 30; game.preload('http://enchantjs.com/assets/images/chara1.gif'); game.onload = function(){ var bear = new Sprite(32, 32); bear.image = game.assets['http://enchantjs.com/assets/images/chara1.gif']; bear.tick = 0; bear.anim = [0, 1, 0, 2]; game.rootScene.addChild(bear); bear.addEventListener(Event.ENTER_FRAME, function() { bear.tick++; bear.frame = bear.anim[bear.tick % 4]; if (bear.scaleX == 1){ bear.x += 20; if (bear.x > 320 - 32)bear.scaleX = -1; } else{ bear.x -=7; if (bear.x < 0) bear.scaleX = 1; } }); bear.onEnterFrame = function() { var input = game.input; if (input.up) { this.y -= 5; } if (input.down) { this.y += 5; } }; }; game.start(); }; 下のほうの bear.onEnterFrame = function() { var input = game.input; if (input.up) { bear.y -= 5; } if (input.down) { bear.y += 5; } }; が足した部分です。 追加した部分以外のコードはクマのキャラクターが画面を右に左に走るアニメーションになっていて、それに↑↓ボタンで縦軸だけを操作できるコードを追加してみようと思ったんですがだめでした。 足した部分のコードを関数やイベントタイプを追加するなどいろいろやってみましたが、ダメでした。エラーは上のコードでは出てません。なぜでしょうか。ご教示ください。

  • 関数内でのSQL文実行→エラー検知されない・・・。

    いつもお世話になってます。 sasakidと申します。 現在、ASPで開発を進めています。 エラーが発生したらエラーページに飛ぶように適所に 以下の文を入れています。 '------エラー処理-------- If Err.Number <> 0 Then  Call goto_ErrPage() ←…エラーページに飛ぶ関数 End If ほとんどの個所でエラーページに飛ぶことを確認しました。 今、困っていることはSQL文を実行する関数内で SQL文にエラーがあったとしてもどうやらエラーが検知されていないようなのです。 '=====SQL文実行関数=========== Function exeSql1(sql) exeSql1 = -1 'エラーセット sql = sql & "ORDER BY test" '←…エラーが出るように追加    Set rs = db.Execute(sql) If Err.Number <> 0 Then Set rs = Nothing Exit Function End If (中略) exeSql1 = 0 End Function '======本文================== (中略)   tmp = exeSql1(sql) If tmp <> 0 Then '戻り値がエラー(0以外)だったらエラー画面へ Call goto_ErrPage() ←…エラーページに飛ぶ関数 End If (後略) ------------------------- どんなに関数:exeSql1で実行されるSQL文にエラーを含めてもエラーページに飛びません。 本文中で実行しているSQL文にエラーが含んでいるとエラーページに飛ぶのですが・・・。 こんな現象の原因などわかる方がいらっしゃいましたら教えてください!!! よろしくお願いします。     

  • 関数の中にif文を入れると「関数は値を返しません」

    どなたかよろしくお願いします。(windowsXP、FlashCS3pro) 関数の中にif文(switch文)を入れると「関数は値を返しません」というコンパイルエラーが出ます。 どこか間違ってますでしょうか。もしくはこれは仕様でしょうか。 エラーが出る ------------------------- xTest("1"); function xTest(req:String):String { if (req == "1") { return req; } } //実行結果:エラー1170「関数は値を返しません」 ------------------------- ちなみにこれだとエラーはでません。 ------------------------- xTest("1"); function xTest(req:String):String { return req; } //実行結果:1 ------------------------- また、関数内にif文を入れても、関数の型指定をしなければエラーは出ません。 ------------------------- xTest("1"); function xTest(req:String) { return req; } //実行結果:1 ------------------------- よろしくお願いします。

    • ベストアンサー
    • Flash
  • ファイルの有無を確認した際のエラーについて

    VB6です。以下の様な関数を使っています。 用途としては、ファイルの有無を調べています。 で、関数の値として実際のパソコンに存在しないフォルダを指定した際、 下のエラー処理(AAA)に飛びません。 わかる方いらしたら、よろしくお願いします。 Public Function files(ByVal strPathName As String) As Boolean On Error GoTo AAA If (GetAttr(strPathName) And vbDirectory) = vbDirectory Then Stop Else Stop End If Exists2 = True Exit Function AAA: Stop End Function

  • Cプログラムの条件文  if,else if ,elseについて教えてください。

     こんにちは。課題でどうしても解らないところがあるので教えてください。  次のプログラムは一桁の数(0~9)が偶数(EVEN)か奇数(ODD)かを表示するものです。  #include <stdio.h> main() { int num; printf("please enter a number[0~9]:"); scanf("%d",&num); if (num % 2 ==0) printf("%d is an EVEN. \n", num); else printf("%d is an ODD. \n", num); } というプログラムをコンパイルして実行すると、ちゃんと実行されるのですが、10以上の数や負数を入力しても動作してしまうんです。  そこで0~9の範囲以外の数が入力されていないかを確認して、その場合を偶数、奇数の判断や表示をせず、エラーメッセージだけを表示して終了するプログラムに書き換えなくてはならないのですが、まず  (1)判断する条件式(変数numの内容が0~9の範囲にあるか)で、num >= 0 && num <= 9 をどこに入れればいいか。  (2)please enter a number[0~9]: 8 8 is an EVEN.  (←例えば8を入れると普通こうなるのですが)   please enter a number[0~9]:12   ERROR:12 is in out of range!!  (←0~9以外ののものだったら、この様にエラー表示にしたいのです。  私が考えたプログラムは  #include <stdio.h> main() { int num; printf("please enter a number[0~9]:"); scanf("%d",&num); if (num % 2 ==0) printf("%d is an EVEN. \n", num); if else printf("%d is an ODD. \n", num); else(num >= 0 && num <= 9) printf("ERROR:%d is in out of range!! \n",num); } という風に考えたのですがコンパイルできません。プログラミング初心者なので、書いている内容も解りにくいんですが、どうかよろしくお願いします。

  • promptメソッドがIE7では正しく動かない

    javascriptの初心者です、宜しくお願いします。 promptメソッドを利用してインプットされたパスワードのページへリンクしようとしています。マイドキュメント内では問題なく動いているのですが、サーバーへアップロードしてIE7で確認の段階になると正しく動いてくれません。どこが悪いのか全く解りません、どなたかお教え頂けませんでしょうか。 次の様なソースで実行しています。 <script type="text/javascript"> <!-- function passWordCheck(){ pass=prompt("パスワードを入力してください。",""); if (pass != "") {location.href = pass + ".html";} else if(pass == null){passWordCheck();} } //--> </script> </head> <body> <input type="button" value="閲覧する" onClick="passWordCheck()"> </body> </html>

  • JAVAスクリプトの記述について間違い箇所を直してください!

    以下のスクリプトを実行させると画面全体が揺れるというものなのですが、ブラウザでプレビューしたところIEでは正常に見れますがスレイプニル(Sleipnir)で表示させると何も表示されません。スクリプト内にそういった文面を記述する必要があるのでしょうか?だとしたらどこに何と記述したらよいのか教えていただけると助かります。よろしくお願いいたします。 <SCRIPT language="JavaScript"> <!-- bName = navigator.appName; bVer = parseInt(navigator.appVersion); if (bName == "Netscape" && bVer == 3) ver = "n3"; else if (bName == "Netscape" && bVer == 2) ver = "n2"; else if (bName == "Netscape" && bVer >= 4) ver = "n4"; else if (bName == "Microsoft Internet Explorer" && bVer == 2) ver = "e3"; else if (bName == "Microsoft Internet Explorer" && bVer > 2) ver = "e4"; if (navigator.appVersion.indexOf("Mac") != -1) ver+="m"; function earthquake() { if (ver == "n4" || ver == "n4m" || ver == "e4" || ver == "e4m") { for (i = 10; i > 0; i--) { for (z = 5; z > 0; z--) { self.moveBy(0,i); self.moveBy(i,0); self.moveBy(0,-i); self.moveBy(-i,0); } } } } setTimeout('earthquake()',3); //--> </script>

  • javascriptのアラートが何回も出る

    こんにちは。 enchant.jsを使用してjavascriptを書いています。 [環境] Windows7 IDE:WebStorm6.0 [Browser] Google Chrome 25.0.1364.172m FireFox 19.0.2 Internet Explorer 9.0.8112.16421 ----------------------------------------------------- enchant(); window.onload = function(){ var core = new Core(320, 320); core.preload('./img/chara1.png'); core.onload = function(){ var bear = new Sprite(32, 32); bear.image = core.assets['./img/chara1.png']; bear.x = 0; bear.y = 0; bear.addEventListener('enterframe', function(){ if(core.input.right){ alert("right");//問題の箇所 this.x += 5; } }); core.rootScene.addChild(bear); } core.start(); }; 上記コードは、右キーを押した時に絵を右に動かすプログラムなのですが 右キーを押した時に追加で、"right"とアラートさせるようにしました。 Google Chromeの場合、実行して右キーを押した時に"right"とアラートされ、アラートダイアログのOKボタンを押すとダイアログが消えて、絵が右に1回進みます。そして即座にまた"right"とアラートされてしまいます。 しかし不思議な事に、アラートの行をコメントアウトすると、右キーを押した時に絵が1回動いて止まり、次に押すまでは止まったままです。(正常な動き) つまり、アラートを書いている時のみ、なぜか一度キーを押すと、その後ずっと押した時の処理が行われているという事になってしまっています。 IEの場合も、GoogleChromeと同じ現象が起きています。 FireFoxの場合は、上記のような現象は起こらず、キーを押すと"right"とアラートされ、OKを押して閉じると絵が右に動いて、終わります。連続でアラートされることは無く、正常な動作でした。 僕は純粋にjavascriptのみでコードを書いたことが無く、enchant.jsライブラリを使用して最近始めました。 これはjavascriptのみの場合でも起こる現象なのでしょうか?それとも、enchant.jsの仕様に関わる問題なのでしょうか? はたまた、ブラウザの仕様に関わるものなのでしょうか? 以上、宜しくお願い致します。

  • 関数の引数に未定義の変数を渡すとエラーが出る

    自作の関数で、issetとemptyを一緒に判定する関数を作っているのですがエラーが出ます。 ある変数が「未定義」または「null」または「""(空白)」の場合はnullである、という関数を作りたいです。 ------------------------------------------ function is_null_ex($value){  if (!isset($value)) {return true;}               // 未定義かnullの場合、trueを返す  else if (strlen(strval($value)) === 0) {return true;}   // 空白の場合はtrueを返す  else {return false;}                      // $valueに値が入っている場合はfalseを返す } is_null_ex($val); ------------------------------------------ 上記の関数で$valueが未定義の場合にfuncを使うと、次のようなエラーが出ます。 Notice: Undefined variable: val つまり、未定義の変数を引数に渡すとエラーが出ます。 「未定義なら関数に渡さなければ?」と思うかもしれませんが、そもそもこの関数は「未定義」または「null」または「""(空白)」を判定したい関数なのです。 この場合、どうすれば良いのでしょうか? エラーは出ますが上記の関数で「if (!isset($value)) {return true;}」の部分できちんと判定はされています。 PHP5.3系で運用しています。 ぞうぞよろしくお願い致します。

    • ベストアンサー
    • PHP
  • javaScriptのif文について…

    以下のようなプログラムを作成しました。作ったのはサンプルで、本当に作りたいのはもっと条件が多いのを作りたいのですが、かなりifの羅列となってしまいます。他に何か良い方法はありませんか?教えてくださいm(__)M <html> <script type="text/javascript"> function hoge(){ var v1=document.getElementById('s1').value; var v2=document.getElementById('s2').value; var rslt; if (v1==1 && v2==1) { rslt=36; } else { if (v1==1 && v2==2) { rslt=29; } else { if (v1==1 && v2==3) { rslt=22; } else { if (v1==1 && v2==4) { rslt=14; } else { if (v1==1 && v2==5) { rslt=7; } else { if (v1==1 && v2==6) { rslt=0; } else { rslt='?'; }} document.getElementById('txt').value=rslt; } </script> <body> <select id="s1" onChange="hoge()"> <option value="1">1 <option value="2">2 <option value="3">3 <option value="4">4 </select>   <select id="s2" onChange="hoge()"> <option value="1">1 <option value="2">2 <option value="3">3 <option value="4">4 <option value="5">5 <option value="6">6 </select><p> <input type="text" id="txt" value=""> </body> </html>

専門家に質問してみよう