明滅するプログラマの思索

WEBエンジニアとして勤務している一介の男が、日々気づいたことをまとめるブログです

前回のバックグラウンド移行が特定の時間より前なら Scene 移動する

最近cocos2d-xをいじる機会が多いです。
アプリ開発は、国内ではUnity一択な風潮がありますが、2Dメインだとか、WebViewメインなアプリの場合、cocos2d-xで開発したほうが楽な場合も多いなと思います。
今回は、前回のバックグラウンド移行(アプリを起動したまま閉じる)が特定の時間より前だった場合、次回のフォアグラウンド移行(閉じたアプリを開く)で別の Scene に移動する場合のコードを書いてみたいと思います。

続きを読む

ウェブビューアプリの表示領域が iPhone X で崩れる問題

ウェブビューをベースにしたアプリの表示領域が、iPhone X だと崩れてしまう場合があります。
早い話が、ウェブビューの表示領域内に余計なスクロールが生まれ、CSSなどで固定させても動かせてしまうような状態になります。
これは iPhone X で刷新された表示領域の概念の違いによって起きているようです。

こんなときは、とりあえずウェブビュー内のHTMLの<meta name="viewport" />content="viewport-fit=cover"を追加してやります。

<meta name="viewport" content="width=640,height=1136,user-scalable=no,target-densitydpi=device-dpi,viewport-fit=cover" />

こんな感じですね。
これでウェブビュー内の表示が固定されます。

jQuery の animate で背景色をアニメーションする

jQuery の animate メソッドは、CSSプロパティを指定することで徐々に変化するアニメーションを実現することができます。
ただ、color や background-color などの数値ではない値を持つプロパティの場合、アニメーションさせることができません。
jQueryjquery-color というプラグインを用意しており、これをロードすることで color / background-color などもアニメーションさせることができるようになりますが、ほかにも多くのメソッドを含んでいます。
単純にアニメーションさせることがけが目的なのであれば、以下のコードを埋めてやるだけで使えるようになります。

続きを読む

次の月曜日、前の日曜日を計算する方法

備忘録です。
PHPで次の月曜日や前の日曜日を計算する方法をまとめます。

次の月曜日

  • 現在が日曜日なら翌日
  • 現在が月曜日なら当日
  • 現在が火曜日~土曜日なら翌週の月曜日
if (date('w') == 1) {
  // 今日が月曜日
  $next_monday = date('Y/m/d');
} else  {
  $next_monday = date('Y/m/d', strtotime("next Monday"));
}
続きを読む

swiper.js でスライド内に overflow を置いた場合スライド中前面に出てしまう問題

swiper.jsという Javascript ライブラリがあります。

Swiper - Most Modern Mobile Touch Slider

WEBサイト中にスライドを埋め込めるライブラリは数多くありますが、swiper.js はオプションが非常に多く、柔軟な実装が可能なため、気に入って使っています。
これを使ってハマったことを今回まとめてみます。

続きを読む

PHPでゲームのフラグを管理する1つの手法

ゲーム開発をすると、様々なフラグを管理しなくてはいけない場面が出てきます。
特定のイベントをクリアしているかどうか、イベントアイテムを持っているかどうか、特定の操作を行っているか…、さまざまな条件を用意し、スイッチを切り替えることでダイナミックな進行を表現できるようになるのです。
フラグの管理はどのようにするのが良いでしょうか。
RDBを利用して、正規化されたフラグを1つ1つ丁寧に格納するのも方法ではあるでしょう。
ただ、ゲームがアップデートを繰り返すような場合、当初に想定したフラグ数ではとても足りなくなる、そんな場合も考えられます。
その分だけDBのカラム数を増やしても良いですが、限界はあります。
今回は、1つの文字列を使ってフラグを管理する方法について、自分なりの解を以下にまとめてみました。

導入環境

ソフトウェア バージョン
PHP 5.6

※ PDO を利用しています。

続きを読む

Console CommandLine を使って汎用的なコマンドを作る

PHPPEAR にはConsole_CommandLineというライブラリが公開されています。
Console_CommandLinePHPコマンドライン型のアプリケーションを作成するためのライブラリで、引数やオプションを手軽に利用したり、出力時の強調機能、ヘルプ出力機能などを含んでいます。
今回は、Console_CommandLineを利用して、引数により処理を切り替えられる汎用的なコマンドの実装を行ってみます。

目標としては、以下のような状況を考えます。

  • コマンド用スクリプトを用意し、1つ目の引数に実際に行いたい処理を指定します。
  • 実際の処理は、引数ごとに用意された別々のスクリプトが受け持ちます。
  • 2つ目以降の引数・オプションは、対応する処理スクリプトで任意に指定できるようにします。

コマンド用スクリプト php_command.php を用意します。
引数には実際に実行する処理を指定します。
以下のような感じです。

php php_command.php insert_table "Hello" -m test

ここで、実際に実行する処理 insert_table は別スクリプト command_insert_table.php が担当することにします。

導入環境

ソフトウェア バージョン
PHP 5.6

PEAR のライブラリ Console_CommandLine を利用します。

続きを読む