ハイハイスクールアドベンチャー_web版
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
ハイハイスクールアドベンチャー_web版 [2024/02/16 00:35] – [音とか] araki | ハイハイスクールアドベンチャー_web版 [2025/09/18 01:28] (現在) – [画面の描画] araki | ||
---|---|---|---|
行 66: | 行 66: | ||
じゃあ、メモリ上に置いといて、書き込みは処理が終わってまとめてやればいいんじゃないかということになるが、画像を RGBA形式で保持していると、結局読み出しが遅いのだ。 | じゃあ、メモリ上に置いといて、書き込みは処理が終わってまとめてやればいいんじゃないかということになるが、画像を RGBA形式で保持していると、結局読み出しが遅いのだ。 | ||
- | そもそもそんなに色数使わないので、8bitのインデックスを作ってペイントバッファとしてそれを使えばいいんじゃないかということに気づいてそのようにした。 | + | そもそもそんなに色数使わないので、8bitのインデックスを作ってペイントバッファとしてそれを使えばいいんじゃないかということに気づいて((気づきが遅い!))そのようにした。 |
なお、当初は、普通に一枚の canvasでやりくりしてたし、速度的には十分だったが、下に書くように、画面の表示領域をネイティブのサイズより大きくしたかったので、画面の canvas要素へ拡大転送するための canvasを作成して、ネイティブサイズ((256x152ピクセル))の画像はそこに描画されている。 | なお、当初は、普通に一枚の canvasでやりくりしてたし、速度的には十分だったが、下に書くように、画面の表示領域をネイティブのサイズより大きくしたかったので、画面の canvas要素へ拡大転送するための canvasを作成して、ネイティブサイズ((256x152ピクセル))の画像はそこに描画されている。 | ||
行 249: | 行 249: | ||
if (' | if (' | ||
{ | { | ||
- | navigator.serviceWorker.register(' | + | navigator.serviceWorker.register(' |
} | } | ||
</ | </ | ||
行 279: | 行 279: | ||
' | ' | ||
' | ' | ||
- | 'js/sw.js' | + | ' |
]; | ]; | ||
行 303: | 行 303: | ||
要はキャッシュを登録しているだけである。 | 要はキャッシュを登録しているだけである。 | ||
これでオフラインでも使えるようになるらしい((そのように作られていれば))が、やってみていないのでわからない。 | これでオフラインでも使えるようになるらしい((そのように作られていれば))が、やってみていないのでわからない。 | ||
+ | |||
+ | なお、キャッシュされるオブジェクトの指定は、sw.jsのある場所からの相対パスまたは絶対パス、URIなどで、これを間違うとエラーをはいてキャッシュに失敗する。 | ||
+ | |||
+ | ブラウザによってはsw.jsがエラーを出しているとインストールボタンを表示してくれない厳格なやつもいたりするので、よく確認してほしい。 | ||
=== トラブルシュート === | === トラブルシュート === | ||
行 417: | 行 421: | ||
なお、実際に使用しているスタイルシートは、レスポンシブデザインっぽく、px使わないでサイズを指定しています。 | なお、実際に使用しているスタイルシートは、レスポンシブデザインっぽく、px使わないでサイズを指定しています。 | ||
+ | ==== 設定 ==== | ||
+ | |||
+ | 基本的には、特に設定項目はなかったのだが、音を鳴らすことにしたら、Qt版同様に、音を鳴らすのかどうかを覚えておいた方がいいような気がしてきた。 | ||
+ | |||
+ | まあ、毎回 Mute ONにしてしまうでもいいような気もしたが、将来何かの設定を追加したときに、それも覚えておいた方がいいような気がしたので、保存できるようにした。 | ||
+ | |||
+ | ゲームデータ保存用objectStoreはIndexedDBに作ってあったので、バージョンを2にして、設定用のobjectStoreも作るようにした。 | ||
+ | DBのアップグレードとかしないと思ってたが、いきなりすることになるとは先見の明がなさ過ぎた。 | ||
+ | |||
+ | < | ||
+ | const req = indexedDB.open(Database.DBNAME, | ||
+ | req.onupgradeneeded = (event) => | ||
+ | { | ||
+ | const db = event.target.result; | ||
+ | const oldver = event.oldVersion; | ||
+ | const newver = event.newVersion; | ||
+ | const migrations = { | ||
+ | " | ||
+ | db.createObjectStore(Database.STORENAME, | ||
+ | }, | ||
+ | " | ||
+ | db.createObjectStore(Database.PREFSTORE, | ||
+ | } | ||
+ | } | ||
+ | for (var v = oldver + 1 ; v <= newver ; v++) | ||
+ | { | ||
+ | if (migrations[v]) migrations[v](); | ||
+ | } | ||
+ | }; | ||
+ | </ | ||
+ | バージョン更新のやり方は、どこかで見かけたのを参考にした。 |
ハイハイスクールアドベンチャー_web版.1708043703.txt.gz · 最終更新: by araki