前回に引き続きCreateJSを試してみています。
今回は、前回よりゲームっぽいものをということでキャラクタを配置してキーボードで動かせるようにしてみました。
→サンプル
PC限定ですが、カーソルキーで移動できます。
素材はFirstSeedMaterialさんの素材を透過部分など一部加工して使用しています(二次使用禁止)。(RPGツクールをやっていた方ならお馴染み?ですかね)
素材を切り取って配置する方法は以下のようにしています。
前回に引き続きCreateJSを試してみています。
今回は、前回よりゲームっぽいものをということでキャラクタを配置してキーボードで動かせるようにしてみました。
→サンプル
PC限定ですが、カーソルキーで移動できます。
素材はFirstSeedMaterialさんの素材を透過部分など一部加工して使用しています(二次使用禁止)。(RPGツクールをやっていた方ならお馴染み?ですかね)
素材を切り取って配置する方法は以下のようにしています。
Flashを使っていた方にはわかりやすいと評判のJavaScriptライブラリ、CreateJSを使ってみています。
ゲームらしいものを作りたいのですが、とりあえずはそこに至るまでいろいろやる必要があるかな~ということでテストしてみました。まずは簡単にデジタル時計でも…ということでこんなのを作ってみました。
時計の背景の色は毎秒ColorMatrixFilterで変えています。
ソースはメイン部分を抜粋すると以下の様な感じです。
勘違いの話。
CSSでレイアウトするときに、「全部position:absoluteで配置すれば作ったデザインからずれないんじゃないか?」と思うけれど、「position:absoluteはwindowの左上からだからウィンドウ引き伸ばしたら左に寄っちゃうからだめだよな…」と思い直してあきらめていたのですが、そもそもこの前提が間違っていることを最近知りました。
position:absoluteの特性は、そもそも「親要素に対しての絶対座標で配置」ということなのですが、「親要素がstaticである場合はさらにその親要素からの絶対座標になる」というのが仕様のようです。positionは何も指定しなければstaticになるので、何も考えずに作ると、position:absoluteにした時の親要素は延々と辿っていってwindowになるはずです。なので、windowからの絶対配置になってしまって、左上寄せになってしまう…という勘違いを自分もしていたのだと思います。
つまり、中央寄せしたabsolute要素を作りたければ、positionがstaticでない要素を中央寄せにして、その子要素として絶対座標で配置したい要素を置けば良いことになります。上のサンプルはそんな感じで置いています。IETesterのIE6で確認しても普通に表示できていました。
多分初歩の初歩なのでしょうが、一度思い込んでしまうとなかなか気づかないものだな…と反省するのでした。
ちなみに、この方法、万能ではありません。ここでちょっかいを出してくるのがIEです。
表示は確かに出来ます。位置はピッタリです。しかし、position:absoluteは別のバグを引っ張りだすようで、IE8でjQueryのフェードインアウトなどの動きがおかしくなります。filterを全部の要素に指定すれば動いたのですが、それも何だか重そう…というのもあって解決策を模索中です。
うーん、ブラウザは奥が深い、というか闇が深いというか。人がブラウザを見つめるとき、ブラウザもこちらを見つめているのかもしれない。
参考
もう既に有名で、もはや紹介する必要すらないであろうものではありますが、SublimeTextをしばらく使ってみたのでその話を書いてみます。
→Sublime Text: The text editor you’ll fall in love with
「恋に落ちるエディタ」という意味になるでしょうか。TOPページでデモが流れていて機能が紹介されていて、便利そうに見えます。Macっぽい感じがしますが、Windowsでも使えます。LinuxもOKみたいです。
とはいえ、このエディタの一番いいところは「何も設定しなくてもカッコイイ」というところではないかと個人的には思っています。エディタといえば、大抵は無骨な、メモ帳とほとんど変わらない、あるいはちょっと便利な機能を持っているものか、もっと統合開発環境みたいに重くて、やっぱり無骨なものがほとんどな気がしています。もちろん、カスタムすればどれも十分に良い感じになるのだけど、特に何もしなくてもカッコイイものは少ないのでは、と。(知らないだけかもしれない)。使っていたらそれなんてエディタですか?ってプログラマじゃない人が聞きたくなるエディタってすごいんじゃないかと。
cookieをJavaScriptから使うのはやや面倒なところもあるんですが、jquery.cookieを使うと簡単にできます。
→carhartl/jquery-cookie · GitHub
JSをダウンロードするか、CDNを使うかして、scriptタグに入れる。もちろんjQuery自体も必要です。
<script src="hogehoge/jquery.cookie.js"></script>
CDNを使う場合はcdnjsが便利かもしれません。
使い方はごく単純でcookieのセットと値取得は以下の様な感じでできました。
$.cookie("クッキー名", "値");//設定 var data = $.cookie("クッキー名");//値取得
一つ迷ったのはパスの指定でした。以下のようにすればできますが、全部に設定するのは面倒です。
$.cookie("クッキー名", "値", {path:"/"});
サイトの方にしっかりと書いてありますが、以下のようにすればデフォルトのパスが設定できます。
$.cookie.defaults.path = "/";
これでいちいち設定することなく、このドメインの中で同じクッキーを参照するようになります。(通常のデフォルトでは同じディレクトリ?)
昔はJSでやるのが面倒でPHPを介したりしたこともあったんですが、その必要も無さそうです。