空から降ってくる女の子(ゲームっぽく)
空から女の子が降ってくる - ぼくはまちちゃん!(Hatena)
id:murky-satyr先生 の http://gist.github.com/45346 を勉強目的に読んでたら、自分でも書きたくなってついやってしまった。すごく出遅れ感あるけど、折角なので公開。
これで 503 byte
オリジナルとの違い
- なんとかIE6でも動く(はず)
- 位置がpxではなく%
- クリックしなくても一定時間で消える
- クリックして消した時は+1、タイムアウトして消えた時は-1、それぞれステータスバーに反映される
よって、クリックすればポイントが上がって、放置してるとポイントが下がってしまう感じ。
ポイントを付けただけだが、「ゲーム」っぽくはなっているかなと思う。(ゲームっぽいという言い方は少し卑怯だが。。)
なお、当然だがステータスバーを弄るので、ステータスバーを変更できる設定でないとポイントが見えない。
嵌ったところ
- IEはBookmarkletからdocument.titleを変更できない
- 嵌った。。仕方なくステータスバーを使用することに。
- Firefoxはdocument.titleやwindow.statusの変更に制限がある
- document.title="hoge"はOKだが、
var D=document;D.title="hoge"は動かない。statusも同様のようだ。違った(もうちょっと複雑な条件?)。でも動かない場合がある。これも嵌る。
- document.title="hoge"はOKだが、
- 言うまでもないが、IE6の文字数制限。結局id:murky-satyr先生のコードを参考にさせて頂いてしまった。。
Tips(JS のコードを短かくする Tips - 冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。 - subtechにないもの)
- 最短のwindowオブジェクトはtop(フレーム内ではない場合)
- new に引数を渡さない場合、()を省略可能 ( new Image() と new Image は同じ、まあ、これは改めて書くまでもないのかな)
- Bookmarkletの終わりを void 0 にするより、何も返さないメソッドを呼ぶ( alert, scrollなど)
- 引数を持たないメソッドにダミーの引数を渡して、式を書く(id:murky-satyr先生のコードより)
- cloneNode(Y=99); など。これは、 cloneNode(true);Y=99; と実質は同じになる。
- 近似のより桁の小さい値を使う (100ではなく99など)
- 何種類かの数値を使う場合、変数を一つ用意して四則演算で使いまわす。
- 代入と参照を一度に行う
- (S=(E=(D=document).body.appendChild(document.createElement('div'))).style).position='fixed'; これで D=document, E=div要素, S=div要素のstyle となる
Tips2
id:murky-satyr先生 のコードより、
'left:'+(new Date&63)+'%'
乱数の代用品として、日付のシリアル値をビット演算している。変態っていう言葉はこういうときに使う。