uka.apple のすべての投稿

デアゴスティーニ商法作業管理での82日目作業

今日の作業は「画面サイズ変更時にパターン保持その3 – 画像調整」です。

今までは画面サイズ変更でライフはクリアされ、画面上のライフは全て消えました。それを今日の作業で画面サイズ変更前のライフを引き継ぐようにしました。

上の画像がウィンドウサイズ変更前、下の画像がウィンドウサイズの高さを増やした後です。

・・・どういうこと?何がどうなってるの?

画面サイズを引き延ばした下の画像では、本来は上下にスペースが増えて、ライフの形が保持される想定でした。

しかし実際は全体的に引き延ばされ、場所によってはライフの形が崩れてしまいました。

想定の動作とは違います。本来は今日中にこの部分を修正したかったのですが、思ったより時間がかかったため明日の作業にしたいと思います。

以上です。

本家デアゴGTR-NISMO箱積状況:2箱(33,34号)

デアゴスティーニ商法作業管理での81日目作業

今日の作業は「画面サイズ変更時にパターン保持その2 – 画像描画」です。

昨日保存したテクスチャを使って、任意のタイミングで画面に描画することに成功しました。画面サイズ変更という名目で作業中ですが、ライフのセーブやロード機能にも利用出来そうです。

コードは長いので省略します!

WebGLでコード書いてる人の役に立てるよう、今後はなるべくコードを載せたいです・・・以上です!

本家デアゴGTR-NISMO箱積状況:2箱(33,34号)

デアゴスティーニ商法作業管理での80日目作業

今日の作業は「画面サイズ変更時にパターン保持その1 – 画像保存」です。

現状、画面サイズ変更でライフはクリアされ、画面上のライフは全て消えます。それを今日から4日間(その1〜その4)の作業で画面サイズ変更前のライフを画面サイズ変更後も引き継ぐようにしたいと思います。

今日は1日目の作業として、フレームバッファにテクスチャを紐付けして、そのテクスチャにオフスクリーンで描画中のライフを保存しました。

具体的にはgl.framebufferTexture2Dを使いました。コードは超長い&整理出来ていないので省略します・・・

以上です!

本家デアゴGTR-NISMO箱積状況:2箱(33,34号)

デアゴスティーニ商法作業管理での79日目作業

今日の作業は「jsキャッシュ防止」です。

いきなりですが、作成したコードは以下の通りです。


const now = new Date();
const year = now.getFullYear();
const month = now.getMonth() + 1;
const day = now.getDate();
const hour = now.getHours();
const min = now.getMinutes();
const sec = now.getSeconds();

var key = year + "_" + month + "_" + day + "_" + hour + "_" + min + "_" + sec;

$(document).ready(function(){

    let paramIndex = location.href.indexOf('?');
    if (-1 == paramIndex) {
        location.replace(location.href + "?date=" + key);
        return;
    } else if (location.href.slice(paramIndex + 1) !== "date=" + key) {
        location.replace(location.href.slice(0, paramIndex) + "?date=" + key);
        return;
    }
    // js load
    let scripts =['SF_utils.js?date=' + key
                    ,'SF_base.js?date=' + key
                    ,'SF_points.js?date=' + key
                    ,'SF_plates.js?date=' + key
                    ,'SF_cubes.js?date=' + key
                    ,'SF_cubesIns.js?date=' + key
                    ,'SF_Controls.js?date=' + key
                    ,'SF_UI.js?date=' + key
                    ,'SF_Life_CPU.js?date=' + key
                    ,'SF_Life.js?date=' + key
                    ,'SF_Land.js?date=' + key
                    ,'SF_Steve.js?date=' + key
                    ,'main.js?date=' + key];
    
    function onloaded(e){
        onload();
    }
    let len = scripts.length;
    let i = 0;
    (function appendScript() {
        let script = document.createElement('script');
        script.src = scripts[i];
        if(typeof scripts[i] == "undefined"){
            return false;
        }
        document.head.appendChild(script);
        if (i++ < len) {
            script.onload = function(e){
                if (i == len) {
                    onloaded(e);
                } else {
                    appendScript();
                }
            }
        }
    })();
});

昨日のCache BustingをJSに適用した形です。htmlの場合はhref.replaceで画面遷移しましたが、jsはタグを生成して動的に追加しています。

"onloaded"に処理が来た時点で、全てのjsが読み込まれた状態になっています。

イメージやcssなども同様の手法で行けると思います。

これでリロード地獄から解放されました!やった!

以上です!

本家デアゴGTR-NISMO箱積状況:2箱(33,34号)

デアゴスティーニ商法作業管理での78日目作業

今日の作業は「htmlキャッシュ防止」です。

開発時は頻繁にhtmlやjsを変更します。ブラウザに変更を反映するにはその度にキャッシュを削除したり”スーパーリロード”が必要なのですが、面倒になってきました。

そこで常に最新ソースをロードするような仕組みを作りました。しかもphpなどサーバサイドの言語を使わず、htmlとjavascriptのみで、です。


let now = new Date();
let year = now.getFullYear();
let month = now.getMonth() + 1;
let day = now.getDate();
let hour = now.getHours();
let min = now.getMinutes();
let sec = now.getSeconds();

let key = year + "_" + month + "_" + day + "_" + hour + "_" + min + "_" + sec;

let paramIndex = location.href.indexOf('?');
if (-1 == paramIndex) {
    location.replace(location.href + "?date=" + key);
    return;
} else if (location.href.slice(paramIndex + 1) !== "date=" + key) {
    location.replace(location.href.slice(0, paramIndex) + "?date=" + key);
    return;
}
・・・以降処理内容

?とそれ以降の文字列を付加してロードする方法で、これをCache Bustingと言います。こうすることでブラウザに関係なく必ず最新のソースを取って来れます。上記コードは1秒毎に新しいコードをサーバに取りに行ってくれますが、本番リリース時は1日単位くらいに調整予定です。

明日はJSもキャッシュしないようにします。

以上です!

本家デアゴGTR-NISMO箱積状況:2箱(33,34号)

デアゴスティーニ商法作業管理での77日目作業

今日は一週間の予定を立てる日です。

78日目:htmlキャッシュ防止
79日目:jsキャッシュ防止
80日目:画面サイズ変更時にパターン保持その1 – 画像保存
81日目:画面サイズ変更時にパターン保持その2 – 画像描画
82日目:画面サイズ変更時にパターン保持その3 – 画像調整
83日目:画面サイズ変更時にパターン保持その4 – 仕上げ
84日目:予備日(次の週の予定を立てる)

以上です!

本家デアゴGTR-NISMO箱積状況:1箱(33号)

デアゴスティーニ商法作業管理での76日目作業

今日の作業は「画面に収まりきらないUIの切り替え処理その3」です。

昨日はマウスの移動量に応じてUIの表示範囲がずれるようにしましたが、移動量に制限がないためUIが完全に見えなくなるまでスクロールしてしまっていたので、適切にスクロールのリミットをかけました。

また、スクロールした場合は各種UI(ラジオやボタン)が反応しないように調整しました。スクロールしたと思ったのにボタン反応したらイライラしますからね。

これでUIのスクロール処理が完成しました!今後は画面の表示範囲を気にせずガンガンUIを追加できます!

以上です!

本家デアゴGTR-NISMO箱積状況:1箱(33号)

デアゴスティーニ商法作業管理での75日目作業

今日の作業は「画面に収まりきらないUIの切り替え処理その2」です。

昨日は、とりあえずUIの上でマウスが動いたら無条件で表示範囲を少しずつ上にずらす処理を入れましたが、今日はマウスの移動量に応じてUIの表示範囲が変化するようにしました。

特に処理が重くなることもなく、UIがスムーズにスクロールしまいた。良い感じです。

以上です!

本家デアゴGTR-NISMO箱積状況:1箱(33号)

デアゴスティーニ商法作業管理での74日目作業

今日の作業は「画面に収まりきらないUIの切り替え処理その1」です。

調子に乗ってUIを追加しまくってたら、ご覧の通り、画面サイズによってはUIが全て表示できなくなっていました。

隠れているUIの表示方法は、ページを切り替えるように表示を切り替えるページ切り替え方式と、マウスドラッグによりUIの表示範囲を動かすドラッグ方式のどちらにするか迷ったのですが、ドラッグ方式で行くことにしました。

より工数がかかりそうですがこちらの方がスマートな気がします。

で、今日はとりあえずUIの上でマウスが動いたら無条件で表示範囲を少しずつ上にずらす処理を入れて見ました。

はい、ご覧のように上にずれました。明日はマウスドラッグの方向に従ってずらす方向を調整したいと思います。

以上です!

本家デアゴGTR-NISMO箱積状況:1箱(33号)