javascriptで簡単なゲーム制作をしているのですが、firefoxで妙に動作が重かったり、処理落ちしすぎてブラウザが固まったりすることがよくあります。
chromeやIEでは問題なく動きます。(windows8モードにしてないchromeで、動作がおかしいことはありました)
考えられる原因が多すぎると思いますが、一般的にどんな点に気をつけたら良いのでしょうか。
たぶんなにか本当に初歩的なところに問題があると思うのですが。。
アドバイスがありましたら、ご教授いただけると嬉しいです。
ちなみに各ブラウザは全部最新バージョンで、jqueryなどライブラリは使ってません。
またゲームの種類はシューティングやアクションで、全般的に動きが遅かったり、弾がいっぺんにたくさん出るところでフリーズしたりします。
まったく動かなかったということは今までなかったと思います。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
Firefoxにはプロファイラーと言うものが付いているのはご存知でしょうか?
これを使うと、呼び出された関数に使用した時間がわかるので
どの関数が重たいのか調べられます。
詳しくは以下のサイトを参照
http://smellman.hatenablog.com/entry/2013/05/16/ …
使ってみたところ、問題の箇所を割り出すことができました。
原因は下の方の補足の通りです。思ったとおり本当に初歩的なところにありました。
ご回答ありがとうございます。
No.1
- 回答日時:
WebGLなんかを使ってるわけではないですよね?
モダンブラウザ間でそこまで差が出るとは思えないのですが……
気をつける点としては物理エンジンなどは全部Workerに持ってきて、メインスレッドではrequestAnimationFrameを使った更新処理をする。
DOMではなくCanvasを使う、ということでしょうか。
他にもCanvasのgetContextの第二引数にオプションを指定することにより若干の性能改善が期待できます。
それ以上だとWebGLを使う形になるでしょう。
この回答への補足
html上にすでに表示してある画像をプレロード済みとして使っていたのが原因のようです。
きちんとidを指定して取り寄せなくても、chromeやIEでは仕様なのかなにかのはずみなのかロード済み画像をhtmlから持ってきてくれたのに、どうやらfirefoxではわざわざ元ファイルを取りに行っていたようです。
idから指定し直したらきちんと動くようになりました。
ご回答ありがとうございます。
workerやwebGLについては存在も知らなかったので、勉強になりました。
またこれまでsetTimeoutばかり使っていたので、requestAnimationFrameとの違いも調べてみてなるほどと言う感じです。
firefoxでの問題についてですが、解決したので補足に書いておきます。
教えて頂いたことをきちんとふまえ、勉強していきたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ノートパソコン Windows 10 動作改善方法 6 2023/04/26 22:30
- その他(ブラウザ) angel ブラウザってなぜアプリのクラッシュやフリーズが多いのでしょうか?? 特定のサイトにこのブ 3 2023/02/06 20:17
- InternetExplorer(IE) 既定のブラウザーを変更した場合、付随して処理が必要なことはありますか? 2 2022/03/25 16:04
- その他(OS) MAC VirtualBoxにインストールしたWindows11がフリーズする 1 2023/03/14 16:31
- Firefox(ファイヤーフォックス) firefoxが頻繁に停止する 1 2023/01/09 10:26
- Firefox(ファイヤーフォックス) Firefoxで、メルカリを開くと、CPUの稼働が高まる事がある? 3 2022/04/02 02:02
- Chrome(クローム) ソコン版の Chrome は調子悪いです 拡張機能のズームがおかしく100%の画面になったりします 2 2023/01/15 02:48
- Firefox(ファイヤーフォックス) Firefoxが起動しない原因とカイゼン方法 2 2022/07/19 10:54
- その他(ブラウザ) ブラウザが起動しない 2 2023/04/13 12:06
- その他(ブラウザ) グーグルクローム パソコン用のブラウザ 画面を大きくする拡張機能ズームがうまくいきません 新しいバー 1 2023/01/16 00:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DirectXとOpenGLはどちらが動作...
-
【JavaScript】confirmのボタン...
-
【JavaScript】PS3で一部の構文...
-
ドラクエがプリセットされてるFOMA
-
読み取り専用が外れない
-
HTMLでDBからデータを表形式で...
-
非道式6進カウンタと非同期式10...
-
phpとajaxの比較
-
php ob_flushが全く動作しない
-
Ajaxでpostした内容のresponse...
-
Javadcriptでwebサーバー側にあ...
-
非同期通信を使うタイミングが...
-
ajaxでhtmlを返して画面に描画…...
-
ASP.NET(VB)VBソースからJavas...
-
F5などで更新すると、画像やCSS...
-
大量のデータを表として展開す...
-
チャットを作る
-
ローカルにあるhtmlをブラウザ...
-
HTMLでリアルタイムグラフを作...
-
ソースのリンク先などの暗号化...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【JavaScript】confirmのボタン...
-
DirectXとOpenGLはどちらが動作...
-
[JavaScript] preven...
-
WEBページのリフレッシュについて
-
windows11ではアンドロイドアプ...
-
ASP.netで作成したシステムのip...
-
webシステムでchrome
-
JQuery サーバー上にアップする...
-
imm(日本語入力)が上手く行きま...
-
身のこなしの意味は動作ですか?
-
動作が重いJavaScriptを改善したい
-
ASP.NET 動的に行を増やすTable
-
DelphiでSelectDirectoryを..
-
読み取り専用が外れない
-
gifcatの挙動について
-
amazon販売の、microSD2枚→SDア...
-
Excel2019 VBA の objIE
-
エクセルマクロ ガントチャート作成方法について
-
リサイクルショップの「動作OK...
-
javascriptでバックグラウンド...
おすすめ情報