<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>blog.wonder-boys.net</title>
	<atom:link href="http://blog.wonder-boys.net/wp-rss2.php" rel="self" type="application/rss+xml" />
	<link>http://blog.wonder-boys.net</link>
	<description>css,javascript,actionscriptを中心に勉強したことをまとめるブログ</description>
	<pubDate>Fri, 05 Mar 2010 03:48:40 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.5</generator>
	<language>ja</language>
			<item>
		<title>[css]Multiple background image:複数の背景画像を指定する</title>
		<link>http://blog.wonder-boys.net/?p=392</link>
		<comments>http://blog.wonder-boys.net/?p=392#comments</comments>
		<pubDate>Fri, 05 Mar 2010 03:47:24 +0000</pubDate>
		<dc:creator>wonder</dc:creator>
		
		<category><![CDATA[css]]></category>

		<category><![CDATA[background]]></category>

		<category><![CDATA[css3]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=392</guid>
		<description><![CDATA[CSS3では一つのボックス要素に対して最大4つの背景画像を指定することができます。

記述方法
記述方法は、通常の背景の指定と変わりません。
ちがうのは、カンマ区切りで最高4つまで背景をしてできるというところ。
back [...]]]></description>
			<content:encoded><![CDATA[<p>CSS3では一つのボックス要素に対して最大4つの背景画像を指定することができます。</p>
<p><span id="more-392"></span></p>
<h3>記述方法</h3>
<p>記述方法は、通常の背景の指定と変わりません。<br />
ちがうのは、カンマ区切りで最高4つまで背景をしてできるというところ。</p>
<pre>background:
    url(path.hoge.gif) transparent no-repeat 0 0,
    url(path.hoge.jpg) transparent no-repeat left bottom;</pre>
<p>先に指定した背景の方が上にきます。<br />
また、背景のグラデーションと一緒に指定することもできました。<br />
背景のグラデーション指定方法は<a href="http://blog.wonder-boys.net/?p=390" target="_self">先日の記事</a>をどうぞ。</p>
<pre>background-image:
    url(path.hoge.gif),
    -webkit-gradient(linear, left top, left bottom, from(#000000), to(#ffffff));
background-image:
    url(path.hoge.gif),
    -moz-linear-gradient(top, #000000, #ffffff);</pre>
<p>グラデーションと一緒に指定するときは、background-imageで指定したほうがよさそうです。<br />
グラデーションと背景画像、あとは角丸をつかえば色々なものがCSSだけで作れそうですね。</p>
<p>あ、それから背景の複数指定は</p>
<p>[Multiple background image]</p>
<p>というんだそうです。<br />
これでググるとたくさんでてきますので、詳しくはそちらをどうぞ。</p>
<h3>主な対応ブラウザ</h3>
<ul>
<li>Google Chrome</li>
<li>Fire Fox 3.6～</li>
<li>Opera 10.5～</li>
</ul>
<h3>サンプルコード</h3>
<blockquote><p><a href="http://wonder-boys.net/test/css/background-num.html" target="_blank"> CSS3 / background:複数 </a></p></blockquote>
<p>サンプルコードでは、3つの背景画像の上に、<br />
網目の画像をリピートさせています。</p>
<h3>参考サイト</h3>
<blockquote><p><a href="http://builder.japan.zdnet.com/sp/css-firefox-safari/story/0,3800083423,20369537,00.htm" target="_blank"> SafariのCSS 3対応&#8211;1つの要素に複数の背景画像を表示する - builder</a><br />
<a href="http://d.hatena.ne.jp/uupaa/20090722/1248263618" target="_blank"> 日食 と uuAltCSS.js と CSS3 multiple background image - latest log </a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=392</wfw:commentRss>
		</item>
		<item>
		<title>[css]gradient:ボックスの背景をグラデーションさせる</title>
		<link>http://blog.wonder-boys.net/?p=390</link>
		<comments>http://blog.wonder-boys.net/?p=390#comments</comments>
		<pubDate>Fri, 26 Feb 2010 10:28:09 +0000</pubDate>
		<dc:creator>wonder</dc:creator>
		
		<category><![CDATA[css]]></category>

		<category><![CDATA[gradient]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=390</guid>
		<description><![CDATA[backgroundでgradientを使うことで線形のグラデーションをつけることができます。

gradientとは
backgroundに指定することで、ボックスの背景色を線形にグラデーションさせることができます。
 [...]]]></description>
			<content:encoded><![CDATA[<p>backgroundでgradientを使うことで線形のグラデーションをつけることができます。</p>
<p><span id="more-390"></span></p>
<h3>gradientとは</h3>
<p>backgroundに指定することで、ボックスの背景色を線形にグラデーションさせることができます。</p>
<h3>記述方法</h3>
<p>gradientはブラウザによって記述方法が変わりますので注意が必要です。</p>
<pre>background: -moz-linear-gradient(設定); //mozilla
background: -webkit-gradient(設定); //webkit</pre>
<p>この場合、backgroundの値として記述していますが、扱いはbackground-imageになるようです。<br />
従って、background-imageの値として記述もできます。</p>
<pre>background-image: -moz-linear-gradient(設定); //mozilla
background-image: -webkit-gradient(設定); //webkit</pre>
<p>グラデーションの設定はかっこの中に記述します。</p>
<pre>background: -moz-linear-gradient(top, #eee, #999); //mozilla
background: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#999)); //webkit</pre>
<h3>mozilla系ブラウザの場合</h3>
<pre>-moz-linear-gradient(方向, 開始色, 終了色)</pre>
<p>mozilla系ブラウザの場合、一つ目にはグラデーションの方向、2つ目と3つ目に開始と終了の色を記述します。<br />
方向は、</p>
<p>top →　上から下<br />
left →　左から右<br />
left top →　左上から右下<br />
・<br />
・</p>
<p>というように記述します。</p>
<p>色はrgbを使っても記述できます。<br />
また、この場合一緒にアルファ値（透明度）も設定できます。</p>
<pre>-moz-linear-gradient( top, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0),)</pre>
<p>アルファ値は0～1.0で指定します。（0が透明、1.0が不透明）<br />
グラデーションに色を追加したい場合は、色数を増やします。</p>
<pre>-moz-linear-gradient(top, #eee, #c00, #999)</pre>
<p>このままだと自動的に開始点と終了点の真ん中に色が置かれます。<br />
色を置く位置を指定したい場合は色指定の後ろに位置指定の数値を記述します。</p>
<pre>-moz-linear-gradient(top, #eee, #c00　20%, #999)</pre>
<h3>webkit系ブラウザの場合</h3>
<pre>-webkit-gradient(linear, 開始地点, 終了地点, from(開始色), to(終了色));</pre>
<p>webkit系ブラウザの場合は少し長くなってしまいます。<br />
一つ目はグラデーションの種類です。（線形なので、linear）<br />
mozillaのほうは開始点だけだったのに対して、webkitは開始点と終了点も記述します。</p>
<p>色は同じようにrgbaでも指定できます。</p>
<pre>-webkit-gradient( linear, left top, left bottom, from(rgba(255, 255, 255, 0)), to(rgba(255, 255, 255, 0)),)
</pre>
<p>ちょっと長くなってきましたね・・・。<br />
グラデーションの色を追加する場合はcolor-stopを使います。</p>
<pre>-webkit-gradient( linear, left top, left bottom,
　　　　　　　　from(rgba(255, 255, 255, 0)),
　　　　　　　　color-stop(0.5, rgba(255, 255, 255, 0)),
　　　　　　　　color-stop(0.5, rgba(255, 255, 255, 0)),
　　　　　　　　to(rgba(255, 255, 255, 0)),)</pre>
<p>このように色指定の前に開始点から終了点までのどの地点に色を置くかを指定できます。</p>
<h3>主な対応ブラウザ</h3>
<ul>
<li>FireFox3.6～</li>
<li>Google Chrome</li>
<li>Safari 4～</li>
</ul>
<h3>サンプルコード</h3>
<blockquote><p><a href="http://wonder-boys.net/test/css/gradient.html" target="_blank">CSS3サンプル / gradient</a></p></blockquote>
<h3>その他</h3>
<p>mozilla系のブラウザでは</p>
<pre>-moz-radial-gradient</pre>
<p>という円のグラデーションも使うことができるようです。<br />
詳しくはこちらにて。</p>
<blockquote><p><a href="https://developer.mozilla.org/ja/CSS/-moz-radial-gradient" target="_blank">-moz-radial-gradient</a></p></blockquote>
<h3>参考サイト</h3>
<blockquote><p><a href="http://hail2u.net/blog/webdesign/css-gradients-technique-1.html" target="_blank">CSSグラデーションのちょっとしたテクニック #1 - hail2u.net</a><br />
<a href="http://www.nk0206.com/life/2009/12/css3-gradient.html" target="_blank">CSS3のグラデーションを試してみる - A Day in the Life</a><br />
<a href="http://css-eblog.com/css3/css3-radial-button.html" target="_blank">CSS3だけで丸いボタンを作る方法 - CSS-EBLOG</a></p></blockquote>
</ul>
</pre>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=390</wfw:commentRss>
		</item>
		<item>
		<title>[css]box-sizing:ボックスのwidth、heightに余白を含める</title>
		<link>http://blog.wonder-boys.net/?p=388</link>
		<comments>http://blog.wonder-boys.net/?p=388#comments</comments>
		<pubDate>Thu, 25 Feb 2010 09:22:03 +0000</pubDate>
		<dc:creator>wonder</dc:creator>
		
		<category><![CDATA[css]]></category>

		<category><![CDATA[box-sising]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=388</guid>
		<description><![CDATA[box-sizingプロパティについて勉強。

box-sizingとは
box-sizingを指定することで、要素の幅、高さの値に余白（padding）や線（border）の値を含めるかどうかを設定できます。
記述方法 [...]]]></description>
			<content:encoded><![CDATA[<p>box-sizingプロパティについて勉強。</p>
<p><span id="more-388"></span></p>
<h3>box-sizingとは</h3>
<p>box-sizingを指定することで、要素の幅、高さの値に余白（padding）や線（border）の値を含めるかどうかを設定できます。</p>
<h3>記述方法</h3>
<pre>box-sizing: 値;</pre>
<p>値に下記の値を入れることで設定ができます。</p>
<pre>box-sizing: border-box; // padding、borderの値をwidthに含める
box-sizing: content-box; // padding、borderの値をwidthに含めない（デフォルト）</pre>
<p>です。<br />
各ブラウザでは頭に記号を追加することで動作するようになります。</p>
<p>■webkitの場合<br />
-webkit-box-sizing: border-box;</p>
<p>■mozillaの場合<br />
-moz-box-sizing: border-box;</p>
<p>■IEの場合<br />
-ms-box-sizing: border-box;</p>
<h3>対応ブラウザ</h3>
<p>上記のように記述することで動作するブラウザです。<br />
IEは8から対応していますね。</p>
<ul>
<li>Firefox2～</li>
<li>Safari3.1～</li>
<li>Chrome0.2～</li>
<li>Opera9.6～</li>
<li>IE8～</li>
</ul>
<h3>サンプルコード</h3>
<blockquote><p><a href="http://wonder-boys.net/test/css/box-sizing.html" target="_blank"> CSS3サンプル / box-sizing </a></p></blockquote>
<p>実はこのプロパティって割と使えるのではないかと思っています。<br />
特に、cssの記述を使いまわしたいときなんかに良さそうです。</p>
<p>例えばデザイン性は同じで幅だけちがうようなタイトルの場合</p>
<pre>.title01 {
    width:100%;
    //　共通の記述
}</pre>
<p>幅を100%にしておけば親要素の幅次第で可変するようになります。<br />
ただ以前は、この共通の記述のところにpaddingが入ってしまったりすると幅が変わり、100%以上になってしまってうまくいかなかったんです。<br />
css3を使えるようになれば、box-sizingを指定するだけで、paddingが入ろうが、borderをつけようが幅がはみ出てしまうことはありません。</p>
<pre>.title01 {
    width:100%;
    box-sizing: border-box; // padding、borderがあっても平気
    //　共通の記述
}</pre>
<p>便利でしょ？</p>
<h3>参考サイト</h3>
<blockquote><p><a href="http://hisasann.com/housetect/2009/02/css3boxsizingpaddingborderwidt.html" target="_blank"> CSS3のbox-sizingでpadding・borderをwidth、heightに含めてみる - HouseTect </a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=388</wfw:commentRss>
		</item>
		<item>
		<title>[css]border-radius（角丸）を使う</title>
		<link>http://blog.wonder-boys.net/?p=386</link>
		<comments>http://blog.wonder-boys.net/?p=386#comments</comments>
		<pubDate>Wed, 24 Feb 2010 10:42:29 +0000</pubDate>
		<dc:creator>wonder</dc:creator>
		
		<category><![CDATA[css]]></category>

		<category><![CDATA[border-radius]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=386</guid>
		<description><![CDATA[border-radiusについて勉強。

border-radiusとは
指定したブロックの角を丸くすることができます。
モダンブラウザでも一部しか正確にレンダリングされません。
記述方法
border-radius: [...]]]></description>
			<content:encoded><![CDATA[<p>border-radiusについて勉強。</p>
<p><span id="more-386"></span></p>
<h3>border-radiusとは</h3>
<p>指定したブロックの角を丸くすることができます。<br />
モダンブラウザでも一部しか正確にレンダリングされません。</p>
<h3>記述方法</h3>
<pre>border-radius: 値;</pre>
<p>px単位で値を指定するとその値の半径分だけ角丸になります。</p>
<pre>border-radius: 10px;</pre>
<p>4つの角それぞれに指定をしたい場合。</p>
<pre>border-top-left-radius: 10px;
border-top-right-radius: 10px;
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;</pre>
<p>というように記述します。<br />
また、Google Chromeではimgに指定することで画像自体を角丸にすることもできます。</p>
<pre>img {
    border-radius: 10px;
}</pre>
<p>すごい！</p>
<h3>対応しているブラウザ</h3>
<blockquote><p><a href="http://journal.mycom.co.jp/articles/2009/07/07/Modernizr/002.html" target="_blank"> http://journal.mycom.co.jp/articles/2009/07/07/Modernizr/002.html </a></p></blockquote>
<p>上記のページで対応しているブラウザが分かります。<br />
mozilla系、webkit系は頭に</p>
<pre>mozilla系（FireFox等）　→　「-moz-」
webkit系（Google Chrome, Safari）　→ 「-webkit-」</pre>
<p>をつけると対応するようです。</p>
<pre>-moz-border-radius: 10px;
-webkit-border-radius: 10px;

■mozillaで一辺づつ指定する場合
-moz-border-radius-topleft: 10px;
-moz-border-radius-topright: 10px;
-moz-border-radius-bottomleft: 10px;
-moz-border-radius-bottomright: 10px;

■webkitで一辺づつ指定する場合
-webkit-border-top-left-radius: 10px;
-webkit-border-top-right-radius: 10px;
-webkit-border-bottom-left-radius: 10px;
-webkit-border-bottom-right-radius: 10px;</pre>
<p>ちなみに、IE、Operaは基本的に未対応です。</p>
<h3>IE、Operaで角丸にする</h3>
<p>IEの場合はビヘイビアファイルを使うことで同じような効果を出すことができます。<br />
いくつかあるようでした。</p>
<blockquote><p><a href="http://www.htmlremix.com/css/curved-corner-border-radius-cross-browser" target="_blank">http://www.htmlremix.com/css/curved-corner-border-radius-cross-browser</a><br />
<a href="http://www.akatsukinishisu.net/itazuragaki/css/nifty_corners_behavior.html" target="_blank"> http://www.akatsukinishisu.net/itazuragaki/css/nifty_corners_behavior.html</a></p></blockquote>
<p>また、javasriptを読み込むことで対応する方法もあります。<br />
こちらは、IE、Opera両方とも対応します。</p>
<blockquote><p><a href="http://www.html5.jp/library/border-radius.html" target="_blank">http://www.html5.jp/library/border-radius.html</a></p></blockquote>
<p>ただこのjavascriptは全てのブラウザ用に読み込んでしまうと<br />
正確にレンダリングするブラウザが逆に崩れてしまうのでIEだけに読み込んだほうがいいですね。<br />
※IE8だと正確にレンダリングされません。</p>
<p>余談ですが、このjavascriptどうやらtableタグを生成しているようです。<br />
ここにきてもやっぱりテーブルコーディングに頼るのかっていう感じですね・・。</p>
<h3>サンプルコード</h3>
<blockquote><p><a href="http://wonder-boys.net/test/css/border-radius.html" target="_blank">CSS3サンプル / border-radius</a></p></blockquote>
<h3>参考サイト</h3>
<blockquote><p><a href="http://www.css-lecture.com/log/css3/css3-border-radius.html" target="_blank"> CSS3 角丸を表現する border-radius - CSS Lecture</a><br />
<a href="http://chibatch.jp/blog/archives/css3-border-radius.html" target="_blank"> CSSだけで角丸を表現する「border-radius」 - CHIBATCH.JP</a><br />
<a href="http://www.akatsukinishisu.net/wiki.cgi?border-radius" target="_blank"> border-radius </a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=386</wfw:commentRss>
		</item>
		<item>
		<title>[actionscript3.0]BitmapDataに変形を適用</title>
		<link>http://blog.wonder-boys.net/?p=384</link>
		<comments>http://blog.wonder-boys.net/?p=384#comments</comments>
		<pubDate>Thu, 18 Feb 2010 10:52:31 +0000</pubDate>
		<dc:creator>wonder</dc:creator>
		
		<category><![CDATA[AS3.0]]></category>

		<category><![CDATA[Bitmap]]></category>

		<category><![CDATA[Matrix]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=384</guid>
		<description><![CDATA[Bitmapの基本が分かってきたので、その次は変形の適用を勉強します。

Matrixクラス
通常、BitmapDataにdrawする時、オブジェクトに指定している変形（位置、スケール、回転）は全て破棄されます。
変形を [...]]]></description>
			<content:encoded><![CDATA[<p>Bitmapの基本が分かってきたので、その次は変形の適用を勉強します。</p>
<p><span id="more-384"></span></p>
<h3>Matrixクラス</h3>
<p>通常、BitmapDataにdrawする時、オブジェクトに指定している変形（位置、スケール、回転）は全て破棄されます。<br />
変形を適用したい場合はMatrixクラスを使います。<br />
パッケージは、</p>
<pre>
flash.geom.Matrix
</pre>
<p>適用方法は、Matrixオブジェクトを生成後オブジェクトが持つ以下のプロパティを変更します。</p>
<p>translate(x,y)　：　位置の指定<br />
scale(sx,sy)　：　スケールの指定<br />
rotate(radian)　：　回転の指定（ラジアン）</p>
<p>プロパティ設定後、オブジェクトをBitmapDataにdrawするときの第二引数に一緒に指定します。<br />
そのdrawするオブジェクトに対し変形効果がかかります。</p>
<pre>
bitmapdata.draw( sprite, matrix );
</pre>
<p>一度プロパティをクリアしたい場合は、identityメソッドを使います。</p>
<pre>
matrix.identity(); // 初期化される
</pre>
<p>identityを実行しないとプロパティの値は保持しつづけます。</p>
<h3>コード</h3>
<p>matrixのtranslateとscaleを使ってみました。</p>
<div style="text-align:center;width:465px;margin:0 auto 20px auto"><iframe title="forked from: Bitmap基本 - wonderfl build flash online" scrolling="no" src="http://wonderfl.net/blogparts/e41396ddf78004e6eb112b6b87109b8a51c5e306" width="465" height="490" style="border:1px black solid;"></iframe><a href="http://wonderfl.net/code/e41396ddf78004e6eb112b6b87109b8a51c5e306" title="forked from: Bitmap基本 - wonderfl build flash online">forked from: Bitmap基本 - wonderfl build flash online</a></div>
<h3>その他</h3>
<p>Kayacの本によりますと、指定するプロパティの順番によってはうまく効果がかからない場合があるとのこと。<br />
以下の順番で指定するのが一番安定しているようです。</p>
<ul>
<li>scale</li>
<li>rotate</li>
<li>translate</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=384</wfw:commentRss>
		</item>
		<item>
		<title>[actionscript3.0]Bitmapを勉強：基礎</title>
		<link>http://blog.wonder-boys.net/?p=381</link>
		<comments>http://blog.wonder-boys.net/?p=381#comments</comments>
		<pubDate>Sat, 13 Feb 2010 00:05:14 +0000</pubDate>
		<dc:creator>wonder</dc:creator>
		
		<category><![CDATA[AS3.0]]></category>

		<category><![CDATA[Bitmap]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=381</guid>
		<description><![CDATA[actionscriptではBitmapというものをよく聞くし、また使われているようなので勉強する。

基本概念

Bitmapを使うにはBitmapとBitmapDataの2種類を使う。
通常actionscript3 [...]]]></description>
			<content:encoded><![CDATA[<p>actionscriptではBitmapというものをよく聞くし、また使われているようなので勉強する。</p>
<p><span id="more-381"></span></p>
<h3>基本概念</h3>
<ul>
<li>Bitmapを使うにはBitmapとBitmapDataの2種類を使う。</li>
<li>通常actionscript3.0では各要素それぞれオブジェクトになっているがBitmapはオブジェクトを転写することで一枚の絵のように扱うことができる。</li>
<li>Bitmapには、ぼかしや色付け等色々な効果をつけることができる。</li>
</ul>
<p>一枚の絵を操作するという概念がキモのような気がする。</p>
<h3>基礎</h3>
<p>実際のBitmapを扱う方法。<br />
クラスは以下のものを使用。</p>
<pre>
flash.display.Bitmap
flash.display.BitmapData
</pre>
<p>流れとしては、</p>
<ol>
<li>オブジェクトを作成（なんでもいい）</li>
<li>Bitmap、BitmapDataを作成</li>
<li>Bitmapをステージに配置</li>
<li>BitmapDataにオブジェクトを転写</li>
</ol>
<p>という流れ。<br />
実際に配置するのはBitmap。<br />
BitmapにBitmapDataを設定する感じ。<br />
転写したいオブジェクトはBitmapDataに転写する。</p>
<p>基本コード。</p>
<pre>
package {
    import flash.display.Sprite;
    import flash.display.BitmapData;
    import flash.display.Bitmap;

    public class myBitmap extends Sprite {
        public function myBitmap() {

            /* オブジェクトを作成 */
            var fig:Sprite = createCircle( stage.stageWidth/2, stage.stageHeight/2, 100, 0XCC0000 );

            /* BitmapDataを作成して、Bitmapに設定 */
            var bitmapdata:BitmapData = new BitmapData( 465, 465, false, 0 );

            /* ステージに配置 */
            addChild( new Bitmap( bitmapdata ) );

            /* BitmapDataにオブジェクトを転写 */
            bitmapdata.draw( fig );

        }

        private function createCircle(cx:Number, cy:Number, size:Number, col:uint):Sprite {
            var sprite:Sprite = new Sprite();
            sprite.graphics.beginFill( col );
            sprite.graphics.drawCircle( cx, cy, size );
            sprite.graphics.endFill();
            return sprite;
        }
    }
}
</pre>
<p>です。<br />
思ったより簡単。</p>
<p>それから、Bitmapの方法ってjavascriptでいうところのcanvasに似てる。<br />
Bitmapで学んだ方法をcanvasでもやってみようかな・・。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=381</wfw:commentRss>
		</item>
		<item>
		<title>[actionscript3.0]ローディングアイコン生成用のクラス</title>
		<link>http://blog.wonder-boys.net/?p=379</link>
		<comments>http://blog.wonder-boys.net/?p=379#comments</comments>
		<pubDate>Tue, 02 Feb 2010 09:50:26 +0000</pubDate>
		<dc:creator>wonder</dc:creator>
		
		<category><![CDATA[AS3.0]]></category>

		<category><![CDATA[loading]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=379</guid>
		<description><![CDATA[ぼちぼちとAS3.0の勉強を進めています。
実際にFlashを作成するときにローディング用のアイコンって使いますよね。
いちいち探すのもめんどくさかったので作りました。

LoadingIcon

package cla [...]]]></description>
			<content:encoded><![CDATA[<p>ぼちぼちとAS3.0の勉強を進めています。<br />
実際にFlashを作成するときにローディング用のアイコンって使いますよね。<br />
いちいち探すのもめんどくさかったので作りました。</p>
<p><span id="more-379"></span></p>
<h3>LoadingIcon</h3>
<pre>
package classes
{
	/**
	 * ローディングアイコン生成クラス
	 * @author Takuya Fujimi
	 */
	import flash.display.Sprite;
	import flash.events.Event;

	public class LoaderIcon extends Sprite
	{
		/* デフォルト設定 */
		private var obj:Object = {
			width: 2,
			height: 5,
			color: 0X000000,
			num: 12,
			radius: 5
		};

		/* コンストラクタ */
		public function LoaderIcon( ...arg:Array )
		{
			for ( var item:Object in arg[0] ) {
				obj[item] = arg[0][item];
			}
			for (var i:int = 0; i &lt; obj.num; i++ ) {
				createRect( i );
			}
			addEventListener(Event.ENTER_FRAME, boxRotation);
		}

		/* 図形の描画 */
		private function createRect( i:int ):void {
			var posX:Number = obj.radius * Math.sin(Math.PI * 2 * i / obj.num);
			var posY:Number = obj.radius * Math.cos(Math.PI * 2 * i / obj.num);

			var box:Sprite = new Sprite();
			box.graphics.beginFill( obj.color );
			box.graphics.drawRect( obj.x / -2, 0, obj.width, obj.height );
			box.graphics.endFill();
			box.rotation = 360 - ( i * 360 / obj.num );
			box.alpha = 1 - (1 / obj.num * i);
			box.x = posX;
			box.y = posY;
			addChild( box );
		}

		/* 回転 */
		private function boxRotation(e:Event):void {
			rotation += 360 / obj.num;
		}

		/* アイコンを削除 */
		public function deleteIcon():void {
			var parentObj:Object = Object(parent);
			parentObj.removeChild( this );
		}

	}

}
</pre>
<h3>使用方法</h3>
<p>使い方はクラスを初期化してステージに配置するだけ。</p>
<pre>
var icon:LoadingIcon = new LoadingIcon();
addChild( icon );
</pre>
<p>ですね。<br />
デフォルトのままで良ければこれで終わり。<br />
それに加えて、引数にオブジェクトを渡すことで数値を変更できるようにしました。</p>
<pre>
var obj:Object = { radius: 20, color: 0Xcc0000 };
var icon:LoadingIcon = new LoadingIcon( obj );
addChild( icon );
</pre>
<p>こうすることで、いろいろな大きさや色のローディングアイコンを生成することができます。<br />
変更できる数値は</p>
<p>※以下すべて、ローディングアイコン用に使用している図形に対する数値です。</p>
<p>width: 図形の幅<br />
hieght:  図形の高さ<br />
color:　図形の色<br />
num: 図形の数<br />
radius: 回転する半径</p>
<p>となります。</p>
<p>あとは、念のためアイコンを削除するメソッドもつけています。<br />
配置したアイコンを削除したい場合は、アイコンのインスタンスからメソッドを実行します。</p>
<pre>
icon.deleteIcon();
</pre>
<p>これで、どこに配置しようが削除できます。</p>
<h3>デモ</h3>
<div style="text-align:center;width:465px;"><iframe title="ローディングアイコンを作るよ - wonderfl build flash online" scrolling="no" src="http://wonderfl.net/blogparts/9d6347a96c9f82aaa0fc51310b49aaaabdfff4fb" width="465" height="490" style="border:1px black solid;"></iframe><a href="http://wonderfl.net/code/9d6347a96c9f82aaa0fc51310b49aaaabdfff4fb" title="ローディングアイコンを作るよ - wonderfl build flash online">ローディングアイコンを作るよ - wonderfl build flash online</a></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=379</wfw:commentRss>
		</item>
		<item>
		<title>[AS3.0]Flashの宝石箱やー</title>
		<link>http://blog.wonder-boys.net/?p=373</link>
		<comments>http://blog.wonder-boys.net/?p=373#comments</comments>
		<pubDate>Thu, 07 Jan 2010 03:40:55 +0000</pubDate>
		<dc:creator>wonder</dc:creator>
		
		<category><![CDATA[AS3.0]]></category>

		<category><![CDATA[addChild]]></category>

		<category><![CDATA[addEventListener]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=373</guid>
		<description><![CDATA[あけましておめでとうございます！
ここのところ、仕事上でFlashを使う機会が増えてきてますので、いよいよAS3.0を勉強しようかと思っています。とりあえず、基本的な事を本で学んだのであとはwonderflを活用しながら [...]]]></description>
			<content:encoded><![CDATA[<p>あけましておめでとうございます！</p>
<p>ここのところ、仕事上でFlashを使う機会が増えてきてますので、いよいよAS3.0を勉強しようかと思っています。とりあえず、基本的な事を本で学んだのであとはwonderflを活用しながらいろいろ作ってみようと思います。</p>
<p><span id="more-373"></span><br />
新年なので、ちょっとぱーっとしたものを。</p>
<div style="text-align:center;width:465px;margin:0 auto;"><iframe title="Flashの宝石箱やー - wonderfl build flash online" scrolling="no" src="http://wonderfl.net/blogparts/6eda0ce112c9ef84e36d526bf0e9a73b71875a99" width="465" height="490" style="border:1px black solid;"></iframe><a href="http://wonderfl.net/code/6eda0ce112c9ef84e36d526bf0e9a73b71875a99" title="Flashの宝石箱やー - wonderfl build flash online">Flashの宝石箱やー - wonderfl build flash online</a></div>
<h3>イベントリスナー</h3>
<p>AS3.0からは全てイベントリスナーになっています。</p>
<pre>
オブジェクト.addEventListener(イベント, 実行関数);
</pre>
<p>という形で記述します。<br />
実行関数の引数にはイベントオブジェクトが入るので、</p>
<pre>
function hoge(e:Event) {
    //実行するコードを書きます。
}
</pre>
<p>となります。<br />
AS3.0では、イベントオブジェクトの型を省略できません。（コンパイルエラー）<br />
イベントオブジェクトの型は使用するイベントによって変わります。<br />
（イベントが属しているクラスによる？）</p>
<pre>
Event.ENTER_FRAME →　e:Event
MouseEvent.CLICK → e:MouseEvent
</pre>
<p>のように。<br />
マウスイベント（クリック、オーバー、ムーブ）なんかは、MouseEventクラスになります。<br />
エンターフレームイベントはEventクラスです。</p>
<p>今回使用した箇所でいくと、</p>
<pre>
stage.addEventListener(Event.ENTER_FRAME, make_ball);

private function make_ball(e:Event):void {
    var ball:Ball = new Ball();
    ball.x = stage.mouseX;
    ball.y = stage.mouseY;
    ball.init();
    ball.move();
    addChild( ball );
}
</pre>
<p>です。<br />
また、イベントを使用する際はイベントクラスをインポートする必要があります。</p>
<pre>
import flash.events.Event;
import flash.events.MouseEvent;
</pre>
<p>イベントリスナーはjavascriptでも使っていたので、そんなに違和感なく使用できました。</p>
<h3>ステージにイベントを設置する</h3>
<p>上記にも書いてありますが、ステージ上をクリックしたり、オーバーさせるときは<br />
stageにイベントリスナーを設置するようです。</p>
<pre>
stage.addEventListener(Event.ENTER_FRAME, make_ball);
</pre>
<p>stage部分を省略するとダメですね。<br />
このへんの仕組みをもうちょっと勉強しないといけないです。</p>
<h3>オブジェクトの配置</h3>
<p>AS3.0でオブジェクトをステージ及び指定のMovieClipに配置するときは、addChildを使います。</p>
<pre>
親オブジェクト.addChild( 子オブジェクト );
</pre>
<p>使い方としては、このような感じです。</p>
<pre>
var ball:Ball = new Ball(); // オブジェクトを作成
addChild( ball ); // オブジェクトを配置
</pre>
<p>Ballオブジェクトを作成して、それをステージに配置する流れです。<br />
作成だけでは反映されないんですね。</p>
<p>ちなみに削除するときは、removeChildを使います。</p>
<pre>
親オブジェクト.removeChild( 子オブジェクト );
</pre>
<p>こんな感じで使用します。</p>
<pre>
var ball:Ball = new Ball(); // オブジェクトを作成
addChild( ball ); // オブジェクトを配置

removeChild( ball ); // オブジェクトを削除
</pre>
<h3>自分自身を削除する</h3>
<p>上記のように、外からオブジェクトを削除する時は親オブジェクト、子オブジェクトが分かりやすいですよね。<br />
ただ、自分自身を削除したい場合はちょっと苦労します。</p>
<p>上記のように、親オブジェクトや子オブジェクトがわかりづらいんです。<br />
基本的には</p>
<pre>
親オブジェクト.removeChild( 子オブジェクト );
</pre>
<p>この様式にのっとって書きますので、親オブジェクトと子オブジェクトが参照できればいいわけです。</p>
<p>まず、削除する子オブジェクトですが、これは自分自身なのでthisですね。</p>
<pre>
親オブジェクト.removeChild( this );
</pre>
<p>となります。<br />
そして親オブジェクトの方ですが、自分自身の親オブジェクトの参照にはparentを使います。</p>
<pre>
parent.removeChild( this );
</pre>
<p>これでいけそうですが、parentのままではダメなようです。（※自分も理由がわからないので調べます・・）<br />
一旦、オブジェクトに変換すると出来ます。</p>
<pre>
var parentObj:Object = Object( parent );
parentObj.removeChild( this );
</pre>
<p>と、これで無事削除完了です。</p>
<h3>まとめ</h3>
<p>たったこれだけのAS3.0を書くだけでも、いろんな事を学ぶことができました。<br />
そもそも思い立ってこれを作ってみただけなんですが、<br />
なんにせよ作るって言うことがどれほど重要かというのを実感しました。</p>
<p>やっぱり、何事も作らないとだめですね・・。<br />
今年はちょっとしたものでも作って作って勉強しようと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=373</wfw:commentRss>
		</item>
		<item>
		<title>[Flex]ArrayとArrayCollectionについて</title>
		<link>http://blog.wonder-boys.net/?p=371</link>
		<comments>http://blog.wonder-boys.net/?p=371#comments</comments>
		<pubDate>Fri, 18 Dec 2009 10:18:48 +0000</pubDate>
		<dc:creator>wonder</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[ArrayCollection]]></category>

		<category><![CDATA[DataGrid]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=371</guid>
		<description><![CDATA[以前から謎だったArrayとArrayCollectionの違いについて調べてみます。
違いというかArrayCollectionって何っていう感じでしょうか。
これはXMLListCollectionにも言えますが。
 [...]]]></description>
			<content:encoded><![CDATA[<p>以前から謎だったArrayとArrayCollectionの違いについて調べてみます。<br />
違いというかArrayCollectionって何っていう感じでしょうか。<br />
これはXMLListCollectionにも言えますが。</p>
<p><span id="more-371"></span></p>
<h3>コレクションについて</h3>
<p>あえず、ArrayCollectionやXMLListCollectionってなんだろうということですが、Flexのヘルプに書かれていました。</p>
<p>コレクションは、Array や XMLList オブジェクトなどのデータソースオブジェクトに格納されたデータにアクセスしたり、このようなデータを表現したりするための一貫した方法を提供するオブジェクトです。コレクションにより、Flex コンポーネントと、そのコンポーネントの生成に使用するデータオブジェクトのと間に抽象レベルが提供されます。</p>
<p>ということみたいです。<br />
ArrayやXMLListというのは通常のデータ（元となるデータ）。で、コレクションっていうのはそのデータのラッパーオブジェクトっていうことですね。<br />
元データ色々な機能を追加したオブジェクトっていうことでしょうか。<br />
追加される機能としては、以下のものになります。</p>
<ul>
<li>生データソースにより提供される処理から独立した一貫したデータ処理セットを提供します。</li>
<li>基になるデータが変化したときに、コンポーネントが適切に更新されます。</li>
<li>リモートデータソースから到達するページングデータを処理するためのメカニズムを提供します。</li>
<li>ソートしたデータや開発者の提供するメソッドによってフィルタしたデータを表す具体的な「ビュー」を提供します。</li>
<li>1 つのコレクションを使用して、同じデータソースから複数のコンポーネントにデータを格納できます。</li>
<li>コレクションを使用することで、コンポーネントのデータソースを実行時に切り替えることができます。また、データソースの内容を変更して、そのデータソースを使用するすべてのコンポーネントに変更を反映することもできます。</li>
<li>コレクションのメソッドを使用して、基になるデータソース内のデータにアクセスできます。</li>
</ul>
<p>（<a href="http://livedocs.adobe.com/flex/3_jp/html/help.html?content=usingas_2.html" target="_blank">ヘルプ</a>より抜粋）<br />
いろいろな機能がありますね。<br />
その中でも重要な点をピックアップしました</p>
<h3>基になるデータが変化したとき、コンポーネントが適切に更新される</h3>
<p>ここが実は重要で、DataGrid等のデータにArrayやXMLListを使わないほうが良い理由でもあります。</p>
<p>まず、ArrayCollectionを使用した場合。<br />
ArrayCollectionが持っている要素の追加・削除メソッドを使ってコレクションを変更できます。<br />
そして、DataGridもあわせて変化します。</p>
<pre>
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()" pageTitle="要素の追加・削除：コレクション"&gt;
&lt;mx:Script&gt;
&lt;![CDATA[
    import mx.collections.*;
    import mx.controls.Alert;
    // 元となるデータを作成
    private var def_array:Array = [
        {name:'suzuki',money:500,number:1},
        {name:'sato',money:300,number:2}
    ];

    // データをバインドさせる
    [Bindable]
    public var data_array:ArrayCollection;

    // ArrayCollectionを作成する
    public function init():void{
        data_array = new ArrayCollection(def_array);
    }

    private function btn_click_add():void{
        data_array.addItemAt({name:'suzuki',money:500,number:1},1);
    }
    private function btn_click_remove():void{
        if(dg.selectedIndex &gt;= 0){
            data_array.removeItemAt(dg.selectedIndex);
        }
    }
    ]]&gt;
&lt;/mx:Script&gt;
&lt;mx:DataGrid dataProvider="{data_array}" id="dg"&gt;
        &lt;mx:columns&gt;
            &lt;mx:DataGridColumn dataField="name" headerText="名前" /&gt;
            &lt;mx:DataGridColumn dataField="money" headerText="金額" /&gt;
            &lt;mx:DataGridColumn dataField="number" headerText="番号" /&gt;
        &lt;/mx:columns&gt;
    &lt;/mx:DataGrid&gt;
&lt;mx:Button label="要素の追加" click="btn_click_add()" /&gt;
&lt;mx:Button label="要素の削除" click="btn_click_remove()" /&gt;
&lt;/mx:Application&gt;
</pre>
<div style="text-align:center;width:465px;margin:0 auto 10px auto"><iframe title="DataGridのデータ追加と削除[ArrayCollection版] - wonderfl build flash online" scrolling="no" src="http://wonderfl.net/blogparts/bac5ff6b07c92c952ca1500c62d8e9527408783b" width="465" height="490" style="border:1px black solid;"></iframe><a href="http://wonderfl.net/code/bac5ff6b07c92c952ca1500c62d8e9527408783b" title="DataGridのデータ追加と削除[ArrayCollection版] - wonderfl build flash online">DataGridのデータ追加と削除[ArrayCollection版] - wonderfl build flash online</a></div>
<p>同じことをArrayでやろうとする。<br />
Arrayにももちろん要素の追加や削除メソッドがあります。<br />
しかし、そのメソッドを使用してもDataGridが変化することはありません。</p>
<pre>
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()" pageTitle="要素の追加・削除：コレクション"&gt;
&lt;mx:Script&gt;
&lt;![CDATA[
    import mx.collections.*;
    import mx.controls.Alert;
    // 元となるデータを作成
    [Bindable]
    private var def_array:Array = [
        {name:'suzuki',money:500,number:1},
        {name:'sato',money:300,number:2}
    ];

    private function btn_click_add():void{
        def_array.push( { name:'suzuki', money:500, number:1 } );
    }
    private function btn_click_remove():void{
        if(dg.selectedIndex &gt;= 0){
            def_array.splice(dg.selectedIndex);
        }
    }
    ]]&gt;
&lt;/mx:Script&gt;
&lt;mx:DataGrid dataProvider="{def_array}" id="dg"&gt;
        &lt;mx:columns&gt;
            &lt;mx:DataGridColumn dataField="name" headerText="名前" /&gt;
            &lt;mx:DataGridColumn dataField="money" headerText="金額" /&gt;
            &lt;mx:DataGridColumn dataField="number" headerText="番号" /&gt;
        &lt;/mx:columns&gt;
    &lt;/mx:DataGrid&gt;
&lt;mx:Button label="要素の追加" click="btn_click_add()" /&gt;
&lt;mx:Button label="要素の削除" click="btn_click_remove()" /&gt;
&lt;/mx:Application&gt;
</pre>
<p>自動的に反映はしてくれないんですね。<br />
ここがArrayCollectionやXMLListCollectionを使う理由のひとつになりそうです。</p>
<div style="text-align:center;width:465px;margin:0 auto 10px auto;"><iframe title="DataGridのデータ追加と削除[Array版] - wonderfl build flash online" scrolling="no" src="http://wonderfl.net/blogparts/87d509f1708ff8e892ea2325ec9b4b334ca0a143" width="465" height="490" style="border:1px black solid;"></iframe><a href="http://wonderfl.net/code/87d509f1708ff8e892ea2325ec9b4b334ca0a143" title="DataGridのデータ追加と削除[Array版] - wonderfl build flash online">DataGridのデータ追加と削除[Array版] - wonderfl build flash online</a></div>
<p>ただ、DataGridはArrayを読み込んだ時点で自動的にArrayCollectionを生成します。<br />
ですので、読み込んだデータがArrayでも生成されたArrayCollectionを操作することで、同じような効果を出すことができます。<br />
生成されたArrayCollectionはdataProviderを通して操作します。</p>
<pre>
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()" pageTitle="要素の追加・削除：コレクション"&gt;
&lt;mx:Script&gt;
&lt;![CDATA[
    import mx.collections.*;
    import mx.controls.Alert;
    // 元となるデータを作成
    [Bindable]
    private var def_array:Array = [
        {name:'suzuki',money:500,number:1},
        {name:'sato',money:300,number:2}
    ];

    private function btn_click_add():void{
        dg.dataProvider.addItemAt({name:'suzuki',money:500,number:1},1);
    }
    private function btn_click_remove():void{
        if(dg.selectedIndex &gt;= 0){
            dg.dataProvider.removeItemAt(dg.selectedIndex);
        }
    }
    ]]&gt;
&lt;/mx:Script&gt;
&lt;mx:DataGrid dataProvider="{def_array}" id="dg"&gt;
        &lt;mx:columns&gt;
            &lt;mx:DataGridColumn dataField="name" headerText="名前" /&gt;
            &lt;mx:DataGridColumn dataField="money" headerText="金額" /&gt;
            &lt;mx:DataGridColumn dataField="number" headerText="番号" /&gt;
        &lt;/mx:columns&gt;
    &lt;/mx:DataGrid&gt;
&lt;mx:Button label="要素の追加" click="btn_click_add()" /&gt;
&lt;mx:Button label="要素の削除" click="btn_click_remove()" /&gt;
&lt;/mx:Application&gt;
</pre>
<div style="text-align:center;width:465px;margin:0 auto 10px auto;"><iframe title="DataGridのデータ追加と削除[Array版 ： dataProviderから操作] - wonderfl build flash online" scrolling="no" src="http://wonderfl.net/blogparts/67307ac34319a32f0cd4d5292534c7bb5432d5a9" width="465" height="490" style="border:1px black solid;"></iframe><a href="http://wonderfl.net/code/67307ac34319a32f0cd4d5292534c7bb5432d5a9" title="DataGridのデータ追加と削除[Array版 ： dataProviderから操作] - wonderfl build flash online">DataGridのデータ追加と削除[Array版 ： dataProviderから操作] - wonderfl build flash online</a></div>
<h3>まとめ</h3>
<p>他にも便利な機能がいろいろあるようです。<br />
その機能を使えるようにするためにコレクションを有効活用しましょう。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=371</wfw:commentRss>
		</item>
		<item>
		<title>[Flex]DataGridのデータにXMLを使う</title>
		<link>http://blog.wonder-boys.net/?p=368</link>
		<comments>http://blog.wonder-boys.net/?p=368#comments</comments>
		<pubDate>Mon, 14 Dec 2009 10:22:11 +0000</pubDate>
		<dc:creator>wonder</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[DataGrid]]></category>

		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=368</guid>
		<description><![CDATA[DataGridのデータ元にXMLを使うこともできるようです。

DataGrid内に直接記述
DataGrid内に直接XMLを記述するには、dataProvider内にXMLListの形式で記述します。
※root要素がありませんので注意。
&#60;mx:DataGrid width="100%"&#62;
    &#60;mx:dataProvider&#62;
        &#60;mx:XMLList&#62;
            &#60;person&#62;
                &#60;name&#62;suzuki&#60;/name&#62;
              [...]]]></description>
			<content:encoded><![CDATA[<p>DataGridのデータ元にXMLを使うこともできるようです。</p>
<p><span id="more-368"></span></p>
<h3>DataGrid内に直接記述</h3>
<p>DataGrid内に直接XMLを記述するには、dataProvider内にXMLListの形式で記述します。<br />
※root要素がありませんので注意。</p>
<pre>&lt;mx:DataGrid width="100%"&gt;
    &lt;mx:dataProvider&gt;
        &lt;mx:XMLList&gt;
            &lt;person&gt;
                &lt;name&gt;suzuki&lt;/name&gt;
                &lt;money&gt;500&lt;/money&gt;
                &lt;number&gt;1&lt;/number&gt;
            &lt;/person&gt;
            &lt;person&gt;
                &lt;name&gt;sato&lt;/name&gt;
                &lt;money&gt;300&lt;/money&gt;
                &lt;number&gt;2&lt;/number&gt;
            &lt;/person&gt;
        &lt;/mx:XMLList&gt;
    &lt;/mx:dataProvider&gt;
    &lt;mx:columns&gt;
        &lt;mx:DataGridColumn dataField="name" headerText="名前" /&gt;
        &lt;mx:DataGridColumn dataField="money" headerText="金額" /&gt;
        &lt;mx:DataGridColumn dataField="number" headerText="番号" /&gt;
    &lt;/mx:columns&gt;
&lt;/mx:DataGrid&gt;</pre>
<p>XMLデータを記述する際には、XMLListとXMLListCollectionと2つのクラスが存在する。<br />
ArrayとArrayCollectionのときのように、XMLListCollectionのほうが様々なメソッドが用意されているようなので、こちらを使用するのが良いらしい。</p>
<p>上記の場合、指定しているのはXMLListになる。<br />
しかし、DataGridのdataProviderにセットした時点でどうやら自動的にXMLListCollectionに変換をするらしい。</p>
<h3>同一ファイル内のXMLを使用する</h3>
<p>上記のXMLListをDataGridから外に出し、id値をつける。<br />
そのid値をDataGridのdataProviderにバインドさせる。</p>
<pre>&lt;mx:XMLList id="data_xml"&gt;
    &lt;person&gt;
        &lt;name&gt;suzuki&lt;/name&gt;
        &lt;money&gt;500&lt;/money&gt;
        &lt;number&gt;1&lt;/number&gt;
    &lt;/person&gt;
    &lt;person&gt;
        &lt;name&gt;sato&lt;/name&gt;
        &lt;money&gt;300&lt;/money&gt;
        &lt;number&gt;2&lt;/number&gt;
    &lt;/person&gt;
&lt;/mx:XMLList&gt;

&lt;mx:DataGrid width="100%" dataProvider="{data_xml}"&gt;
    &lt;mx:columns&gt;
        &lt;mx:DataGridColumn dataField="name" headerText="名前" /&gt;
        &lt;mx:DataGridColumn dataField="money" headerText="金額" /&gt;
        &lt;mx:DataGridColumn dataField="number" headerText="番号" /&gt;
    &lt;/mx:columns&gt;
&lt;/mx:DataGrid&gt;</pre>
<h3>Script内で作成したXMLを使用する</h3>
<p>actionscript内で生成したXMLを使用する場合は、XMLをXMLListCollectionに変換したものをバインドさせる。</p>
<p><strong>■Script側</strong></p>
<pre>&lt;mx:Script&gt;
&lt;![CDATA[

// XMLデータ
[Bindable]
private var def_xml:XML =
    &lt;root&gt;
        &lt;person&gt;
            &lt;name&gt;suzuki&lt;/name&gt;
            &lt;money&gt;500&lt;/money&gt;
            &lt;number&gt;1&lt;/number&gt;
        &lt;/person&gt;
        &lt;person&gt;
            &lt;name&gt;sato&lt;/name&gt;
            &lt;money&gt;300&lt;/money&gt;
            &lt;number&gt;2&lt;/number&gt;
        &lt;/person&gt;
    &lt;/root&gt;;

// XMLListCollectionを作成する
[Bindable]
private var data_xml:XMLListCollection = new XMLListCollection(def_xml.person);

]]&gt;
&lt;/mx:Script&gt;</pre>
<p><strong>■mxml側</strong></p>
<pre>&lt;mx:DataGrid width="100%" dataProvider="{data_xml}"&gt;
    &lt;mx:columns&gt;
        &lt;mx:DataGridColumn dataField="name" headerText="名前" /&gt;
        &lt;mx:DataGridColumn dataField="money" headerText="金額" /&gt;
        &lt;mx:DataGridColumn dataField="number" headerText="番号" /&gt;
    &lt;/mx:columns&gt;
&lt;/mx:DataGrid&gt;</pre>
<h3>外部ファイルのXMLを使用する</h3>
<p>外部のXMLファイルを読み込む。</p>
<ol>
<li>HTTPServiceタグで読み込むXMLを指定する。</li>
<li>Applicationが読み込まれた時点で、リクエストを送りファイルを取得する。</li>
<li>DataGridのdataProviderに返されたXMLを指定する。</li>
</ol>
<pre>&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" styleName="plain" creationComplete="Request.send()"&gt;
    &lt;mx:HTTPService id="Request" url="data/name.xml" useProxy="false" /&gt;
    &lt;mx:Panel width="100%"&gt;
        &lt;mx:DataGrid width="100%" dataProvider="{Request.lastResult.data.person}"&gt;
            &lt;mx:columns&gt;
                &lt;mx:DataGridColumn dataField="name" headerText="名前" /&gt;
                &lt;mx:DataGridColumn dataField="money" headerText="金額" /&gt;
                &lt;mx:DataGridColumn dataField="number" headerText="番号" /&gt;
            &lt;/mx:columns&gt;
        &lt;/mx:DataGrid&gt;
    &lt;/mx:Panel&gt;
&lt;/mx:Application&gt;</pre>
<p>HttpServiceについてはまた調べてみます。</p>
<h3>サンプル</h3>
<div style="text-align:center;width:465px;"><iframe title="DataGridのデータにXMLを使う - wonderfl build flash online" scrolling="no" src="http://wonderfl.net/blogparts/71c0946f3575cb803454c336ec06fed22fbb0a9c" width="465" height="490" style="border:1px black solid;"></iframe><a href="http://wonderfl.net/code/71c0946f3575cb803454c336ec06fed22fbb0a9c" title="DataGridのデータにXMLを使う - wonderfl build flash online">DataGridのデータにXMLを使う - wonderfl build flash online</a></div>
</p>
<h3>まとめ</h3>
<p>XMLも使えるといろいろと便利そうです。<br />
Arrayのときもそうだったんですが、XML、XMLList、XMLListCollectionの違いをちゃんと知らないとごっちゃになります。<br />
なかなか難しいです・・・。</p>
<h3>参考サイト</h3>
<p><a href="http://itpro.nikkeibp.co.jp/article/COLUMN/20070316/265472/" target="_blank">第11回　Flexが備えるMXMLコンポーネント（Part6：データグリッド） - ITPro</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=368</wfw:commentRss>
		</item>
	</channel>
</rss>
