2009-10-24
JavaScript による 3 state button
今日は時間があるので久々にJavaScriptのお勉強。
JavaScript本の方はまだ半分ぐらいしか読んでいないけれど、読んでばっかりだと理解が浅いし面白くないのでコードを書いてみた。
マウスオーバーした場合とそうじゃない場合で画像を変えるスクリプトが掲載されていたので、これとトラックバックされていたエントリを参考に"3 state button"に挑戦。
要するに、マウスオーバー、クリック時に画像が変わるようにするわけですね。
参考にしたのは下記のページ
- ソースがシンプルなJSによるロールオーバー - CSS HappyLife 2 state buttonのコード
- JavaScriptメモ(3):しんぷるロールオーバー(追記:2007.6.29) | Le Arche JavaScriptにおける変数のスコープや寿命、Listenerの使い方
- JS でロールオーバー - IT戦記 プレロードの方法
簡単だと思っていたけれど、JavaScriptの変数の寿命とスコープについて分かっていないことがたくさんあって、だいぶ勉強になりました。
コードを公開している皆様に感謝です。
JavaScriptによる3 state buttonの実行例
(function(onLoad) { if(window.addEventListener) window.addEventListener("load", onLoad, false); else if(window.attachEvent) window.attachEvent ("onload", onLoad); }) ( function() { var result; var images; var image; function preLoadAndCreateFunction(name, filename) { var preload = new Image(); preload.src = filename; return function() { this.setAttribute(name, filename); } } if(document.getElementsByTagName) { images = document.getElementsByTagName("img"); for(var idx = 0; idx < images.length; idx++) { image = images[idx]; if(result = image.getAttribute("src").match(/(.*_)off(\..*)/i)) { image.onmouseover = preLoadAndCreateFunction("src", result[1] + "on" + result[2]); image.onmouseout = preLoadAndCreateFunction("src", result[1] + "off" + result[2]); image.onmousedown = preLoadAndCreateFunction("src", result[1] + "click" + result[2]); image.onmouseup = preLoadAndCreateFunction("src", result[1] + "on" + result[2]); } } } } );
2009-10-04
エントリの読みにくさ
さっき書いたエントリが見にくい。
絵もなく見出しもなく、文章がただドカッと並べられているからのような気がする。
リンクも丸出しだし。ハテナ記法に[]でURLを囲めば自動的にページのタイトルを拾ってきてそれを表示してくれる機能があるらしい。Wikiみたいだけど、自動的にタイトルを拾ってきてくれる分こっちの方が便利だなあ。それとも僕が知らないだけでWikiの記法にもそういうのがあるのかも。
サンシャイン牧場(mixiアプリ)
マイミクがmixiアプリの”サンシャイン牧場”というゲームを勧めてきたのでやってみました。
内容はシンプルで、やりこみ的要素が多いわけではないのでゲーマーには物足りない感じだったけれど、ゲームとかほとんどやったことない人には敷居が低くて楽しみやすいのではないかと思いました。
ゲームとして簡単、食料を育てるというわかりやすい目的、敬遠したくなるサブカルチャー的要素がない、というのが特に敷居が低い理由かなあ。
しかも、ゲームの進行に時間の経過が必要なところとか、他のユーザーと関われるところとか、ネットゲームとしての要素もあって感心しました。実はこれがネットゲーム初体験。まさかmixiでネトゲ初体験になるとは夢にも思っていませんでした。
まだmixiアプリの仕組みを全然知らないのでなんともいえないのですが、きっと外部にゲームの情報を保存しておくサーバを用意してmixiアプリからそこにアクセスしているのでしょう。データの保持以外のほとんどの処理はクライアント側でできそうだから、Google App Engineとか使って無料で構築することもできるのかなあ?
JavaScript本はほとんど読み進めてないのですが、この”サンシャイン牧場”のmixiアプリのxmlを読んでみようというページを見つけました。mixiアプリではJavaScriptを使うことが多いのでサンプルとして読むのが楽しそうです。
他にも"サンシャイン牧場用のミクシーアプリを作ってみた"というエントリも見つけてさっそく試してみました。こういう風に楽しく勉強できるエントリを作ってくれている人がいるというのはありがたいことです。実際に動いているソースコードを読ませてもらうと理解がすすむ気がします。
2009-09-26
Java Script
Web Designにからんで、Java Scriptの本を読書中。
定番のO'Reillyの本を選んで購入してみた。
- 作者: David Flanagan,村上列
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/08/14
- メディア: 大型本
- 購入: 50人 クリック: 911回
- この商品を含むブログ (263件) を見る
ページ数は671ページほどで、2週間でまだ160ページほどしか読んでいない。内容はそんなに難しくないけれど、文章が多いとさすがに時間がかかる。仕事が忙しくない時期ならもっと速く読めるのだろうけど。。。
Java Scriptの言語仕様はJavaとあまり関係なく、もともとLiveScriptという名前だったらしい。
宣言・スコープなどの話はC++の知識がある人なら特に難しくないと思う。参照やGCについては難しくはないけど慣れる必要がありそう。GCとクロージャにまつわるメモリリークの話は面白かった。
いまはプロトタイプとクラスにまつわる話を読書中。今日は時間があるから読み進めようかな。
当初はJavaScriptを勉強するつもりはなかったけれど、Web以外にもWSHでも使えるので、案外役に立ちそう。