<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>lovelog || Loveness×Zeroless</title>
    <link rel="alternate" type="text/html" href="http://www.0ness.net/lovelog/" />
    <link rel="self" type="application/atom+xml" href="http://www.0ness.net/lovelog/atom.xml" />
    <id>tag:www.0ness.net,2009-02-16:/lovelog//2</id>
    <updated>2010-03-09T17:57:43Z</updated>
    <subtitle>This blog is a blog for the study of hirou that aims at an independent web creator. 
The knowledge such as Flash actionscirpt3, CSS2, CSS3, Javascript, jQuery, microformats, and SEO is being studied evenly now. This blog is customized fast as a proving ground of the design. </subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.23-ja</generator>

<entry>
    <title>jQuery ツールチップを表示する</title>
    <link rel="alternate" type="text/html" href="http://www.0ness.net/lovelog/2010/03/jquery-6.html" />
    <id>tag:www.0ness.net,2010:/lovelog//2.142</id>

    <published>2010-03-05T14:24:16Z</published>
    <updated>2010-03-09T17:57:43Z</updated>

    <summary>jQueryがjsライブラリのデファクトスタンダードになって、数多くプラグインが...</summary>
    <author>
        <name>0ness</name>
        <uri>http://www.0ness.net/mt/mt-cp.cgi?__mode=view&amp;blog_id=2&amp;id=1</uri>
    </author>
    
        <category term="jQuery" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="js" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.0ness.net/lovelog/">
        <![CDATA[<p><em>jQuery</em>がjsライブラリのデファクトスタンダードになって、数多く<em>プラグイン</em>が世に出ました。ライトボックス系のモーダルウィンドウや、スライドショーを作成するものなど、簡便にUIが実装出来るものが沢山あります。<br />
僕自身もお世話になってますが、よく使うプラグインは似ているタイプのプラグインも多く、変化をつけるためにカスタマイズは必須です。</p><p>ですが、
そういったプラグインの多くはカスタマイズを考慮に入れていないため手をいれるのが難しいです。<br />
特に圧縮されているスクリプトに修正を施すのはもう不可能〜。せっかく、制作のスピードを短縮するためのプラグインが、逆に時間を奪ってしまうこともあります。<br />
なので案件に対応させたい時や制作時間短縮のために使用した時のために、Web上から自分にあったものを探すよりも、欲しいプラグインを作ってしまった方が良いでしょう。なにより仕様を自分のスタイルに合わせやすいですし、カスタマイズで色々備えておくことも可能になりますから。</p><br />
<p>今回作ったのはツールチップのプラグインです。リンクなど特定の部分にヒュッとでるあれですね。（余談ですけど僕はGoogle日本語入力つかってますが、ヒュッってところで単語予想の部分にヒュッケバインが入っていたのにびびりました。スパロボネタでわからない人すいません。）</p><br />
<p><strong>aタグ内の要素を表示するツールチップ</strong></p><p>ツールチップには色々な使われ方がありますが、リンク先の情報の表示や補足出来ていない情報をコンパクトにまとめる使い方が多いと感じます。<br />今回作ったのはテキスト情報を主に表示するためのツールチップです。<br />とりあえず<a href="http://www.0ness.net/test-case/HTML/jQuery/accent_02.html" target="_blank">サンプル</a>はこちら。</p>
<p>さわってみるとわかると思いますが、割とシンプルなツールチップです。</p><p>スクリプトはこんな感じです。</p><br /><p>javascript</p><blockquote><p>$(function(){<br />&nbsp; var index,texts,nam,t,l,tp = $(".tip"),bd = $("body"),spd = 200,op_01 = {"opacity":0},op_02 = {"opacity":0.9},out = {"top":-9999};<br /><br />&nbsp; function hover(nam,ele,atr,t,l){<br />&nbsp;&nbsp; &nbsp;appSt(nam);<br />&nbsp;&nbsp; &nbsp;var a = "."+nam+" "+ele,st = $("p.tip."+nam);<br />&nbsp;&nbsp; &nbsp;$(a).hover(<br />&nbsp;&nbsp; &nbsp;&nbsp; function(){index = $(a).index(this);onOver(a,st,atr,t,l);},<br />&nbsp;&nbsp; &nbsp;&nbsp; function(){st.animate(op_01,spd,function(){st.css(out)});});<br />&nbsp; }<br />&nbsp; function onOver(a,st,atr,t,l){<br />&nbsp;&nbsp; &nbsp;texts = $(a+":eq("+index+")").attr(atr);<br />&nbsp;&nbsp; &nbsp;st.stop(true, false).animate(op_02,spd).text(texts);<br />&nbsp;&nbsp; &nbsp;$(a).mousemove(function(e){st.css({"top":e.pageY-t,"left":e.pageX-l});})<br />&nbsp; }<br />&nbsp; function appSt(nam){bd.prepend("&lt;p class='tip "+nam+"'&gt;&lt;/p&gt;");tp.css(op_01);}<br />&nbsp; //5パターンのツールチップ実行<br />&nbsp; hover("t_01","a","name",-20,-10);<br />&nbsp; hover("t_02","a","href",-20,-10);<br />&nbsp; hover("t_03","a","name",120,0);<br />&nbsp; hover("t_04","a","name",50,0);<br />&nbsp; hover("t_05","em","title",50,-15);<br />&nbsp; })</p></blockquote><br /><p>各ツールチップ用毎のcss</p><blockquote><p>//ツールチップの基本指定<br />p.tip { position:absolute; top:-9999px; z-index:10; padding: 0px; margin:0px; color:#fff; font-size:13px; font-weight:normal; color:#fff; background:none; }</p><p>.tip.t_01 { width:220px; padding:5px 7px; font-size:14px; background:#000; border:1px solid #09C; }</p><p>.tip.t_02 { padding:5px 7px; font-size:11px; letter-spacing:2px; background:#000; border-bottom:5px solid #09C; }</p><p>.tip.t_03 { width:185px; height:74px; padding:10px 10px 30px 10px; font-size:14px; background:url(common/images/img_tip.png) no-repeat; }</p><p>.tip.t_04 { padding:8px 10px; color:#444; font-size:15px; background:#ccc; background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#aaa), to(#ddd)); <br />background:-moz-linear-gradient(0% 100% 90deg, #aaa, #bbb); -moz-border-radius:3px; -webkit-border-radius:3px; text-shadow:0px 0px 1px #fff; -webkit-box-shadow:1px 1px 1px #999; -moz-box-shadow:1px 1px 1px #999; }</p><p>.tip.t_05 { width:220px; padding:10px 12px; color:#fff; font-size:14px; line-height:1.3em; background:#036; background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#069), to(#036)); background:-moz-linear-gradient(0% 100% 90deg, #069, #036); text-shadow:-1px -1px 1px #025; -webkit-box-shadow:1px 1px 2px #666; -moz-box-shadow:1px 1px 2px #666; }</p></blockquote><br /><p>上記が今回作ったツールチップのjsとcssです。もちろん、これらを使用する前にはjQueryを読み込ませます。今回はjQuery1.4.2を使ってみました。このツールチップを作るとき、色々なパターンを実現出来る方がいいなと思い、CSSでの拡張性が高いものを目指しました。</p><br />
<p><strong>入力した値をパラメータで受け渡す</strong></p><p>表示までの大体の流れはこうなっております。</p><br /><p>hover関数にパラメータを入れ宣言<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; ↓<br />パラメータを変数に代入<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; ↓<br />パラメータで指定した親クラスにツールチップのタグ要素をprependメソッドで記述<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; ↓<br />hoverイベントのマウスオーバーで、まずタグ要素のプロパティを取得<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; ↓<br />それをツールチップのタグ内に記述する<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; ↓<br />animateメソッドで表示後、マウスムーブイベントでツールチップをマウスに追従させる<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; ↓<br />マウスアウトになったら、animateメソッドでフェードアウトし、cssメソッドで画面外にツールチップを再配置</p><br /><p>表示の流れはこんな感じです。雑な仕組みになっちゃっていると思いますが、実際のソースコードもちょっと見てみましょう。</p>

<br /><blockquote><p>var index,texts,nam,t,l,tp = $(".tip"),bd = $("body"),spd = 200,op_01 =
{"opacity":0},op_02 = {"opacity":0.9},out = {"top":-9999};</p></blockquote><br /><p>ここはほとんど関数に必要な変数しかありません。ツールチップのアルファ値や、クラス名など基本の値を記述してあります。一番触る必要のない箇所ですね。</p><br /><blockquote><p> function hover(nam,ele,atr,t,l){<br />&nbsp;&nbsp; &nbsp;appSt(nam);//ツールチップのタグを埋め込む<br />&nbsp;&nbsp; &nbsp;var a = "."+nam+" "+ele,st = $("p.tip."+nam);<br />&nbsp;&nbsp; &nbsp;$(a).hover(<br />&nbsp;&nbsp; &nbsp;&nbsp; function(){index = $(a).index(this);onOver(a,st,atr,t,l);},<br />&nbsp;&nbsp; &nbsp;&nbsp; function(){st.animate(op_01,spd,function(){st.css(out)});});<br />&nbsp; }</p></blockquote><br /><p>hover関数は今回のスクリプトの中で、使用者が唯一記述するスクリプトになります。上記は関数を構成している記述です。（hoverイベントと名前がかぶるんで、ややこしかったですね・・・すいません。）</p><p>関数には5つのパラメータが存在しており、「nam」は親クラス、「ele」はマウスオーバーに対応するタグ要素、「atr」はツールチップに表示するタグのプロパティ、「t」と「l」はツールチップの座標の値です。親クラスのnamを指定させる理由はこのクラス名を組み合わせてツールチップのクラス名として利用するからです。</p><p>これらのパラメータを記述した命令をわかりやすくすると、こうなります。
</p><br /><blockquote><p>hover("親クラス","クラス内のタグ要素","要素内のプロパティ",topプロパティ,leftプロパティ);</p></blockquote><br /><p>なので、「div#testのaタグにnameプロパティを取得したツールチップを表示させたい」時には、</p><br />
<blockquote><p>hover("test","a","name",topプロパティ,leftプロパティ);</p></blockquote><br /><p>となります。topとleftの値だけは、表示するツールチップのサイズによりますので、流動的になります。</p>
<br />
<p class="tip &quot;+nam+&quot;">function appSt(nam){bd.prepend("&lt;p class='tip "+nam+"'&gt;&lt;/p&gt;");tp.css(op_01);}</p>
<br />
<p><em>hoverイベント</em>の前に、実行されているappSt関数は指定した親タグ内にツールチップのタグを埋め込みます。パラメータのnamをpタグのクラスとして利用し、bodyタグの先頭に記述しているんですね。（prependメソッドはhtmlテキストの先頭に指定したテキストを追加するメソッドです。）</p><p>なのでもしnamが「test」というクラスで入力されていたら、ツールチップのクラスは「p.tip.test」という扱いになります。これでツールチップのタグに対してCSSを明確に指定することが出来ます。</p><br />
<blockquote><p>$(a).hover(<br />&nbsp;&nbsp; &nbsp;&nbsp; function(){index = 
$(a).index(this);onOver(a,st,atr,t,l);},//マウスオーバー<br />&nbsp;&nbsp; &nbsp;&nbsp; 
function(){st.animate(op_01,spd,function(){st.css(out)})//マウスアウト</p></blockquote><br /><p>hoverのイベントにはマウスオーバーとアウトの関数をそれぞれ記述してあります。</p><p>index=の記述は、マウスオーバーしている要素が親クラスの中の何番目なのかを調べています。これによりそれぞれの要素内のプロパティを参照することができます。</p><p>マウスアウトすると、animateメソッドでフェードアウトし、そこから<em>コールバック関数</em>でツールチップ自体を-9999pxの位置に飛ばしています。もともと絶対配置なので、この辺は自由に座標をコントロールできます。<br /></p><p>最後にマウスオーバーで実行したonOver()の関数ですが、</p><br /><blockquote><p>function onOver(a,st,atr,t,l){<br />&nbsp;&nbsp; &nbsp;texts = 
$(a+":eq("+index+")").attr(atr);　//要素内のプロパティを参照<br />&nbsp;&nbsp; &nbsp;st.stop(true, 
false).animate(op_02,spd).text(texts); //フェードイン+テキスト挿入<br />&nbsp;&nbsp; 
&nbsp;$(a).mousemove(function(e){st.css({"top":e.pageY-t,"left":e.pageX-l});}) //マウス位置に追従<br />&nbsp;
 }</p></blockquote><br /><p>ここでは多くのパラメータを取得しています。aは親クラス内のタグ要素、stはツールチップに対応するクラス名、他は最初のパラメータと同じものです。<br /></p><p>一行目は要素内のプロパティをまず参照しています。textsという変数にタグ要素から取得したプロパティを代入してます。</p><p>二行目は<em>animateメソッド</em>でフェードイン処理を行っています。そこから<em>メソッドチェーン</em>でツールチップにテキストを入れ込んできます。</p><p>三行目はツールチップの<em>カーソル追従</em>処理です。ここではまずページ全体からマウスの座標を取得しています。これを<em>マウスムーブ</em>イベント中ずっと行っています。</p><br /><p>以上がスクリプトの内容です。サンプルで表示しているツールチップのスタイルが違うのは、親クラスの名前を使ってツールチップ自体がそれぞれのCSSを適用しているためです。</p><p>CSSでスタイルを分けるので、簡単に表示させたいツールチップの差別化が履かれると思います。ただ、まだ表示のエフェクトはフェードインという形になっているので、ここはちょっと改善したいですね。パラメータの受け渡しを使ってこういったツールチップを作ったのですがもうちょっと今後は変数名や値の名前まで気を使って、わかりやすいソースにしなければいけないと感じました。</p><br /><p>今回の<a href="http://www.0ness.net/test-case/HTML/jQuery/accent_02.html" target="_blank">サンプル</a>です。</p><p>今回の記事は西畑一馬さんの「<a href="http://blog.webcreativepark.net/2010/02/02-111519.html" target="_blank">jQuery基礎文法最速マスター</a>」を参考にさせていただきました。</p>]]>
        
    </content>
</entry>

<entry>
    <title>AS3 暗黙型アクセサメソッド</title>
    <link rel="alternate" type="text/html" href="http://www.0ness.net/lovelog/2010/02/post-10.html" />
    <id>tag:www.0ness.net,2010:/lovelog//2.141</id>

    <published>2010-02-26T18:47:29Z</published>
    <updated>2010-03-01T18:03:32Z</updated>

    <summary> プロパティの出力と入力を厳密に行うアクセサメソッド。前回では明示型の記述方法を...</summary>
    <author>
        <name>0ness</name>
        <uri>http://www.0ness.net/mt/mt-cp.cgi?__mode=view&amp;blog_id=2&amp;id=1</uri>
    </author>
    
        <category term="as" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="flash" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.0ness.net/lovelog/">
        <![CDATA[ <p>プロパティの出力と入力を厳密に行う<em>アクセサメソッド</em>。前回では明示型の記述方法を描きました。入力用と出力用をメソッドがはっきり用意されているので、値を扱うクラスを作る際にはとても便利です。</p><p>ただ、明示型のアクセサメソッドは<em>いかにもメソッドを使ってます！</em>ってな感じな指定の仕方ですよね。前回のクラスで例えるとこんな感じ↓</p><br /><blockquote><p>student.setGPA(　値　);</p></blockquote><br /><p>普通のやり方ならば単純にプロパティに値を指定するだけになりますよね。</p><br /><blockquote><p>student._gpa = 値 ;</p></blockquote><br /><p>明示型アクセサメソッドのようにメソッドを使って値を入れるのも何ら問題はないですが、上記の単純な指定でやり取りすれば、実際にプロパティに値を指定している分、プロパティ値の流れがわかりやすくなります。</p><p>このアクセサメソッドでも厳密な指定をする際に、そういったシンプルな指定をしていみたい。そういう時に役に立つのが<em>暗黙型アクセサメソッド</em>です。</p><br /><p><strong>暗黙型アクセサメソッド</strong></p>
<p>まずアクセサメソッドの明示と暗黙というのは、一体何に対してなのかという事ですが、これは「値の参照に対して<em>メソッドを使っているかどうか</em>」という事だと僕は解釈しています。明示型のアクセサメソッドは明らかにメソッドを使って値を扱っています。それに対して暗黙型アクセサメソッドは普通のプロパティの値指定とほとんど同じ記述になります。</p>
<p>Baseクラス</p>
<blockquote>package&nbsp; {<br /><p>&nbsp;&nbsp; &nbsp;import flash.display.Sprite;<br />&nbsp;&nbsp; &nbsp;import flash.events.Event;<br /><br /><br />&nbsp;&nbsp; &nbsp;public class Base extends Sprite{<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;public function Base() {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;addEventListener(Event.ADDED_TO_STAGE,init);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private function init(e:Event):void{<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;removeEventListener(Event.ADDED_TO_STAGE,init);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; addOn();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private var student:GPA = new GPA();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private function addOn():void{</p><p>　　　&nbsp; trace("GPAオブジェクトのデフォルト値："+<em>student.gpa</em>);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<em>student.gpa = 4 ;</em>//入力の処理<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;<br />}<br /></p></blockquote>
<br /><p>GPAクラス</p>
<blockquote><p>package {<br /><br />&nbsp;&nbsp; &nbsp;public class GPA {<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;public function GPA() {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;// constructor code<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private var _gpa:uint = 3;<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;public function <em>get gpa</em>():uint {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return _gpa;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;public function <em>set gpa</em>(value:uint):void {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (value&gt;4) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;_gpa=4;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} else if (value &lt; 0) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;_gpa=0;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} else {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;_gpa=value;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;trace("値は更新されました。現在の値は："+_gpa);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br /><br />&nbsp;&nbsp; &nbsp;}<br /><br />}</p></blockquote><br />

<p>上記が構成されているクラスの中身です。</p><p>Baseクラスの値の操作に注目して欲しいですが、プロパティの指定がとても普通な記述になってます。これが暗黙型の指定の仕方で、クラスを呼び出す方にはメソッドをプロパティのように扱う事が可能になります。（そういう風に見えます。）<br /><br />GPAクラスはメソッドの記述を変更してあります。「get」「set」という記述を足してますね。呼び出す側には「gpa」の値で参照し、元クラスでは「_gpa」を操作しています。<br />これにより呼び出し側と呼び出し元のクラスそれぞれで違和感の無いプロパティの参照が可能になりますね。</p><p>実行結果はこちらです。</p><br /><blockquote><p>GPAオブジェクトのデフォルト値：3<br />値は更新されました。現在の値は：4</p></blockquote><br />]]>
        
    </content>
</entry>

<entry>
    <title>AS3 明示型アクセサメソッド</title>
    <link rel="alternate" type="text/html" href="http://www.0ness.net/lovelog/2010/02/as3-4.html" />
    <id>tag:www.0ness.net,2010:/lovelog//2.140</id>

    <published>2010-02-25T19:10:10Z</published>
    <updated>2010-02-26T18:42:40Z</updated>

    <summary> ASでクラス同士の値のやり取りや、親クラスからメソッドを呼び出す際に、強引にパ...</summary>
    <author>
        <name>0ness</name>
        <uri>http://www.0ness.net/mt/mt-cp.cgi?__mode=view&amp;blog_id=2&amp;id=1</uri>
    </author>
    
        <category term="as" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="flash" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="　　" label="　　" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.0ness.net/lovelog/">
        <![CDATA[ <p>ASでクラス同士の値のやり取りや、親クラスからメソッドを呼び出す際に、強引にパブリックプロパティで値を書き換える事をよくやってしまいます。</p>
<p>自分で案件を一から組む際には、致命的な事にはならないんですが、強引な印象は否めないですし他の人と組むときに親切じゃないですよね。（あと恥ずかしい・・・）</p><p>そんな時に使われるのが、<em>アクセサメソッド</em>というやり方です。</p><p>スクリプトで働く人間として、これは知らねばという事で記述を残しておきます。</p><br />
<p><strong>実際どういう時に使うものなの？？</strong></p><p>このメソッドを使うときは一体どんな時なのか？それはクラス内の<em>プロパティの値を入力、出力</em>する時です。たとえば、計算結果をプロパティの値にしたい、とか、現在のプロパティ値を呼び出してtraceで表示したいとか。</p><p>クラス内で定義したプロパティがパブリックであれば、正直どんな位置からでも簡単にアクセスする事が可能になります。ですが、それは厳密な指定とはかけ離れ、ミスを生み出す可能もあります。そういった適当な指定をしたくない時にアクセサメソッドは必要となります。</p><br />
<p>アクセサメソッドには<em>getter</em>と<em>setter</em>という二つの要素があり、さらにこれがアクセサメソッドということを明示するタイプの型と暗黙型の二つの記述方法があります。</p>
<br /><p>今回は明示型の記述です。クラスの構成はアクセサメソッドでプロパティの値を入出力するGPAクラスと、そのパブリックメソッドで実行のみを行うBaseクラスです。</p><br />
<p><strong>明示型アクセサメソッド</strong></p>
<p>Baseクラス</p>
<blockquote>package&nbsp; {<br /><p>&nbsp;&nbsp; &nbsp;import flash.display.Sprite;<br />&nbsp;&nbsp; &nbsp;import flash.events.Event;<br /><br /><br />&nbsp;&nbsp; &nbsp;public class Base extends Sprite{<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;public function Base() {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;addEventListener(Event.ADDED_TO_STAGE,init);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private function init(e:Event):void{<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;removeEventListener(Event.ADDED_TO_STAGE,init);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; addOn();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private var student:GPA = new GPA();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private function addOn():void{</p><p>　　　&nbsp; trace("GPAオブジェクトのデフォルト値："+student.getGPA());<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;student.setGPA(4);//入力の処理はsetterのメソッド<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;<br />}<br /></p></blockquote>
<br /><p>GPAクラス</p>
<blockquote><p>package {<br /><br />&nbsp;&nbsp; &nbsp;public class GPA {<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;public function GPA() {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;// constructor code<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private var _gpa:uint = 3;<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;public function getGPA():uint {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return _gpa;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;public function setGPA(value:uint):void {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (value&gt;4) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;_gpa=4;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} else if (value &lt; 0) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;_gpa=0;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} else {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;_gpa=value;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;trace("値は更新されました。現在の値は："+_gpa);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br /><br />&nbsp;&nbsp; &nbsp;}<br /><br />}</p></blockquote><br />
<p>上記が構成されているクラスの中身です。</p><p>見るとわかると思いますが、扱うプロパティ「_gpa」はプライベート型です。明示型はパブリックプロパティではなく、プライベートを使用します。とりあえず、その段階で安易なアクセスは不可能になりますね。</p><p>内部にif文なども含まれていますが、重要なのが入力と出力のメソッドがしっかりとわかれている事です。Baseクラスから入力するには「setGPA()」、出力する際には「getGPA()」を使用します。これによりプロパティの値の流れが、明確になるだけでなくイベントとも繋げやすくなりますね。</p><p>実行結果はこちらです。</p><br /><blockquote><p>GPAオブジェクトのデフォルト値：3<br />値は更新されました。現在の値は：4</p></blockquote><br />
<p>「これであれが出来る！！」って感じのメソッドではないですが、使うと色々綺麗なソースになりそうなので覚えておきます。</p><p>暗黙型の記述もまたやります。</p>]]>
        
    </content>
</entry>

<entry>
    <title>jQueryメモ　マウスの座標を取得する</title>
    <link rel="alternate" type="text/html" href="http://www.0ness.net/lovelog/2010/02/jquery-5.html" />
    <id>tag:www.0ness.net,2010:/lovelog//2.137</id>

    <published>2010-02-10T13:13:16Z</published>
    <updated>2010-02-10T13:35:06Z</updated>

    <summary> jQueryでツールチップを自作する時のためのメモです。 /*jQueryでマ...</summary>
    <author>
        <name>0ness</name>
        <uri>http://www.0ness.net/mt/mt-cp.cgi?__mode=view&amp;blog_id=2&amp;id=1</uri>
    </author>
    
        <category term="jQuery" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="js" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.0ness.net/lovelog/">
        <![CDATA[ <p>jQueryでツールチップを自作する時のためのメモです。</p><br />
<blockquote><p>/*jQueryでマウス座標を取得し表示する*/<br />var lefts,tops,axis;<br />function(){<br />&nbsp;&nbsp; &nbsp;$("html")<em>.mousemove</em>(function(e){<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;axis = "( " + <em>e.pageX</em> + ", " + <em>e.pageY</em> + " )";<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$("p").text(axis);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;})<br />}</p></blockquote>
<br /><p>html上のマウス座標を取得し、pタグの中に座標を記述する関数です。FlashのようにaddEventListenerが無いからどうすのかと思ってましたが、普通にmousemoveメソッドを使うんですね。</p><p>axisは座標を格納するための変数で、mousemoveが働く毎にxy座標を取得しています。</p>
<p>pageXプロパティとpageYプロパティはイベントの発生した要素（この場合、html要素）の座標の値です。これらを使い、pタグにテキストとして入力してます。</p>]]>
        
    </content>
</entry>

<entry>
    <title>JS　ポップアップから親ページを切り替える</title>
    <link rel="alternate" type="text/html" href="http://www.0ness.net/lovelog/2010/02/js-2.html" />
    <id>tag:www.0ness.net,2010:/lovelog//2.136</id>

    <published>2010-02-09T10:05:16Z</published>
    <updated>2010-02-09T10:17:17Z</updated>

    <summary>ちょっとメモなんですが、ポップアップウィンドウを開いた後、そこから親ウィンドウの...</summary>
    <author>
        <name>0ness</name>
        <uri>http://www.0ness.net/mt/mt-cp.cgi?__mode=view&amp;blog_id=2&amp;id=1</uri>
    </author>
    
        <category term="HTML" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.0ness.net/lovelog/">
        <![CDATA[<p>ちょっとメモなんですが、ポップアップウィンドウを開いた後、そこから親ウィンドウのページをリンク出来る変えるjsの書き方です。</p>
<br />
<blockquote><p>//javascript<br />function link_window(){<br />&nbsp;&nbsp; &nbsp;window.opener.location.href='　表示させたいURL　';<br />&nbsp;&nbsp; &nbsp;window.opener.focus();<br />}<br /><br />//HTML側<br />&lt;a href="javascript:link_window()"&gt;リンクテキスト&lt;/a&gt;<br /></p></blockquote>
<br />
<p>ポップアップ上での操作は今まで使ったいなかったので知りませんでした。地味な処理なんですが、知っていると割といいかも。<br /></p>]]>
        
    </content>
</entry>

<entry>
    <title>jQueryメモ　delayメソッドでずらしてみる</title>
    <link rel="alternate" type="text/html" href="http://www.0ness.net/lovelog/2010/02/jquerydelay.html" />
    <id>tag:www.0ness.net,2010:/lovelog//2.135</id>

    <published>2010-02-08T09:27:34Z</published>
    <updated>2010-02-08T13:34:26Z</updated>

    <summary> 以前、jQuery1.4で楽しみなメソッドで書いたjQuery 1.4のdel...</summary>
    <author>
        <name>0ness</name>
        <uri>http://www.0ness.net/mt/mt-cp.cgi?__mode=view&amp;blog_id=2&amp;id=1</uri>
    </author>
    
        <category term="jQuery" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="js" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.0ness.net/lovelog/">
        <![CDATA[ <p>以前、<a href="http://www.0ness.net/lovelog/2010/01/jquery-jquery14.html" target="_blank">jQuery1.4で楽しみなメソッド</a>で書いたjQuery 1.4のdelayメソッドを少し触ってみました。</p><br /><p><strong>動きをより追求できるdelayメソッド</strong></p><p>要素のアクションに遅延効果を追加出来るのがdelayメソッドです。animateメソッドとの相性はもちろん良いですが、アニメーションしないメソッドでも、メソッドチェーンをして特定の処理だけ遅らせるといった命令も実行可能になります。</p><br /><p>使った感想はやっぱり、animateメソッドと組み合わせるといい感じです。<br />遅延効果自体はちょっとしたものなのですが、組み込むと今までよりリッチな演出を行うことができます。<br />例えば、特定の要素をフェードやスライドなどで表示を消すことは結構あると思いますが、その際に普通に指定をかけたら要素は全部一緒に消えてしまいます。</p><br /><blockquote><p><span>$(<span class="string">"要素</span><span></span><span class="string">"</span><span>).fadeTo(1000,0)</span> <br />//この場合、要素がpタグだったら、実行時に全てのpタグがフェードアウト<br /></span></p></blockquote><br /><p><span><span>上記はフェードアウトの指定ですが、これを普通に指定しただけでは要素が数個存在していても一括でフェードアウトしてしまいます。これにdelayメソッドと幾つかの処理を行えば、要素のフェードアウトを各個ずらしながら実行することができます。<br />まず、一個ずつ処理を行うためのfor文を追加します。</span></span></p><br /><blockquote><p><span><span>for(i=0; i&lt;要素の数 ;i++){</span></span><span>$(<span class="string">"要素</span><span class="string">"</span><span>).fadeTo(1000,0)</span></span><span><span>　}</span></span></p></blockquote><br /><p><span><span>これで要素の数だけ処理を行ってくれます。が、これだと処理は実行してくれますが、同じ要素全てに何度も行ってしまうことになります。</span>なので処理の対象となる要素を限定させます。</span><br /></p><br /><blockquote><p><span><span>for(i=0; i&lt;要素の数 ;i++){</span></span><span>$(<span class="string">"要素</span></span><span><span class="string">:eq("</span><span>+i+</span><span class="string">")</span></span><span><span class="string">"</span><span>).fadeTo(1000,0)</span></span><span><span>}</span></span></p></blockquote><br /><p><span><span>先程の記述で</span></span>、要素の箇所に<em>eqフィルター</em>を記述しました。<br />eqフィルターは記述順で要素を指定することができるjQueryの独自フィルターです。今回の場合、指定には変数のiが記述されています。iはfor文で1ずつ増えていくため、要素数の分まで一個ずつ処理を実行することが可能になります。<br />これで処理を各個順番に実行できるようになりました。最後にdelayメソッドを追加し関数化します。</p><br /><blockquote><p><span><span>function(){<br />&nbsp;&nbsp;&nbsp; var num = i * 要素間で遅らせる秒数 ;<br />&nbsp;&nbsp;&nbsp; for(i=0; i&lt;要素の数 ;i++){</span></span><span>$(<span class="string">"要素</span></span><span><span class="string">:eq("</span><span>+i+</span><span class="string">")</span></span><span><span class="string">"</span><span>).delay(num).fadeTo(1000,0)</span></span><span><span>}<br />}</span></span></p></blockquote><br /><p><span><span>ここで追加しましたnumはフェードにかける遅延の秒数を代入するための変数です。例えば秒数を「2」とした場合、</span>2個目の要素ならば4秒後に処理が開始され、10個目の要素なら20秒後に処理が開始されます。<br />そしてdelayメソッドにnumを指定すれば完了です。<br /></span></p><br /><p>今回の<a href="http://www.0ness.net/test-case/HTML/jQuery/jQuery1.4_01.html" target="_blank">サンプル</a>です。</p>]]>
        
    </content>
</entry>

<entry>
    <title>AS3 PerspectiveProjectionクラスにさわった</title>
    <link rel="alternate" type="text/html" href="http://www.0ness.net/lovelog/2010/02/as3-perspectiveprojection.html" />
    <id>tag:www.0ness.net,2010:/lovelog//2.134</id>

    <published>2010-02-03T17:42:06Z</published>
    <updated>2010-02-16T13:41:21Z</updated>

    <summary>今更ですがCS4のFlashから、新しい機能が幾つか追加されています。型指定の可...</summary>
    <author>
        <name>0ness</name>
        <uri>http://www.0ness.net/mt/mt-cp.cgi?__mode=view&amp;blog_id=2&amp;id=1</uri>
    </author>
    
        <category term="as" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="flash" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.0ness.net/lovelog/">
        <![CDATA[<p>今更ですがCS4のFlashから、新しい機能が幾つか追加されています。型指定の可能な配列オブジェクトが作れる<em>Vectorクラス</em>、フィルタが自分で作成できる<em>カスタムフィルタ</em>、タイムラインのインスタンスに関節部分を定義できる<em>インバースキネマティック</em>などですね。</p><p>クラスは今まで、一般的なクラスしか使ってこなかったのでこういった新しいクラスに触れるのは楽しいですね。</p>
<br /><p><strong>2Dを3Dへ投影するPerspectiveProjectionクラス</strong></p>
<p>パースぺくてぃぶぷろじぇくしょん・・・・中々長いクラス名です。</p>
<p>このクラスは、2D表示のオブジェクトを擬似的に3Dライクな表示に投影してくれるクラスです。CS4にはタイムライン上のオブジェクトのZ軸や、視野をいじったりできるパネルが追加されているかと思いますが、それらのプロパティを統括しているクラスが<em>PerspectiveProjectionクラス</em>です。奥行き、遠近感や消失点と呼ばれる要素を手軽に実現することができます。</p><br /><p><strong>消失点を定義するprojectionCenterプロパティ</strong></p>
<p>このクラスを使用するときはまず、PerspectiveProjectionオブジェクトを作ります。そこからプロパティにアクセスします。PerspectiveProjectionオブジェクトはメインタイムライン(<em>root</em>)の<em>transform.perspectiveProjection</em>プロパティからアクセスしますので、こう記述します。</p>
<br />
<blockquote><p>var obj:PerspectiveProjection = root.transform.perspectiveProjection;</p></blockquote>
<br />
<p>これでオブジェクトを作成できました。現時点では消失点はステージの中心にあります。（stagewidth/2, stageHeight/2）消失点を自分で制御する場合はこう記述します。</p><br /><blockquote><p>_pro.projectionCenter&nbsp;= new Point ( x , y );<br /></p></blockquote><br /><p>作成したオブジェクトにアクセスしてプロパティを指定するわけです。ただ、消失点の値は<em>Pointクラス</em>ですので、projectionCenter用のPointクラスオブジェクトを作った方がスマートです。</p><br />
<blockquote><p>var&nbsp;_centerPro:Point&nbsp;=&nbsp;new&nbsp;Point( x , y );<br />_pro.projectionCenter&nbsp;= _centerPro;<br /></p></blockquote><br />
<p><strong>視野角を指定するfieldOfViewプロパティ</strong></p>
<p>fieldOfViewプロパティは3次元の視野角を指定出来ます。0〜180の数値で遠近法の変形と歪みの強さを決定します。カメラをやっている方ならわかりやすいですね。0に近いとオブジェクトの遠近感がかなり少なく、180に近くなればなるほど歪みが大きくなります。遠近感が強くなり魚眼レンズ効果が生まれてきます。</p>
<p>プロパティの値が大きい時、オブジェクトのz値が0より少ない(マイナスの値)ほど遠くにあるような感じになり、z値が大きいほど手前にあるような表示になります。ただ注意点として、扱いとしては0〜180の値になっておりますが、<em>値に0と180を入力すると画面に何も出なくなる</em>ので注意してください。</p><br /><p><strong>視点からオブジェクトの距離を指定するfocalLengthプロパティ</strong></p>
<p>focalLengthプロパティは視点からz軸上のオブジェクトとの距離を指定出来るプロパティです。基本的にはfieldOfViewプロパティを指定後、動的に計算されて値が生成されますが、こちらから明示的に指定することも可能です。色々さわってみてもいいですが、無理に使う必要もない気がしました。</p>
<br /><p>wonderFlでforkしてみました。</p>
<div style="width: 465px;"><iframe title="forked from: forked from: forked from: forked from: PerspectiveProjectionTest - wonderfl build flash online" src="http://wonderfl.net/blogparts/d185f3a03d39907fee4887ca71e7b47298d5aa6a" style="border: 1px solid black;" height="490" scrolling="no" width="465"></iframe><a href="http://wonderfl.net/code/d185f3a03d39907fee4887ca71e7b47298d5aa6a" title="forked from: forked from: forked from: forked from: PerspectiveProjectionTest - wonderfl build flash online">forked from: forked from: forked from: forked from: PerspectiveProjectionTest - wonderfl build flash online</a></div><br />
<p><strong>使った感想</strong></p>
<p>さわった感想としては、とても使い易かった感じです。ガリガリな3D表現はできませんが、ふわっとした浮遊感や奥ゆき感は簡単に実装できます。プロパティも少ないので、軽くソースを見ただけで覚えられるし、rotation系やPointクラスなどを使い色々出来そうですね。</p><br />
<p><strong>追記　1つ注意</strong></p><p>1つ書き忘れていました。このクラスは手軽に立体感を表現は出来ますが、実際に立体に変換されているのとは違います。その証拠に、それぞれのオブジェクトの表示は必ずaddChildで登録された順になっていると思います。一回転とかやろうとすると、ちょっと描画がおかしくなるので注意してくださいね。</p>]]>
        
    </content>
</entry>

<entry>
    <title>jQuery 外部ファイルを読み込む（XML編）</title>
    <link rel="alternate" type="text/html" href="http://www.0ness.net/lovelog/2010/02/jquery-xml.html" />
    <id>tag:www.0ness.net,2010:/lovelog//2.133</id>

    <published>2010-02-01T03:40:54Z</published>
    <updated>2010-02-01T17:19:22Z</updated>

    <summary> ちょっと前に、jQueryでテキストの外部ファイルを読み込む記事をちょこっと書...</summary>
    <author>
        <name>0ness</name>
        <uri>http://www.0ness.net/mt/mt-cp.cgi?__mode=view&amp;blog_id=2&amp;id=1</uri>
    </author>
    
        <category term="HTML" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="jQuery" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="js" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.0ness.net/lovelog/">
        <![CDATA[ <p>ちょっと前に、jQueryでテキストの外部ファイルを読み込む記事をちょこっと書きました。情報を保存しておくファイル形式は、用途によって色々変わると思いますが、今回は万能なXMLの読み込みをしてみたいと思います。</p>
<br />
<p><strong>XMLファイルの読み込み</strong></p><p>xmlファイルでも前に紹介した,<em>loadメソッド</em>での読み込みは可能です。ですが、xmlファイルはそのまま読み込みを行ってしまっても表示に難があります。元々タグで情報を構築するデータですので、タグが少なく内容を厳選しない限りtxtファイルなどのように表示することは難しいでしょう。</p><br />
<p>では、実際どうするのかというと、今回は<em>ajaxメソッド</em>を使用します。単なる文字情報としてではなく、階層を持ったタグ情報として取得するのです。</p><br />
<p><strong>ajaxでXMLを読み込む</strong></p><p>ajaxメソッドでxmlは取得できるのですが、取得するだけでは表示することはできません。取得の際にデータを加工する必要があります。まず、ajaxメソッドで情報を取得する記述です。</p>
<br />
<blockquote><p>$.ajax({<br />&nbsp;&nbsp;&nbsp; url:"読み込むxmlファイル",<br />&nbsp;&nbsp;&nbsp; dataType:"xml",<br />&nbsp;&nbsp;&nbsp; success:function(data){　読み込んだファイルに対する処理　}<br />})</p></blockquote><br />
<p>上記の記述はxmlファイルを読み込むまでの処理です。<em>url</em>にはloadメソッドの時と同様にファイルのパスを、<em>dataType</em>は今回はxmlファイルなので"xml"をそれぞれ記述します。そして<em>success</em>には読み込み成功時、読み込んだデータに対する処理を記述します。それで今回読み込むxmlファイルはこちらです。</p>
<blockquote><p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&nbsp; &lt;datalist&gt;<br />&nbsp;&nbsp;&nbsp; &lt;entry&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;title&gt;TXTファイルで更新&lt;/title&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;texts&gt;txtファイルの読み込みはシンプルです。読み込まれたテキストが、そのまま要素の中に流し込まれます。改行とかは無視されちゃうんですけど、（多分やり方あると思うんですが、調べておきます。）簡単な更新情報はこちらで十分です。&lt;/texts&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/entry&gt;<br />&nbsp;&nbsp;&nbsp; &lt;entry&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;title&gt;CSVファイルで更新&lt;/title&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;texts&gt;csvファイルは上記二つとタイプが違います。もともとは表データで作られているため、見栄えも想像しにくいですよね。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; csvは行ごとに読み込まれ、列ごとの要素間はカンマで区切られています。普通に読み込んでも正直これは使えないので、csvファイルの読み込みに関しては、表示の際に関数の指定する必要がありますね。（また今度やります。）&lt;/texts&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/entry&gt;<br />&nbsp;&nbsp;&nbsp; &lt;entry&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;title&gt;HTMLファイルで更新&lt;/title&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;texts&gt;htmlファイルがtxtファイルと違うのは内容がテキストではなく、HTMLタグで読み込まれるという事です。読み込み先のbodyタグ内の要素が、そのまま読み込まれる要素の中には位置されます。なので、読み込まれる要素内にあらかじめCSSで指定をかけておけば手軽に装飾済みの更新が可能になります。コーディングの作業に慣れている方には、これが一番楽かもしれませんね。&lt;/texts&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/entry&gt;<br />&nbsp; &lt;/datalist&gt;</p></blockquote><br />
<p>かなり普通の形です。datalistという名前のタグの中に、各entryタグがあり、その中にtitleタグとtextsタグがセットになっているというブログ的な構造ですね。これを読み込みます。それで先程の記述でデータの取得は出来るようになったので、次は読み込んだデータを加工します。それをさっきの記述に足したのがこれです。↓</p><br />
<blockquote><p>$.ajax({<br />&nbsp;&nbsp;&nbsp; url:"読み込むxmlファイル",<br />&nbsp;&nbsp;&nbsp; dataType:"xml",<br />&nbsp;&nbsp;&nbsp; success:function(data){</p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; //データを加工する処理<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $("entry",data)<em>.each</em>(<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; function(){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $("タグの内容を表示する要素").append("&lt;em&gt;"+$("title",this)<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; .text()+"&lt;/em&gt;"+$("texts",this).text())<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; })<br />&nbsp;&nbsp;&nbsp; 　}<br />})</p></blockquote><br />
<p>まず最初に、entryタグにeachメソッドを指定します。これによりentryタグの数だけ、処理が行われるわけですね。entryタグを抜き出したら、その中のタグをHTMLの表示場所に書き出していきます。<br />書き出すには<em>appendメソッド</em>を使います。appdendメソッドは指定した要素に、タグやテキストを記述する事ができるメソッドです。今回の記述ではtitleタグをemタグに、textsタグは普通にテキストとして流し込むようにしています。</p>
<p>appendメソッドでは、&lt;a&gt;タグやその他のhtmlタグを記述できたり、テキストを変更する事ができるので、追加後の構造さえしっかり考えておけば今回の記述よりもかなり複雑な事が可能になります。</p>　<br />
<p>今回の<a href="http://www.0ness.net/test-case/HTML/jQuery/ajax_text_02.html" target="_blank">サンプル</a>です。</p><br />
<p>前回と今回の記事は、<a href="http://blog.webcreativepark.net/" target="_blank">to-R / 西畑一馬氏</a>のASCII.jpでの連載<a href="http://ascii.jp/elem/000/000/438/438206/" target="_blank">「web制作の現場で使えるjQuery UIデザイン入門」</a>を大変参考にさせてもらっています。</p>]]>
        
    </content>
</entry>

<entry>
    <title>jQueryメモ jQuery1.4で楽しみなメソッド</title>
    <link rel="alternate" type="text/html" href="http://www.0ness.net/lovelog/2010/01/jquery-jquery14.html" />
    <id>tag:www.0ness.net,2010:/lovelog//2.132</id>

    <published>2010-01-27T06:28:40Z</published>
    <updated>2010-01-28T04:43:52Z</updated>

    <summary> 発表されたjQuery1.4先日、みんなに大人気のjQuery最新バージョンが...</summary>
    <author>
        <name>0ness</name>
        <uri>http://www.0ness.net/mt/mt-cp.cgi?__mode=view&amp;blog_id=2&amp;id=1</uri>
    </author>
    
        <category term="jQuery" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="独り言" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.0ness.net/lovelog/">
        <![CDATA[ <p><strong>発表されたjQuery1.4</strong></p><p>先日、みんなに大人気のjQuery最新バージョンが発表されました。今回リリースのjQuery1.4には何個も新機能が追加されています。僕はにわかjQuery使いですが、僕にも簡単に使えそうで、便利っぽい新しいメソッドが二つあります。</p>
<br />
<p><strong>delayメソッド</strong></p><p>delayメソッドは、fadeTo()やslideUp()メソッドのようなアニメーション系メソッドと組み合わせて使うみたいですね。今でのアニメーション系は組み合わせて使う事は出来ましたが、delayを簡単に組み込む事は出来ませんでした。</p><blockquote><p>$('#foo').slideUp(300).delay(800).fadeIn(400);</p></blockquote><p>上の例では「id="foo"」という要素にアニメーションをかけているのですが、slideUpした後に0.3秒delayをかけてfadeInにつなげています。<br />記述は今まで同様とてもシンプルなので流れがわかりやすいですね。個人的にはProgressionのSerialListクラスの書き方と似てきた気がする。</p><br />
<p><strong>hasメソッド</strong></p><p>hasメソッドは指定のセレクタ内に記述した要素があるか確認するメソッドです。もし要素が存在していれば、元のjQueryオブジェクトを返します。要素確認とその後の処理をチェインでひとまとめに出来、さらにtrueじゃない場合は処理が行われない・・・のかな？？<br />ちょっと試してみないとわからないですが、そうだったら結構汎用性高い気がします。</p>
<blockquote><p>$('li').has('ul').css('background-color', 'red');</p></blockquote>
<p>上の例はul要素を内包したli要素のみ、cssメソッドで背景を赤にする記述です。こちらもチェインに簡単に組み込めるのでわかりやすいですね。<br />特定の要素をチェックして、それを内包している親要素にのみメソッドを実行出来るので、内包するコンテンツが固定しずらいCMSとかに使ったりすれば、効果がありそう。</p>
<br /><p>jQueryはブラウザ進化とともに高速化・多機能化が進んでいます。今年はjavascript2.0が新たに策定完了し、jQueryを含めjavascriptは一つ上の局面に進みそうですね。<br />今回は紹介しただけですが、他にも結構新しい機能が増えてますので、また書きます。サンプルも作ります。</p>]]>
        
    </content>
</entry>

<entry>
    <title>AS3　背景ランダム（仮）メモ</title>
    <link rel="alternate" type="text/html" href="http://www.0ness.net/lovelog/2010/01/as3-3.html" />
    <id>tag:www.0ness.net,2010:/lovelog//2.131</id>

    <published>2010-01-26T19:19:54Z</published>
    <updated>2010-01-26T19:36:41Z</updated>

    <summary> ちょっと保存させてもらいます。プログラムっ離れると厳しいですね。 packag...</summary>
    <author>
        <name>0ness</name>
        <uri>http://www.0ness.net/mt/mt-cp.cgi?__mode=view&amp;blog_id=2&amp;id=1</uri>
    </author>
    
        <category term="as" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.0ness.net/lovelog/">
        <![CDATA[ <p>ちょっと保存させてもらいます。プログラムっ離れると厳しいですね。</p>
<br />
<blockquote><p>package{<br />&nbsp;&nbsp; &nbsp;import flash.display.Sprite;<br />&nbsp;&nbsp; &nbsp;import flash.events.Event;<br />&nbsp;&nbsp; &nbsp;import flash.events.TimerEvent;<br />&nbsp;&nbsp; &nbsp;import flash.display.Graphics;<br />&nbsp;&nbsp; &nbsp;import flash.utils.Timer;<br /><br />&nbsp;&nbsp; &nbsp;public class BG extends Sprite{<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private var bg_01:Sprite = new Sprite();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private var bg_02:Sprite = new Sprite();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private var bg_03:Sprite = new Sprite();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private var sizeW:uint = 400;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private var sizeH:uint = 200;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private var g01:Graphics = bg_01.graphics;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private var g02:Graphics = bg_02.graphics;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private var g03:Graphics = bg_03.graphics;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private var arr:Array;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private var a_num:uint;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private var r_num:int;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private var r_num2:uint;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private var prison:Object;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private var times:Timer = new Timer(1000);<br /><br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;public function BG():void{<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;addEventListener(Event.ADDED_TO_STAGE,init);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private function init(event:Event):void{<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;removeEventListener(Event.ADDED_TO_STAGE,init);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;arr = new Array(bg_01,bg_02,bg_03);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;a_num = arr.length;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Add_01();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Add_02();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Add_03();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Add_00();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;////////////////////////////////////////////////////////////<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private function Add_00():void{<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;r_num = Math.floor(Math.random() * a_num);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;addChild(arr[r_num]);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;prison = arr[r_num2];<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;arr.splice(r_num,1);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;r_num2 = r_num;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;times.addEventListener(TimerEvent.TIMER,addArr);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;times.start();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private function Add_01():void{<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;g01.beginFill(0xff3300);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;g01.drawRect(0,0,sizeW,sizeH);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;g01.endFill();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private function Add_02():void{<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;g02.beginFill(0x0099cc);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;g02.drawRect(0,0,sizeW,sizeH);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;g02.endFill();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private function Add_03():void{<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;g03.beginFill(0x111111);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;g03.drawRect(0,0,sizeW,sizeH);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;g03.endFill();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;////////////////////////////////////////////////////////////<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private function addArr(Event:TimerEvent):void{<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;r_num2 = r_num;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;arr.push(prison);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;prison = arr[r_num2];<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;arr.splice(r_num2,1);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;a_num = arr.length;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;r_num = Math.floor(Math.random() * a_num);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;addChild(arr[r_num]);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (this.numChildren &gt;= 2){<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;removeChildAt(0);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;}<br />}</p></blockquote><br />
<p>背景をランダムに変えるスクリプトの第一段階です。ちょっとサンプルとか今日は無理ですけど、メモがわりに載せておきます。</p>]]>
        
    </content>
</entry>

<entry>
    <title>twitter用のイラスト描いた</title>
    <link rel="alternate" type="text/html" href="http://www.0ness.net/lovelog/2010/01/twitter.html" />
    <id>tag:www.0ness.net,2010:/lovelog//2.130</id>

    <published>2010-01-26T08:24:36Z</published>
    <updated>2010-01-26T08:34:32Z</updated>

    <summary> 久しぶりにイラストと呼べるものを描きました。twitter用なのでアイコンとし...</summary>
    <author>
        <name>0ness</name>
        <uri>http://www.0ness.net/mt/mt-cp.cgi?__mode=view&amp;blog_id=2&amp;id=1</uri>
    </author>
    
        <category term="独り言" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.0ness.net/lovelog/">
        <![CDATA[ <p>久しぶりにイラストと呼べるものを描きました。twitter用なのでアイコンとして見えるときは、もう正直良く見えないんですけど、シンプルな絵が書きたかったのでそれでもいいかなって感じです。</p>
<br />
<p><img alt="twitter用画像" src="http://www.0ness.net/lovelog/img/site_image/site_image_25.png" height="300" width="300"></p><br />
<p>最近、絵を書いてなかったけどちょこっとしたものでも楽しいですね。</p>]]>
        
    </content>
</entry>

<entry>
    <title>2010以降のWeb制作</title>
    <link rel="alternate" type="text/html" href="http://www.0ness.net/lovelog/2010/01/2010web.html" />
    <id>tag:www.0ness.net,2010:/lovelog//2.129</id>

    <published>2010-01-25T02:21:36Z</published>
    <updated>2010-01-25T07:18:53Z</updated>

    <summary> 可視化（ビジュアライゼーション）という手法 gihyo.jpの「いま，見ておき...</summary>
    <author>
        <name>0ness</name>
        <uri>http://www.0ness.net/mt/mt-cp.cgi?__mode=view&amp;blog_id=2&amp;id=1</uri>
    </author>
    
        <category term="独り言" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.0ness.net/lovelog/">
        <![CDATA[ <p><strong>可視化（ビジュアライゼーション）という手法</strong></p>
<p><a href="http://gihyo.jp/" target="_blank">gihyo.jp</a>の「<a href="http://gihyo.jp/design/serial/01/website-pickup" target="_blank">いま，見ておきたいウェブサイト第25回　2010年特別編　2009年の特徴，2010年の展望</a>」を読みました。「特徴その3　"見えないもの"をどう見せる？」というコーナーで</p><br /><p><em>「そのままのデータを見せてユーザーに理解してもらう時代は終わっている」</em></p><br /><p>という一文がありまして、ちょっと考えさせられました。<br />この一文の「そのままのデータ」というのが、今までの普通にサイトに表示していたコンテンツなのだとすると、今後は「今まで見えなかった情報」を可視化（またはコンテンツ化）しなくてはならないという事ですよね。<br />ここで紹介されていた<a href="http://www.honda.co.jp/internavi/realization/" target="_blank">Hondaのインターナビ</a>や、<a href="http://www.okudakenji.com/nq/" target="_blank">ナカノクエスト</a>みたいに、ナビの位置情報や政治家の活動内容・活動範囲など、普段あまり可視化しない情報を表現に落とし込む事が必要になるわけで。（ちなみに前者は斬新でプロダクトの内容にあったコンテンツに、後者は不透明だった活動内容が明確になりユーザーに理解しやすいになっています。）</p><p>そもそも可視化されづらい情報というのは、情報そのものの存在を忘れられているか、重要性が理解されてないかの理由で可視化に至らないのだと思います。<br />当たり前に存在していても、気付かず使われなかったり、コンセプトやプロダクトと結びつかないと使いづらい情報だったりするので、それらを利用するには、ユーザーを見据えたより入念なコンセプト共有やクライアントとの濃密なコンタクトが必要になると思います。</p><p>Web制作の現場で、コンセプトワークやデザイン・構築の手法が今よりも密接に結びつくようになってくるのは必然ですが、中でも情報のコントロール・再構築が上手に出来るクリエーターが必要になってきそう。僕は現在製作メインのポジションですが、<em>インフォメーションアーキテクト</em>と呼ばれる分野もしっかりと勉強しておいた方が絶対に良さそう。</p><br />
<p>サイトとアプリケーションの境が曖昧になり、クリエーターとして技術力が以前より必要されてきていますが、<em>情報に着目し可視化</em>する思考も常に磨いていかなくてはならないですね。</p><br />
<p>あとどうでも良いかもしれませんが、<a href="http://www.okudakenji.com/nq/" target="_blank">ナカノクエスト</a>のサイト。音楽流れているんですけど、ブラウザの別タブを選択した時止まるんです！サイト内のポップアップウィンドウで音が止まるとかならわかるんですが、別サイトを閲覧している時やURLを入力している時とか止まってくれるのが細やかで好きです！（コンテンツ自体も大好きですよ。）サイトのBGMとかって時に煩わしく感じてしまうこともあるんですが、こういったスマートな対応をされると、とても好感が湧きますね。</p>]]>
        
    </content>
</entry>

<entry>
    <title>jQueryメモ　テキストを置換する</title>
    <link rel="alternate" type="text/html" href="http://www.0ness.net/lovelog/2010/01/jquery-4.html" />
    <id>tag:www.0ness.net,2010:/lovelog//2.128</id>

    <published>2010-01-22T17:53:39Z</published>
    <updated>2010-01-22T18:58:58Z</updated>

    <summary> jQueryで外部ファイルを読み込んだ後に、関数で見栄えをよくした状態に変更し...</summary>
    <author>
        <name>0ness</name>
        <uri>http://www.0ness.net/mt/mt-cp.cgi?__mode=view&amp;blog_id=2&amp;id=1</uri>
    </author>
    
        <category term="HTML" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="jQuery" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="js" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="jqueryメモ" label="jQueryメモ" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.0ness.net/lovelog/">
        <![CDATA[ <p>jQueryで外部ファイルを読み込んだ後に、関数で見栄えをよくした状態に変更しなおしますが、その際に余計な文字を消しておきたい時があります。csvファイルのカンマやテキスト内の余白などですね、<br />そういった状況で役に立つのが<em>、jQueryのreplaceメソッド</em>です。</p>
<br />
<p><strong>文字置換を行うreplaceメソッド</strong></p>
<p>前回書いた記事の延長の内容なのですが、外部ファイルの中には読み込んだ後に、内容と見栄えを整理しなくてはなりません。replaceメソッドは普段僕たちの使っているAdobe系アプリケーションなどで行っている検索置換的なプログラムを実行してくる便利なメソッドです。</p>
<br />
<blockquote><p>$("<em>置換を行う要素</em>").html(&nbsp; $("<em>置換を行う要素</em>").html().<em>replace</em>( /<em>置換対象の要素</em>/ig , "置換える要素" )&nbsp; )</p></blockquote>
<br />
<p>上記のスクリプトが必要な記述です。ちょっとわかりづらいですけど、置換を行う要素と<em>htmlメソッド</em>の処理が二回あります。形は違いますが、２連続で同じメソッドを記述する事になります。</p><p>htmlメソッドは指定した要素にhtml文字列を返す命令を行います。これによりhtmlタグの取得が可能なっているわけですね。</p><p>例えば、divタグ内から<br />を取り除き、代わりに「！！！」を置くには↓</p>
<p>例</p>
<blockquote><p>$("<em>div</em>").html(&nbsp; $("<em>div</em>").html().<em>replace</em>(
 /<em>&lt;br /&gt;</em>/ig , "！！！ )&nbsp; )</p></blockquote>
<p>↑となるわけですね。</p>]]>
        
    </content>
</entry>

<entry>
    <title>jQueryメモ　外部ファイルを読み込む</title>
    <link rel="alternate" type="text/html" href="http://www.0ness.net/lovelog/2010/01/jquery-3.html" />
    <id>tag:www.0ness.net,2010:/lovelog//2.127</id>

    <published>2010-01-20T03:50:17Z</published>
    <updated>2010-01-21T04:52:36Z</updated>

    <summary> jQueryのloadメソッド 企業・商用サイトの制作の際、公開情報をクライア...</summary>
    <author>
        <name>0ness</name>
        <uri>http://www.0ness.net/mt/mt-cp.cgi?__mode=view&amp;blog_id=2&amp;id=1</uri>
    </author>
    
        <category term="jQuery" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="js" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="jqueryメモ" label="jQueryメモ" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.0ness.net/lovelog/">
        <![CDATA[ <p><strong>jQueryのloadメソッド</strong></p>
<p>企業・商用サイトの制作の際、公開情報をクライアント側で編集したいという要望あったりします。CMSでの構築やXML読み込みといった選択肢がありますが、新着情報やちょっとしたコメントなど小規模なコンテンツの場合、制作・勉強コストのかかる技術は割に合いません。</p><br />

<p>そこで活躍するのが、jQueryの<em>loadメソッド</em>です。<br />（※loadメソッドはEvent処理の使われ方もありますが、ここでのloadメソッドはEvent処理の方じゃないですよ）<br />loadメソッドは少ない記述で外部のファイルの読み込みを可能にします。読み込めるファイルは<em>txt、html、csv</em>などがあります。↓が読み込みの記述です。イベントと合わせなければ、１行で終わるメソッドです。</p><br /><blockquote><p>$("読み込む要素").load("読み込むテキスト");</p></blockquote><br />
<p><em>これらのファイルを使う利点は、何よりも手軽である</em>という事です。ファイルサイズ、確認可能なツール、学習コスト。制作に必要なツールなんて、txtファイルとhtmlファイルはメモ帳系のアプリケーションOKです。（ソフト配布サイトに行けばもっつ高性能で便利なやつも絶対ありますしね。）<br /><em>csv</em>ファイルは少し聞き慣れていない方もいらっしゃると思いますが、こちらはエクセル等、表計算ソフト用のファイル形式です。txtファイルやhtmlファイルは、表示のために記述のルールを細かく指定することがありますが、csvファイルは表計算のソフトから書き出す事が出来るため、サイト更新に慣れていない方でもソフトのおかげで複雑な記述に対応しやすいのが魅力です。</p><br />
<p><strong>txtファイルの読み込み</strong></p>
<p>txtファイルの読み込みはシンプルです。読み込まれたテキストが、そのまま要素の中に流し込まれます。改行とかは無視されちゃうんですけど、（多分やり方あると思うんですが、調べておきます。）簡単な更新情報はこちらで十分です。</p>
<br />
<p><strong>htmlファイルの読み込み</strong></p>
<p>htmlファイルがtxtファイルと違うのは内容がテキストではなく、HTMLタグで読み込まれるという事です。読み込み先の<em>bodyタグ内の要素</em>が、そのまま読み込まれる要素の中には位置されます。なので、読み込まれる要素内にあらかじめCSSで指定をかけておけば手軽に装飾済みの更新が可能になります。コーディングの作業に慣れている方には、これが一番楽かもしれませんね。</p>
<br />
<p><strong>csvファイルの読み込み</strong></p>
<p>csvファイルは上記二つとタイプが違います。もともとは表データで作られているため、見栄えも想像しにくいですよね。<br />csvは行ごとに読み込まれ、列ごとの要素間はカンマで区切られています。普通に読み込んでも正直これは使えないので、csvファイルの読み込みに関しては、表示の際に関数の指定する必要がありますね。（また今度やります。）</p>
<br />
<p><strong>読み込みの時の注意点！</strong></p>
<p>三つともそれぞれに使い道のあるファイルですが、全てに共通する注意点があります。<br />１つは<em>文字コード</em>です。loadを使うときは「<em>UTF-8</em>」にしておいてください。設定に左右される問題ではありますが、ここは無難にいきましょう。<br />2つ目は<em>ファイルのパス</em>です。読み込みたいファイルは絶対パスでも、相対パスでも大丈夫です。ですが、Ajaxというものはどうやらセキュリティー上の理由から読み込むためのHTMLファイルと同一のドメイン上にあるファイルしか取得できないみたいです。PHPを使用すれば、外部のドメインからファイルを取得出来るみたいですが、その際はセキュリティーにかなり気をつけないといけないです。</p><br />
<p>簡単なサンプルを作ってみました。<a href="http://www.0ness.net/test-case/HTML/jQuery/ajax_text_01.html" target="_blank">こちらから</a></p>]]>
        
    </content>
</entry>

<entry>
    <title>PNG-8は割と使えるね</title>
    <link rel="alternate" type="text/html" href="http://www.0ness.net/lovelog/2010/01/png-8.html" />
    <id>tag:www.0ness.net,2010:/lovelog//2.126</id>

    <published>2010-01-18T13:12:59Z</published>
    <updated>2010-01-18T13:41:33Z</updated>

    <summary> 256色の画像はGIFよりPNG png-8って一体どこで使うのかなーって思っ...</summary>
    <author>
        <name>0ness</name>
        <uri>http://www.0ness.net/mt/mt-cp.cgi?__mode=view&amp;blog_id=2&amp;id=1</uri>
    </author>
    
        <category term="tips" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.0ness.net/lovelog/">
        <![CDATA[ <p><strong>256色の画像はGIFよりPNG</strong></p>
<p>png-8って一体どこで使うのかなーって思っていました。普通の写真やグラフィックはjpgで、それ以外はgifで書き出していました。ところが、どうやら256色の画像はpng-8で書き出した方が軽いみたい！</p><p>画像によっては、ファイルサイズが半分になります。そこから「ImaageOptim」というアプリケーションを使うことによって、さらにファイルサイズを下げる事ができるみたです。</p><p>「ImageOptim」はmacのアプリケーションですので、Windowsの場合は「OptiPNG」というアプリケーションを代わりに仕様してください。</p><br />
<p>いやーどこで使えばいいか、よく分かっていなかったけど凄く便利かも。</p>]]>
        
    </content>
</entry>

</feed>
