<?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>クデラボ -KudeLab- &#187; Flash/AIR/Flex</title>
	<atom:link href="http://kudelab.com/archives/tag/flashairflex/feed" rel="self" type="application/rss+xml" />
	<link>http://kudelab.com</link>
	<description>kudeの運営するサービスの情報や、主に開発周りの話題を発信するサイト</description>
	<lastBuildDate>Mon, 05 Oct 2009 09:55:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>[ActionScript]curveToで楕円を描く</title>
		<link>http://kudelab.com/archives/363</link>
		<comments>http://kudelab.com/archives/363#comments</comments>
		<pubDate>Mon, 06 Jul 2009 13:56:11 +0000</pubDate>
		<dc:creator>kude</dc:creator>
				<category><![CDATA[Flash/AIR/Flex]]></category>
		<category><![CDATA[メモ]]></category>
		<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://kudelab.com/?p=363</guid>
		<description><![CDATA[自分用メモです。
ActionScriptで楕円を描画する際、通常は drawEllipse を使いますが、drawPath や drawGraphicsData を使いたい場合があります。
こうしたとき、curveTo で円や楕円を描画しなければなりません。
中心が(x0, y0), 半径が(w, h)の楕円を curveTo で描画するプログラムは以下のような感じ。
（正円なら、w == h）
// 分割数
var seg:uint = 8;
var angle:Number = Math.PI / seg;
var angle2:Number = angle * 2;
var halfPI:Number = Math.PI / 2;
graphics.moveTo(x0 + w, y0);
for (var i:uint = 1; i < = seg; i++)
{
    var r:Number = i * angle2;
  [...]]]></description>
			<content:encoded><![CDATA[<p>自分用メモです。</p>
<p>ActionScriptで楕円を描画する際、通常は drawEllipse を使いますが、drawPath や drawGraphicsData を使いたい場合があります。<br />
こうしたとき、curveTo で円や楕円を描画しなければなりません。</p>
<p>中心が(x0, y0), 半径が(w, h)の楕円を curveTo で描画するプログラムは以下のような感じ。<br />
（正円なら、w == h）</p>
<p><code>// 分割数<br />
var seg:uint = 8;</p>
<p>var angle:Number = Math.PI / seg;<br />
var angle2:Number = angle * 2;<br />
var halfPI:Number = Math.PI / 2;</p>
<p>graphics.moveTo(x0 + w, y0);<br />
for (var i:uint = 1; i < = seg; i++)<br />
{<br />
    var r:Number = i * angle2;</p>
<p>    // アンカーポイントの座標<br />
    var ax:Number = w * Math.cos(r);<br />
    var ay:Number = h * Math.sin(r);</p>
<p>    // コントロールポイントの座標<br />
    var cx:Number = ax + w * Math.tan(angle) * Math.cos(r - halfPI);<br />
    var cy:Number = ay + h * Math.tan(angle) * Math.sin(r - halfPI);</p>
<p>    // 弧の描画<br />
   graphics.curveTo(cx + x0, cy + y0, ax + x0, ay + y0);<br />
}</code></code></p>
]]></content:encoded>
			<wfw:commentRss>http://kudelab.com/archives/363/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ActionScript で3点を通る曲線</title>
		<link>http://kudelab.com/archives/358</link>
		<comments>http://kudelab.com/archives/358#comments</comments>
		<pubDate>Sun, 05 Jul 2009 09:25:44 +0000</pubDate>
		<dc:creator>kude</dc:creator>
				<category><![CDATA[Flash/AIR/Flex]]></category>
		<category><![CDATA[メモ]]></category>

		<guid isPermaLink="false">http://kudelab.com/?p=358</guid>
		<description><![CDATA[自分用メモです。
ActionScript で(x1, y1)から(x2, y2) を通って(x3, y3)に至る曲線は
var cx:Number = x2 * 2 - (x1 + x3) / 2;
var cy:Number = y2 * 2 - (y1 + y3) / 2;
moveTo(x1, y1);
cuveTo(cx, cy, x3, y3)
]]></description>
			<content:encoded><![CDATA[<p>自分用メモです。<br />
ActionScript で(x1, y1)から(x2, y2) を通って(x3, y3)に至る曲線は</p>
<p><code>var cx:Number = x2 * 2 - (x1 + x3) / 2;<br />
var cy:Number = y2 * 2 - (y1 + y3) / 2;<br />
moveTo(x1, y1);<br />
cuveTo(cx, cy, x3, y3)</code></p>
]]></content:encoded>
			<wfw:commentRss>http://kudelab.com/archives/358/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Text Layout Framework のバグ？</title>
		<link>http://kudelab.com/archives/352</link>
		<comments>http://kudelab.com/archives/352#comments</comments>
		<pubDate>Thu, 18 Jun 2009 08:43:08 +0000</pubDate>
		<dc:creator>kude</dc:creator>
				<category><![CDATA[Flash/AIR/Flex]]></category>
		<category><![CDATA[Text Layout Framework]]></category>

		<guid isPermaLink="false">http://kudelab.com/?p=352</guid>
		<description><![CDATA[Text Layout Framework が知らぬ間にバージョンアップしているではないか！
と気がついて、さっそく差し替えてみました。
クラスやメソッドなど、ところどころ変わっているようですが、そのへんはドキュメント見ながら書き換えれば問題ないですね。
ドキュメントが英語なので、ちょっと面倒ですけど。
ただ、特定のフォントで、 TextFlow から flowComposer.updateAllControllers() を実行すると、以下のエラーが発生します。
undefined
	at flashx.textLayout.compose::StandardFlowComposer/internalCompose()
	at flashx.textLayout.compose::StandardFlowComposer/composeToController()
	at flashx.textLayout.compose::StandardFlowComposer/updateToController()
	at flashx.textLayout.compose::StandardFlowComposer/updateAllControllers()
これ、どうやって修正 or 回避すればいいのだろう・・・。
せめて例外の発生であれば、try-catch できるんだけどなぁ。
以前の古い Text Layout Framework （textLayout_conversion.swc, textLayout_core.swc, textLayout_edit.swc の3つに別れていた頃）で同じフォントを指定すると
Error: Error #2161: An internal error occured while laying out the text.
という例外がスルーされるので、まだ対処のしようがあるのですが。
なにか指定しているパラメータでも、悪いのかなぁ。
]]></description>
			<content:encoded><![CDATA[<p>Text Layout Framework が知らぬ間にバージョンアップしているではないか！<br />
と気がついて、さっそく差し替えてみました。</p>
<p>クラスやメソッドなど、ところどころ変わっているようですが、そのへんはドキュメント見ながら書き換えれば問題ないですね。<br />
ドキュメントが英語なので、ちょっと面倒ですけど。</p>
<p>ただ、特定のフォントで、 TextFlow から flowComposer.updateAllControllers() を実行すると、以下のエラーが発生します。</p>
<p>undefined<br />
	at flashx.textLayout.compose::StandardFlowComposer/internalCompose()<br />
	at flashx.textLayout.compose::StandardFlowComposer/composeToController()<br />
	at flashx.textLayout.compose::StandardFlowComposer/updateToController()<br />
	at flashx.textLayout.compose::StandardFlowComposer/updateAllControllers()</p>
<p>これ、どうやって修正 or 回避すればいいのだろう・・・。<br />
せめて例外の発生であれば、try-catch できるんだけどなぁ。</p>
<p>以前の古い Text Layout Framework （textLayout_conversion.swc, textLayout_core.swc, textLayout_edit.swc の3つに別れていた頃）で同じフォントを指定すると</p>
<p>Error: Error #2161: An internal error occured while laying out the text.</p>
<p>という例外がスルーされるので、まだ対処のしようがあるのですが。<br />
なにか指定しているパラメータでも、悪いのかなぁ。</p>
]]></content:encoded>
			<wfw:commentRss>http://kudelab.com/archives/352/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PrintJobのバグ？</title>
		<link>http://kudelab.com/archives/340</link>
		<comments>http://kudelab.com/archives/340#comments</comments>
		<pubDate>Fri, 22 May 2009 07:31:13 +0000</pubDate>
		<dc:creator>kude</dc:creator>
				<category><![CDATA[Flash/AIR/Flex]]></category>

		<guid isPermaLink="false">http://kudelab.com/?p=340</guid>
		<description><![CDATA[Flex3.3で作成中のAIRアプリで、PrintJobで印刷を行う際に、以下のような警告が出る。
Warning: Filter will not render.  The DisplayObject&#8217;s filtered dimensions (8453, 712) are too large to be drawn.
「フィルターが大きすぎて適用できません」といった意味合いの警告だけど、フィルターを適用していない（つもりの）対象に対してもこの警告が出る。
いろいろ調べてみたところ、ステージ上にある（つまり、表示されている）UIComponentを印刷対象とするとこの警告が発生するようだ。
試しに、同じ対象をステージ上から削除して印刷すると、警告は表示されない。
ふーむ。
ぼくのプログラムに原因があるのか（どこかで気付かずミスしているのか）、それともFlexのバグなのか、どっちだろう。
とりあえず、警告が出るだけで実害はないので、放っておけばいいっちゃあいいんだけど。
そういえば、逆に、フィルターを適用したはずの場合で、フィルターが印刷されない現象も見られるので、やっぱりバグだろうかね。
]]></description>
			<content:encoded><![CDATA[<p>Flex3.3で作成中のAIRアプリで、PrintJobで印刷を行う際に、以下のような警告が出る。</p>
<p>Warning: Filter will not render.  The DisplayObject&#8217;s filtered dimensions (8453, 712) are too large to be drawn.</p>
<p>「フィルターが大きすぎて適用できません」といった意味合いの警告だけど、フィルターを適用していない（つもりの）対象に対してもこの警告が出る。</p>
<p>いろいろ調べてみたところ、ステージ上にある（つまり、表示されている）UIComponentを印刷対象とするとこの警告が発生するようだ。<br />
試しに、同じ対象をステージ上から削除して印刷すると、警告は表示されない。</p>
<p>ふーむ。<br />
ぼくのプログラムに原因があるのか（どこかで気付かずミスしているのか）、それともFlexのバグなのか、どっちだろう。<br />
とりあえず、警告が出るだけで実害はないので、放っておけばいいっちゃあいいんだけど。</p>
<p>そういえば、逆に、フィルターを適用したはずの場合で、フィルターが印刷されない現象も見られるので、やっぱりバグだろうかね。</p>
]]></content:encoded>
			<wfw:commentRss>http://kudelab.com/archives/340/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ローカルフォントのアンチエイリアス</title>
		<link>http://kudelab.com/archives/320</link>
		<comments>http://kudelab.com/archives/320#comments</comments>
		<pubDate>Sun, 17 May 2009 07:13:18 +0000</pubDate>
		<dc:creator>kude</dc:creator>
				<category><![CDATA[Flash/AIR/Flex]]></category>
		<category><![CDATA[プリントマジック]]></category>

		<guid isPermaLink="false">http://kudelab.com/?p=320</guid>
		<description><![CDATA[次期バージョンのプリントマジックでは、ローカルフォントを使えるようにしたいと思っているのだけど、なかなか難しい。
ローカルフォントを使うこと自体はすでに実装済みなのだけど、ローカルフォントは埋め込みフォントじゃないので、環境によってはアンチエイリアスがかからない。
この対策が一筋縄ではいかない。
まず試みたのは、BitmapDataにdrawして拡大縮小するという方法。
BitmapDataのスムージング機能を使ってアンチエイリアスをかけちゃおうというやり方です。
この方法で9割方上手くいくのだけど、ごく一部のフォント（と文字サイズ）によっては潰れてしまって見るに堪えなくなるのが珠にきず。
ならば、BitmapDataにdrawしたデータをもとに、ベクターデータを生成して描画してやる方法はどうか、と。
調べると、PotrAsというライブラリがあったので、これを使えば行けるんじゃないかと思ったのだけれど、GPLライセンスだったので使用を断念。
また、やはり一部のフォントによっては上手く描画できなかったりもしたし。
ならば、自分でベクターデータを生成する処理を書くか、と思ったけれど、当然のようにかなりの難易度で、途中で面倒くさくなって断念。
輪郭をトレースするところまではできても、それを曲線化するのが難しいね。
ならば、ビットマップデータに対して独自にアンチエイリアスをかける処理を書こうとしたけれど、どうもいまひとつきれいなアンチエイリアスが生成できない。
9割方のケースでは、BitmapDataのスムージングのほうが美しい。
うーん、どうしたものか。
悩ましいな。
]]></description>
			<content:encoded><![CDATA[<p>次期バージョンのプリントマジックでは、ローカルフォントを使えるようにしたいと思っているのだけど、なかなか難しい。</p>
<p>ローカルフォントを使うこと自体はすでに実装済みなのだけど、ローカルフォントは埋め込みフォントじゃないので、環境によってはアンチエイリアスがかからない。<br />
この対策が一筋縄ではいかない。</p>
<p>まず試みたのは、BitmapDataにdrawして拡大縮小するという方法。<br />
BitmapDataのスムージング機能を使ってアンチエイリアスをかけちゃおうというやり方です。<br />
この方法で9割方上手くいくのだけど、ごく一部のフォント（と文字サイズ）によっては潰れてしまって見るに堪えなくなるのが珠にきず。</p>
<p>ならば、BitmapDataにdrawしたデータをもとに、ベクターデータを生成して描画してやる方法はどうか、と。<br />
調べると、PotrAsというライブラリがあったので、これを使えば行けるんじゃないかと思ったのだけれど、GPLライセンスだったので使用を断念。<br />
また、やはり一部のフォントによっては上手く描画できなかったりもしたし。</p>
<p>ならば、自分でベクターデータを生成する処理を書くか、と思ったけれど、当然のようにかなりの難易度で、途中で面倒くさくなって断念。<br />
輪郭をトレースするところまではできても、それを曲線化するのが難しいね。</p>
<p>ならば、ビットマップデータに対して独自にアンチエイリアスをかける処理を書こうとしたけれど、どうもいまひとつきれいなアンチエイリアスが生成できない。<br />
9割方のケースでは、BitmapDataのスムージングのほうが美しい。</p>
<p>うーん、どうしたものか。<br />
悩ましいな。</p>
]]></content:encoded>
			<wfw:commentRss>http://kudelab.com/archives/320/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
