<?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>GRAM &#124; グラム &#187; actionscript</title>
	<atom:link href="http://www.brooklyn.jp/blog/category/actionscript/feed" rel="self" type="application/rss+xml" />
	<link>http://www.brooklyn.jp/blog</link>
	<description>Build Inter-Communication through Designing</description>
	<lastBuildDate>Mon, 20 Jun 2011 05:45:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>atSceneDescend で到着シーンを取得</title>
		<link>http://www.brooklyn.jp/blog/actionscript/atscenedescend-%e3%81%a7%e5%88%b0%e7%9d%80%e3%82%b7%e3%83%bc%e3%83%b3%e3%82%92%e5%8f%96%e5%be%97.html</link>
		<comments>http://www.brooklyn.jp/blog/actionscript/atscenedescend-%e3%81%a7%e5%88%b0%e7%9d%80%e3%82%b7%e3%83%bc%e3%83%b3%e3%82%92%e5%8f%96%e5%be%97.html#comments</comments>
		<pubDate>Mon, 09 May 2011 12:36:39 +0000</pubDate>
		<dc:creator>jam</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[progression]]></category>

		<guid isPermaLink="false">http://www.brooklyn.jp/blog/?p=839</guid>
		<description><![CDATA[久々にウェブサイトのオーサリングで、Progression 4を使ったら、みごとはまる。
グローバルメニューなどで、シーン移動時にアクションがある場合、直リンでアクセスされたときにメニューが全然動かない状態になった。
そんなときの Progression 4 での到着シーンのID取得方法。
[ IndexScene.as ]

// 下記を追加する
/**
 * シーン移動時に目的地がシーンオブジェクトの子階層であり、かつ出発地ではない場合に、自身が移動を中継した瞬間に送出されます。
 * このイベント処理の実行中には、ExecutorObject を使用した非同期処理が行えます。
 */
override protected function atSceneDescend():void {
	if( manager.destinedSceneId.toString() == "/index/scene_a" ) {
		// scene_a の場合の処理
	} else if( manager.destinedSceneId.toString() == "/index/scene_b" ) {
		// scene_b の場合の処理
	} else if( manager.destinedSceneId.toString() == "/index/scene_c" ) {
		// scene_c の場合の処理
	}

	addCommand(
		// なにか処理する場合はここに記述
	);
}


っと、atSceneDescend() でいきなり子シーンにアクセルするときのイベントを取得できるので、
このときに、manager.destinedSceneIdでシーンのnameで設定しておいたString型がとれる。
それに応じて処理を変えていく。
SceneObjectクラスにそーゆーのがあるかと思ってずっと探してたら、Progressionクラスにありました。なるほど、管理してるクラスに任せるのは理にかなってる、さすがです。
&#8212;
[追記]
間違えました（と言うか、付け忘れてました。。）
manager.destinedSceneId は SceneId が戻り値なので、String型じゃありません。
toString() を加えるか、String型でキャストしないと等価演算子がまともに機能しませんのです。
]]></description>
			<content:encoded><![CDATA[<p>久々にウェブサイトのオーサリングで、Progression 4を使ったら、みごとはまる。</p>
<p>グローバルメニューなどで、シーン移動時にアクションがある場合、直リンでアクセスされたときにメニューが全然動かない状態になった。<br />
そんなときの Progression 4 での到着シーンのID取得方法。</p>
<p>[ IndexScene.as ]</p>
<blockquote><pre>
// 下記を追加する
/**
 * シーン移動時に目的地がシーンオブジェクトの子階層であり、かつ出発地ではない場合に、自身が移動を中継した瞬間に送出されます。
 * このイベント処理の実行中には、ExecutorObject を使用した非同期処理が行えます。
 */
override protected function atSceneDescend():void {
	if( manager.destinedSceneId.toString() == "/index/scene_a" ) {
		// scene_a の場合の処理
	} else if( manager.destinedSceneId.toString() == "/index/scene_b" ) {
		// scene_b の場合の処理
	} else if( manager.destinedSceneId.toString() == "/index/scene_c" ) {
		// scene_c の場合の処理
	}

	addCommand(
		// なにか処理する場合はここに記述
	);
}
</pre>
</blockquote>
<p>っと、atSceneDescend() でいきなり子シーンにアクセルするときのイベントを取得できるので、<br />
このときに、manager.destinedSceneIdでシーンのnameで設定しておいたString型がとれる。<br />
それに応じて処理を変えていく。</p>
<p>SceneObjectクラスにそーゆーのがあるかと思ってずっと探してたら、Progressionクラスにありました。なるほど、管理してるクラスに任せるのは理にかなってる、さすがです。</p>
<p>&#8212;<br />
[追記]<br />
間違えました（と言うか、付け忘れてました。。）<br />
manager.destinedSceneId は SceneId が戻り値なので、String型じゃありません。<br />
toString() を加えるか、String型でキャストしないと等価演算子がまともに機能しませんのです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brooklyn.jp/blog/actionscript/atscenedescend-%e3%81%a7%e5%88%b0%e7%9d%80%e3%82%b7%e3%83%bc%e3%83%b3%e3%82%92%e5%8f%96%e5%be%97.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SNS のリンク作成</title>
		<link>http://www.brooklyn.jp/blog/actionscript/sns-%e3%81%ae%e3%83%aa%e3%83%b3%e3%82%af%e4%bd%9c%e6%88%90.html</link>
		<comments>http://www.brooklyn.jp/blog/actionscript/sns-%e3%81%ae%e3%83%aa%e3%83%b3%e3%82%af%e4%bd%9c%e6%88%90.html#comments</comments>
		<pubDate>Mon, 05 Apr 2010 04:51:21 +0000</pubDate>
		<dc:creator>jam</dc:creator>
				<category><![CDATA[actionscript]]></category>

		<guid isPermaLink="false">http://www.brooklyn.jp/blog/?p=701</guid>
		<description><![CDATA[今やってるプロジェクトで実装したときのメモ。
[ Twitter ]
クリックで自分のツイートにサイトのリンクと名前(任意)を入力済みにする


private function twitterButtonClick( e:MouseEvent ):void {
	var twitter_url:String = "http://twitter.com/home?status=";
	var site_name:String = escapeMultiByte("GRAM &#124; グラム");
	var site_url:String = "http://www.brooklyn.jp/";
	var req:URLRequest = new URLRequest( twitter_url + site_name + " -- " + site_url );
	navigateToURL( req, "_blank" );
}


[ Facebook ]
Facebook の「プロフィール -> 掲示板」のとこにシェアで掲載できる。


private function facebookButtonClick( e:MouseEvent ):void {
	var facebook_url:String = "http://www.facebook.com/sharer.php?u=";
	var site_name:String = escapeMultiByte("GRAM &#124; グラム");
	var site_url:String [...]]]></description>
			<content:encoded><![CDATA[<p>今やってるプロジェクトで実装したときのメモ。</p>
<p>[ Twitter ]<br />
クリックで自分のツイートにサイトのリンクと名前(任意)を入力済みにする</p>
<blockquote>
<pre>
private function twitterButtonClick( e:MouseEvent ):void {
	var twitter_url:String = "http://twitter.com/home?status=";
	var site_name:String = escapeMultiByte("GRAM | グラム");
	var site_url:String = "http://www.brooklyn.jp/";
	var req:URLRequest = new URLRequest( twitter_url + site_name + " -- " + site_url );
	navigateToURL( req, "_blank" );
}
</pre>
</blockquote>
<p>[ Facebook ]<br />
Facebook の「プロフィール -> 掲示板」のとこにシェアで掲載できる。</p>
<blockquote>
<pre>
private function facebookButtonClick( e:MouseEvent ):void {
	var facebook_url:String = "http://www.facebook.com/sharer.php?u=";
	var site_name:String = escapeMultiByte("GRAM | グラム");
	var site_url:String = "http://www.brooklyn.jp/";
	var req:URLRequest = new URLRequest( facebook_url + site_url + "&#038;t=" + site_name );
	navigateToURL( req, "_blank" );
}
</pre>
</blockquote>
<p>日本語を入力する場合は UTF-8 で URL エンコードが必要なので escapeMultiByte() を使って変換の必要アリ。</p>
<p>あと、Facebook の場合、こっちが指定した文字列とは関係なく、対象のサイトの title と description を取得してる。<br />
しかも、サムネイルに使う画像も対象のサイトの img タグを引っこ抜いているんじゃないか疑惑、だとしたら相当高機能ですね、このシェアリンク。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brooklyn.jp/blog/actionscript/sns-%e3%81%ae%e3%83%aa%e3%83%b3%e3%82%af%e4%bd%9c%e6%88%90.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Progression と Firefox 3.6</title>
		<link>http://www.brooklyn.jp/blog/actionscript/progression/progression-%e3%81%a8-firefox-3-6.html</link>
		<comments>http://www.brooklyn.jp/blog/actionscript/progression/progression-%e3%81%a8-firefox-3-6.html#comments</comments>
		<pubDate>Wed, 24 Feb 2010 03:02:26 +0000</pubDate>
		<dc:creator>jam</dc:creator>
				<category><![CDATA[progression]]></category>

		<guid isPermaLink="false">http://www.brooklyn.jp/blog/?p=694</guid>
		<description><![CDATA[Progression 3.1.82 を使っていて、Firefox の今のところ一番新しい Firefox 3.6 で確認したら、謎のスクロールバーが出現。。。
スクロールする範囲もないので、困ったもんですなっと。
とりあえず、progression.css に下記を追加で回避。


#flashcontent {
	position    :absolute;
	left        :50%;
	top         :50%;
	width       :740px;
	height      :300px;
	line-height	:0;
	margin-left :-370px;
	margin-top  :-150px;
	overflow	:hidden;	
	}


flash の全画面表示でも今のところ問題無しなので、多分大丈夫かと。
]]></description>
			<content:encoded><![CDATA[<p>Progression 3.1.82 を使っていて、Firefox の今のところ一番新しい Firefox 3.6 で確認したら、謎のスクロールバーが出現。。。</p>
<p>スクロールする範囲もないので、困ったもんですなっと。</p>
<p>とりあえず、progression.css に下記を追加で回避。</p>
<blockquote>
<pre>
#flashcontent {
	position    :absolute;
	left        :50%;
	top         :50%;
	width       :740px;
	height      :300px;
	line-height	:0;
	margin-left :-370px;
	margin-top  :-150px;
	overflow	:hidden;	<!-- これ -->
	}
</pre>
</blockquote>
<p>flash の全画面表示でも今のところ問題無しなので、多分大丈夫かと。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brooklyn.jp/blog/actionscript/progression/progression-%e3%81%a8-firefox-3-6.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iTunesへのリンク作る</title>
		<link>http://www.brooklyn.jp/blog/actionscript/itunes%e3%81%b8%e3%81%ae%e3%83%aa%e3%83%b3%e3%82%af%e4%bd%9c%e3%82%8b.html</link>
		<comments>http://www.brooklyn.jp/blog/actionscript/itunes%e3%81%b8%e3%81%ae%e3%83%aa%e3%83%b3%e3%82%af%e4%bd%9c%e3%82%8b.html#comments</comments>
		<pubDate>Tue, 08 Dec 2009 14:06:52 +0000</pubDate>
		<dc:creator>jam</dc:creator>
				<category><![CDATA[actionscript]]></category>

		<guid isPermaLink="false">http://www.brooklyn.jp/blog/?p=670</guid>
		<description><![CDATA[アプリへのリンクは Generator があるので、それを使う
itmsLinkMaker
それか、もっと簡単なのは
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;
アーティスト：http://itunes.com/ARTIST_NAME
アプリ：http://itunes.com/app/APP_NAME
映画：http://itunes.com/movie/MOVIE_NAME
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;
といった感じで設置するとあとは勝手にリダイレクトしてくれる。
注）日本語の場合は2バイト文字を英語にするかデコードする必要アリ
ダメ → http://itunes.com/アーティスト
OK → http://itunes.com/artist
OK → http://itunes.com/%83A%81%5b%83e%83B%83X%83g
デコードする場合はこれ
]]></description>
			<content:encoded><![CDATA[<p>アプリへのリンクは Generator があるので、それを使う<br />
<a href="http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/itmsLinkMaker">itmsLinkMaker</a></p>
<p>それか、もっと簡単なのは<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
アーティスト：http://itunes.com/ARTIST_NAME<br />
アプリ：http://itunes.com/app/APP_NAME<br />
映画：http://itunes.com/movie/MOVIE_NAME<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
といった感じで設置するとあとは勝手にリダイレクトしてくれる。</p>
<p>注）日本語の場合は2バイト文字を英語にするかデコードする必要アリ<br />
ダメ → http://itunes.com/アーティスト<br />
OK → http://itunes.com/artist<br />
OK → http://itunes.com/%83A%81%5b%83e%83B%83X%83g</p>
<p>デコードする場合は<a href="http://www.tagindex.com/tool/url.html">これ</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brooklyn.jp/blog/actionscript/itunes%e3%81%b8%e3%81%ae%e3%83%aa%e3%83%b3%e3%82%af%e4%bd%9c%e3%82%8b.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Progression でクロスフェード</title>
		<link>http://www.brooklyn.jp/blog/actionscript/progression-%e3%81%a7%e3%82%af%e3%83%ad%e3%82%b9%e3%83%95%e3%82%a7%e3%83%bc%e3%83%89.html</link>
		<comments>http://www.brooklyn.jp/blog/actionscript/progression-%e3%81%a7%e3%82%af%e3%83%ad%e3%82%b9%e3%83%95%e3%82%a7%e3%83%bc%e3%83%89.html#comments</comments>
		<pubDate>Tue, 01 Dec 2009 15:47:47 +0000</pubDate>
		<dc:creator>jam</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[progression]]></category>

		<guid isPermaLink="false">http://www.brooklyn.jp/blog/?p=666</guid>
		<description><![CDATA[久々に Progression 使ってサイト構築したときの Tips
Progression でのシーンの移動の際、通常は _onGoto() と _onInit() 内にある addCommand() の２つの処理を待つのですが、
どーしてもクロスフェードが必要になった場合の処理。
SerialList を static な変数として生成しておいて、都度アクセスするのが一番効率良いやり方らしいス。
(自分確認ではなく開発者本人がおっしゃってたので、大丈夫かと。)
やり方はいたって簡単。
IndexScene と ChildScene の _onInit と _onGoto の addCommand() での処理で静的な変数として生成した SerialList を呼ぶ。
(注：そのままだと addCommand は SerialList のためクロスフェードしないので、ParallelList にしておく必要アリ)
-IndexScene.as



public static var customCommands:SerialList = new SerialList();	// ← これ！

public var page:IndexPage;

/**
* コンストラクタ
*/
public function IndexScene() {
	addScene( new ChildScene( "child" ) );

	page = new IndexPage();
	page.alpha = 0;
}

/**
* シーンオブジェクトが目的地だった場合に、到達した瞬間に送出されます。
* [...]]]></description>
			<content:encoded><![CDATA[<p>久々に Progression 使ってサイト構築したときの Tips</p>
<p>Progression でのシーンの移動の際、通常は _onGoto() と _onInit() 内にある addCommand() の２つの処理を待つのですが、<br />
どーしてもクロスフェードが必要になった場合の処理。<br />
SerialList を static な変数として生成しておいて、都度アクセスするのが一番効率良いやり方らしいス。<br />
(自分確認ではなく開発者本人がおっしゃってたので、大丈夫かと。)</p>
<p>やり方はいたって簡単。<br />
IndexScene と ChildScene の _onInit と _onGoto の addCommand() での処理で静的な変数として生成した SerialList を呼ぶ。<br />
(注：そのままだと addCommand は SerialList のためクロスフェードしないので、ParallelList にしておく必要アリ)</p>
<p>-IndexScene.as</p>
<blockquote>
<pre>

public static var customCommands:SerialList = new SerialList();	// ← これ！

public var page:IndexPage;

/**
* コンストラクタ
*/
public function IndexScene() {
	addScene( new ChildScene( "child" ) );

	page = new IndexPage();
	page.alpha = 0;
}

/**
* シーンオブジェクトが目的地だった場合に、到達した瞬間に送出されます。
* このイベント処理の実行中には、addCommand() メソッド、及び insertCommand() メソッドによるコマンドの同期処理が行えます。
*/
protected override function _onInit():void {
	// 実行したいコマンドを登録します。
	addCommand(
		new ParallelList( null,
			IndexScene.customCommands,	// ← ここで実行。初回は中身が空なので何も起きませぬ。
			new SerialList( null,
				new AddChild( progression.container, page ),
				new DoTweener( page, { alpha:1, time:2 } )
			)
		),
		function():void {
			IndexScene.customCommands.clearCommand( true );		// ← クロスフェード後に中身をクリアしとく
		}
	);
}

/**
* シーンオブジェクトが出発地だった場合に、移動を開始した瞬間に送出されます。
* このイベント処理の実行中には、addCommand() メソッド、及び insertCommand() メソッドによるコマンドの同期処理が行えます。
*/
protected override function _onGoto():void {
	IndexScene.customCommands.addCommand(	// ← ここでは RemoveChild しないで、customCommands に登録だけしておく
		new DoTweener( page, { alpha:0, time:2 } ),
		new RemoveChild( progression.container, page )
	);

	// 実行したいコマンドを登録します。
	addCommand(
	);
}
</pre>
</blockquote>
<p>下階層のシーンでも基本的に処理は一緒。</p>
<p>-ChildScene.as</p>
<blockquote>
<pre>
/**
* シーンオブジェクトが目的地だった場合に、到達した瞬間に送出されます。
* このイベント処理の実行中には、addCommand() メソッド、及び insertCommand() メソッドによるコマンドの同期処理が行えます。
*/
protected override function _onInit():void {
	// 実行したいコマンドを登録します。
	addCommand(
		new ParallelList( null,
			IndexScene.customCommands,	// ← ここで実行。IndexScene の _onGoto() で設定したコマンドが同時に実行されます。
			new SerialList( null,
				new AddChild( progression.container, page ),
				new DoTweener( page, { alpha:1, time:2 } )
			)
		),
		function():void {
			IndexScene.customCommands.clearCommand( true );		// ← クロスフェード後に中身をちゃんとクリアしとく
		}
	);
}

/**
* シーンオブジェクトが出発地だった場合に、移動を開始した瞬間に送出されます。
* このイベント処理の実行中には、addCommand() メソッド、及び insertCommand() メソッドによるコマンドの同期処理が行えます。
*/
protected override function _onGoto():void {
	IndexScene.customCommands.addCommand(	// ← このページの処理を登録
		new DoTweener( page, { alpha:0, time:2 } ),
		new RemoveChild( progression.container, page )
	);

	// 実行したいコマンドを登録します。
	addCommand(
	);
}
</pre>
</blockquote>
<p>シーンの _onGoto() では、コマンドの登録だけして、<br />
実際の処理は、遷移先のシーンの _onInit(() で実行させるって行程です。<br />
この処理を全部のシーンで実行させるようにしておけば、全部のページ遷移でクロスフェードになります。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brooklyn.jp/blog/actionscript/progression-%e3%81%a7%e3%82%af%e3%83%ad%e3%82%b9%e3%83%95%e3%82%a7%e3%83%bc%e3%83%89.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BulkLoader の中身</title>
		<link>http://www.brooklyn.jp/blog/personal/bulkloader-%e3%81%ae%e4%b8%ad%e8%ba%ab.html</link>
		<comments>http://www.brooklyn.jp/blog/personal/bulkloader-%e3%81%ae%e4%b8%ad%e8%ba%ab.html#comments</comments>
		<pubDate>Thu, 13 Aug 2009 20:07:36 +0000</pubDate>
		<dc:creator>jam</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.brooklyn.jp/blog/?p=548</guid>
		<description><![CDATA[はどーなってんのか？？
最初に細々したパーツを読み込むときに BulkLoader を使ってたのですが、
外部 SWF のライブラリに置いてあるファイルを使う場合は、LoaderContext Class に applicationDomain 設定しないと使えないのだけれど、BulkLoader で読み込んだ SWF ってこー言った場合どーなるんでしょうか？？
ざらっとソースを見た感じ、見当たらなんだなぁ。。。
br.com.stimuli.loading.loadingtypes.URLItem っぽいけど、URLLoader が基本クラスみたいで、そんな記述は一切無しな感じで。
やっぱ素材置き場みたいなSWFを作る場合は、自分で書くしかなさそうな予感。
むむー
しかし、XMLの解析とデータ格納が毎回非常に疲れる。。。
でもサイト毎に微妙に違うから、毎度毎度、どーっと疲れさせられる。
これも何とかしたい。
どーでもいいお話、我が家の前は、緑があるので蝉がとってもうるさいのであります。
いつも寝るタイミングを逃すとこーなるのですね。
すいません、夏は早めに寝るようにします。
]]></description>
			<content:encoded><![CDATA[<p>はどーなってんのか？？</p>
<p>最初に細々したパーツを読み込むときに BulkLoader を使ってたのですが、<br />
外部 SWF のライブラリに置いてあるファイルを使う場合は、LoaderContext Class に applicationDomain 設定しないと使えないのだけれど、BulkLoader で読み込んだ SWF ってこー言った場合どーなるんでしょうか？？</p>
<p>ざらっとソースを見た感じ、見当たらなんだなぁ。。。<br />
br.com.stimuli.loading.loadingtypes.URLItem っぽいけど、URLLoader が基本クラスみたいで、そんな記述は一切無しな感じで。<br />
やっぱ素材置き場みたいなSWFを作る場合は、自分で書くしかなさそうな予感。</p>
<p>むむー</p>
<p>しかし、XMLの解析とデータ格納が毎回非常に疲れる。。。<br />
でもサイト毎に微妙に違うから、毎度毎度、どーっと疲れさせられる。<br />
これも何とかしたい。</p>
<p>どーでもいいお話、我が家の前は、緑があるので蝉がとってもうるさいのであります。<br />
いつも寝るタイミングを逃すとこーなるのですね。<br />
すいません、夏は早めに寝るようにします。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brooklyn.jp/blog/personal/bulkloader-%e3%81%ae%e4%b8%ad%e8%ba%ab.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex SDK on Leopard</title>
		<link>http://www.brooklyn.jp/blog/actionscript/flex-sdk-on-leopard.html</link>
		<comments>http://www.brooklyn.jp/blog/actionscript/flex-sdk-on-leopard.html#comments</comments>
		<pubDate>Mon, 27 Jul 2009 02:11:54 +0000</pubDate>
		<dc:creator>jam</dc:creator>
				<category><![CDATA[actionscript]]></category>

		<guid isPermaLink="false">http://www.brooklyn.jp/blog/?p=534</guid>
		<description><![CDATA[Mac OS X Leopard で Flex SDK 使う方法。
Font ファイルを埋め込んだ AS ファイルをコンパイルする必要があったので、色々調べて試してみました。
&#8211;
参考させて頂いたサイト：
t100:Flex SDK を Mac OS X10.5 へインストール（前編）
Flex SDKをMacに導入 &#8211; Yasu Log
&#8211;
以下、簡単な手順です：
1.
Adobe Open Source で Flex SDK をダウンロード。
自分がダウンロードしたのは、「Latest Milestone Release Builds」ってとこの Build 3.3.0.4852 の Adobe Flex SDK。
2.
任意の場所にダウンロードしたファイルをインストール (ただ移動するだけですが。。。)
Xcode がインストールされていると、Macintosh HD 上に「Developer」というディレクトリがある (はず)。
今回は無かったので、自分で作りました。
っで、その中に Xcode インストール時と同じ階層をつくって、ダウンロードしたファイルを移動する。
「Macintosh HD/Developer/SDKs/flex_sdk_3/」という状況にしました。
ちなみに、上記の「Developer/SDKs/」は自分でこしらえた部分です。
3.
ターミナルでコンパイルするために flex_sdk_3 へのパスを設定しなきゃいけないっとのこと。
mi を使うと、不可視のファイルが編集できるので、mi の「不可視ファイルを開く」を選択して
「Macintosh HD/User/USER_NAME/」にある .bash_profile を開きます。
これもない場合は自分で作ってしまってOKです。
.bash_profile ファイルに flex_sdk_3/bin/ へのパスを記述します。


PATH=$PATH:/Developer/SDKs/flex_sdk_3/bin


上記を記述して保存したらインストールは完了です。
4.
あとは AS [...]]]></description>
			<content:encoded><![CDATA[<p>Mac OS X Leopard で Flex SDK 使う方法。<br />
Font ファイルを埋め込んだ AS ファイルをコンパイルする必要があったので、色々調べて試してみました。</p>
<p>&#8211;<br />
参考させて頂いたサイト：<br />
<a href="http://blog.livedoor.jp/pokkinkin/archives/50423179.html" target="_blank">t100:Flex SDK を Mac OS X10.5 へインストール（前編）</a><br />
<a href="http://d.hatena.ne.jp/yasu-log/20070324/1174760178" target="_blank">Flex SDKをMacに導入 &#8211; Yasu Log</a><br />
&#8211;</p>
<p>以下、簡単な手順です：<br />
1.<br />
<a href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+3" target="_blank">Adobe Open Source</a> で Flex SDK をダウンロード。<br />
自分がダウンロードしたのは、「Latest Milestone Release Builds」ってとこの Build 3.3.0.4852 の Adobe Flex SDK。</p>
<p>2.<br />
任意の場所にダウンロードしたファイルをインストール (ただ移動するだけですが。。。)<br />
Xcode がインストールされていると、Macintosh HD 上に「Developer」というディレクトリがある (はず)。<br />
今回は無かったので、自分で作りました。<br />
っで、その中に Xcode インストール時と同じ階層をつくって、ダウンロードしたファイルを移動する。<br />
「Macintosh HD/Developer/SDKs/flex_sdk_3/」という状況にしました。<br />
ちなみに、上記の「Developer/SDKs/」は自分でこしらえた部分です。</p>
<p>3.<br />
ターミナルでコンパイルするために flex_sdk_3 へのパスを設定しなきゃいけないっとのこと。<br />
mi を使うと、不可視のファイルが編集できるので、mi の「不可視ファイルを開く」を選択して<br />
「Macintosh HD/User/USER_NAME/」にある .bash_profile を開きます。<br />
これもない場合は自分で作ってしまってOKです。<br />
.bash_profile ファイルに flex_sdk_3/bin/ へのパスを記述します。</p>
<blockquote>
<pre>
PATH=$PATH:/Developer/SDKs/flex_sdk_3/bin
</pre>
</blockquote>
<p>上記を記述して保存したらインストールは完了です。</p>
<p>4.<br />
あとは AS ファイルをターミナルから指定してコンパイルで SWF ファイル完成です。</p>
<blockquote>
<pre>
package {

	import flash.display.Sprite;

	public class CLASS_NAME extends Sprite {

		[Embed(source='FONT_PATH', fontName='FONT_NAME', mimeType='application/x-font', unicodeRange='FONT_CODE')]
		public static var FONT_CLASS_NAME:Class;

	};

};
</pre>
</blockquote>
<p>っといった AS ファイルをつくって、FONT_PATH で指定しているところに フォントデータを配置。<br />
次にターミナルを起動して、</p>
<blockquote>
<pre>
COMPUTER_NAME:~ jun$ cd ~/Desktop/PROJECT_NAME/FILE_DIRECTORY/
COMPUTER_NAME:FILE_DIRECTORY jun$ mxmlc CLASS_NAME.as
</pre>
</blockquote>
<p>っと入力すると、あとは勝手にコンパイルしてくれます。</p>
<p>こーゆーのを試すと、アプリとかOS開発してる人はすごいなーっと再認識させられます。<br />
普段は Flash IDE で作ってるのですが、あんなに簡単に出来るのも、こういった裏の作業(←っていうのか？？)をさせないアプリを開発してくれたおかげです。<br />
様様です。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brooklyn.jp/blog/actionscript/flex-sdk-on-leopard.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>プリンターを起動する</title>
		<link>http://www.brooklyn.jp/blog/actionscript/%e3%83%97%e3%83%aa%e3%83%b3%e3%82%bf%e3%83%bc%e3%82%92%e8%b5%b7%e5%8b%95%e3%81%99%e3%82%8b.html</link>
		<comments>http://www.brooklyn.jp/blog/actionscript/%e3%83%97%e3%83%aa%e3%83%b3%e3%82%bf%e3%83%bc%e3%82%92%e8%b5%b7%e5%8b%95%e3%81%99%e3%82%8b.html#comments</comments>
		<pubDate>Wed, 24 Jun 2009 04:27:49 +0000</pubDate>
		<dc:creator>jam</dc:creator>
				<category><![CDATA[actionscript]]></category>

		<guid isPermaLink="false">http://www.brooklyn.jp/blog/?p=526</guid>
		<description><![CDATA[flash.printing パッケージに PrintJob ってクラスがあるので、それを使えば簡単でした。


import flash.display.Sprite;
import flash.evetns.MouseEvent;
import flash.printing.PrintJob;
import flash.printing.PrintJobOptions;

public class PrintJobTest extends Sprite {

	private var pJob:PrintJob;
	private var pOption:PrintJobOptions;
	private var container:Sprite;

	public function PrintJobTest() {
		container = new Sprite();
		pJob = new PrintJob();
		pOption = new PrintJobOptions;
		pOption.printAsBitmap = true;	// デフォルトは false で、そのままだとベクター出力してくれる

		init();
	};

	private function init():void {
		container.graphics.beginFill( 0x000000 );
		container.graphics.drawRect( 0, 0, 120, 30 );
		container.endFill();

		stage.addEventListener( MouseEvent.MOUSE_DOWN, mouseDownHandler );
	};

	private function mouseDownHandler( e:MouseEvent ):void {
		pJob.start();

		try {
			pJob.addPage( [...]]]></description>
			<content:encoded><![CDATA[<p>flash.printing パッケージに <a href="http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/printing/PrintJob.html" target="_blank">PrintJob</a> ってクラスがあるので、それを使えば簡単でした。</p>
<blockquote>
<pre>
import flash.display.Sprite;
import flash.evetns.MouseEvent;
import flash.printing.PrintJob;
import flash.printing.PrintJobOptions;

public class PrintJobTest extends Sprite {

	private var pJob:PrintJob;
	private var pOption:PrintJobOptions;
	private var container:Sprite;

	public function PrintJobTest() {
		container = new Sprite();
		pJob = new PrintJob();
		pOption = new PrintJobOptions;
		pOption.printAsBitmap = true;	// デフォルトは false で、そのままだとベクター出力してくれる

		init();
	};

	private function init():void {
		container.graphics.beginFill( 0x000000 );
		container.graphics.drawRect( 0, 0, 120, 30 );
		container.endFill();

		stage.addEventListener( MouseEvent.MOUSE_DOWN, mouseDownHandler );
	};

	private function mouseDownHandler( e:MouseEvent ):void {
		pJob.start();

		try {
			pJob.addPage( container, null, options );
		} catch( e:Error ) {
			trace("プリンターに追加できませんでした。: " + e);
		}

		try {
			pJob.send();
		} catch( e:Error ) {
			trace ("プリント出来ませんでした。: " + e);
		}
	};

};
</pre>
</blockquote>
<p>これで、120px x 30px の黒の四角がプリントアウトされます。</p>
<p>縦と横の向きを設定するときは、flash.printing.PrintJobOrientation; を使う。<br />
あとは、プロパティの値とかを色々いじれば大丈夫(って信じてる)。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brooklyn.jp/blog/actionscript/%e3%83%97%e3%83%aa%e3%83%b3%e3%82%bf%e3%83%bc%e3%82%92%e8%b5%b7%e5%8b%95%e3%81%99%e3%82%8b.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ZipされたJPEGを扱う(複数)</title>
		<link>http://www.brooklyn.jp/blog/actionscript/zip%e3%81%95%e3%82%8c%e3%81%9fjpeg%e3%82%92%e6%89%b1%e3%81%86%e8%a4%87%e6%95%b0.html</link>
		<comments>http://www.brooklyn.jp/blog/actionscript/zip%e3%81%95%e3%82%8c%e3%81%9fjpeg%e3%82%92%e6%89%b1%e3%81%86%e8%a4%87%e6%95%b0.html#comments</comments>
		<pubDate>Tue, 23 Jun 2009 16:59:03 +0000</pubDate>
		<dc:creator>jam</dc:creator>
				<category><![CDATA[actionscript]]></category>

		<guid isPermaLink="false">http://www.brooklyn.jp/blog/?p=521</guid>
		<description><![CDATA[別件で忘れてましたが、とりあえず、暫定的な処理になりますが、
こんな感じで解凍を確認したので。。。
まず、ZipLoader はやめて、nochump.util.zip.*; を使用しました。
Unknown Quality の ll_koba_ll さんが、分かりやすく書かれていたのでそれを参考に。
&#8212;
ref Unknown Quality &#8211; ActionScript 3.0 でZIPの圧縮と解凍
&#8212;
↓ ZIP圧縮した「uploads」フォルダに画像が何枚か入ってる想定です。


package
{
	import flash.display.*;
	import flash.events.*;
	import flash.net.*;
	import flash.utils.ByteArray;

	import nochump.util.zip.*;

	public class MultiZipLoader extends Sprite
	{

		private var byteArray:ByteArray;
		private var loader:Loader;

		private var idx:int = 0;
		private var lg:Number = 0;
		private var bmpArray:Array = [];

		public function ZipLoaderMulti()
		{
			var uLoader:URLLoader = new URLLoader();
			uLoader.dataFormat = URLLoaderDataFormat.BINARY;
			uLoader.addEventListener( Event.COMPLETE, zipLoadComplete );
			uLoader.load( new URLRequest("uploads.zip") );
		}

		private function zipLoadComplete(e:Event):void
		{
			trace("zipファイルのロード完了");
			byteArray [...]]]></description>
			<content:encoded><![CDATA[<p>別件で忘れてましたが、とりあえず、暫定的な処理になりますが、<br />
こんな感じで解凍を確認したので。。。</p>
<p>まず、ZipLoader はやめて、nochump.util.zip.*; を使用しました。<br />
<a href="http://un-q.net/" target="_blank">Unknown Quality</a> の ll_koba_ll さんが、分かりやすく書かれていたのでそれを参考に。</p>
<p>&#8212;<br />
ref <a href="http://un-q.net/2009/06/actionscript_30_zip_as3.html" target="_blank">Unknown Quality &#8211; ActionScript 3.0 でZIPの圧縮と解凍</a><br />
&#8212;</p>
<p>↓ ZIP圧縮した「uploads」フォルダに画像が何枚か入ってる想定です。</p>
<blockquote>
<pre>
package
{
	import flash.display.*;
	import flash.events.*;
	import flash.net.*;
	import flash.utils.ByteArray;

	import nochump.util.zip.*;

	public class MultiZipLoader extends Sprite
	{

		private var byteArray:ByteArray;
		private var loader:Loader;

		private var idx:int = 0;
		private var lg:Number = 0;
		private var bmpArray:Array = [];

		public function ZipLoaderMulti()
		{
			var uLoader:URLLoader = new URLLoader();
			uLoader.dataFormat = URLLoaderDataFormat.BINARY;
			uLoader.addEventListener( Event.COMPLETE, zipLoadComplete );
			uLoader.load( new URLRequest("uploads.zip") );
		}

		private function zipLoadComplete(e:Event):void
		{
			trace("zipファイルのロード完了");
			byteArray = e.target.data;
			var zip:ZipFile = new ZipFile( byteArray );

			for( var i:int = 0; i &lt; zip.size; i++ ) {
				var entry:ZipEntry = zip.entries[i];
				var zipData:ByteArray = zip.getInput( entry );

				// 余計なものが入らないようにする
				if( zipData.length != 0 &#038;&#038; zipData.bytesAvailable > 0) {
					lg++;

					loader = new Loader();
					loader.contentLoaderInfo.addEventListener( Event.COMPLETE, getBitmapData );
					loader.loadBytes( zipData );
				}
			}
		};

		private function getBitmapData( e:Event ):void
		{
			trace("BitmapData のロード完了");
			bmpArray[idx] = Bitmap( e.target.content );
			idx++;
			if( idx == lg ) display();
		};

		private function display():void
		{
			trace("表示します");
			for( var i:int = 0; i &lt; bmpArray.length; i++ ) {
				var bmp:Bitmap = bmpArray[i] as Bitmap;
				bmp.y = i * 300;	// 300は適当です。

				addChild( bmp );
			}
		};

	};

};
</pre>
</blockquote>
<p>MACユーザーの方は、右クリックで圧縮するとリソースフォークとかのアーカイブが含まれてしまうので、zip.size を trace() すると不可思議な数が出力されます。。。<br />
なので、<a href="http://www.sopht.jp/cleanarchiver/" target="_blank">Clean Archiver</a> とか使えば大丈夫です。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brooklyn.jp/blog/actionscript/zip%e3%81%95%e3%82%8c%e3%81%9fjpeg%e3%82%92%e6%89%b1%e3%81%86%e8%a4%87%e6%95%b0.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ZipされたJPEGを扱う</title>
		<link>http://www.brooklyn.jp/blog/actionscript/zip%e3%81%95%e3%82%8c%e3%81%9fjpeg%e3%82%92%e6%89%b1%e3%81%86.html</link>
		<comments>http://www.brooklyn.jp/blog/actionscript/zip%e3%81%95%e3%82%8c%e3%81%9fjpeg%e3%82%92%e6%89%b1%e3%81%86.html#comments</comments>
		<pubDate>Mon, 22 Jun 2009 08:06:54 +0000</pubDate>
		<dc:creator>jam</dc:creator>
				<category><![CDATA[actionscript]]></category>

		<guid isPermaLink="false">http://www.brooklyn.jp/blog/?p=514</guid>
		<description><![CDATA[Spark Project にコミットされてる tarotarorg さんの ZipLoader 使って zip ファイルをロードして、そのなかにある JPEG ファイルを表示するサンプル
↓ とりあえず、コミットされてるサンプルをそのまま改造したヤツです。
同階層に sample_image.jpg って画像を格納した uploads という zip されたフォルダがあるのが想定です。


/*
 *  Copyright 2008 tarotarorg
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a [...]]]></description>
			<content:encoded><![CDATA[<p>Spark Project にコミットされてる <a href="http://www.libspark.org/wiki/tarotarorg/ZipLoader" target="_blank">tarotarorg さんの ZipLoader</a> 使って zip ファイルをロードして、そのなかにある JPEG ファイルを表示するサンプル</p>
<p>↓ とりあえず、コミットされてるサンプルをそのまま改造したヤツです。<br />
同階層に sample_image.jpg って画像を格納した uploads という zip されたフォルダがあるのが想定です。</p>
<blockquote>
<pre>
/*
 *  Copyright 2008 tarotarorg
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.IOErrorEvent;
	import flash.net.URLLoaderDataFormat;
	import flash.net.URLRequest;
	import flash.utils.ByteArray;
	import flash.events.Event;

	import org.tarotaro.flash.pv3d.ZipLoader;

	[SWF(width="640", height="480", backgroundColor="#ffffff")]
	/**
	 * ZipLoaderの使用例
	 * @see org.tarotro.flash.pv3d.ZipLoader
	 * @author 太郎
	 */
	public class ZipLoaderSample extends Sprite
	{

		private var byteArray:ByteArray;
		private var loader:Loader;
		private var bmpd:BitmapData;

		public function ZipLoaderSample()
		{
			var zipLoader:ZipLoader = new ZipLoader();
			zipLoader.addEventListener(Event.COMPLETE, zipLoadComplete);
			zipLoader.addEventListener(IOErrorEvent.IO_ERROR, function(e:IOErrorEvent):void {
				trace("IOエラー：", e);
			});
			zipLoader.dataFormat = URLLoaderDataFormat.BINARY;
			zipLoader.load(new URLRequest("uploads.zip://uploads/sample_image.jpg"));
		}

		private function zipLoadComplete(e:Event):void
		{
			trace("zipファイルのロード完了");
			byteArray = e.target.data;

			loader = new Loader();
			loader.contentLoaderInfo.addEventListener( Event.COMPLETE, getBitmapData );
			// ここで取得した ByteArray を loadBytes() にぶち込む
			loader.loadBytes( byteArray );
		};

		private function getBitmapData( e:Event ):void
		{
			trace("ByteArrayファイルのロード完了");
			bmpd = Bitmap( e.target.content ).bitmapData;
			addChild( new Bitmap( bmpd ) );
		}

	}

}
</pre>
</blockquote>
<p>あぁ、なんてステキライブラリ！<br />
でも、このままだと、画像の名前とかを自分で指定しないといけないので、要改造ですね。<br />
papervision3d で使われてる nochump.utils.zip.*; とかを見てみたら分かりそうな気がしますです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brooklyn.jp/blog/actionscript/zip%e3%81%95%e3%82%8c%e3%81%9fjpeg%e3%82%92%e6%89%b1%e3%81%86.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

