<?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,2011:/exp_note//27</id>
   <updated>2011-05-22T06:22:33Z</updated>
   <subtitle>勉強したこととか趣味の技術とかアウトプットします。</subtitle>
   <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 5.04</generator>


<entry>
   <title>フィルム式一眼レフカメラを手に入れた</title>
   <link rel="alternate" type="text/html" href="http://color-chips.net/exp_note/graphics/camera/post_10.html" />
   <id>tag:color-chips.net,2011:/exp_note//27.1269</id>
   
   <published>2011-05-22T12:47:30Z</published>
   <updated>2011-05-22T06:22:33Z</updated>
   
   <summary>フィルム式の一眼レフカメラ入手。古い物をいただきました。ありがとうございます。 ...</summary>
   <author>
      <name>まさ</name>
      <uri>http://color-chips.net/</uri>
   </author>
   
      <category term="Camera" 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>手に入れたカメラはCanonのEOS 750QD</br>
<img src="http://color-chips.net/exp_note/pict/camera/filmcamera_20110514-1.jpg" alt="フィルムカメラ" width="320" height="240"></br>
プログラムオートのモードしか無い、手軽に使えるコンセプトの一眼レフ</br>
絞りとかシャッタースピードとか調整したかったけれど、いただき物なので贅沢は言わない。</p>


<p>
<img src="http://color-chips.net/exp_note/pict/camera/filmcamera_20110514-2.jpg" alt="フィルムカメラ" width="320" height="240"></br>
CanonEFマウント。機械的にはFマウントということなのかな。</br>
オートフォーカス等のレンズ操作をするため電気信号用の接点がある。もちろんレンズ側にも同じ規格のものを使わんといかん。</br>
レンズのマウントは種類が多すぎて。。基本的にカメラとレンズはメーカ合わせるべきか。</p>

<p>レンズはCANON　ZOOM　LENS　EF　35-105mm</br>
<img src="http://color-chips.net/exp_note/pict/camera/filmcamera_20110514-3.jpg" alt="フィルムカメラ" width="320" height="240"></br>
保護フィルタも付けていただきました。</p>

<p>家の近くの昔ながらのカメラ屋さんで、</br>
フィルムと、バッテリも無かったので、電池を購入。</br>
ISO４００　２４枚撮り　￥600程度</br>
<img src="http://color-chips.net/exp_note/pict/camera/filmcamera_20110514-4.jpg" alt="フィルムカメラ" width="320" height="240"></br>
2CB5バッテリ　￥1800で買ったけれど。。ぼったくられた気がするな。。</br>
<img src="http://color-chips.net/exp_note/pict/camera/filmcamera_20110514-5.jpg" alt="フィルムカメラ" width="320" height="240"></br>
別のカメラ屋さんで￥1200でした。お勉強代だと思うことにした。</p>

<h5>バッテリの交換</h5>
<p>一瞬どこにバッテリ入れるかわからなかったけれど、できた。</br>
<img src="http://color-chips.net/exp_note/pict/camera/filmcamera_20110514-6.jpg" alt="フィルムカメラ" width="320" height="240"></p>

<h5>フィルムのセット</h5>
<p><img src="http://color-chips.net/exp_note/pict/camera/filmcamera_20110514-7.jpg" alt="フィルムカメラ" width="320" height="240"></br>
フィルムカバー（というのかな？）を開け、</br>
フィルムの向きに注意してセット。</br>
巻き取り方向が自然になるような向きにすればよい。</br>
あと、カメラ本体側とフィルムの本体ケース（パトローネ）側に接点があるので（よくよく見てみてはじめて知った。多分フィルムがセットされているかどうかカメラ本体が認識するため？）</br>
それに合わせるようにすればまず間違いなくセット出来ると思う。</p>

<p>フィルムセットしているところを写真に撮り忘れた。。ふた閉めて巻いてしまったので開けられなかった。。</br>
フィルムを少し引き出し、先端をカメラ本体の赤いマークのところまで引き出す。</br>
このときフィルムの穴を巻き取りの歯車部分（なんて言うのかわからない）に噛ませるようにする。</p>

<p>そうして、蓋を閉めると自動的に巻き取られる。</br>
このカメラはプリワインド方式というものらしくて、セットすると自動的にすべて引っ張り出されて巻き取られ、撮影するたびにフィルム本体（パトローネ）へ戻っていくというものらしい。</br>
こうするとカメラの背面カバーを開けてしまいフィルムが感光してしまっても、すでに撮影した分はすでにフィルム本体内にあるため保証される。らしい。すごい。</br>
</br>
・・・</br>
</br></br>
24枚すべて撮って、現像した結果は後日。</br>
ファインダー越しにピントをあわせるのが難しいので（マニュアルフォーカスでがんばってみた）ほとんどピンボケしてるんじゃないかなと予想していたけれど。。。</br>
まぁでも普段いかにオートフォーカスに頼ってるかと身に染みた。</p>]]>
   </content>
</entry>

<entry>
   <title>MT5タグ 変数についてのメモ</title>
   <link rel="alternate" type="text/html" href="http://color-chips.net/exp_note/web/movabletype/mt5.html" />
   <id>tag:color-chips.net,2011:/exp_note//27.1225</id>
   
   <published>2011-05-22T03:48:14Z</published>
   <updated>2011-05-22T02:47:03Z</updated>
   
   <summary>MovableTypeのテンプレートで変数の使い方で悩んだところがあるので記録の...</summary>
   <author>
      <name>まさ</name>
      <uri>http://color-chips.net/</uri>
   </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のテンプレートで変数の使い方で悩んだところがあるので記録のためにメモしておきます。</p>]]>
      <![CDATA[<p>
MTのタグ内でタグが使えないため、
タグのモディファイア（パラメータみたいなもの）に変数に格納された数値を反映させるためには、どうすればよいか悩んでました。</br></br>

＄を使えば解決
</p>
<pre><code>

&lt;mt:Ignore&gt;ブログ記事表示数を変数に格納&lt;/mt:Ignore&gt;
&lt;mt:SetVar name="entry_view_count" value="10"&gt;

&lt;mt:Ignore&gt;ブログ記事表示数変数を使用&lt;/mt:Ignore&gt;
&lt;mt:Entries lastn="<em class ="key_code">$entry_view_count</em>"&gt;

　hogehoge

&lt;/mt:Entries&gt;

</code></pre>
<p>$を使わないとエラーで怒られる。</br>
もしくは文字列をうけとれるモディファイアならentry_view_countっていう文字列として入ってしまい予期しない動作になる。</p>]]>
   </content>
</entry>

<entry>
   <title>クロスバイク - 変速機の調整</title>
   <link rel="alternate" type="text/html" href="http://color-chips.net/exp_note/mechanic/bicycle/post_9.html" />
   <id>tag:color-chips.net,2011:/exp_note//27.1268</id>
   
   <published>2011-05-14T10:56:00Z</published>
   <updated>2011-05-14T11:34:10Z</updated>
   
   <summary>だいぶ前に、自転車（クロスバイク）を貰いました。貰い物ばかりですが、せっかくもら...</summary>
   <author>
      <name>まさ</name>
      <uri>http://color-chips.net/</uri>
   </author>
   
      <category term="Bicycle" 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>
バイクをやっていると新しいものが欲しくなるようで、新しい物を買ったからと使わなくなった物を貰った次第です。</br>
<img src="http://color-chips.net/exp_note/pict/bicycle/giant_20110514-1.jpg" alt="クロスバイク" width="320" height="240"></br>
ペダル側のギヤがうまくトップギヤ（大きいギヤ）にチェンジできないので諦めてしばらく使ってたけれど、もしかして事故るんじゃないかと思いいじってみることにした。
</p>

<h5>調整前</h5>
<p>
<img src="http://color-chips.net/exp_note/pict/bicycle/giant_20110514-2.jpg" alt="クロスバイク" width="320" height="240"></br>
ペダル側変速機のガイドプレートと呼ばれるものの位置が重要のようです。ギヤの上側のSHIMANO 9-SPEEDって書いてある三日月状のものがガイドプレート。</br>
綺麗に掃除してなくて汚い画像で申し訳ありません。
</p>
<h5>調整後</h5>
<p>
ガイドプレートの高さを調整した。</br>
ギヤの1～2mm上ぐらいという結構ぎりぎりのところまで調整して良いようです。</br>
<img src="http://color-chips.net/exp_note/pict/bicycle/giant_20110514-3.jpg" alt="クロスバイク" width="320" height="240"></br>
ガイドプレートの高さの調整に伴い、ワイヤのテンションが緩くなってしまったので調整。</br>
テンション調整すると変速操作でガイドプレートの位置がうまくギヤ歯位置に移動してくれる。（ワイヤのアジャスタ等ついていないので調整がちょっと大変。）</br>

その後、ガイドプレートの左右の位置も調整してチェーンが擦らないようにする。（後輪側のギヤをトップ（小さいギヤ）にして調整する。後輪ローギヤではどう頑張ってもチェーンがガイドプレートに当たる）</br>
このときワイヤのテンションではなくて、調整用のボルトがあるので回して調整する。（あまりストロークの大きな調整はできないため、だいたいはワイヤのテンションで調整すること。）</br>
<img src="http://color-chips.net/exp_note/pict/bicycle/giant_20110514-4.jpg" alt="クロスバイク" width="320" height="240"></br>
上写真のように2つあるネジのうち、左側がローギヤ状態でのガイドプレート位置調整ネジ、右側がトップギヤ状態での調整ネジ</br></br>

調整してなんとかスムーズな変速ができるようになりました。</br></br>

ペダル側ギヤが2段なのでまだ調整が楽だったけれど、3段になるとどう調整しよう。。
</p>

<h5>参考</h5>
<ul>
<li>ヤエスメディアムック 自転車ライフを楽しむ！大人のサイクリングビギナーズ</li>
</ul>]]>
   </content>
</entry>

<entry>
   <title>lightbox2を使う</title>
   <link rel="alternate" type="text/html" href="http://color-chips.net/exp_note/web/htmlcss/lightbox2.html" />
   <id>tag:color-chips.net,2011:/exp_note//27.1223</id>
   
   <published>2011-05-14T08:29:00Z</published>
   <updated>2011-05-14T11:53:58Z</updated>
   
   <summary>画像がたくさんあるサイトでページ遷移することなく、画像をカッコよく表示するために...</summary>
   <author>
      <name>まさ</name>
      <uri>http://color-chips.net/</uri>
   </author>
   
      <category term="JavaScript" scheme="http://www.sixapart.com/ns/types#category" />
   
      <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>画像がたくさんあるサイトでページ遷移することなく、画像をカッコよく表示するためにLightbox2を使ってみました。メモです。</p>]]>
      <![CDATA[<h5>概要・ダウンロード</h5>
<p>
Lightbox2はJavascriptとcssで作られたライブラリです。</br>
<a href="http://www.lokeshdhakar.com/projects/lightbox2/">Lightbox 2</a></br>
ページ内でスクリプトを読み込んで、カッコよく表示したい画像リンクにちょこっと追記するだけで使えます。</br>
ダウンロード</br>
<a href="http://www.lokeshdhakar.com/projects/lightbox2/#download">Lightbox 2　Download</a></br>
</p>

<h5>インストールと準備</h5>
<p>ダウンロードしたものを解凍すると中にあるjsとcssとimagesというフォルダを、サイトと同じ階層へアップロードする。</br>

HTMLのヘッダに、</p>
<pre><code>
<em class="comment">&lt;!-- スクリプト --&gt;</em>
&lt;script src="js/prototype.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="js/scriptaculous.js?load=effects,builder" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="js/lightbox.js" type="text/javascript"&gt;&lt;/script&gt;
<em class="comment">&lt;!-- スタイルシート --&gt;</em>
&lt;link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" /&gt;
</code></pre>
<p>を記述</br>

あとは画像のリンクに、</br>
rel="lightbox"を入れるだけでOK</p>
<pre><code>
&lt;a href="image.jpg" rel="lightbox"&gt;&lt;img src="image_thumbnail.jpg" /&gt;&lt;/a&gt;
</code></pre>

<h5>表示</h5>
<p>実際に使用したサイト</br>
<a href="http://color-chips.net/tricktreat/">Trick and Treat / color-chips.net</a></br>
画像をクリックするとカッコよく表示されます。
</p>

<h5>備考</h5>
<p>Lightboxをアップロードする場所を変更する場合、</br>
この点にちょっと困ったので書いておきます</br>
Lightboxで使われている画像がうまくリンクできないため、コードを変更する必要があります。</br>
css/lightbox.css内の16,17行目</p>
<pre><code>
#prevLink:hover, #prevLink:visited:hover {
 background: url(<em class="key_code">../images/prevlabel.gif</em>) left 15% no-repeat; 
}
#nextLink:hover, #nextLink:visited:hover {
 background: url(<em class="key_code">../images/nextlabel.gif</em>) right 15% no-repeat;
}
</code></pre>
<p>js/lightbox.js内の49,50行目</p>
<pre><code>
fileLoadingImage:        <em class="key_code">'images/loading.gif'</em>,     
fileBottomNavCloseImage: <em class="key_code">'images/closelabel.gif'</em>,
</code></pre>
<p>のパスをそれぞれサイトのhtmlからたどれるパスに変更すればよい。
（絶対パスなら確実？：未確認）</p>

<h5>参考</h5>
<ul>
<li><a href="http://www.css-lecture.com/log/javascript/011.html">LightBoxの使い方とカスタマイズ方法 - CSS Lecture - </a></li>
</ul>]]>
   </content>
</entry>

<entry>
   <title>風景画像にミニチュアっぽい効果をつける</title>
   <link rel="alternate" type="text/html" href="http://color-chips.net/exp_note/graphics/photoshop/post_6.html" />
   <id>tag:color-chips.net,2011:/exp_note//27.1177</id>
   
   <published>2011-02-12T13:52:52Z</published>
   <updated>2011-02-12T15:32:37Z</updated>
   
   <summary>Photoshopで、今流行のミニチュアっぽい効果をつけるのをやってみました。...</summary>
   <author>
      <name>まさ</name>
      <uri>http://color-chips.net/</uri>
   </author>
   
      <category term="Photoshop" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://color-chips.net/exp_note/">
      <![CDATA[<p>Photoshopで、今流行のミニチュアっぽい効果をつけるのをやってみました。</p>]]>
      <![CDATA[<p>これが</br>
<a href="http://color-chips.net/exp_note/pict/photoshop/hanten20110212-1.jpg">
<img src="http://color-chips.net/exp_note/pict/photoshop/hanten20110212-1.jpg" alt="処理前画像" width="320" height="240"></a><br/>
これです</br>
<a href="http://color-chips.net/exp_note/pict/photoshop/hanten20110212-2.jpg">
<img src="http://color-chips.net/exp_note/pict/photoshop/hanten20110212-2.jpg" alt="処理後画像" width="320" height="240" /></a></br>
<p>写真はコンパクトデジカメで自分で撮った某ふしぎ公園です。<\br>
もともとミニチュアっぽい画像だったかもしれません。。</p>

<h5>前処理</h5>
<p>コントラストと明るさを上げます。コントラストは思い切って結構高くします。</br>
写真によってはこれだけでも十分ミニチュアっぽく見えるかも。</br>
<img src="http://color-chips.net/exp_note/pict/photoshop/hanten20110212-3.jpg" alt="前処理画像" width="320" height="240" /></p>

<h5>ぼかしをかける</h5>
<p>アルファチャンネル等を使って、ピントを合わせたい部分以外の選択範囲を作ります。このとき、グラデーション状に選択範囲を作り、だんだんピントがボケるようにします。</br>
<img src="http://color-chips.net/exp_note/pict/photoshop/hanten20110212-4.jpg" alt="選択範囲" width="320" height="240" /></br>
<p>元画像を別のレイヤーに複製し、複製画像に対して作った選択範囲を使ってぼかしをかける部分のみ残し他は消します（delete）。あとの処理の確認のため、元画像のレイヤーは非表示にしておきます。</br>
<img src="http://color-chips.net/exp_note/pict/photoshop/hanten20110212-5.jpg" alt="ぼかし部分" width="320" height="240" /></br>
<p>ぼかし（ガウス）を思いっきりかけます。（半径10.0pxくらい）もっと解像度が高い場合はもっとかける。</br>
<img src="http://color-chips.net/exp_note/pict/photoshop/hanten20110212-6.jpg" alt="ぼかし処理" width="320" height="240" /></br>
<p>複製前の元画像とレイヤーを重ねるとできあがり。</br>
<a href="http://color-chips.net/exp_note/pict/photoshop/hanten20110212-7.jpg">
<img src="http://color-chips.net/exp_note/pict/photoshop/hanten20110212-7.jpg" alt="完成" width="320" height="240" /></a></p>

<h5>アクションファイル</h5>
<p>Photoshopアクションを作ったので使ってみてください。</br>
<a href="http://color-chips.net/exp_note/download/photoshop/MiniatureEffect.zip">
MiniatureEffect.zip</a></br>
<p>解凍後できるアクションファイルをPhotoshopのアクションパレットから読み込んでください。Photoshop6 と7で動作確認しています。</br>
今のところ、VGA（高さが480ｐｘ）のみに対応し、画像の中央にピントが合う用になっています。</p>

<h5>なんでミニチュアっぽくみえる？</h5>
<p>ちょろっと考えてみて、自分なりの考察です。</br>
まず、コントラストや明るさを上げることで不自然に色が際立ち、自然物ではなく作り物みないな感じになるのかなと。</br>
また、普通の風景を撮ると、被写体がかなり遠くにいることになります。</br>
通常レンズの特性上、被写体が遠くなればなるほど、ピントが合う奥行きの範囲が広くなります。（「被写界深度（ひしゃかいしんど）」という。）</br>
逆に近くなると、被写界深度が浅くなり、限られた範囲でしかピントが合いません。（ピントが合っている部分より奥と手前がピンぼけする。）</br>
なので風景写真に対して、手前と奥のピントをぼかせば、遠くに見える風景ではなく、近くにある小さなミニチュアに見えるんじゃないかな？</p>]]>
   </content>
</entry>

<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>2011-01-23T07:32:09Z</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-05T22: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-03T11: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-27T16: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-27T16: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-20T17: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-27T14: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-17T00: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-27T16: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-07T21: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>

</feed>

