<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title>exp Note</title>
   <link rel="alternate" type="text/html" href="http://color-chips.net/exp_note/" />
   <link rel="self" type="application/atom+xml" href="http://color-chips.net/exp_note/atom.xml" />
   <id>tag:color-chips.net,2009:/exp_note/9</id>
   <updated>2007-07-14T12:48:16Z</updated>
   <subtitle>勉強したことアウトプットします</subtitle>
   <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.33-ja</generator>

<entry>
   <title>マウスカーソルを変えてみる。</title>
   <link rel="alternate" type="text/html" href="http://color-chips.net/exp_note/web/flash/post_5.html" />
   <id>tag:color-chips.net,2007:/exp_note//9.188</id>
   
   <published>2007-06-10T12:26:09Z</published>
   <updated>2007-07-14T12:48:16Z</updated>
   
   <summary>今回はマウスカーソルを変更してみる。ちょっと悩んだ(汗...</summary>
   <author>
      <name>まさ</name>
      <uri>http://color-chips.net/</uri>
   </author>
         <category term="Flash&amp;ActionScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://color-chips.net/exp_note/">
      <![CDATA[<p>今回はマウスカーソルを変更してみる。ちょっと悩んだ(汗</p>]]>
      <![CDATA[<h5>Flash上でマウスカーソル変更</h5>

<object
 type="application/x-shockwave-flash"
 classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
 codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
 width="300" height="300" id="hito_button">
 <param name="movie" value="http://color-chips.net/exp_note/pict/flash/mouse_cursor_pen.swf" />
 <param name="loop" value="false" />
 <param name="quality" value="high" />
 <embed
 type="application/x-shockwave-flash"
 src="http://color-chips.net/exp_note/pict/flash/mouse_cursor_pen.swf"
 quality=high width="300" height="300" name="hito_button"
 pluginspage ="http://www.macromedia.com/go/getflashplayer" />
</object>

<p>こんなの作ります。<br/>
ボタン押すと、マウスカーソルが変わって、お絵かきができますｗがしがし描いて楽しい♪</p>

<h5>グラフィックの準備</h5>
<p>「マウスカーソル用のペンのアイコン」・「ボタン用の画像」を準備。全てムービークリップとしてシンボル登録します。</p>
<p>今回は、ペンのアイコンは初めはステージ上に置かず、「リンケージ」でActionScriptに登録しておく。という形になります。ボタンは今までどおりステージ上に配置。<br/>
<h6>リンケージのしかた。</h6>
<p>「ライブラリ」パレットでシンボルを選択。右クリック「リンケージ」を選択し、「ActionScriptに書き出し」「最初のフレームに書き出し」をチェック。識別子を「pen_cursor_Sym」とします（識別子は任意の文字列）。<br/>
これで、ActionScriptでペンのカーソルのシンボルが使える。</p>

<h5>スクリプト書き書き</h5>

<pre><code><em class="comment">/*==============================
//各宣言
==============================*/</em>
var pen_btn:MovieClip;	//ボタン
var cursor:MovieClip;	//カーソルへの参照

//イベント登録 ==========
//ボタンイベント
pen_btn.onPress = PressButton;//ボタン押
pen_btn.onRelease = ReleaseButton;		//ボタン離
pen_btn.onReleaseOutside = ReleaseOutsideButton;
//ボタン外でマウス離

/*==============================
	メソッド
==============================*/
//====================
//ボタン
//ボタン押
function PressButton()
{
	//(1)ボタン押されたムービー（インスタンスpen_btnで定義済み）
	pen_btn.btnDown();
}
//ボタン離
function ReleaseButton()
{
	//(1)ボタン離したムービー（インスタンスpen_btnで定義済み）
	pen_btn.btnUp();

	//マウスカーソル変更
	Mouse.hide();//(2)まずはマウスカーソル消去
								   
	//(3)リンケージしたペンカーソルをインスタンス化
	<em class ="key_code">cursor = _root.attachMovie("pen_cursor_Sym","penCursor",1);</em>
	
	//(4)インスタンス化されたカーソルをマウス位置へ
	cursor._x = _root._xmouse;
	cursor._y = _root._ymouse;
	//(5)以後、マウス動作イベントを割り振り
	cursor.onMouseMove = cursorMove;
}
//ボタン外でマウス離
function ReleaseOutsideButton()
{
	//(1)ボタン離したムービー（インスタンスpen_btnで定義済み）
	pen_btn.btnUp();
}

//====================
//マウス
function cursorMove()
{
	//(6)カーソル変更後、動くたびカーソル画像追従
	// → 擬似的にカーソルを動かしているようにする
	this._x = _root._xmouse;
	this._y = _root._ymouse;

	//(7)滑らかな動作のために、フレームレートに関係なく再描画
	updateAfterEvent();
}</code></pre>

<h5>ボタン押すとマウスカーソル変更</h5>

<dl>
<dt>(1)ボタンムービー</dt>
<dd>ボタン押したときへこむ。離したとき戻る。これらのムービーはボタンのシンボルにスクリプト定義済み。これらボタンについての動作は<a href="http://color-chips.net/exp_note/web/flash/flash.html">以前のエントリ</a>参考</dd>
<dt>(2)マウスカーソル消去</dt>
<dd>カーソル変更のボタンを押したら、カーソル置き換えを擬似的に行うため、まずはマウスカーソルを消す</dd>
<dt>(3)cursor = _root.attachMovie("pen_cursor_Sym","penCursor",1);</dt>
<dd>リンケージしたペンカーソルのシンボルpen_cursor_Symをインスタンス化して（インスタンス名penCursorとして）、cursorに割り当てる。3つ目の引数はステージ上での深度。</dd>
<dt>(4)インスタンス化されたカーソルをマウス位置へ</dt>
<dd>カーソルをマウスの位置へ移動。消したカーソルの代わりに、マウスに追従して動かしカーソルのように見せる。</dd>
<dt>(5)、(6)カーソル変更後、マウス動くたびにカーソル追従</dt>
<dd>カーソル置き換え後、マウスが動くたびにカーソルを追従させるため、onMouseMoveイベントに関数割り振り。イベントのたびに、カーソルの座標をマウスの座標とする。
</dd>
<dt>(7)updateAfterEvent();</dt>
<dd>updateAfterEventでフレームレートに関係なく画面を更新。滑らかな動作が可能に。
</dd>
</dl>

<h5>ペンを動かしてみ？</h5>
<p>というわけで、完成ー</p>

<object
 type="application/x-shockwave-flash"
 classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
 codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
 width="300" height="300" id="hito_button">
 <param name="movie" value="http://color-chips.net/exp_note/pict/flash/mouse_cursor_pen.swf" />
 <param name="loop" value="false" />
 <param name="quality" value="high" />
 <embed
 type="application/x-shockwave-flash"
 src="http://color-chips.net/exp_note/pict/flash/mouse_cursor_pen.swf"
 quality=high width="300" height="300" name="hito_button"
 pluginspage ="http://www.macromedia.com/go/getflashplayer" />
</object>

<p>今回のエントリは、ボタンを押すとカーソルが変わる部分だけです。線を描くところは次回以降に。</p>
<h5>お絵かきツール？</h5>
<p>色変えれるとか、消しゴムとか、使えるようになると楽しいかな？ｗ<br/>
あとは、全消去ボタンとか、マウスカーソル元に戻すとかも必要かな？<br/>
いろいろ試してみようと思う。</p>

<h5>次回以降</h5>
<ul>
<li>今回作った、線の描き方をまとめ。</li>
<li>キーボードの入力受け取り。</li>
<li>音を鳴らしてみる。</li>
<li>外部ファイル管理をしよう。</li>
<li>プログレスバーを作ろう。</li>
</ul>
<p>などなど。</p>
<p>よく使うものは、ActionScriptのライブラリとかにしようかな。</p>

<h5>参考</h5>
<ul>
<li>Design Bible FLASH制作工房 - 石原修一・岡村健一（著）</li>
</ul>
]]>
   </content>
</entry>
<entry>
   <title>ドラッグ＆ドロップしてみる</title>
   <link rel="alternate" type="text/html" href="http://color-chips.net/exp_note/web/flash/post_4.html" />
   <id>tag:color-chips.net,2007:/exp_note//9.185</id>
   
   <published>2007-06-03T04:11:23Z</published>
   <updated>2007-06-05T13:42:26Z</updated>
   
   <summary>ドラッグ＆ドロップをしてみる。簡単で楽しい^^...</summary>
   <author>
      <name>まさ</name>
      <uri>http://color-chips.net/</uri>
   </author>
         <category term="Flash&amp;ActionScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://color-chips.net/exp_note/">
      <![CDATA[<p>ドラッグ＆ドロップをしてみる。簡単で楽しい^^</p>]]>
      <![CDATA[<h5>ActionScript使ってドラッグ＆ドロップ</h5>

<object
 type="application/x-shockwave-flash"
 classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
 codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
 width="300" height="200" id="hito_button">
 <param name="movie" value="http://color-chips.net/exp_note/pict/flash/hito_drag_drop.swf" />
 <param name="loop" value="false" />
 <param name="quality" value="high" />
 <embed
 type="application/x-shockwave-flash"
 src="http://color-chips.net/exp_note/pict/flash/hito_drag_drop.swf"
 quality=high width="300" height="200" name="hito_button"
 pluginspage ="http://www.macromedia.com/go/getflashplayer" />
</object>

<p>ヒトに頭を乗せてあげよう。<br/>
ドラッグ＆ドロップと、ドロップ先へスナップをしてみる。</p>

<h5>グラフィックの準備</h5>
<p>今回は、ヒトの体と、頭を二つ用意。それと今回は、頭を乗せたい位置に、透明なオブジェクトを用意。頭をそこにドロップすると、スナップ（吸い付くように固定）させるようにする。</p>
<img src="http://color-chips.net/exp_note/pict/flash/hito_drag_drop.jpg">
<p>それぞれインスタンス名をbody,head1,head2,head_hitとする。<br/>
また、head_hitは、選択して「プロパティ」の「カラー」を「アルファ」モードにして、値を0％にする。（透明にして見えなくする。）図ではわかりやすく色をつけてるだけ。</p>

<h5>スクリプト書き書き</h5>

<pre><code>//------------------------------
//各種宣言
//------------------------------
//ムービークリップ宣言
var head1:MovieClip;		//(1)
var head2:MovieClip;		//(1)
var body:MovieClip;		//(1)
var head_hit:MovieClip;		//(1)

//イベントへ割り振り
//head1
head1.onPress = StartMove1;	//(2)
head1.onRelease = StopMove1;	//(2)
//head2
head2.onPress = StartMove2;	//(2)
head2.onRelease = StopMove2;	//(2)

//------------------------------
//メソッド
//------------------------------

// head1 ------------------------------
//head1の移動開始
function StartMove1()
{
	//head1の中心をマウス位置へ。
	//こうすることでオブジェクトの真ん中を持つことになる。
	this._x = _xmouse;	//(3)
	this._y = _ymouse;	//(3)
	//ドラッグ開始
	this.startDrag();		//(4)
}
//head1の移動終了
function StopMove1()
{
	//ドロップ先のオブジェクト取得
	var target  = eval(this._droptarget);	//(5)
	//ドラッグ終了
	this.stopDrag();			//(4)

	//ターゲットにドロップされたなら..
	if(target==head_hit){			//(5)
		//ターゲットと同じ座標へスナップ
		this._x = target._x;		//(5)
		this._y = target._y;		//(5)
	}
}

// head2 ------------------------------
//head2の移動開始
function StartMove2()
{
	this.onEnterFrame = Move2;	//(6)
}
//head2の移動終了
function StopMove2()
{
	delete this.onEnterFrame;	//(6)
}
//head2の動き
function Move2()
{
	this._x = _xmouse;	//(6)
	this._y = _ymouse;	//(6)
}</code></pre>

<h5>二つの方法でドラッグ＆ドロップを実現</h5>

<dl>
<dt>(1)各種変数宣言</dt>
<dd>ムービークリップを宣言してスクリプトで操作できるようにする。頭をスナップする位置をオブジェクトで判定するため、head_hitも定義。</dd>
<dt>(2)イベント割り振り</dt>
<dd>各オブジェクトに、動作開始と終了するイベントを割り振り。<br/>
今回は、動作開始はマウスボタン押したとき、終了は離したときになる。head1とhead2は違う方法でドラッグ＆ドロップを実現するため、別の関数を割り振りしている。
</dd>
<dt>(3)オブジェクトをマウス位置へ (head1)</dt>
<dd>_xmouse,_ymouseはマウス位置の座標（グローバル座標：ステージ上での位置）。オブジェクトの端の方でドラッグ開始でも、マウスとオブジェクト中心の位置が合うようにしている。
</dd>
<dt>(4)startDrag(),stopDrag()</dt>
<dd>ActionScriptで用意されているドラッグ＆ドロップ実現するための関数。こんなもの用意されてるなんて便利！ｗここらへんでのthisはhead1のこと。（詳しくは、関数を呼び出すオブジェクトのこと)<br/>
startDragをすると、次にstopDragが呼ばれるか、別のstartDragが呼ばれるかするまでマウスにオブジェクトを追従させる。</dd>
<dt>(5)ドロップ先のオブジェクト取得</dt>
<dd>マウスを放したときに、重なってるオブジェクトを取得。_droptargetプロパティはそのオブジェクトのパスが格納されている。さらにevalでそのパスからオブジェクトの参照を取得。<br/>
オブジェクトが無い場合は、undefinedになる。<br/>
その後、if(target == head_hit)でhead1とhead_hitが重なっているかを判定。trueなら座標を与えてスナップさせるようにする。
</dd>
<dt>(6)head2は別の方法でドラッグ＆ドロップを実現</dt>
<dd>ドラッグ開始でhead2のonEnterFrameイベントに関数を割り振ることでフレームごとにマウスに追従するようにすれば良い。ドロップの時にはonEnterFrameに割り振られた関数をdelete
</dd>
</dl>

<h5>頭を動かしてください。</h5>
<p>というわけで、完成ー</p>

<object
 type="application/x-shockwave-flash"
 classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
 codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
 width="300" height="200" id="hito_button">
 <param name="movie" value="http://color-chips.net/exp_note/pict/flash/hito_drag_drop.swf" />
 <param name="loop" value="false" />
 <param name="quality" value="high" />
 <embed
 type="application/x-shockwave-flash"
 src="http://color-chips.net/exp_note/pict/flash/hito_drag_drop.swf"
 quality=high width="300" height="200" name="hito_button"
 pluginspage ="http://www.macromedia.com/go/getflashplayer" />
</object>

<h5>ちょっと問題が。。</h5>
<p>head2を早く動かすと。。<br/>
うまく追従しないことがわかる。フレームごとの動作なので、フレームレートより早い動きにはどうしても付いていけないということ。</p>
<p>head1はhead2よりも滑らかに動く^^<br/>
でもまだちょっとぎこちない。。方法はありそうなので調べてみましょう。</p>

<h5>次回以降</h5>
<ul>
<li>キーボードの入力受け取り。</li>
<li>音を鳴らしてみる。</li>
<li>外部ファイル管理をしよう。</li>
<li>プログレスバーを作ろう。</li>
</ul>
<p>などなど。</p>

<h5>参考</h5>
<ul>
<li>Design Bible FLASH制作工房 - 石原修一・岡村健一（著）</li>
</ul>
]]>
   </content>
</entry>
<entry>
   <title>prototypeとnew</title>
   <link rel="alternate" type="text/html" href="http://color-chips.net/exp_note/programing/javascript/prototypenew.html" />
   <id>tag:color-chips.net,2007:/exp_note//9.184</id>
   
   <published>2007-06-03T02:06:21Z</published>
   <updated>2007-06-03T02:56:16Z</updated>
   
   <summary>prototypeについて、まだ理解できなかったのでいろいろ調べまわった だいぶ...</summary>
   <author>
      <name>まさ</name>
      <uri>http://color-chips.net/</uri>
   </author>
         <category term="JavaScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://color-chips.net/exp_note/">
      <![CDATA[<p>prototypeについて、まだ理解できなかったのでいろいろ調べまわった<br/>
だいぶわかってきたぞ。</p>]]>
      <![CDATA[<h5>hasOwnPropertyで調べてみる</h5>
<p>JavaScriptの全てのオブジェクトには、hasOwnPropertyというメソッドが定義されている。</p>

<pre><code>var Class = function(){}
Class.prototype = {
	hoge : 'piyo'
};
var obj = new Class();
alert(obj.hasOwnProperty(`hoge`));//(1-1)false
obj.hoge = 'fuga';
alert(obj.hasOwnProperty(`hoge`));//(1-2)true</code></pre>

<p>hasOwnPropertyを使うと、そのオブジェクトにメンバがあるかどうかを返す。<br/>
(1-1)の時点では、obj.prototypeにプロパティhogeがあるだけで、objには無く、(1-2)ではobjにhogeがあるのでtrue。<br/>
この例だと最終的には、objにもobj.prototypeにもhogeがあるということ。</p>

<h5>new演算子の動き</h5>
<p>なんかちょっとわかりやすいのみつけたのです。<br/>
<a href="http://d.hatena.ne.jp/yupug/20070419/1177005839">prototype図示とnewの挙動 - web newbie</a><br/>
からたどって。。<br/>
<a href="http://nanto.asablo.jp/blog/2005/10/24/118564">JavaScriptのnew演算子の意味 - Days on the Moon</a><br/>
ここらから引用と自分なりに勉強して書かせていただきました。っと、このあたりを見つけたので今回のエントリ書けたです。感謝。</p>
<p>prototype指向はこうするとわかりやすい！ - web newbie</p>
<blockquote><ul><li>1:prototypeとオブジェクトの関連を図でイメージする。</li>
<li>2:newの挙動を把握する。</li></ul></blockquote>
<p>new演算子の挙動 - Days on the Moon</p>
<blockquote><p>JavaScript における new 演算子の動作は大まかにいって以下のとおりである。(new F() とした場合。)</p>
<ul>
<li>1:新しいオブジェクトを作る。</li>
<li>2:1 で作ったオブジェクトの [[Prototype]] 内部プロパティ (__proto__ プロパティ) に F.prototype の値を設定する。
<ul><li>F.prototype の値がオブジェクトでないのなら代わりに Object.prototype の値を設定する。</li></ul></li>
<li>3;F を呼び出す。このとき this の値は 1 で作ったオブジェクトとし、引数には new 演算子とともに使われた引数をそのまま用いる。</li>
<li>4:3 の返り値がオブジェクトならそれを返す。そうでなければ 1 で作ったオブジェクトを返す。</li>
</ul>
<p>ここで「オブジェクトである」というのはプリミティブ値 (文字列、数値、真偽値、undefined 、null) ではないということだ。<br/>
new String("string") 、new Number(123) 、new Boolean(true) はオブジェクトだが "string" 、123 、true はオブジェクトではない。</p></blockquote>

<p>というわけで。。</p>

<h6>コード見ながらnewの動きを整理</h6>

<pre><code>var Class = function(){}
Class.prototype = {
	hoge : 'piyo'
};
var obj = new Class();		//(2-1)
alert(obj.hasOwnProperty(`hoge`));	//(2-2)false
obj.hoge = 'fuga';			//(2-3)
alert(obj.hasOwnProperty(`hoge`));	//(2-4)true</code></pre>

<ul><li>1: (2-1)でnewすると、新しいオブジェクト{}を作る。</li>
<li>2: 作ったオブジェクトの__proto__にClassのprototypeが格納している参照を格納。
<p>ここでClass.prototypeがオブジェクトでないなら、Object.prototype(の参照)を格納。ここではClass.prototypeはオブジェクト{hoge:'piyo'}なのでこれの参照を格納する。</p></li>
<li>3: 関数Class()を呼び出し。
<p>ここでthisには新しく作ったオブジェクト{}への参照が格納される。newした時に与えられた引数でClass()を実行</p></li>
<li>4: 全てが終わったら、newはオブジェクト{}への参照を返す。</li>
</ul>
<p>という感じ？</p>
<p>prototypeと__proto__は分けて考えたほうが良いらしいです。前者は関数オブジェクトの雛形。後者は作られたオブジェクトが実行時に参照するときのもの。なるほど。（なので、上でobj.prototypetと書いてたのは、obj.__proto__と記述したほうが良いのかな。）</p>

<h6>図で示すとわかりやすいprototype</h6>

<p>こんなコード。ほげほげうるさいけれど我慢ｗ</p>
<pre><code>var Class = function(){};

Class.prototype = { prop : 'hogehoge' };
var hoge = new Class();			//(3-1)
alert(hoge.prop);		//hogehogeと出力

Class.prototype = { prop : 'piyopiyo' };
var piyo = new Class();			//(3-2)
alert(piyo.prop);		//piyopiyoと出力

var fuga = new Class();			//(3-3)
Class.prototype = { prop : 'fugafuga' };
alert(fuga.prop);		//(3-5)piyopiyoと出力
fuga.__proto__.prop = 'piyofuga';

alert(hoge.prop);		//hogehogeと出力
alert(piyo.prop);		//piyofugaと出力
alert(fuga.prop);		//piyofugaと出力</code></pre>

<p>の、オブジェクトの様子を図示してみた。</p>

<img src="http://color-chips.net/exp_note/pict/javascript/prototype_fig.jpg">

<p>黒線がnewによるオブジェクトの作成。各色の線が各参照先を示す。数字はオブジェクト作成やチェーンが作られる順番。<br/>
<p>(3-1)でvar hoge作成時に、Class.prototypeが指しているのは、{ prop : 'hogehoge' }で、hoge.__proto__はこれを参照する。<br/>var piyoも同様(3-2)</p>
<p>ここで、var fugaの作成時(3-3)に、Class.prototypeが指しているのは{ prop : 'piyopiyo' }のままなので、fuga.propは'fugafuga'でなく、'piyopiyo'となる(3-5)ということ。<br/>
（(3-4)で{ prop : 'fugafuga' }を作っているが、これを参照するつながりはできていない。）</p>
<p>その後、fuga.__proto__.propの値を変更すると、{ prop : 'piyopiyo' }オブジェクトのpropプロパティを変更することになる。すると、fugaだけでなく、piyoの__proto__も同じオブジェクトを指しているので、piyo.propも'piyofuga'になる。ということ。</p>
<p>ちなみに、(3-4)でClass.prototypeは{ prop : 'fugafuga' }を参照するようになるが、このあとnewでオブジェクトが作られないかぎり{ prop : 'fugafuga' }を__proto__で参照するオブジェクトは存在しないことになる。<br/>
<em>大事なのは、{}も、(どこかよくわからん場所に作られる名前の無い）オブジェクトなんだ</em>ということか。</p>

<h5>だいぶわかってきた！</h5>
<p>でも、サンプルコードがわかりにくかったか。。あとは実践だな。</p>

<h5>参考</h5>
<ul><li><a href="http://d.hatena.ne.jp/yupug/20070419/1177005839">prototype図示とnewの挙動 - web newbie</a></li>
<li><a href="http://nanto.asablo.jp/blog/2005/10/24/118564">JavaScriptのnew演算子の意味 - Days on the Moon</a></li></ul>
<p>(勝手に)参考にさせていただいてありがとうございます。</p>
]]>
   </content>
</entry>
<entry>
   <title>ボタンでムービー</title>
   <link rel="alternate" type="text/html" href="http://color-chips.net/exp_note/web/flash/post_3.html" />
   <id>tag:color-chips.net,2007:/exp_note//9.180</id>
   
   <published>2007-05-27T07:11:06Z</published>
   <updated>2007-05-27T07:26:28Z</updated>
   
   <summary>ボタン押すと動作するムービーの続き。 ...</summary>
   <author>
      <name>まさ</name>
      <uri>http://color-chips.net/</uri>
   </author>
         <category term="Flash&amp;ActionScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://color-chips.net/exp_note/">
      <![CDATA[<p>ボタン押すと動作するムービーの続き。</p>
]]>
      <![CDATA[<h5>ActionScript使ってボタンで動作するムービー</h5>

<object
 type="application/x-shockwave-flash"
 classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
 codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
 width="100" height="200" id="hito_button">
 <param name="movie" value="http://color-chips.net/exp_note/pict/flash/hito_button_1.swf" />
 <param name="loop" value="false" />
 <param name="quality" value="high" />
 <embed
 type="application/x-shockwave-flash"
 src="http://color-chips.net/exp_note/pict/flash/hito_button_1.swf"
 quality=high width="100" height="200" name="hito_button"
 pluginspage ="http://www.macromedia.com/go/getflashplayer" />
</object>

<p>上にあるようなのを作ります。<br/>
ActionScriptで結構簡単にできちゃう。</p>

<h5>グラフィックの準備</h5>
<p>ヒトの絵(以下グラフィック)を準備する。<br/>
頭と体の2種類をFlashで読み込んで、それぞれシンボル化</p>

<h5>スクリプト書き書き</h5>

<p>前回作ったボタンを追加。さらにメインのシーンの同じフレームに、頭と体のシンボルをドラッグ＆ドロップでインスタンス追加。<br/>
体に頭をくっつけるように配置。ぺたっ。（初期位置）</p>

<p>そいえばアクションの書き方前回やってない。。ので少しだけ。<br/>
「ウィンドウ→アクション」でアクションのパレットを表示。<br/>
その状態でタイムラインのフレームを選択すると、パレットの名前が「アクション - フレーム」となりフレームにスクリプトががしがし書けます。<br/>
自分で手でコーディングするときは、アクションパレットの右上のほうのオプションで、ノーマルモードからエキスパートモードに。</p>

<p>というわけで、インスタンス追加したらさらに同じフレームに以下のアクションを追加。</p>

<pre><code>//------------------------------
//各種宣言
//------------------------------
//ムービークリップ宣言
btn1:MovieClip;		//(1)
head:MovieClip;		//(1)
body:MovieClip;		//(1)
//移動速度
var movestep = 3;		//(1)
//頭の初期位置記憶
var start_x = head._x;	//(1)
var start_y = head._y;	//(1)

//イベントへ割り振り
btn1.onRelease = btnUp;
btn1.onPress = btnDown;

//------------------------------
//メソッド
//------------------------------

//ボタン離したあと
function btnUp(){
	btn1.upbtn();		//ボタン自体の動作
	if(!this.onEnterFrame){
		this.onEnterFrame = moveHead;	//(2)
	}else{
		delete this.onEnterFrame;	//(3)
		movestep = 3;			//(4)
		head._x = start_x;	//(4)
		head._y = start_y;	//(4)
	}
}

//ボタン押した瞬間
function btnDown()
{
	btn1.bottombtn();		//ボタン自体の動作
}

//頭の動作
function moveHead()
{
	movestep ++;		//(5)
	head._y -= movestep;	//(5)
}</code></pre>

<h5>ひとつひとつ説明を</h5>
<dl>
<dt>(1) 各種変数宣言</dt>
<dd>ムービークリップを宣言してスクリプトで操作できるようにするとか、ボタンもう一回押したら元に戻したいので初期位置の記憶とかしてます。</dd>
<dt>(2) this.onEnterFrame = moveHead;</dt>
<dd>this（ここではthisはメインのステージを指す）の<em>onEnterFrame</em>（フレームレートごとに呼ばれるイベント）に、headを動かす関数を割り当て。こうすると、ボタンを押した後にheadが動いていく。</dd>
<dt>(3) delete this.onEnterFrame;</dt>
<dd>もう一度ボタンが押されたら、ムービー停止して初期位置に戻したいので、<em>onEnterFrameに割り当てた関数をdelete</em>。それ以降はまたボタンが押されない限り動かないようにする。<br/>
ボタンが、スタートかストップかの判定はonEnterFrameに関数が割り当てられているかで判定してる。（この判定がいいのかどうかは不明。動いてるからいいかｗ）</dd>
<dt>(4) リセット</dt>
<dd>ムービーが始まる前に予め記憶した値でリセット。ムービーを最初に戻す。</dd>
<dt>(5) headを動作させる</dt>
<dd>加速度を持った動作。headのy座標をデクリメント（yは下方向が正なので、上方向へ動かす場合はマイナスで）<br/>
そいえば言い忘れてたけれど、<em>_yとか_xはMovieClipクラスのメンバ</em>(ビルトインクラス:すでにActionScriptのほうで定義してあるクラス)で、ムービークリップの座標を操作したり、取得したり。<br/>
この関数をonEnterFrameに割り当てることでフレームレートごとに動作するようになる。</dd>
</dl>

<h5>ボタンぽちっと動作確認。</h5>
<p>というわけで、完成ー</p>


<object
 type="application/x-shockwave-flash"
 classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
 codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
 width="100" height="200" id="hito_button">
 <param name="movie" value="http://color-chips.net/exp_note/pict/flash/hito_button_1.swf" />
 <param name="loop" value="false" />
 <param name="quality" value="high" />
 <embed
 type="application/x-shockwave-flash"
 src="http://color-chips.net/exp_note/pict/flash/hito_button_1.swf"
 quality=high width="100" height="200" name="hito_button"
 pluginspage ="http://www.macromedia.com/go/getflashplayer" />
</object>

<h5>次は。。</h5>
<p>Flashでドラッグ＆ドロップをしてみよう。結構簡単らしいよ。</p>

<h5>参考</h5>
<ul>
<li><a href="http://flashrave.org/index.html">FLASHRAVE</a></li>
<li>Design Bible FLASH制作工房 - 石原修一・岡村健一（著）</li>
<li>FLASH-FACTORY - Flash-Workers（著）</li>
<li>プロが教えるFlashアイデア工房 - MdN Mook</li>
</ul>]]>
   </content>
</entry>
<entry>
   <title>objファイルフォーマットその１</title>
   <link rel="alternate" type="text/html" href="http://color-chips.net/exp_note/computerscience/fileformat/obj.html" />
   <id>tag:color-chips.net,2007:/exp_note//9.179</id>
   
   <published>2007-05-27T06:59:52Z</published>
   <updated>2007-05-27T07:09:12Z</updated>
   
   <summary>３次元データを扱うことが多くなってきた。データ量すごくて、重い（汗 ３Ｄデータの...</summary>
   <author>
      <name>まさ</name>
      <uri>http://color-chips.net/</uri>
   </author>
         <category term="FileFormat" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://color-chips.net/exp_note/">
      <![CDATA[<p>３次元データを扱うことが多くなってきた。データ量すごくて、重い（汗</p>
<p>３Ｄデータのファイルっていろんなフォーマットがある。いろいろ勉強中。<br/>
普段は3次元空間上のx,y,zの点郡データをそのままテキストで書くだけでできるobjファイルというフォーマットを使ってます。<br/>
３Ｄの世界ではよく使われてるのかな？</p>]]>
      <![CDATA[<h5>3次元ビューワ</h5>
<p>フリーであります。</p>
<a href="http://www.rapidform.com/">Rapidform 2006 Basis - INUS Technology社 -</a>
<p>なんか重いページだ。。<br/>
Rapidform Free Viewer(だったかな？)へ頑張ってたどってください。</p>

<p>３Ｄデータを見るだけで加工はできませんが、まぁ見るだけなら。<br/>
点の距離とか断面とか見れます。<br/>
objファイル読み込み可能。</p>

<h5>とりあえずサンプル</h5>

<pre><code># sample.obj

v	-1.0	-1.0	1.0
v	1.0	-1.0	1.0
v	1.0	1.0	1.0
v	-1.0	1.0	1.0
v	-1.0	-1.0	-1.0
v	1.0	-1.0	-1.0
v	1.0	1.0	-1.0
v	-1.0	1.0	-1.0

f	1	2	3	4
f	1	4	8	5
f	2	1	5	6
f	3	2	6	7
f	4	3	7	8
f	5	8	7	6</code></pre>

<p>をエディタで書いて、sample.objとかいった感じでファイル名つけて保存。
Rapidformを起動して、ファイルオープンすると見れる。</p>

<h5>こんな感じ</h5>
<p><img src="http://color-chips.net/exp_note/pict/fileformat/obj/cube1.jpg">
<img src="http://color-chips.net/exp_note/pict/fileformat/obj/cube2.jpg"></p>

<h5>objファイルフォーマット</h5>
<dl>
<dt>v	x y z w<br/>
頂点データ</dt>
<dd>各頂点の3次元座標値を表す。4つ目のwは。。4次元？(省略可)</dd>
<dt>f	v1 v2 v3 v4<br/>
面データ</dt>
<dd>面を構成する点を選ぶ。<br/>
たとえば「f	1 2 3 4」だったら頂点データの1番目、2番目、3番目、4番目(省略可)の点を結んで面を作る。といった感じ。<br/>
点を3つしか選ばなければ、3角形の面。4つ選べば3角形2枚使って自動で四角形の面を描いてくれる。</dd>
<dt>#<br/>
コメント</dt>
<dd>#以降その行はコメントアウトされる。<br/>
ソフトウェアによっては必要な情報を書き込んだりすることも。ソフトの仕様による。<br/>
Rapidformでは無くても関係ないです。</dd>
</dl>

<h5>まだまだobj</h5>
<p>点と面だけでなく、テクスチャとかも貼れます。また後日。<br/>
他には線とか、曲面とかもできるらしいけれど、Rapidformのビューワで扱うのはできないみたい。</p>

<h5>そのた</h5>
<p>久しぶりにShade使おうかなぁ。objファイル読めるらしい。</p>

<h5>参考</h5>
<p>objファイル仕様 リファレンス（English）</p>
<ul>
<li><a href="http://pipin.tmd.ns.ac.yu/extra/fileformat/3d/obj/obj_spec.pdf">obj_spec [pdf] </a></li>
<li><a href="http://www.martinreddy.net/gfx/3d/OBJ.spec">OBJ (テキスト) </a></li>
</ul>]]>
   </content>
</entry>
<entry>
   <title>Flashでボタン</title>
   <link rel="alternate" type="text/html" href="http://color-chips.net/exp_note/web/flash/flash.html" />
   <id>tag:color-chips.net,2007:/exp_note//9.177</id>
   
   <published>2007-05-20T07:33:39Z</published>
   <updated>2007-05-20T08:36:21Z</updated>
   
   <summary>こんどはFlashのActionScriptの勉強です。いろんな言語がぐちゃぐち...</summary>
   <author>
      <name>まさ</name>
      <uri>http://color-chips.net/</uri>
   </author>
         <category term="Flash&amp;ActionScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://color-chips.net/exp_note/">
      <![CDATA[<p>こんどはFlashのActionScriptの勉強です。いろんな言語がぐちゃぐちゃになってきたぞ（汗<br/>
これってバイリンガル？（笑）</p>]]>
      <![CDATA[<h5>ActionScript使ってボタンで動作するムービー</h5>

<object
 type="application/x-shockwave-flash"
 classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
 codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
 width="100" height="200" id="hito_button">
 <param name="movie" value="http://color-chips.net/exp_note/pict/flash/hito_button_1.swf" />
 <param name="loop" value="false" />
 <param name="quality" value="high" />
 <embed
 type="application/x-shockwave-flash"
 src="http://color-chips.net/exp_note/pict/flash/hito_button_1.swf"
 quality=high width="100" height="200" name="hito_button"
 pluginspage ="http://www.macromedia.com/go/getflashplayer" />
</object>

<p>上にあるようなのを作ります。<br/>
これのためにIllustratorでヒトを描いたｗ（そちらのほうが時間かかってますｗ）<br/>
Macromedia Flashの使い方もなかなか難しいのでそこの勉強もしながら。。<br/>
とりあえずまずはボタンだけつくってみましょー。</p>

<h5>ボタンの準備</h5>
<p>ボタンの絵(以下グラフィック)を準備する。<br/>
押す前と押してへこんでるグラフィックの2枚を用意。<br/>
グラフィックごとにIllustratorからswf形式でファイルへ書き出し。Macromedia Flashで同ファイルを「ファイル→読み込み」するとできる。<br/>
Illustratorから直接コピペしてもできる時あるけれど、あまり複雑なグラフィックだとうまくいかないことが多い（汗）ので注意。特に文字とか。</p>

<h5>タイムラインと関数の設定</h5>

<p>Flashを起動すると、シーンの真っ白キャンバスが出てくる。これがメインの画面で、ここにシンボルを追加していってムービーを作り上げます。プログラミングの「オブジェクト指向」みたいな感じ？<br/>
まずは、「シンボル」の作製。これは「クラス」かな？</p>

<p>メニューの「挿入→新規シンボル」で「ムービークリップ」を作ります。名前はお好きに。<br/>
そこで出てきたキャンバスに、2フレーム準備して、準備した2枚の絵を例の「読み込み」でそれぞれフレームに分けて配置。どちらもキャンバス上で中央の同位置に配置する。（下図レイヤー１）<br/>
各フレームの長さが長くしてあるのは各フレームのラベル(upとかbottomとか)を見やすくするためなので各1フレームずつで十分です。</p>

<img src="http://color-chips.net/exp_note/pict/flash/button_timeline1.gif">

<p>レイヤー２のアクションに、</p>

<pre><code>function bottombtn(){
	gotoAndPlay("bottom");	
}			//(1-1)
function upbtn(){
	gotoAndPlay("up");	
}			//(1-2)</code></pre>

<p>と、いよいよActionScriptを書き込む。</p>
<p>bottombtn()を呼び出すと、フレームラベル"bottom"へ移動。各フレームの開始にはstop();で止まるようにしてある(レイヤー３)ので、ボタンがへこんだグラフィックを表示して止まるようになっている。<br/>
同じくupbtn()を呼び出すと、フレームラベル"up"へ移動。ボタンの押す前のグラフィックを表示して停止。</p>
<p>ちなみに、フレーム"stop_up"と"stop_down"には、</p>
<pre><code>stop();</code></pre>
<p>だけ記述。</p>

<p>これでボタンのシンボルが完成！

<h5>イベントの設定</h5>

<p>最初のシーンに戻って、ここに作ったシンボルを追加していきます。</p>
<p>「ウィンドウ→ライブラリ」を押すと、ライブラリのパレットが出てきて、先ほど作ったシンボルがリストにできてる。
そこからシーンのキャンバスへドラッグ&ドロップすると、シーンにシンボルが追加されて、ムービー上に見えるようになります。どんどんたくさん追加できます＾＾</p>
<p>プログラミングで言えばクラスからインスタンスを作るのと同じ？1つのクラスからたくさん同じようなオブジェクトができる！<br/>
シンボルから作られたこれも同じく「インスタンス」と呼びます。作ったインスタンスの「プロパティ」から名前をつけます。ここでは"btn"にしましょう。</p>
<p>レイヤーを追加して、新しいレイヤーの同じフレーム位置に以下のスクリプトを記述。</p>

<pre><code>//ムービークリップ宣言
var btn:MovieClip;		//(2-1)

//イベントへ割り振り
btn.onRelease = btnUp;	//(2-2)
btn.onPress = btnDown;	//(2-3)

//------------------------------
//メソッド
//------------------------------

//ボタン離したあと
function btnUp(){
	btn.upbtn();	//インスタンス"btn"のupbtn()を呼び出し
}				//(2-4)

//ボタン押した瞬間
function btnDown(){
	btn.bottombtn();	//インスタンス"btn"のbottombtn()を呼び出し
}				//(2-5)</code></pre>

<p>ひとつひとつ説明を。<br/>
(2-1)でキャンバスに作ったインスタンスをActionScriptで制御できるように宣言。ただのグラフィックでなく、ムービー動作するのでMovieClip型(クラス)で宣言。</p>
<p>(2-2)(2-3)はイベントへ関数を割り振りしています。<br/>
MovieClipなどのクラスは、イベントハンドラというものをもっており、たとえばMovieClip.onEnterFrameは設定フレームレート時間ごとに処理される。MovieClip.onPressはインスタンス上でマウスボタンが押されたら処理される。など。<br/>
このイベントハンドラに実際の処理を定義した関数を割り振った。</p>
<p>(2-4)(2-5)はイベントハンドラに渡す処理関数の定義。</p>
<p>これでボタン押すたびに処理してくれます。</p>

<h5>ボタンをぽちっとな</h5>
<p>というわけで、作ったボタン。</p>

<object
 type="application/x-shockwave-flash"
 classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
 codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
 width="100" height="30" id="hito_button">
 <param name="movie" value="http://color-chips.net/exp_note/pict/flash/button1.swf" />
 <param name="loop" value="false" />
 <param name="quality" value="high" />
 <embed
 type="application/x-shockwave-flash"
 src="http://color-chips.net/exp_note/pict/flash/button1.swf"
 quality=high width="100" height="30" name="button1"
 pluginspage ="http://www.macromedia.com/go/getflashplayer" />
</object>

<p>押している間だけへこむ。とまぁ、これだけです＾＾</p>

<h5>実は。。</h5>
<p>シンボルのタイプに「ボタン」っていうのがあって、それ使うと簡単にボタンが作れます。なんと。<br/>
イベントの取得の仕方も他にやり方あるのでそっちも勉強しよう。。<br/>
え、ActionScriptにもprototypeとかあるの！？</p>

<h5>参考</h5>
<ul>
<li><a href="http://flashrave.org/index.html">FLASHRAVE</a></li>
<li>Design Bible FLASH制作工房 - 石原修一・岡村健一（著）</li>
<li>FLASH-FACTORY - Flash-Workers（著）</li>
<li>プロが教えるFlashアイデア工房 - MdN Mook</li>
</ul>]]>
   </content>
</entry>
<entry>
   <title>JavaScriptのオブジェクト指向２</title>
   <link rel="alternate" type="text/html" href="http://color-chips.net/exp_note/programing/javascript/javascript_1.html" />
   <id>tag:color-chips.net,2007:/exp_note//9.176</id>
   
   <published>2007-05-19T11:45:25Z</published>
   <updated>2007-05-27T05:04:53Z</updated>
   
   <summary>JavaScriptのクラスについて、その２。 まだ理解までは遠い。。...</summary>
   <author>
      <name>まさ</name>
      <uri>http://color-chips.net/</uri>
   </author>
         <category term="JavaScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://color-chips.net/exp_note/">
      <![CDATA[<p>JavaScriptのクラスについて、その２。<br/>
まだ理解までは遠い。。</p>]]>
      <![CDATA[<h5>JavaScriptのクラス</h5>
<h6>空のクラスを作る。</h6>

<pre><code>var Class = function() {};	//(1-1)
function Class() {};		//(1-2)</code></pre>

<p>二通りの書き方だけれどやってることは同じ。で、これって関数じゃん？</p>

<h6>空じゃないクラスを作ってみる。</h6>
<p>2次元の点を表すPointクラス</p>

<pre><code>var Point = function(_x,_y){
	this.x = _x,
	this.y = _y,
	this.DisplayPoint = function(){
		alert(this.x+','+this.y);
	}
};	//(2-1)

function Point( _x, _y ) {
	this.x = _x;
	this.y = _y;
	this.DisplayPoint = function(){
		alert(this.x + ',' + this.y);
	};
	return this;
};	//(2-2)</code></pre>

<p>こちらも書き方二通り((2-1),(2-2))。もっといろんな書き方ありそう。<br/>
ここまできて、あぁこれって<em>クラスのコンストラクタ</em>か！と気づいた。確かに関数。コンストラクタで初期化することが、クラスからオブジェクトを作るっていうこと。<br/>
newして新しいオブジェクトを作るということに納得。引数も与えられます。(3-1)</p>

<pre><code>var position1 = new Point( 10, 20 );	//(3-1)
var position2 = new Point( 150, 230 );	//たくさん作れる！
position1.DisplayPoint();		//'10,20'を表示 (3-2)
position1.DisplayPoint();		//'150,230'を表示 (3-3)</code></pre>

<p>このときのthisはPointでなく、それぞれposition1、position2に渡され、そのオブジェクトを指す。<br/>
クラスを使えば同じプロパティを持つオブジェクトをたくさん簡単に作れる。</p>

<h5>プロトタイプ prototype</h5>
<p>JavaScript特有の難しいところ＾＾<br/>
ここでは箇条書きのメモ程度に。。</p>
<ul>
<li class="point_list">オブジェクトは全て<em>prototypeプロパティ</em>というものを持っている</li>
<li class="point_list">特に指定せずにオブジェクトを作ったときにはprototypeにはデフォルト指定される。</li>
<li class="point_list">オブジェクトのあるプロパティにアクセスしようとして、プロパティが無ければprototypeに無いかどうかを<em>暗黙に参照</em>する</li>
<li class="point_list">prototypeにプロパティを自由に追加 / 代入できる</li>
</ul>
<p>prototypeはオブジェクトの雛形。という説明をちらほら見るけれど、よくわからないです。。</p>

<h5>プロトタイプによる初期化</h5>
<p>コンストラクタでない、オブジェクト初期化方法。<br/>
とりあえずやってみる。</p>

<pre><code>var Point = function( _x, _y) {
	this.x = _x;
	this.y = _y;
};	//(4-1)
var position1 = new Point( 10, 20 );	//(4-2)

Point.prototype = {
	DisplayPoint : function() {
		alert(this.x + ',' + this.y);
	}
};	//プロトタイプによる初期化 (4-3)

var position2 = new Point( 10, 20 );	//(4-4)

position1.DisplayPoint();		//未定義！(4-5)
position2.DisplayPoint();		//'10,20'を表示(4-6)</code></pre>

<p><del>もうすでに定義してあるクラスのコンストラクタに新しく定義を追加するイメージ。なのかな？</del></p>
<p>クラスに定義するのと、オブジェクトのプロトタイプに定義するのとは微妙に(だいぶ？)違う。<em>指定する名前がクラス内に無ければ、prototypeを暗黙に参照する。</em><br/>
なので、プロパティにアクセスするとき、クラス内にもprototypeにも同じ名前のプロパティがある場合はクラス優先。という風にアクセスする順番がある。このことは後のプロトタイプチェーンのときに重要。</p>
<p>newでオブジェクトが作られるときに、そのクラスの<em>プロトタイプを参照して、そこからプロパティやメソッドを継承</em>する。<br/>
逆に言えば、クラスからオブジェクトがnewして作られる前にプロトタイプに格納しないとそのオブジェクトでは定義されていないので注意。(4-5)</p>

<h5>プロトタイプチェーン</h5>
<p>オブジェクトのプロトタイプには、オブジェクトを代入することができる。<br/>
というか、prototypeプロパティもオブジェクトなので<em>prototypeも内部にprototypeを持っている</em>。というわけのわからないことに。。</p>
<p>このことを利用して、<em>プロトタイプチェーン</em>という不思議なことができるらしい。</p>

<pre><code>var Class1 = function(){
	this.Func1 = function(){
		alert('Func1');
	};
};				//(5-1)

var Class2 = function(){
	this.Func2 = function(){
		alert('Func2');
	};
};				//(5-2)

Class2.prototype = new Class1();	//(5-3)
var test = new Class2();		//(5-4)

test.Func1();	//'Func1'を表示(5-5)</code></pre>

<p>(5-4)でtestはClass2のオブジェクトなのに、(5-5)で、Func1()が正しく実行できます。<br/>
<em>"プロパティが無ければprototypeを暗黙に参照する。"</em>ので、</p>
<p>Class2 → Class2.prototype(= Class1 )</p>
<p>というふうに「チェーン」したようなつながりの関係ができる。<br/>
このプロトタイプチェーンは、「クラスの継承」みたいなものだな。</p>

<p>目的のプロパティがClass1にも無い場合はさらに、Class1→Class1.prototypeと探していく。ここでClass1.prototypeには特に指定していないので、Objectというものが（暗黙的に）指定される。全てのオブジェクトは最終的に、Object(クラス)に行き着き、Object.prototypeはnullで終わりになっている。<br/>
Objectまで探して見つからなければそのプロパティは未定義ということになる。</p>
<p>全部書くと、<br/>
Class2 → Class2.prototype (= Class1 ) → Class1.prototype (= Object ) → Object.prototype (= null )<br/>
という感じの継承になってる。</p>

<h5>prototypeはもっと勉強しよう</h5>
<p>この1回で終わらせるつもりが、なんかまだ良くわかってないのでprototypeについてまた別途勉強していこう。<br/>
次回以降予定予定<br/>
さらにprototype<br/>
newについて<br/>
イベント処理しよう<br/>
prototype.jsを使おう</p>

<h5>その他</h5>
<p><a href="https://addons.mozilla.org/ja/firefox/addon/1843">FireBug</a>を導入した。すごく便利。</p>

<h5>参考</h5>
<ul>
<li>入門Ajax 増補改訂版 - 高橋登史朗（著）</li>
<li><a href="http://www.thinkit.co.jp/free/article/0702/15/1/">JavaScriptを洗練させるPrototype.js - Think'IT -</a></li>]]>
   </content>
</entry>
<entry>
   <title>JavaScriptのオブジェクト指向１</title>
   <link rel="alternate" type="text/html" href="http://color-chips.net/exp_note/programing/javascript/javascript.html" />
   <id>tag:color-chips.net,2007:/exp_note//9.174</id>
   
   <published>2007-05-13T12:13:28Z</published>
   <updated>2007-05-16T15:13:37Z</updated>
   
   <summary>JavaScriptにおけるオブジェクト指向についてまとめまとめメモメモ。...</summary>
   <author>
      <name>まさ</name>
      <uri>http://color-chips.net/</uri>
   </author>
         <category term="JavaScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://color-chips.net/exp_note/">
      <![CDATA[<p>JavaScriptにおけるオブジェクト指向についてまとめまとめメモメモ。</p>]]>
      <![CDATA[<h5>空のオブジェクト作成</h5>

<pre><code>var person = {};			//(1-1)
if(!person) var person = {};		//(1-2)
var person = window.person || {};	//(1-3)</code></pre>

<p>(1-1)で、これでオブジェクト作成。<br/>
また、名前空間の衝突を避けるために、(1-2)とか、(1-3)とかみたいにすると、すでにその名前空間が存在するかどうかを確認してくれて、不用意な上書きされずに済む。</p>

<h5>オブジェクトのプロパティ</h5>

<pre><code>var person = {
	name : 'someone',
	MyName : function(){
		alert(this.name);
	}
};			//(2-1)

alert(person.name);	//(2-2) 'someone'を表示
person.NyName();	//(2-3) 'someone'を表示</code></pre>

<p>(2-1)のようにして、オブジェクトにプロパティを定義。<br/>
(2-2)、(2-3)は同じ結果になります。<br/>
.(ドット)でオブジェクトのプロパティにアクセスできる。<br/>
また、thisポインタみたいなことができる。<br/>
ここら辺は普通。</p>

<h5>プロパティの追加</h5>
<p>なんか途中でプロパティを追加できるらしい。ここら辺から不思議でよくわからなくなってくる。。</p>

<pre><code>person.age = 20;	
person.MyAge = function(){
	alert(this.age);
};			//(3-1)

person.MyAge();		//(3-2) '20'を表示</code></pre>

<p>実行中に定義を追加するとか不思議な感じだけど、ここら辺はまだなんとかわかる。<br/>
(3-1)の結果、(3-2)で新しくプロパティが追加されたのがわかる。</p>

<h5>オブジェクト2つ考えてみる</h5>

<p>(4-1)のように、オブジェクトdogを新しく追加する。</p>

<pre><code>var dog = {
	name : 'hana',
	age : 5
};			//(4-1)

person.MyName();	//(4-2) 'someone'を表示
person.MyAge();		//(4-2) '20'を表示
dog.MyName = person.MyName;	//(4-3)
dog.MyAge = person.MyAge;	//(4-3)
dog.MyName();		//(4-4) 'hana'を表示
dog.MyAge();		//(4-4) '5'を表示</code></pre>

<p>(4-3)で関数を代入するなんて不思議なことしてます^^<br/>
関数をオブジェクトとみなしてこういうことができるらしい。。確かに定義するときもfunction()が付いてるだけで他のプロパティと似てる。<br/>
JavaScriptでは関数もオブジェクトとみなして、関数オブジェクトって言うらしいです(そのまんまｗ</p>

<p>関数の実装は同じだけれど、thisで指されるものがオブジェクト(personとdog)ごとに違うので結果が異なってくる。( (4-2)と(4-4) )</p>

<h5>まだまだつづくよ</h5>
<p>JavaScriptって同じコトやるのにいろんな書き方あるからまとめないと。。むむ。早く動かせるもの作りたい(＞＿＜；)</p>

<p>次回以降予定。<br/>
JavaScriptのクラスについて。<br/>
prototypeチェーンについて。<br/>
prototype.jsを使おう。<br/>
イベント処理しよう。</p>

<h5>参考</h5>
<ul>
<li>入門Ajax 増補改訂版 - 高橋登史朗（著）</li>
<li><a href="http://www.thinkit.co.jp/free/article/0702/15/1/">JavaScriptを洗練させるPrototype.js - Think'IT -</a></li>]]>
   </content>
</entry>
<entry>
   <title>ビットマップファイルの構造 その２</title>
   <link rel="alternate" type="text/html" href="http://color-chips.net/exp_note/computerscience/imageprocessing/post_2.html" />
   <id>tag:color-chips.net,2007:/exp_note//9.172</id>
   
   <published>2007-05-12T12:56:07Z</published>
   <updated>2007-05-27T07:28:31Z</updated>
   
   <summary>その１から少し時間あいてしまった（汗 ここでは少し残してた注意点を。 ...</summary>
   <author>
      <name>まさ</name>
      <uri>http://color-chips.net/</uri>
   </author>
         <category term="FileFormat" scheme="http://www.sixapart.com/ns/types#category" />
         <category term="ImageProcessing" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://color-chips.net/exp_note/">
      <![CDATA[<p>その１から少し時間あいてしまった（汗<br/>
ここでは少し残してた注意点を。</p>
]]>
      <![CDATA[<h5>グレースケール画像とカラー画像について</h5>
<p>主にグレースケール画像(モノクロ画像)として(BITMAOPINFOHEADERのbiBitCountの値が)8bit、カラー画像として24bitの画像を使います。<br/>
。。というよりこの2種類の画像しか扱ったことが無い(汗)ので、この二つを例にしますｗ</p>

<p>グレースケール画像とカラー画像とは扱い方が少し違います。正確にはbiBitCount=8以下と16以上での扱いが違い、少し面倒な点も。<br/>
biBitCount=8以下の画像では、カラーテーブルが存在し、画像データの各ピクセルの数値がカラーテーブルの番号を示します。<br/>
biBitCount=16以上の画像では、カラーテーブルが無く、画像データの各ピクセルの数値そのものが色を示します。</p>

<img src="http://color-chips.net/exp_note/pict/image_processing/24bit_dib.jpg" alt="24ビット画像フォーマットイメージ図">
<p>たとえばbiBitCount=24の画像(以下24bit画像)では8bit(=1Byte)でそれぞれR,G,Bの輝度(0～255)を示し、3Byteのデータで1つのピクセルを示すことになり、</p>
<img src="http://color-chips.net/exp_note/pict/image_processing/8bit_dib.jpg" alt="8ビット画像フォーマットイメージ図">
<p>biBitCount=8の画像(以下8bit画像)では1Byteで1つのピクセルを示し、この場合は予め用意されたカラーテーブルの番号が格納されている。</p>

<h5>BITMAPFILEHEADERのbfOffBitsについて</h5>
<p>その１で後回しにしたBITMAPFILEHEADERのbfOffBits(画像ファイルの先頭から画像データ領域までのオフセット)について。</p>

<p>カラーテーブルを用いている場合、画像データまでにカラーテーブルを書き込む領域があるのでその分オフセットを考慮しなければいけない。(これ書いているうちに自分で作った処理が間違っていることに気づいた（汗）<br/>
つまり、8bit画像では、<br/>
bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*256 = 1078<br/>
24bit画像では、<br/>
bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)= 54<br/>
となる。<br/>
(biBitCount=16以上では常にbfOffBits=54,biBitCount=8以下ではカラーテーブルのサイズによってbfOffBitsの値は変わることになる)</p>

<h5>カラーデータの配置</h5>
<p>最後にもう1つ注意点として、24bit画像の図からもわかるように、色のデータは常にB(青),G(緑),R(赤)の順番になっている。(※R,G,Bの順番で無いことに注意！)<br/>
グレースケール画像では気づかないけれど、カラー画像だとこの色の順番を間違えると全然違う画像になったりするので注意を。</p>

<p>というわけでこの仕様どおりにメモリ確保＆ファイル読み込み、格納すればOK<br/>
ここまでできれば画像処理の準備万端ｗ心置きなく処理ができます(笑)<p>

<h5>参考</h5>
<ul>
<li>Visual Basic ＆ Visual C++による デジタル画像処理入門 - 酒井幸市(著)</li>
<li><a href="http://ja.wikipedia.org/wiki/Windows_bitmap">Windows bitmap - Wikipedia -</a></li>
<li><a href="http://hp.vector.co.jp/authors/VA023539/tips/bitmap/001.htm">ビットマップファイルの構造 - Tips of VC++ -</a></li>
</ul>

<h5>その３へ？</h5>
<p>まだ見落としてる点がありそう。。(汗<br/>
まだまだ勉強していきます。画像処理技術のまとめもしていきます。</p>]]>
   </content>
</entry>
<entry>
   <title>画像の使用を(略)大会に参加</title>
   <link rel="alternate" type="text/html" href="http://color-chips.net/exp_note/web/htmlcss/post_1.html" />
   <id>tag:color-chips.net,2007:/exp_note//9.167</id>
   
   <published>2007-05-03T10:00:50Z</published>
   <updated>2007-05-07T12:15:46Z</updated>
   
   <summary>cssの勉強にと参加しました。 画像の使用を極力控えてかっこいいCSSデザインを...</summary>
   <author>
      <name>まさ</name>
      <uri>http://color-chips.net/</uri>
   </author>
         <category term="html&amp;css" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://color-chips.net/exp_note/">
      <![CDATA[<p>cssの勉強にと参加しました。<br/>
<a href="http://www.jam-graffiti.com/non-pic-css/">画像の使用を極力控えてかっこいいCSSデザインをやってみよう大会</a><br/>
エディタとブラウザ(Firefox)を開いてカタカタとコーディング。3時間程度で作りました。細かいところは気にせず（汗）<br/>
<del>作ったのがそのうち公開されるはずｗ</del><br/>
こちら↓に掲載させていただいております<br/>
<a href="http://www.jam-graffiti.com/non-pic-css/gallery/051-color_chips/css-party.html">color-chips.net Style</a><br/>
やってて気づいたことなどを。</p>]]>
      <![CDATA[<h5>正しい文書構造に素直に従ったcssを組むとcssハックが少なく済む</h5>
<p>今回はhtmlがもう決められていたので楽でした(しかも自分で組むのと違って綺麗な文書構造。勉強になります)。css組むだけｗ<br/>
実際組むときはブラウザごとにcssの解釈が違うので(みんな独自に<del>わがままに</del>ブラウザ作ってるのでここが面倒なところ。)、cssハックに大変時間がかかる(汗)<br/>
普段Firefoxで見ながら全部タグ手打ちで組んで、IE6で時々確認。ハッキング。の繰り返しで作ってます。他のブラウザは。。ははｗ<br/>
でも、今回cssハックが少なく。というよりぜんぜんやってなく、でもFFでもIEでも同じように見れました。正しい文書構造にしたがって素直なcss組むとこうなのかなー。と。</p>

<h5>初めてエラスティックレイアウトにしてみました</h5>
<p>「エラスティック(elastic)レイアウト」：伸び縮みするレイアウト。(ブラウザによって)文字サイズが変わっても、全体のレイアウトが崩れないようなWebデザインのこと。らしいですｗ(知らなかった)<br/>
普段は「固定幅レイアウト」(ボックスのサイズなどをかっちり固定値指定のデザイン)しかしてなかったので勉強にと挑戦しました。見やすくて結構いいかも。<br/>
使い分けできるといいと思った。動かしたくないところはpx単位で指定して、文字サイズ等々でレイアウト崩したくないところはem単位やex単位で指定。といった風に。<br/>
ちなみに「リキッドレイアウト」なんてものもあります。ブラウザのウィンドウサイズによって変更されるレイアウト。この場合は%単位で値を指定。ウィンドウの真ん中に表示させたいとか、中央そろえとかに使いますな。</p>

<h5>参考</h5>
<ul>
<li>Web標準の教科書- XHTMLとCSSで作る"正しい"Webサイト -	益子貴寛(著)</li>
<li><a href="http://www.jam-graffiti.com/non-pic-css/"><img src="http://color-chips.net/exp_note/pict/html_css/banner_non-pic_200x40.png" alt="画像の使用を(略)大会"/>画像の使用を極力控えてかっこいいCSSデザインをやってみよう大会</a></li>
</ul>]]>
   </content>
</entry>
<entry>
   <title>ビットマップファイルの構造 その１</title>
   <link rel="alternate" type="text/html" href="http://color-chips.net/exp_note/computerscience/imageprocessing/post.html" />
   <id>tag:color-chips.net,2007:/exp_note//9.165</id>
   
   <published>2007-05-03T02:41:05Z</published>
   <updated>2007-05-27T07:28:01Z</updated>
   
   <summary>仕事で画像処理をしております。 大学でも画像処理なんて勉強したこと無くて、会社で...</summary>
   <author>
      <name>まさ</name>
      <uri>http://color-chips.net/</uri>
   </author>
         <category term="FileFormat" scheme="http://www.sixapart.com/ns/types#category" />
         <category term="ImageProcessing" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://color-chips.net/exp_note/">
      <![CDATA[<p>仕事で画像処理をしております。<br/>
大学でも画像処理なんて勉強したこと無くて、会社でも勉強会とか研修とか全然無くて思いっきりOJT(On the Job Training:要は仕事するうちに覚えろということｗ)。<br/>
なのにいつの間にか画像処理をそれなりに使えるようになってきた。<br/>
入社当初はプログラミングもほとんどわからなかったのにｗ<br/>
一度画像処理の基礎から勉強しなおそうと思い立って、自分で一から画像処理ライブラリを作りながらここにまとめていきます。<br/>
ホントに独学なので間違って覚えていることは突っ込んでもらおうと(笑)</p>]]>
      <![CDATA[<h5>画像処理をするにあたって</h5>
<p>まずは、画像処理をするにあたって、画像ファイルをメモリ上で処理できる形にしなければならないです。<br/>
画像処理では主にDIB(Device Independent Bitmap:デバイス独立ビットマップ)の画像データ形式を扱います。情報が非圧縮で１画素ずつ順番に入ってるので処理に便利。<br/>
WindowsのBMPファイルはDIB形式のファイル。WindowsでプログラミングしてるのでBMPしか扱ったことがありませんがまぁほとんど一緒でしょう(ぉぃ)<br/>
ということでDIB形式についてのまとめ。</p>

<h5>DIBの構造</h5>
<img src="http://color-chips.net/exp_note/pict/image_processing/dib_format.jpg" alt="DIBの構造図" />
<p>DIBのファイルはファイルヘッダ・画像情報・(カラーテーブル)・画像データで構成されます(カラーテーブルがカッコで書かれているのは後述)。ファイル構造は上図参照。<br/>
VC++とかだと、これ専用の構造体が用意されていて、この構造体のサイズ分をファイルから順番に読み込んでいけば正しく読み込める！というわけで便利です。</p>

<h5>各構成要素の解説</h5>
<h6>ファイルヘッダ</h6>
<p>BITMAPFILEHEADER構造体で表現される。<br/>
ファイルの基本情報が詰め込まれています。どんなファイルなのか等 etc...<br/>
BITMAOPFILEHEADER構造体の中身は、</p>
<pre><code>typedef struct tagBITMAPFILEHEADER {
	WORD	bfType;	// BMPファイルなら"BM"=0x4D42
	DWORD	bfSize;	// ファイルサイズ(単位:Byte)
	WORD	bfReserved1;// 予約領域
	WORD	bfReserved2;// 予約領域
	DWORD	bfOffBits;
	// ファイル先頭から画像データ先頭までのオフセット(Byte)
} BITMAPFILEHEADER;</code></pre>
<dl>
<dt>bfType</dt>
<dd>ファイルタイプ</dd>
<dd>WindowsのBMPなら必ず"BM"となる。そうじゃなければビットマップファイルでない。</dd>
<dt>bfSize</dt>
<dd>ファイルサイズ(Byte)</dd>
<dd>このファイルのサイズを指定しておく。</dd>
<dt>bfReserved1</dt>
<dt>bfReserved2</dt>
<dd>予約領域</dd>
<dd>今現在使われてなく、0にすること。</dd>
<dt>bfOffBits</dt>
<dd>画像データまでのオフセット(Byte)</dd>
<dd>ビットマップファイルの先頭から画像データ領域までのオフセット数(Byte)。少し複雑なので詳しくは後述。</dd>
</dl>
<p>BITMAPFILEHEADER構造体の情報はファイルの基本情報なので画像を扱うには重要ではないですが、他のアプリケーションで扱う場合に（たとえばWindowsのペイントやWindows Picture and Fax Viewer、その他画像ビューワー、レタッチなどのための画像加工ソフトなど）このファイルヘッダの情報を扱っている場合があるのでなるべくきちんと処理するほうが良い。(と思われる(個人的見解</p>

<h6>画像情報</h6>
<p>BITMAPINFOHEADER構造体で表現される。<br/>
画像情報が詰め込まれています。画像サイズ、1ピクセルあたりのカラービット数、などなど。重要な情報です。<br/>
BITMAPINFOHEADER構造体の中身は、</p>
<pre><code>typedef struct tagBITMAPINFOHEADER {
	DWORD	biSize;		// この構造体(BITMAPINFOHEADER)のサイズ
	DWORD	biWidth;	// 画像幅サイズ(px)
	DWORD	biHeight;	// 画像高さサイズ(px)
	WORD	biPlanes;	// プレーン数(？？？)
	WORD	biBitCount;	// 1ピクセルあたりのカラービットの数
	DWORD	biCompression;	// ビットマップの圧縮形式指定
	DWORD	biSizeImage;	// 画像データの全バイト数
	DWORD	biXPelsPerMeter;// 水平方向解像度(px/mm)
	DWORD	biYPelsPerMeter;// 垂直方向解像度(px/mm)
	DWORD	biClrUsed;	// カラーテーブルのエントリ数
	DWORD	biClrImportant;	// 表示用カラーテーブルのエントリ数
}BITMAPINFOHEADER;</code></pre>
<dl>
<dt>biSize</dt>
<dd>この構造体のサイズ</dd>
<dd>BITMAOPINFOHEADERは40バイトなので常に40</dd>
<dt>biWidth</dt>
<dd>画像横サイズ。説明省略</dd>
<dt>biHeight</dt>
<dd>画像縦サイズ</dd>
<dd>biHeightが正のとき、ビットマップ画像は左下原点。画像データ列が左下から上に並べられていることになる。負のときは左上原点。</dd>
<dd>ちなみにビットマップ以外の多くの画像ファイルは左上原点の形式になっている。ディスプレイの画面も左上原点なのでビットマップを扱う場合はこの点に注意しなければならない。(何度苦しめられたことかｗ</dd>
<dt>biPlanes</dt>
<dd>プレーン数</dd>
<dd>よくわからないまま１にしています（汗）</dd>
<dt>biBitCount</dt>
<dd>1ピクセルあたりのカラービットの数</dd>
<dd>1,4,8,16,24,32 (bit) のみ使える。</dd>
<dt>biCompression
<dd>ビットマップの圧縮形式</dd>
<dd>ランレングスとかJPEGとか。ここでは画像処理のため圧縮は使用しない。圧縮画像の話はまた機会があれば。</dd>
<dt>biSizeImage</dt>
<dd>画像データの全バイト数</dd>
<dt>biXPelsPerMeter</dt>
<dt>biYPelsPerMeter</dt>
<dd>画像解像度(px/mm)</dd>
<dd>それぞれX,Y方向の画像解像度を示す。0を指定しても良い</dd>
<dt>biClrUsed</dt>
<dd>カラーテーブルのエントリ数</dd>
<dd>実際にビットマップファイルに組み込まれているテーブルの数。0を指定するとbiBitCountで指定した分使用できる最大数を持っていることになる</dd>
<dt>biClrImportant</dt>
<dd>表示用カラーテーブルのエントリ数</dd>
<dd>ビットマップを表示するのに必要な(重要な)カラーテーブル数。0を指定すると全ての色が重要になる。</dd>
</dl>

<h6>カラーテーブル</h6>
<p>カラーテーブルはRGBQUAD構造体で表現します<br/>
RGBQUAD構造体1つで1つの色を示す。<br/>
RGBQUAD構造体の中身は、</p>
<pre><code>typedef struct tagRGBQUAD {
	BYTE	rgbBlue;	// 青チャンネルの輝度値(0～255)
	BYTE	rgbGreen;	// 緑チャンネルの輝度値(0～255)
	BYTE	rgbRed;		// 赤チャンネルの輝度値(0～255)
	BYTE	rgbReserved;	// 予約領域(常に0にする)
} RGBQUAD;</code></pre>
<p>っと、説明はいらないでしょう（笑）</p>

<h6>画像データ</h6>
<p>ピクセルのデータが1つずつ順番に格納されています。もちろん一番多く一番重要なデータｗ<br/>
こちらもあまり説明はいらないでしょう。ただ後で少し注意点を。</p>
<h5>参考</h5>
<p>こちらを見る方が詳しいかも。。ここではわかりやすくしたつもりですがｗ</p>
<ul>
<li><a href="http://ja.wikipedia.org/wiki/Windows_bitmap">Windows bitmap - Wikipedia -</a></li>
<li><a href="http://hp.vector.co.jp/authors/VA023539/tips/bitmap/001.htm">ビットマップファイルの構造 - Tips of VC++ -</a></li>
</ul>
<h5>その２へ</h5>
<p>DIBの構造は以上ですが注意点がいくつかあるのでそれは「その２」でｗ</p>]]>
   </content>
</entry>
<entry>
   <title>MTのテンプレート・モジュールを使ってみる</title>
   <link rel="alternate" type="text/html" href="http://color-chips.net/exp_note/web/movabletype/movabletype.html" />
   <id>tag:color-chips.net,2007:/exp_note//9.152</id>
   
   <published>2007-04-01T05:14:01Z</published>
   <updated>2007-05-03T03:00:36Z</updated>
   
   <summary>MovableTypeのタグに苦戦しつつも公開できるようにがんばっております。 ...</summary>
   <author>
      <name>ハヤシ</name>
      
   </author>
         <category term="MovableType" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://color-chips.net/exp_note/">
      <![CDATA[<p>MovableTypeのタグに苦戦しつつも公開できるようにがんばっております。<br/>
今回新しくテンプレートモジュールを使ってみた。まだどうかわからないけど便利だと思う。<br/>
トップページの「infomation」の部分に使ってます。<br/>
</p>]]>
      <![CDATA[<pre><code>&lt;p&gt;勉強したことアウトプットしようとサイト始めました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2007.4.1 公開しました&lt;/li&gt;
&lt;li&gt;2007.4.1 infomation更新しました&lt;/li&gt;
&lt;/ul&gt;</code></pre>

<p>を「テンプレート」の「モジュール」で「モジュールを新規作成」して作りました。（テンプレート名infomation）<br/>
これを普通のインデックスやアーカイブのテンプレートにインクルードすればよし。<br/>
インクルード方法は、モジュールを組み込みたいところに</p>

<pre><code><$MTInclude module="infomation"$></code></pre>

<p>だけでOK。<br/>
モジュールを作っておけばあとはインクルードするだけで使い回せて便利！</p>

<p>moduleだけじゃなくてfile属性で外部ファイルも読み込み可能らしい。（MovableTypeオンラインマニュアルより）<br/>
また、読み込み内容を更新したらサイトの再構築必要（こちらもオンラインマニュアルより）</p>]]>
   </content>
</entry>

</feed>
