<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Yukun&#039;s Blog &#187; ActionScript</title>
	<atom:link href="http://www.yukun.info/blog/category/actionscript/feed" rel="self" type="application/rss+xml" />
	<link>http://www.yukun.info</link>
	<description>難しいことは分かりやすく、簡単なことは面白く紹介</description>
	<lastBuildDate>Thu, 26 Jan 2012 03:33:59 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Flex: State、Transitionによる画面遷移 &#8211; ログイン画面</title>
		<link>http://www.yukun.info/blog/2012/01/flex-state-login-register.html</link>
		<comments>http://www.yukun.info/blog/2012/01/flex-state-login-register.html#comments</comments>
		<pubDate>Wed, 04 Jan 2012 15:00:19 +0000</pubDate>
		<dc:creator>yukun</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.yukun.info/?p=2117</guid>
		<description><![CDATA[FlexのStateの遷移によって表示するUIを変更することで、簡潔に画面遷移を実現する。その際のTransition効果(フェード)を付与する。今回はログインフォームを例に採り、ユーザーのログイン画面と新規登録画面の2 &#8230; <a href="http://www.yukun.info/blog/2012/01/flex-state-login-register.html">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://www.yukun.info/blog/2012/01/flex-state-login-register.html">Flex: State、Transitionによる画面遷移 &#8211; ログイン画面</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yukun.info/wp-content/uploads/flex_login_state.png"><img src="http://www.yukun.info/wp-content/uploads/flex_login_state.png" alt="Flex: State、Transitionによる画面遷移 - ログイン画面" title="flex_login_state" width="267" height="177" class="alignnone size-full wp-image-2136" /></a></p>
<p>FlexのStateの遷移によって表示するUIを変更することで、簡潔に画面遷移を実現する。その際のTransition効果(フェード)を付与する。今回はログインフォームを例に採り、ユーザーのログイン画面と新規登録画面の2つの状態をStateによって切り替えるmxmlソースを下記に紹介する。</p>
<p><span id="more-2117"></span></p>
<h3>実行結果</h3>
<p>下記のリンクをご参照。</p>
<p><a href="http://www.yukun.info/labs/flex/login-sys/">ログイン・登録フォーム</a></p>
<h3>ソースコード</h3>
<pre>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:Application xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
			   xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
			   xmlns:mx=&quot;library://ns.adobe.com/flex/mx&quot;
			   currentState=&quot;Login&quot;&gt;
	&lt;!-- 初期状態は&quot;Login&quot; --&gt;

	&lt;!-- 状態遷移エフェクト --&gt;
	&lt;s:transitions&gt;
		&lt;s:Transition fromState=&quot;*&quot; toState=&quot;*&quot;&gt;
			&lt;s:effect&gt;
				&lt;s:Parallel targets=&quot;{[registerLink, registerButton, loginLink, loginButton, confirm, email]}&quot;&gt;
					&lt;s:children&gt;
						&lt;s:Fade alphaFrom=&quot;0&quot; alphaTo=&quot;1&quot;/&gt;
					&lt;/s:children&gt;
				&lt;/s:Parallel&gt;
			&lt;/s:effect&gt;
		&lt;/s:Transition&gt;
	&lt;/s:transitions&gt;

	&lt;!-- 状態 --&gt;
	&lt;s:states&gt;
		&lt;s:State name=&quot;Login&quot;/&gt;
		&lt;s:State name=&quot;Register&quot;/&gt;
	&lt;/s:states&gt;
	&lt;fx:Declarations&gt;
		&lt;!-- 非ビジュアルエレメント (サービス、値オブジェクトなど) をここに配置 --&gt;
	&lt;/fx:Declarations&gt;

	&lt;!-- ログイン用パネル --&gt;
	&lt;s:Panel title=&quot;Login&quot; id=&quot;loginPanel&quot; includeIn=&quot;Login&quot; horizontalCenter=&quot;0&quot; verticalCenter=&quot;-2&quot;&gt;
		&lt;mx:Form id=&quot;loginForm&quot;&gt;
			&lt;mx:FormItem label=&quot;Username:&quot;&gt;
				&lt;s:TextInput/&gt;
			&lt;/mx:FormItem&gt;
			&lt;mx:FormItem label=&quot;Password:&quot;&gt;
				&lt;s:TextInput/&gt;
			&lt;/mx:FormItem&gt;
		&lt;/mx:Form&gt;
		&lt;s:controlBarContent&gt;
			&lt;mx:LinkButton label=&quot;Need to Register?&quot; id=&quot;registerLink&quot;
						   click=&quot;currentState=&#039;Register&#039;&quot;/&gt;
			&lt;mx:Spacer width=&quot;100%&quot; id=&quot;spacer1&quot;/&gt;
			&lt;s:Button label=&quot;Login&quot; id=&quot;loginButton&quot;/&gt;
		&lt;/s:controlBarContent&gt;
	&lt;/s:Panel&gt;

	&lt;!-- 新規登録用パネル --&gt;
	&lt;s:Panel title=&quot;Register&quot; id=&quot;registerPanel&quot; includeIn=&quot;Register&quot; horizontalCenter=&quot;0&quot; verticalCenter=&quot;-2&quot;&gt;
		&lt;mx:Form id=&quot;registerForm&quot;&gt;
			&lt;mx:FormItem label=&quot;Username:&quot;&gt;
				&lt;s:TextInput/&gt;
			&lt;/mx:FormItem&gt;
			&lt;mx:FormItem label=&quot;Password:&quot;&gt;
				&lt;s:TextInput/&gt;
			&lt;/mx:FormItem&gt;
			&lt;mx:FormItem id=&quot;confirm&quot; label=&quot;Confirm:&quot;&gt;
				&lt;s:TextInput/&gt;
			&lt;/mx:FormItem&gt;
			&lt;mx:FormItem id=&quot;email&quot; label=&quot;E-Mail:&quot;&gt;
				&lt;s:TextInput/&gt;
			&lt;/mx:FormItem&gt;
		&lt;/mx:Form&gt;
		&lt;s:controlBarContent&gt;
			&lt;mx:LinkButton label=&quot;Return to Login&quot; id=&quot;loginLink&quot;
						   click=&quot;currentState=&#039;Login&#039;&quot;/&gt;
			&lt;mx:Spacer width=&quot;100%&quot; id=&quot;spacer2&quot;/&gt;
			&lt;s:Button label=&quot;Register&quot; id=&quot;registerButton&quot;/&gt;
		&lt;/s:controlBarContent&gt;
	&lt;/s:Panel&gt;
&lt;/s:Application&gt;
</pre>
<p>※余談：<br />
フォルダを整理していたら古いFlexコードが出てきたので、この度当サイトに転記したもの。基本Tips系のコードはブログに載せてローカルには保存しないようにする予定。どうせその類のコードは一週間後には読まなくなるし、それ以降はソースの保管場所さえ忘れてしまう恐れもある為。</p>
<p>何かご質問等ありましたら、お気軽にコメントを頂ければと思います。</p>
<h4>関連すると思われる記事：</h4>
<ul class="similar-posts">
<li><a href="http://www.yukun.info/blog/2008/12/actionscript-air-async-read-text.html" rel="bookmark" title="2008年12月17日">AIR: テキストファイルを非同期に読み込む &#8211; openAsync()、readMultiByte()</a></li>
<li><a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-button.html" rel="bookmark" title="2008年10月14日">AS3でお絵かきFlashを作る (2)ボタン作成 &#8211; Flexコンポーネントの導入</a></li>
<li><a href="http://www.yukun.info/blog/2008/12/actionscript-air-async-write-text.html" rel="bookmark" title="2008年12月18日">AIR: テキストファイルに書き込み &#8211; openAsync()、writeMultiByte()</a></li>
<li><a href="http://www.yukun.info/blog/2010/07/error-require-once-autoloader-php.html" rel="bookmark" title="2010年7月25日">解決例: 「ファイルから操作とエンティティを取得できません」 &#8211; Autoloader.php</a></li>
<li><a href="http://www.yukun.info/blog/2008/12/amazocluster-bata-uncompleted.html" rel="bookmark" title="2008年12月15日">AmazoCluster: 一発で納得のいくものができればいいけれどね・・・</a></li>
</ul>
<p><!-- Similar Posts took 19.207 ms --></p>
<p><a href="http://www.yukun.info/blog/2012/01/flex-state-login-register.html">Flex: State、Transitionによる画面遷移 &#8211; ログイン画面</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yukun.info/blog/2012/01/flex-state-login-register.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解決例: 「ファイルから操作とエンティティを取得できません」 &#8211; Autoloader.php</title>
		<link>http://www.yukun.info/blog/2010/07/error-require-once-autoloader-php.html</link>
		<comments>http://www.yukun.info/blog/2010/07/error-require-once-autoloader-php.html#comments</comments>
		<pubDate>Sat, 24 Jul 2010 15:00:18 +0000</pubDate>
		<dc:creator>yukun</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Exception]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.yukun.info/?p=1604</guid>
		<description><![CDATA[事象 Flex Builder 4でPHPとのデータコネクション設定を行う際に上図のエラーが発生。 使用したサンプルチュートリアル： connect to data &#8211; Flex Test Drive &#124; A &#8230; <a href="http://www.yukun.info/blog/2010/07/error-require-once-autoloader-php.html">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://www.yukun.info/blog/2010/07/error-require-once-autoloader-php.html">解決例: 「ファイルから操作とエンティティを取得できません」 &#8211; Autoloader.php</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yukun.info/wp-content/uploads/error_require_autoloader.png"><img src="http://www.yukun.info/wp-content/uploads/error_require_autoloader-e1279985017921.png" alt="error_require_autoloader" title="error_require_autoloader" width="400" height="160" class="size-full wp-image-1605" /></a></p>
<h3>事象</h3>
<p>Flex Builder 4でPHPとのデータコネクション設定を行う際に上図のエラーが発生。<br />
使用したサンプルチュートリアル：<br />
<a href="http://www.adobe.com/devnet/flex/testdrive/articles/1_build_a_flex_app2.html" target="_blank">connect to data &#8211; Flex Test Drive | Adobe Developer Connection</a></p>
<p><span id="more-1604"></span></p>
<p><em>エラーメッセージ</em></p>
<pre>
Zend Framework が正しくインストールされていて、プロジェクトの出力フォルダーにある amf_config.ini ファイルでパラメーター "amf.production" が true に設定されていないことを確認してください。
Warning: Error parsing C:\Program Files (x86)\VertrigoServ\www\TestDrive\TestDrive-debug/amf_config.ini on line 5 in C:\Program Files (x86)\VertrigoServ\www\TestDrive\TestDrive-debug\gateway.php on line 12

Warning: require_once(Zend/Loader/Autoloader.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files (x86)\VertrigoServ\www\TestDrive\TestDrive-debug\gateway.php on line 27

Fatal error: require_once() [function.require]: Failed opening required 'Zend/Loader/Autoloader.php' (include_path='.;C:\Program Files (x86)\VertrigoServ\Smarty;C:/Program Files/ZendFramework/library') in C:\Program Files (x86)\VertrigoServ\www\TestDrive\TestDrive-debug\gateway.php on line 27
</pre>
<p><em>amf_config.ini</em></p>
<pre>
[zend]
;set the absolute location path of webroot directory, example:
;Windows: C:\apache\www
;MAC/UNIX: /user/apache/www
webroot =C:/Program Files (x86)/VertrigoServ/www

;set the absolute location path of zend installation directory, example:
;Windows: C:\apache\PHPFrameworks\ZendFramework\library
;MAC/UNIX: /user/apache/PHPFrameworks/ZendFramework/library
;zend_path =

[zendamf]
amf.production = false
amf.directories[]=TestDrive/services
</pre>
<p><em>gateway.php</em></p>
<pre>
&lt;?php
ini_set(&quot;display_errors&quot;, 1);
$dir = dirname(__FILE__);
$webroot = $_SERVER[&#039;DOCUMENT_ROOT&#039;];
$configfile = &quot;$dir/amf_config.ini&quot;;

//default zend install directory
$zenddir = $webroot. &#039;/ZendFramework/library&#039;;

//Load ini file and locate zend directory
if(file_exists($configfile)) {
	$arr=parse_ini_file($configfile,true);
	if(isset($arr[&#039;zend&#039;][&#039;webroot&#039;])){
		$webroot = $arr[&#039;zend&#039;][&#039;webroot&#039;];
		$zenddir = $webroot. &#039;/ZendFramework/library&#039;;
	}
	if(isset($arr[&#039;zend&#039;][&#039;zend_path&#039;])){
		$zenddir = $arr[&#039;zend&#039;][&#039;zend_path&#039;];
	}
}

//
// Setup include path
	//add zend directory to include path
set_include_path(get_include_path().PATH_SEPARATOR.$zenddir);
// Initialize Zend Framework loader
require_once &#039;Zend/Loader/Autoloader.php&#039;;
</pre>
<p>include_pathの&#8217;.;C:\Program Files (x86)\VertrigoServ\Smarty;C:/Program Files/ZendFramework/library&#8217;から、&#8217;Zend/Loader/Autoloader.php&#8217;を開けませんというエラー。</p>
<p>include_path 先のフォルダ構成を確認すると確かに&#8217;Zend/Loader/Autoloader.php&#8217;がないのでエラーが発生するのは分かる。</p>
<h3>解決法</h3>
<p>amf_config.iniファイル中のwebrootパラメータをコメントアウトすると正常に設定が完了。<br />
変更前</p>
<pre>webroot =C:/Program Files (x86)/VertrigoServ/www</pre>
<p>変更後</p>
<pre>;webroot =C:/Program Files (x86)/VertrigoServ/www</pre>
<h3>原因</h3>
<p>本来はC:/Program Files (x86)/VertrigoServ/www/ZendFramework/library/Zend/Loader/Autoloader.phpを参照をすべき所を、C:/Program Files/ZendFramework/library/Zend/Loader/Autoloader.phpを参照しようとしてエラーとなった。<br />
webroot =C:/Program Files (x86)/VertrigoServ/wwwのはずが、どこで書き換わったのかな？</p>
<p>今回はサンプルを走らせるのを優先したので、原因究明はここで止めています＞＜；</p>
<h3>追記 &#8211; 2010/07/26</h3>
<p>以下のようなエラーメッセージが出力された場合も、上記の原因と同一である場合があります。</p>
<p><a href="http://www.yukun.info/wp-content/uploads/error_require_autoloader2.png"><img src="http://www.yukun.info/wp-content/uploads/error_require_autoloader2-e1280153443846.png" alt="error_require_autoloader2" title="error_require_autoloader2" width="400" height="281" class="size-full wp-image-1618" /></a></p>
<pre>
Send failed
Channel.Connect.Failed error NetConnection.Call.BadVersion: :
url: 'http://localhost/TestDrive_add_charts_PHP/gateway.php'
</pre>
<p>ご参考まで。</p>
<h4>関連すると思われる記事：</h4>
<ul class="similar-posts">
<li><a href="http://www.yukun.info/blog/2008/11/actionscript-flash-load-server-image-file.html" rel="bookmark" title="2008年11月21日">ActionScript: 画像ファイルをダウンロードして表示 &#8211; Loaderクラス</a></li>
<li><a href="http://www.yukun.info/blog/2008/12/actionscript-air-async-read-text.html" rel="bookmark" title="2008年12月17日">AIR: テキストファイルを非同期に読み込む &#8211; openAsync()、readMultiByte()</a></li>
<li><a href="http://www.yukun.info/blog/2012/01/flex-state-login-register.html" rel="bookmark" title="2012年1月5日">Flex: State、Transitionによる画面遷移 &#8211; ログイン画面</a></li>
<li><a href="http://www.yukun.info/blog/2008/12/actionscript-air-async-write-text.html" rel="bookmark" title="2008年12月18日">AIR: テキストファイルに書き込み &#8211; openAsync()、writeMultiByte()</a></li>
<li><a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-fill-layer.html" rel="bookmark" title="2008年10月25日">AS3でお絵かきFlashを作る (4)塗りつぶしと簡易レイヤーの操作</a></li>
</ul>
<p><!-- Similar Posts took 10.047 ms --></p>
<p><a href="http://www.yukun.info/blog/2010/07/error-require-once-autoloader-php.html">解決例: 「ファイルから操作とエンティティを取得できません」 &#8211; Autoloader.php</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yukun.info/blog/2010/07/error-require-once-autoloader-php.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AIR: Webサーバ、Socketの接続状況を検知 &#8211; URLMonitor、SocketMonitorクラス</title>
		<link>http://www.yukun.info/blog/2008/12/actionscript-air-url-socket-monitor.html</link>
		<comments>http://www.yukun.info/blog/2008/12/actionscript-air-url-socket-monitor.html#comments</comments>
		<pubDate>Wed, 24 Dec 2008 14:45:08 +0000</pubDate>
		<dc:creator>yukun</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Socket]]></category>

		<guid isPermaLink="false">http://www.yukun.info/?p=1282</guid>
		<description><![CDATA[任意のアドレスのWebサイト[サービス]のネットワーク状況を検知するURLMonitorと、任意のサーバ＋ポートに接続可能か否かを検知するSocketMonitorクラスの動作サンプルを下記に示します。 ソースコード &#038; &#8230; <a href="http://www.yukun.info/blog/2008/12/actionscript-air-url-socket-monitor.html">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://www.yukun.info/blog/2008/12/actionscript-air-url-socket-monitor.html">AIR: Webサーバ、Socketの接続状況を検知 &#8211; URLMonitor、SocketMonitorクラス</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p>任意のアドレスのWebサイト[サービス]のネットワーク状況を検知するURLMonitorと、任意のサーバ＋ポートに接続可能か否かを検知するSocketMonitorクラスの動作サンプルを下記に示します。</p>
<h2>ソースコード</h2>
<pre>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:WindowedApplication xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot;
  applicationComplete=&quot;startup()&quot;&gt;
  &lt;mx:Script&gt;
    &lt;![CDATA[
    import air.net.SocketMonitor
    import air.net.URLMonitor;
    import flash.net.URLRequest;
    import flash.events.StatusEvent;

    private var SERVER_URL:String = &quot;http://www.yukun.info/&quot;;
    private var SOCK_ADRR:String = &quot;yukun.info&quot;;
    private var PORT:int = 6667;
    private var INTERVAL_TIME:int = 3000; // ms
    private var serviceMonitor:URLMonitor = null;
    private var socketMonitor:SocketMonitor = null;

    private function startup():void {
      var endpoint:URLRequest = new URLRequest(SERVER_URL);
      serviceMonitor = new URLMonitor(endpoint);
      serviceMonitor.addEventListener(StatusEvent.STATUS, onStatusEvent);
      serviceMonitor.pollInterval = INTERVAL_TIME;
      serviceMonitor.start();

      socketMonitor = new SocketMonitor(SOCK_ADRR, PORT);
      socketMonitor.addEventListener(StatusEvent.STATUS, onSocketStatusChange);
      socketMonitor.pollInterval = INTERVAL_TIME;
      socketMonitor.start();
    }

    // ネットワークサービスの状態の検知
    private function onStatusEvent(e:StatusEvent):void {
      var date:Date = new Date();
      trace(date.toLocaleTimeString());
      trace(SERVER_URL + &quot;に&quot; + (serviceMonitor.available ? &quot;接続可&quot; : &quot;切断中&quot;));
    }

    private function onSocketStatusChange(e:StatusEvent):void {
      trace(SOCK_ADRR + &quot;のポート&quot; + PORT + &quot;は&quot; +
        (socketMonitor.available ? &quot;接続可&quot; : &quot;切断中&quot;));
    }
    ]]&gt;
  &lt;/mx:Script&gt;
&lt;/mx:WindowedApplication&gt;
</pre>
<h2>実行結果</h2>
<pre>

http://www.yukun.info/に接続可

yukun.infoのポート6667は切断中
</pre>
<p>URLMonitorはネットワーク状況を検知する為にサーバへGETリクエストを送出して、レスポンスのステイタスコードを確認して判断しているようです↓。</p>
<h3>リファレンス</h3>
<ul>
<li><a href="http://livedocs.adobe.com/flex/3_jp/langref/air/net/URLMonitor.html" title="URLMonitor - ActionScript 3.0 言語およびコンポーネントリファレンス" target="_blank">URLMonitor &#8211; ActionScript 3.0 言語およびコンポーネントリファレンス</a></li>
<li><a href="http://help.adobe.com/ja_JP/AIR/1.1/devappsflash/WS5b3ccc516d4fbf351e63e3d118666ade46-7fcc.html" title="Adobe AIR 1.1 * ネットワーク接続の監視" target="_blank">Adobe AIR 1.1 * ネットワーク接続の監視</a></li>
</ul>
<h4>関連すると思われる記事：</h4>
<ul class="similar-posts">
<li><a href="http://www.yukun.info/blog/2010/05/java-networkinterface-ipv6-ipv4.html" rel="bookmark" title="2010年5月16日">Java: インターフェースとローカルのIPv6, IPv4アドレスの取得 &#8211; NetworkInterfaceクラス</a></li>
<li><a href="http://www.yukun.info/blog/2008/12/air-actionscript-sqlite-statement.html" rel="bookmark" title="2008年12月22日">AIR: SQLiteでデータの挿入と検索 &#8211; SQLConnection、SQLStatementクラス</a></li>
<li><a href="http://www.yukun.info/blog/2008/12/actionscript-air-async-write-text.html" rel="bookmark" title="2008年12月18日">AIR: テキストファイルに書き込み &#8211; openAsync()、writeMultiByte()</a></li>
<li><a href="http://www.yukun.info/blog/2008/12/actionscript-air-async-read-text.html" rel="bookmark" title="2008年12月17日">AIR: テキストファイルを非同期に読み込む &#8211; openAsync()、readMultiByte()</a></li>
<li><a href="http://www.yukun.info/blog/2011/02/java-tcp-socket-echo.html" rel="bookmark" title="2011年2月12日">Java: TCP Socket Echo Server/Client サンプル</a></li>
</ul>
<p><!-- Similar Posts took 7.455 ms --></p>
<p><a href="http://www.yukun.info/blog/2008/12/actionscript-air-url-socket-monitor.html">AIR: Webサーバ、Socketの接続状況を検知 &#8211; URLMonitor、SocketMonitorクラス</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yukun.info/blog/2008/12/actionscript-air-url-socket-monitor.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AIR: SQLiteでデータの挿入と検索 &#8211; SQLConnection、SQLStatementクラス</title>
		<link>http://www.yukun.info/blog/2008/12/air-actionscript-sqlite-statement.html</link>
		<comments>http://www.yukun.info/blog/2008/12/air-actionscript-sqlite-statement.html#comments</comments>
		<pubDate>Mon, 22 Dec 2008 09:00:30 +0000</pubDate>
		<dc:creator>yukun</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.yukun.info/?p=1278</guid>
		<description><![CDATA[AIRアプリケーションからSQLiteのDBにアクセスするには主にSQLConnectionとSQLStatementクラスを用います。基本的な処理の流れは、 SQLConnection#openAsync(＜Fileオ &#8230; <a href="http://www.yukun.info/blog/2008/12/air-actionscript-sqlite-statement.html">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://www.yukun.info/blog/2008/12/air-actionscript-sqlite-statement.html">AIR: SQLiteでデータの挿入と検索 &#8211; SQLConnection、SQLStatementクラス</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p>AIRアプリケーションからSQLiteのDBにアクセスするには主にSQLConnectionとSQLStatementクラスを用います。基本的な処理の流れは、</p>
<ol>
<li>SQLConnection#openAsync(＜Fileオブジェクト＞, ＜モード＞)でDBに接続</li>
<li>SQLStatement#textプロパティにSQL文を代入しexecute()で実行</li>
<li>その際、フィールド値はSQLStatement#parameters["@＜定義されたパラメータ＞"]で代入する</li>
<li>SELECT文の検索結果データははSQLStatement#getResult()で取得</li>
<li>結果データの型はSQLResultで、データそのものはdataプロパティ(Array型)に入っている。e.g. ＜SQLResult＞.data[i].＜フィールド名＞</li>
</ol>
<p>下のプログラムはDBに接続してテーブルの作成、レコードの追加、検索を行うサンプルです。</p>
<h2>ソースコード</h2>
<pre>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:WindowedApplication xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot;
layout=&quot;absolute&quot; creationComplete=&quot;dbConnect()&quot;&gt;
&lt;mx:Script&gt;
  &lt;![CDATA[
  import flash.data.SQLConnection;
  import flash.filesystem.File;
  import flash.events.SQLErrorEvent;
  import flash.events.SQLEvent;

  private var conn:SQLConnection;
  private var dbFile:File;
  private var sql:SQLStatement;

  // DBに接続
  private function dbConnect():void {
    conn = new SQLConnection();
    conn.addEventListener(SQLEvent.OPEN, onDBOpen);
    conn.addEventListener(SQLErrorEvent.ERROR, onDBError);
    dbFile = File.desktopDirectory.resolvePath(&quot;test01.db&quot;);
    trace(&quot;フィアルは存在&quot; + (dbFile.exists ? &quot;します。：&quot; : &quot;しません。&quot;) + dbFile.nativePath);
    conn.openAsync(dbFile, SQLMode.CREATE);
  }

  // 接続完了
  private function onDBOpen(e:SQLEvent):void {
    trace(&quot;Connect DB&quot;);
    conn.removeEventListener(SQLEvent.OPEN, onDBOpen);
    conn.removeEventListener(SQLErrorEvent.ERROR, onDBError);
    createTable(); // テーブルを作成
  }

  private function onDBError(e:SQLErrorEvent):void {
    trace(&quot;Can&#039;t connect DB: &quot; + e.error.message);
    trace(&quot;Error detals: &quot; + e.error.details);
  }

  // テーブルを作成する関数
  private function createTable():void {
    sql = new SQLStatement();
    sql.sqlConnection = conn;
    var sqlTxt:String = &quot;CREATE TABLE IF NOT EXISTS addresses &quot; +
        &quot;(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)&quot;;
    sql.text = sqlTxt;
    sql.addEventListener(SQLEvent.RESULT, onCreate);
    sql.addEventListener(SQLErrorEvent.ERROR, onCreateError);
    sql.execute();
  }

  // テーブル作成完了
  private function onCreate(e:SQLEvent):void {
    trace(&quot;Can create table&quot;);
    sql.removeEventListener(SQLEvent.RESULT, onCreate);
    sql.removeEventListener(SQLErrorEvent.ERROR, onCreateError);
    insertData(); // データを挿入
  }

  private function onCreateError(e:SQLErrorEvent):void {
    trace(&quot;Can&#039;t create table: &quot; + e.error.message);
    trace(&quot;Error details: &quot; + e.error.details);
  }

  private function insertData():void {
    sql = new SQLStatement();
    sql.sqlConnection = conn;
    var sqlTxt:String = &quot;INSERT INTO addresses (id, name, age) &quot; +
      &quot;VALUES (@id, @name, @age)&quot;;
    sql.text = sqlTxt;
    sql.parameters[&quot;@id&quot;] = 1;
    sql.parameters[&quot;@name&quot;] = &quot;名無し&quot;;
    sql.parameters[&quot;@age&quot;] = 18;
    sql.addEventListener(SQLEvent.RESULT, onInsert);
    sql.addEventListener(SQLErrorEvent.ERROR, onInsertError);
    sql.execute();
  }

  // データ挿入完了
  private function onInsert(e:SQLEvent):void {
    trace(&quot;Can insert data&quot;);
    sql.removeEventListener(SQLEvent.RESULT, onInsert);
    sql.removeEventListener(SQLErrorEvent.ERROR, onInsertError);
    selectData(); // データを検索
  }

  private function onInsertError(e:SQLErrorEvent):void {
    trace(&quot;Can&#039;t insert data: &quot; + e.error.message);
    trace(&quot;Error details: &quot; + e.error.details);
  }

  private function selectData():void {
    sql = new SQLStatement();
    sql.sqlConnection = conn;
    var sqlTxt:String = &quot;SELECT * FROM addresses&quot;;
    sql.text = sqlTxt;
    sql.addEventListener(SQLEvent.RESULT, onSelect);
    sql.addEventListener(SQLErrorEvent.ERROR, onSelectError);
    sql.execute();
  }

  // 検索結果を取得完了
  private function onSelect(e:SQLEvent):void {
    trace(&quot;Can select data&quot;);
    sql.removeEventListener(SQLEvent.RESULT, onSelect);
    sql.removeEventListener(SQLErrorEvent.ERROR, onSelectError);
    var result:SQLResult = sql.getResult();
    var num:int = result.data.length;
    var id:int;
    var name:String;
    var age:String;

    for (var i:int = 0; i &lt; num; i++) {
      var row:Object = result.data[i];
      id = row.id;
      name = row.name;
      age = row.age;
      var str:String = &quot;id=&quot; + id + &quot;, name=&quot; + name + &quot;, age=&quot; + age;
      trace(str);
    }
  }

  private function onSelectError(e:SQLErrorEvent):void {
    trace(&quot;Can&#039;t select data: &quot; + e.error.message);
    trace(&quot;Error details: &quot; + e.error.details);
  }

  ]]&gt;
&lt;/mx:Script&gt;

&lt;/mx:WindowedApplication&gt;
</pre>
<h2>実行結果</h2>
<pre>
フィアルは存在しません。/Users/yukun/Desktop/test01.db
Connect DB
Can create table
Can insert data
Can select data
id=1, name=名無し, age=18
</pre>
<h3>リファレンス</h3>
<ul>
<li><a href="http://help.adobe.com/ja_JP/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63e3d118676a5497-7fb4.html" title="Adobe AIR 1.5 * ローカル SQL データベースの操作" target="_blank">Adobe AIR 1.5 * ローカル SQL データベースの操作</a></li>
<li><a href="http://help.adobe.com/ja_JP/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7d32.html" title="Adobe AIR 1.5 * データベースへの接続" target="_blank">Adobe AIR 1.5 * データベースへの接続</a></li>
</ul>
<h4>関連すると思われる記事：</h4>
<ul class="similar-posts">
<li><a href="http://www.yukun.info/blog/2008/12/actionscript-air-async-read-text.html" rel="bookmark" title="2008年12月17日">AIR: テキストファイルを非同期に読み込む &#8211; openAsync()、readMultiByte()</a></li>
<li><a href="http://www.yukun.info/blog/2008/12/actionscript-air-async-write-text.html" rel="bookmark" title="2008年12月18日">AIR: テキストファイルに書き込み &#8211; openAsync()、writeMultiByte()</a></li>
<li><a href="http://www.yukun.info/blog/2008/12/actionscript-air-url-socket-monitor.html" rel="bookmark" title="2008年12月24日">AIR: Webサーバ、Socketの接続状況を検知 &#8211; URLMonitor、SocketMonitorクラス</a></li>
<li><a href="http://www.yukun.info/blog/2008/11/mysql-query-select-where-in-like-between.html" rel="bookmark" title="2008年11月13日">MySQL: データ検索クエリの基本 &#8211; SELECT文、WHERE句、LIKE、IN、BETWEENキーワード</a></li>
<li><a href="http://www.yukun.info/blog/2008/07/python-sqlite-insert.html" rel="bookmark" title="2008年7月14日">Python: SQLiteにデータを格納、検索、出力 &#8211; pysqlite</a></li>
</ul>
<p><!-- Similar Posts took 13.112 ms --></p>
<p><a href="http://www.yukun.info/blog/2008/12/air-actionscript-sqlite-statement.html">AIR: SQLiteでデータの挿入と検索 &#8211; SQLConnection、SQLStatementクラス</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yukun.info/blog/2008/12/air-actionscript-sqlite-statement.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AIR: テキストファイルに書き込み &#8211; openAsync()、writeMultiByte()</title>
		<link>http://www.yukun.info/blog/2008/12/actionscript-air-async-write-text.html</link>
		<comments>http://www.yukun.info/blog/2008/12/actionscript-air-async-write-text.html#comments</comments>
		<pubDate>Wed, 17 Dec 2008 15:00:26 +0000</pubDate>
		<dc:creator>yukun</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[File]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[write]]></category>

		<guid isPermaLink="false">http://www.yukun.info/?p=1272</guid>
		<description><![CDATA[AIRコンポーネントではローカルのファイルにアクセスすることができます。下記のコードは日本語を含むマルチバイトの文字列をテキストファイルに書き込む処理をします。 処理の手順 FileStream#openAsync()か &#8230; <a href="http://www.yukun.info/blog/2008/12/actionscript-air-async-write-text.html">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://www.yukun.info/blog/2008/12/actionscript-air-async-write-text.html">AIR: テキストファイルに書き込み &#8211; openAsync()、writeMultiByte()</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yukun.info/wp-content/uploads/WriteTxtFile01_result.png"><img src="http://www.yukun.info/wp-content/uploads/WriteTxtFile01_result-e1273382752288.png" alt="AIR: テキストファイルに書き込み" title="WriteTxtFile01_result" width="400" height="328" class="size-full wp-image-1533" /></a></p>
<p>AIRコンポーネントではローカルのファイルにアクセスすることができます。下記のコードは日本語を含むマルチバイトの文字列をテキストファイルに書き込む処理をします。</p>
<h2>処理の手順</h2>
<ol>
<li>FileStream#openAsync()かopen()メソッドの引数にFileインスタンスとFileModeのプロパティを設定して実ファイルのパイプに接続</li>
<li>FileStream#writeMultiByte()でファイルに書き込み</li>
<li>FileStream#close()でストリームを閉じる</li>
</ol>
<h3>ソースコード</h3>
<pre>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:WindowedApplication xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot; title=&quot;シンプルテキストメイカー&quot;&gt;
&lt;mx:Script&gt;
  &lt;![CDATA[
  import mx.controls.Alert;

  private var choDir:File = File.documentsDirectory; // ダイアログの初期ディレクトリ
  private var saveFile:File;
  private var stream:FileStream;

  private function onSaveFileBut():void {
    choDir.addEventListener(Event.SELECT, onSelectSaveFile);
    choDir.browseForSave(&quot;テキストファイルに保存&quot;);
  }

  private function onSelectSaveFile(e:Event):void {
    saveFile = e.target as File; // 選択されたファイル
    choDir.removeEventListener(Event.SELECT, onSelectSaveFile);
    try {
      stream = new FileStream();
      stream.addEventListener(IOErrorEvent.IO_ERROR, onIOErrorWriteFile);
      stream.openAsync(saveFile, FileMode.WRITE); // 書き込みmodeで開く(フツーのopen()でもOK)
      var str:String = txtArea_.text;
      // 改行文字と文字コードをOS標準のものに置き換えて書き込み
      str = str.replace(/\n/g, File.lineEnding);
      stream.writeMultiByte(str, File.systemCharset); // 実際に書き込み
    } catch (err:IOError) {
      progLab_.text = &quot;IOError : &quot; + err;
    } finally {
      if (stream != null) {
        stream.close();
      }
    }
  }

  // ファイル書き込みに失敗した場合
  private function onIOErrorWriteFile(e:IOErrorEvent):void {
    Alert.show(&quot;ファイルの書き込みに失敗&quot;, &quot;エラー&quot;, Alert.OK, this);
    if (stream != null) {
      stream.close();
    }
  }
  ]]&gt;
&lt;/mx:Script&gt;
  &lt;mx:VBox x=&quot;0&quot; y=&quot;0&quot; height=&quot;100%&quot; width=&quot;100%&quot;&gt;
    &lt;mx:HBox width=&quot;100%&quot;&gt;
      &lt;mx:Button label=&quot;ファイルに保存&quot; id=&quot;saveBut_&quot; click=&quot;onSaveFileBut();&quot;/&gt;
      &lt;mx:Label id=&quot;progLab_&quot;/&gt;
    &lt;/mx:HBox&gt;
    &lt;mx:TextArea width=&quot;100%&quot; height=&quot;100%&quot; id=&quot;txtArea_&quot;/&gt;
  &lt;/mx:VBox&gt;
&lt;/mx:WindowedApplication&gt;
</pre>
<h3>リファレンス</h3>
<ul>
<li><a href="http://help.adobe.com/ja_JP/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7e4a.html" title="Adobe AIR 1.5 * ファイルシステムの操作" target="_blank">Adobe AIR 1.5 * ファイルシステムの操作</a></li>
<li><a href="http://help.adobe.com/ja_JP/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7dc2.html" title="Adobe AIR 1.5 * ファイルの読み取りと書き込み" target="_blank">Adobe AIR 1.5 * ファイルの読み取りと書き込み</a></li>
</ul>
<h4>関連すると思われる記事：</h4>
<ul class="similar-posts">
<li><a href="http://www.yukun.info/blog/2008/12/actionscript-air-async-read-text.html" rel="bookmark" title="2008年12月17日">AIR: テキストファイルを非同期に読み込む &#8211; openAsync()、readMultiByte()</a></li>
<li><a href="http://www.yukun.info/blog/2008/09/python-file-write-writelines.html" rel="bookmark" title="2008年9月6日">Python: テキストファイルに書き込み &#8211; write()、writelines()メソッド</a></li>
<li><a href="http://www.yukun.info/blog/2008/06/python-csv-write.html" rel="bookmark" title="2008年6月18日">Python: CSVファイルに書き込み &#8211; csv.writerオブジェクト</a></li>
<li><a href="http://www.yukun.info/blog/2008/09/python-add-line-number-to-text-file.html" rel="bookmark" title="2008年9月8日">Python: テキストファイルの行頭に行番号を追加</a></li>
<li><a href="http://www.yukun.info/blog/2008/12/air-actionscript-sqlite-statement.html" rel="bookmark" title="2008年12月22日">AIR: SQLiteでデータの挿入と検索 &#8211; SQLConnection、SQLStatementクラス</a></li>
</ul>
<p><!-- Similar Posts took 8.597 ms --></p>
<p><a href="http://www.yukun.info/blog/2008/12/actionscript-air-async-write-text.html">AIR: テキストファイルに書き込み &#8211; openAsync()、writeMultiByte()</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yukun.info/blog/2008/12/actionscript-air-async-write-text.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AIR: テキストファイルを非同期に読み込む &#8211; openAsync()、readMultiByte()</title>
		<link>http://www.yukun.info/blog/2008/12/actionscript-air-async-read-text.html</link>
		<comments>http://www.yukun.info/blog/2008/12/actionscript-air-async-read-text.html#comments</comments>
		<pubDate>Wed, 17 Dec 2008 03:30:27 +0000</pubDate>
		<dc:creator>yukun</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[File]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[read]]></category>

		<guid isPermaLink="false">http://www.yukun.info/?p=1269</guid>
		<description><![CDATA[AIRコンポーネントではローカルのファイルにアクセスすることができます。下記のコードは日本語を含むマルチバイトのテキストファイルを読み込み、画面い表示する処理を行います。 大まかな手順 FileStreamのコンストラク &#8230; <a href="http://www.yukun.info/blog/2008/12/actionscript-air-async-read-text.html">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://www.yukun.info/blog/2008/12/actionscript-air-async-read-text.html">AIR: テキストファイルを非同期に読み込む &#8211; openAsync()、readMultiByte()</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yukun.info/wp-content/uploads/ReadTxtFile01_result.png"><img src="http://www.yukun.info/wp-content/uploads/ReadTxtFile01_result-e1273382664744.png" alt="AIR: テキストファイル読み込みの実行結果" title="ReadTxtFile01_result" width="400" height="328" class="size-full wp-image-1531" /></a></p>
<p>AIRコンポーネントではローカルのファイルにアクセスすることができます。下記のコードは日本語を含むマルチバイトのテキストファイルを読み込み、画面い表示する処理を行います。</p>
<h2>大まかな手順</h2>
<ol>
<li>FileStreamのコンストラクタの引数に対象のファイルへのパスが設定されたFileインスタンスを渡す。</li>
<li>FileStream#openAsyncで実ファイルへのパイプ接続。</li>
<li>この時、非同期の読み込み完了／エラーを取得するためにイベントを登録しておく。</li>
<li>実際の文字の読み取り（どれだけ読むか、文字コードの変換など）はFileStream#readMultiByteで行う。</li>
<li>ストリームのインスタンスには接続時にpositionプロパティ（何処読んでいるかのポインタみたいなもの）からファイル末尾までのサイズ（bytesAvailable）を取得してるので、読み込みサイズにそれを指定。</li>
<li>FileStream#close()でストリームを閉じる</li>
</ol>
<h3>ソースコード</h3>
<pre>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:WindowedApplication xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot;
  title=&quot;テキストビュワー&quot;&gt;
  &lt;mx:Script&gt;
    &lt;![CDATA[
    import flash.filesystem.*;
    import mx.events.*;
    import mx.controls.Alert;

    private var choDir:File = File.documentsDirectory; // 開くディレクトリを指す
    private var curFile:File; // 選択されたファイル
    private var stream:FileStream;

    private function onOpenFileBut():void {
      choDir.addEventListener(Event.SELECT, onSelectFile);
      choDir.browseForOpen(&quot;開く&quot;); // ファイル選択ダイアログの表示
    }

    // ファイルが選択されたイベント
    private function onSelectFile(e:Event):void {
      txtArea_.text = &quot;&quot;;
      stream = new FileStream();
      curFile = e.target as File;
      stream.addEventListener(Event.COMPLETE, onCompleteReadFile);
      stream.addEventListener(IOErrorEvent.IO_ERROR, onIOErrorReadFile);
      stream.addEventListener(ProgressEvent.PROGRESS, onProgReadFile);
      stream.openAsync(curFile, FileMode.READ); // 非同期読み込み
      curFile.removeEventListener(Event.SELECT, onSelectFile);
    }

    private function onCompleteReadFile(e:Event):void {
      try {
        // OS標準の文字コードで読み込み
        var str:String = stream.readMultiByte(stream.bytesAvailable, File.systemCharset);
        // OS標準の改行文字への変換
        var pat:RegExp = new RegExp(File.lineEnding, &quot;g&quot;);
        str = str.replace(pat, &quot;n&quot;);
        txtArea_.text = str; // テキストエリアに表示
        stream.removeEventListener(Event.COMPLETE, onCompleteReadFile);
        stream.removeEventListener(IOErrorEvent.IO_ERROR, onIOErrorReadFile);
        stream.removeEventListener(ProgressEvent.PROGRESS, onProgReadFile);
      } catch (err:Error) {
        progLab_.text = &quot;IOError: &quot; + err;
      }
      finally {
        // パイプのクローズ
        if (stream != null) {
          stream.close();
        }
      }
    }

    private function onIOErrorReadFile(e:IOErrorEvent):void {
      Alert.show(&quot;ファイルを読み込み不可&quot;, &quot;Error&quot;, Alert.OK, this); // 第4引数には親オブジェトを渡す
      if (stream != null) {
        stream.close();
      }
    }

    private function onProgReadFile(e:ProgressEvent):void {
      progLab_.text = &quot;Progress: &quot; +  e.bytesLoaded + &quot; / &quot; + e.bytesTotal + &quot; bytes&quot;;
    }
    ]]&gt;
  &lt;/mx:Script&gt;
  &lt;mx:VBox x=&quot;0&quot; y=&quot;0&quot; height=&quot;100%&quot; width=&quot;100%&quot;&gt;
    &lt;mx:HBox width=&quot;100%&quot;&gt;
      &lt;mx:Button label=&quot;ファイルを開く&quot; id=&quot;openBut_&quot; click=&quot;onOpenFileBut();&quot;/&gt;
      &lt;mx:Label id=&quot;progLab_&quot;/&gt;
    &lt;/mx:HBox&gt;
    &lt;mx:TextArea width=&quot;100%&quot; height=&quot;100%&quot; id=&quot;txtArea_&quot;/&gt;
  &lt;/mx:VBox&gt;

&lt;/mx:WindowedApplication&gt;
</pre>
<h3>リファレンス</h3>
<ul>
<li><a href="http://help.adobe.com/ja_JP/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7dc8.html" title="Adobe AIR 1.5 * ファイルの読み取りと書き込みのワークフロー" target="_blank">Adobe AIR 1.5 * ファイルの読み取りと書き込みのワークフロー</a></li>
<li><a href="http://help.adobe.com/ja_JP/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7dac.html" title="Adobe AIR 1.5 * 読み取りバッファと FileStream オブジェクトの bytesAvailable プロパティ" target="_blank">Adobe AIR 1.5 * 読み取りバッファと FileStream オブジェクトの bytesAvailable プロパティ</a></li>
</ul>
<h4>関連すると思われる記事：</h4>
<ul class="similar-posts">
<li><a href="http://www.yukun.info/blog/2008/12/actionscript-air-async-write-text.html" rel="bookmark" title="2008年12月18日">AIR: テキストファイルに書き込み &#8211; openAsync()、writeMultiByte()</a></li>
<li><a href="http://www.yukun.info/blog/2008/06/python-csv-read.html" rel="bookmark" title="2008年6月17日">Python: CSVファイルの読み込み &#8211; csv.readerオブジェクト</a></li>
<li><a href="http://www.yukun.info/blog/2008/06/python-file.html" rel="bookmark" title="2008年6月9日">Python: テキストファイルの読み込み &#8211; read()、readlines()、readline()メソッド</a></li>
<li><a href="http://www.yukun.info/blog/2008/09/python-file-write-writelines.html" rel="bookmark" title="2008年9月6日">Python: テキストファイルに書き込み &#8211; write()、writelines()メソッド</a></li>
<li><a href="http://www.yukun.info/blog/2008/09/python-add-line-number-to-text-file.html" rel="bookmark" title="2008年9月8日">Python: テキストファイルの行頭に行番号を追加</a></li>
</ul>
<p><!-- Similar Posts took 8.120 ms --></p>
<p><a href="http://www.yukun.info/blog/2008/12/actionscript-air-async-read-text.html">AIR: テキストファイルを非同期に読み込む &#8211; openAsync()、readMultiByte()</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yukun.info/blog/2008/12/actionscript-air-async-read-text.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AmazoCluster: 一発で納得のいくものができればいいけれどね・・・</title>
		<link>http://www.yukun.info/blog/2008/12/amazocluster-bata-uncompleted.html</link>
		<comments>http://www.yukun.info/blog/2008/12/amazocluster-bata-uncompleted.html#comments</comments>
		<pubDate>Mon, 15 Dec 2008 11:00:26 +0000</pubDate>
		<dc:creator>yukun</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Graphics]]></category>

		<guid isPermaLink="false">http://www.yukun.info/?p=1265</guid>
		<description><![CDATA[タイトルは反語として読む。 Demo(Uncompleted): http://www.yukun.info/labs/flex/AmazoCluster01/ ※追記：2011年現在Amazonのサービス仕様の変更によ &#8230; <a href="http://www.yukun.info/blog/2008/12/amazocluster-bata-uncompleted.html">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://www.yukun.info/blog/2008/12/amazocluster-bata-uncompleted.html">AmazoCluster: 一発で納得のいくものができればいいけれどね・・・</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p>タイトルは反語として読む。<br />
<a href="http://www.yukun.info/wp-content/uploads/amazon_cluster01.png"><img src="http://www.yukun.info/wp-content/uploads/amazon_cluster01-e1273382871204.png" alt="Amazon Cluster bata Uncompleted" title="amazon_cluster01" width="400" height="317" class="size-full wp-image-1535" /></a></p>
<p>Demo(Uncompleted): <a href="http://www.yukun.info/labs/flex/AmazoCluster01/" title="AmazoCluster bata Uncompleted" target="_blank">http://www.yukun.info/labs/flex/AmazoCluster01/</a><br />
※追記：2011年現在Amazonのサービス仕様の変更により上記のリンク先アプリは正常に動作しません<(_ _)></p>
<dl>
<dt>これは何？</dt>
<p>Amazon.co.jpの任意の商品の類似商品を線で結び関連付けを視覚化するアプリ。（見にくいね。まだ未完成だけど、暇を狙って完成させる）</p>
<dt>どうやって使うの？</dt>
<ol>
<li>商品画像をダブルクリックすると類似商品の画像が表示されます。またその画像をダブルクリックすると・・・以下ループ。</li>
<li>画像をドラッグすると線で結ばれた類似商品も納豆の糸のようについてきます。</li>
</ol>
<dt>今後直したい／追加したい機能は？</dt>
<ol>
<li>商品の検索フォーム</li>
<li>商品-類似商品間の距離調整だけでなく類似-類似間の調整も行う</li>
<li>各イベントによる処理のタイミングの調整</li>
<li>ドラッグ中の商品とその関連商品を結ぶ線の色と画像のサイズを変更
<ul>
<li>関連の深さによって色合いとサイズが変化</li>
</ul>
</li>
<li>商品をクリック／マウスオーバーしたときのアクションを増やす
<ul>
<li>タイトル等の商品の詳細情報を表示</li>
<li>Amazonページへのリンク</li>
</ul>
<li>関連度合いによるエフェクトの区別</li>
</li>
<li>3D表示：Z軸への意味付け（時間軸、ここでは出版年度なんかは最適かも？）</li>
</ol>
<dt>それができたら使うメリットはある？</dt>
<p>たぶん色々とある。作る前から作るべき明確なメリットを定義して作り始めるのがベターというかマストだけど。どちらにせよ仮説と検証の試行錯誤は必要。</p>
<dt>そういえば、なんで作ろうと思ったの？</dt>
<p>以前授業の課題で書いたX11でフラクタル描くコードと卒研のコードを読み直していたら今回のアプリを想像して「ん？これくらいならサクッと書けるかも」と思ったのが発端。また、「検索行動の典型」＝「フォームにキーワードをスペースはさんで入力→ポチっ→ページのリストから選択」とはひと味変った検索のメリットを見出したい、というのがメタ動機。その一例（にできればいいね）。</p>
<dt>作って勉強になったことは？</dt>
<p>一応作ることで、以前よりクラスの役割付け（機能の結合度合い）とデザパタの適応を以前よりスムーズにこなせるようにはなった。おおまかな設計→コーディングの速度も少し上がった（気のせい）。でもそれ以外は・・・うーん、今後の課題。<br />
今回はAmazonの商品を線で繋げたけれど、それをTwitter(つぶやき-つぶやき中のキーワード間、ユーザ-フレンド間)やDelicious(タグ-ブックマーク間、ユーザ-フレンド間)、WordPressブログ（タグ-記事間）に変更しても基本UIの部分はわずかな修正でいけるクラス群だと思う。もちろん、場合によっては類似度を算出する部分も用意する必要がある。</p>
<dt>最近ブログ書いてないね。</dt>
<p>卒研とバイトその他で詰まっているのは理由としては身も蓋もナフサ。単に私の生活の中でブログのプライオリティや使い道が変化してきているのかも。
</dl>
<h4>関連すると思われる記事：</h4>
<ul class="similar-posts">
<li><a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-fill-layer.html" rel="bookmark" title="2008年10月25日">AS3でお絵かきFlashを作る (4)塗りつぶしと簡易レイヤーの操作</a></li>
<li><a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-draw-tool.html" rel="bookmark" title="2008年10月19日">AS3でお絵かきFlashを作る (3)図形描画と配置選択ツールの追加</a></li>
<li><a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-button.html" rel="bookmark" title="2008年10月14日">AS3でお絵かきFlashを作る (2)ボタン作成 &#8211; Flexコンポーネントの導入</a></li>
<li><a href="http://www.yukun.info/blog/2008/11/actionscript-flash-load-server-image-file.html" rel="bookmark" title="2008年11月21日">ActionScript: 画像ファイルをダウンロードして表示 &#8211; Loaderクラス</a></li>
<li><a href="http://www.yukun.info/blog/2008/11/actionscript-paint-flash-air-brush.html" rel="bookmark" title="2008年11月4日">AS3でお絵かきFlashを作る (5)エアーブラシ機能</a></li>
</ul>
<p><!-- Similar Posts took 16.877 ms --></p>
<p><a href="http://www.yukun.info/blog/2008/12/amazocluster-bata-uncompleted.html">AmazoCluster: 一発で納得のいくものができればいいけれどね・・・</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yukun.info/blog/2008/12/amazocluster-bata-uncompleted.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ActionScript: 画像ファイルをダウンロードして表示 &#8211; Loaderクラス</title>
		<link>http://www.yukun.info/blog/2008/11/actionscript-flash-load-server-image-file.html</link>
		<comments>http://www.yukun.info/blog/2008/11/actionscript-flash-load-server-image-file.html#comments</comments>
		<pubDate>Fri, 21 Nov 2008 12:30:51 +0000</pubDate>
		<dc:creator>yukun</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[Image]]></category>
		<category><![CDATA[Network]]></category>

		<guid isPermaLink="false">http://www.yukun.info/?p=1256</guid>
		<description><![CDATA[サーバ上にあるイメージファイルをダウンロードして表示するサンプル。Loaderクラスで画像など(SWF, JPEG, GIF, PNG)をダウンロードし、そのプロセス中に送出するイベントはLoaderInfoクラスが管理 &#8230; <a href="http://www.yukun.info/blog/2008/11/actionscript-flash-load-server-image-file.html">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://www.yukun.info/blog/2008/11/actionscript-flash-load-server-image-file.html">ActionScript: 画像ファイルをダウンロードして表示 &#8211; Loaderクラス</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p>サーバ上にあるイメージファイルをダウンロードして表示するサンプル。Loaderクラスで画像など(SWF, JPEG, GIF, PNG)をダウンロードし、そのプロセス中に送出するイベントはLoaderInfoクラスが管理。</p>
<h2>ソースコード</h2>
<pre>
package info.yukun
{
	import flash.display.Loader;
	import flash.display.LoaderInfo;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.net.URLRequest;

	/**
	 * 外部画像のロードサンプル
	 */
	public class LoadImage extends Sprite {
		private var imageURL:String =
			"http://www.google.co.jp/intl/ja/images/about_logo.gif";
		private var imageLoader:Loader;

		public function LoadImage():void {
			init();
		}

		private function init(e:Event = null):void {
			imageLoader = new Loader();
			var imageURLreq:URLRequest = new URLRequest(imageURL);
			var imgInfo:LoaderInfo = imageLoader.contentLoaderInfo;
			imgInfo.addEventListener(Event.INIT, onInit);
			imgInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOerror);
			addChild(imageLoader);
			imageLoader.load(imageURLreq);
		}

		// ダウンロード完了
		private function onInit(e:Event):void {
			trace("Can access the loaded object.");
		}

		// IOエラーによりダウンロード失敗
		private function onIOerror(e:IOErrorEvent):void {
			trace("IO Error.");
		}
	}
}
</pre>
<h2>リファレンス</h2>
<ul>
<li><a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/Loader.html" title="Loader - ActionScript 3.0 Language and Components Reference" target="_blank">Loader &#8211; ActionScript 3.0 Language and Components Reference</a></li>
<li><a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/LoaderInfo.html" title="LoaderInfo - ActionScript 3.0 Language and Components Reference" target="_blank">LoaderInfo &#8211; ActionScript 3.0 Language and Components Reference</a></li>
</ul>
<h4>関連すると思われる記事：</h4>
<ul class="similar-posts">
<li><a href="http://www.yukun.info/blog/2008/08/actionscript-mouse-event-listener.html" rel="bookmark" title="2008年8月20日">ActionScript: マウスをイベントリスナーに登録</a></li>
<li><a href="http://www.yukun.info/blog/2008/10/actionscript-embed-mp3-sound-swf-flash.html" rel="bookmark" title="2008年10月8日">ActionScript: Flash(*.swf)にmp3ファイルを埋め込む &#8211; Embedタグ</a></li>
<li><a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-draw-tool.html" rel="bookmark" title="2008年10月19日">AS3でお絵かきFlashを作る (3)図形描画と配置選択ツールの追加</a></li>
<li><a href="http://www.yukun.info/blog/2010/01/android-draw-image-resources.html" rel="bookmark" title="2010年1月2日">Android: リソースの画像ファイルの拡大・縮小描画 &#8211; drawBitmap()</a></li>
<li><a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-fill-layer.html" rel="bookmark" title="2008年10月25日">AS3でお絵かきFlashを作る (4)塗りつぶしと簡易レイヤーの操作</a></li>
</ul>
<p><!-- Similar Posts took 8.323 ms --></p>
<p><a href="http://www.yukun.info/blog/2008/11/actionscript-flash-load-server-image-file.html">ActionScript: 画像ファイルをダウンロードして表示 &#8211; Loaderクラス</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yukun.info/blog/2008/11/actionscript-flash-load-server-image-file.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AS3でお絵かきFlashを作る (5)エアーブラシ機能</title>
		<link>http://www.yukun.info/blog/2008/11/actionscript-paint-flash-air-brush.html</link>
		<comments>http://www.yukun.info/blog/2008/11/actionscript-paint-flash-air-brush.html#comments</comments>
		<pubDate>Tue, 04 Nov 2008 12:30:00 +0000</pubDate>
		<dc:creator>yukun</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[Paint]]></category>

		<guid isPermaLink="false">http://www.yukun.info/?p=1237</guid>
		<description><![CDATA[前回までのUIからは一旦離れて、PaintShopのエアーブラシみたいな機能のみのFlashを書いてみました。以下のページ上でマウスをドラッグをすると赤色の線が引けます。 http://www.yukun.info/la &#8230; <a href="http://www.yukun.info/blog/2008/11/actionscript-paint-flash-air-brush.html">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://www.yukun.info/blog/2008/11/actionscript-paint-flash-air-brush.html">AS3でお絵かきFlashを作る (5)エアーブラシ機能</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-fill-layer.html" title="AS3でお絵かきFlashを作る (4)塗りつぶしと簡易レイヤーの操作 - Yukun's Blog" target="_blank">前回</a>までのUIからは一旦離れて、PaintShopのエアーブラシみたいな機能のみのFlashを書いてみました。以下のページ上でマウスをドラッグをすると赤色の線が引けます。<br />
<a href="http://www.yukun.info/labs/flex/paint05/" title="「ペイントツール的なもの(5)」です。" target="_blank">http://www.yukun.info/labs/flex/paint05/</a><br />
今回はBitmapクラス周辺の使い方を練習してみましたが、結構知らないことがあり勉強になりました。今回のプログラムは結構雑な作りになってしまったので、後日手直ししてみよう。<br />
<h4>関連すると思われる記事：</h4>
<ul class="similar-posts">
<li><a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-button.html" rel="bookmark" title="2008年10月14日">AS3でお絵かきFlashを作る (2)ボタン作成 &#8211; Flexコンポーネントの導入</a></li>
<li><a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-fill-layer.html" rel="bookmark" title="2008年10月25日">AS3でお絵かきFlashを作る (4)塗りつぶしと簡易レイヤーの操作</a></li>
<li><a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-draw-tool.html" rel="bookmark" title="2008年10月19日">AS3でお絵かきFlashを作る (3)図形描画と配置選択ツールの追加</a></li>
<li><a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-undo-redo.html" rel="bookmark" title="2008年10月11日">AS3でお絵かきFlashを作る (1)自由曲線のUndo、Redo</a></li>
<li><a href="http://www.yukun.info/blog/2008/02/as3-start.html" rel="bookmark" title="2008年2月27日">AS3はじめました</a></li>
</ul>
<p><!-- Similar Posts took 10.547 ms --></p>
<p><a href="http://www.yukun.info/blog/2008/11/actionscript-paint-flash-air-brush.html">AS3でお絵かきFlashを作る (5)エアーブラシ機能</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yukun.info/blog/2008/11/actionscript-paint-flash-air-brush.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AS3でお絵かきFlashを作る (4)塗りつぶしと簡易レイヤーの操作</title>
		<link>http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-fill-layer.html</link>
		<comments>http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-fill-layer.html#comments</comments>
		<pubDate>Fri, 24 Oct 2008 22:10:02 +0000</pubDate>
		<dc:creator>yukun</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[Paint]]></category>

		<guid isPermaLink="false">http://www.yukun.info/?p=1221</guid>
		<description><![CDATA[今記事で4回目ですねー。デモは以下のページに用意しました。 http://www.yukun.info/labs/flex/paint04/ 今回の主な追加機能は、前回の改善点にも含まれていた (1)長方形と楕円描画ツー &#8230; <a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-fill-layer.html">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-fill-layer.html">AS3でお絵かきFlashを作る (4)塗りつぶしと簡易レイヤーの操作</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p>今記事で4回目ですねー。デモは以下のページに用意しました。<br />
<a href="http://www.yukun.info/labs/flex/paint04/" title="「ペイントツール的なもの(4)」です。" target="_blank">http://www.yukun.info/labs/flex/paint04/</a><br />
今回の主な追加機能は、<a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-draw-tool.html" title="AS3でお絵かきFlashを作る (3)図形描画と配置選択ツールの追加 - Yukun's Blog" target="_blank">前回</a>の改善点にも含まれていた<br />
(1)長方形と楕円描画ツールへの「塗りつぶし」機能<br />
(2)各描画図形間のレイヤー（重なり具合）移動機能<br />
です。あと少しインスタンスの生成を押さえた処理に変更したので若干パフォーマンスが上がっているかと思います（約1割弱）。</p>
<p>まず、(2)のオブジェクト間の階層（レイヤー）移動機能ですが、これは描画した図形上で右クリックを押すことで呼び出せるコンテキストメニューから使えます（下図）。</p>
<p><a href="http://www.yukun.info/wp-content/uploads/flex_paint04_child_move.gif"><img src="http://www.yukun.info/wp-content/uploads/flex_paint04_child_move.gif" alt="Flexのペイントツールのコンテキストメニュー（レイヤー移動）" title="flex_paint04_child_move" width="324" height="270" class="size-full wp-image-1537" /></a></p>
<p>この機能で図形の重なり順序を調節することが出来ます。また、「配置」ツールで図形を選択するとその図形は自動的に最前面レイヤーに移動されます。これによって、マウスイベントの発生源を図形毎に持たせても、重なり具合によるイベントの取りこぼしか無くなる利点があります。結果、OOPにある程度沿ったプログラミングを行うことを可能にします。</p>
<p>ちなみにこのレイヤー移動アクションは履歴には記録せずundo、redoの対象にはしませんでした（このレベルのアプリに対しては必要ないかと思ったので）。もし貼り絵のように絵を描きたく、またundoを利用していきたい場合はPhotoshopやGIMP等の明確なレイヤー機構を実装したほうがすっきりすると思います。内部機能の実装の手間はさほど掛かりませんが、ツールボックスのようなUIを作らなくてはいけないのが今の私にとってメンドイところです。しかしFlexコンポーネントを学ぶ良い機会でもあるのでさわりだけでもやってみようかな。</p>
<p>こう機能が増えてくるとユーザインターフェース(UI)にもしっかり取り組まなければならないんですが、UIはリリースするプラットフォーム（PCデスクトップ上、PCブラウザ上、モバイル、スマートフォン）に依存する部分が大きいのでまだ取り掛かるのはいいかなと思ったり（ぉぃ）。</p>
<p>さて、今回で基本的なブラシツール（ベクター以外）は揃ったかと思いますので、そろそろテキスト系の機能を実装していきたいと思います。初回に「頭の中のアイディアを楽しくまとめられるツールを作ってみたい」とのたまっていたので、ちょっとチャレンジしてみます。合わせてベクターツールも追加してみます。<br />
<h4>関連すると思われる記事：</h4>
<ul class="similar-posts">
<li><a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-draw-tool.html" rel="bookmark" title="2008年10月19日">AS3でお絵かきFlashを作る (3)図形描画と配置選択ツールの追加</a></li>
<li><a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-undo-redo.html" rel="bookmark" title="2008年10月11日">AS3でお絵かきFlashを作る (1)自由曲線のUndo、Redo</a></li>
<li><a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-button.html" rel="bookmark" title="2008年10月14日">AS3でお絵かきFlashを作る (2)ボタン作成 &#8211; Flexコンポーネントの導入</a></li>
<li><a href="http://www.yukun.info/blog/2008/11/actionscript-paint-flash-air-brush.html" rel="bookmark" title="2008年11月4日">AS3でお絵かきFlashを作る (5)エアーブラシ機能</a></li>
<li><a href="http://www.yukun.info/blog/2008/12/amazocluster-bata-uncompleted.html" rel="bookmark" title="2008年12月15日">AmazoCluster: 一発で納得のいくものができればいいけれどね・・・</a></li>
</ul>
<p><!-- Similar Posts took 11.164 ms --></p>
<p><a href="http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-fill-layer.html">AS3でお絵かきFlashを作る (4)塗りつぶしと簡易レイヤーの操作</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yukun.info/blog/2008/10/actionscript-paint-flash-flex-fill-layer.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

