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

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

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

enchant.js

enchant.jsとは、アプリやゲームを簡単に開発できるオープンソースのHTML5+JavaScriptベースのフレームワークです。プログラミング学習にも用いられ、多くの素材やプラグインが用意されています。

Q&A

解決済

1回答

1882閲覧

JavaScriptで、関数をpushSceneで呼び出したはずが、◯◯ is not a functionというエラーが出る

jyarin

総合スコア12

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

enchant.js

enchant.jsとは、アプリやゲームを簡単に開発できるオープンソースのHTML5+JavaScriptベースのフレームワークです。プログラミング学習にも用いられ、多くの素材やプラグインが用意されています。

0グッド

0クリップ

投稿2020/04/16 01:58

JavaScript

1window.focus(); 2enchant(); 3 4window.onload = function(){ 5 6 core = new Core(320,320); 7 core.fps = 30; 8 9 core.preload('start.png'); 10 11 core.onload = function(){ 12 13 PlX = 100; 14 PlY = 100; 15 16 core.pushScene(core.startFx(PlX,PlY)); 17 18 //startScene 19 core.startFx = function(PlX,PlY){ 20 21 var startScene = new Scene(); 22 startScene.backgroundColor = "#559955"; 23 24 var startPic = new Sprite(236,48); 25 startPic.image = core.assets['start.png']; 26 startPic.x = PlX; 27 startPic.y = PlY; 28 startScene.addChild(startPic); 29 30 startScene.addEventListener('enterframe', function(e) { 31 if(core.input.left){ 32 core.popScene(); 33 } 34 }); 35 }; 36 } 37 core.start(); 38} 39

エラー文

Uncaught TypeError: core.startFx is not a function

問題

core.pushSceneで関数core.startFxを呼び出したはずが、上記のエラーが出ました。
ちなみに画面上には何も表示されませんでした。

このエラーを取り除き、画面上に背景色#559955と'start.png'を出す方法を教えてください。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

そのエラーメッセージは、○○が関数ではないのに呼び出そうとしている(実行させよいうとしている)ってことなので、
その○○が本当に関数とかメソッドなのかを確認してみてはどうでしょう

投稿2020/04/16 02:20

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jyarin

2020/04/16 02:57

僕はこの部分↓ ----- core.startFx = function(PlX,PlY){ var startScene = new Scene(); startScene.backgroundColor = "#559955"; var startPic = new Sprite(236,48); startPic.image = core.assets['start.png']; startPic.x = PlX; startPic.y = PlY; startScene.addChild(startPic); startScene.addEventListener('enterframe', function(e) { if(core.input.left){ core.popScene(); } }); }; ----- でcore.startFxを関数として定義しているつもりなのですが、出来ていないのですか? もしそうなら、「背景色を設定し、画像’start.png’を表示する」関数を定義する方法を教えてください。 また、startFxが関数であるかを確認する方法があれば、それも教えて頂けませんか? 例えば「chromeのデバッグモードで◯◯を押せば確かめられる」といった風に教えて頂ければ嬉しいです。
y_waiwai

2020/04/16 03:02

> core.pushScene(core.startFx(PlX,PlY)); ってのはそのコードの前に記述されてますね 関数を代入する前に実行しようとしても無理です。代入されたあとに、実行するようにしましょう
jyarin

2020/04/16 04:02

ありがとうございます。 >core.pushScene(core.startFx(PlX,PlY)); をstartFx定義の下に移したところ、この行にまた別のエラー↓が発生しました。 ーーー Uncaught TypeError: Cannot read property '_element' of undefined ーーー これを取り除く方法を教えて頂けませんか?
y_waiwai

2020/04/16 04:23

'_element' というメンバーが存在しないってことですが、まずはどの行で出るのかを確認し、その行、あるいはその前の行で異常がないかを見てみることですね
jyarin

2020/04/16 05:00

どうやらcore.startFxという関数は、Sceneの代わりにならないみたいです。 ただ、この関数の最後にreturn startScene;と書けば、Sceneとして扱われるみたいです。 実際、そうすればプログラムは動きました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問