<?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>memo.393 &#187; ActionScript</title>
	<atom:link href="http://memo.393.bz/cate/actionscript/feed" rel="self" type="application/rss+xml" />
	<link>http://memo.393.bz</link>
	<description>個人的メモです。間違いなどありましたらご指摘ください。。。</description>
	<lastBuildDate>Sun, 05 Sep 2010 03:02:06 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>[Event]オブジェクト指向で考えるAS3勉強会をやりました</title>
		<link>http://memo.393.bz/archives/1304</link>
		<comments>http://memo.393.bz/archives/1304#comments</comments>
		<pubDate>Sat, 04 Sep 2010 14:12:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Event]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1304</guid>
		<description><![CDATA[都内某所でワークショップやりました。
Flash初心者向けの内容で、
「Flashでのオブジェクト指向的な考え方とはなんぞや？」
という部分に的を絞って2時間ひたすらしゃべって喋りました。
自分的にはこの部分を理解するま [...]]]></description>
			<content:encoded><![CDATA[<p>都内某所でワークショップやりました。</p>
<p>Flash初心者向けの内容で、<br />
「Flashでのオブジェクト指向的な考え方とはなんぞや？」<br />
という部分に的を絞って2時間ひたすらしゃべって喋りました。<br />
自分的にはこの部分を理解するまでにかなりの時間を費やしたので、これで理解を早めるきっかけになれればいいなという思いでスライドを作りました。</p>
<p>本日のスライド<br />
<a href="http://www.393.bz/ws/01/slide.swf" target="_blank">オブジェクト指向で考えるAS3</a><br />
サンプルファイル<br />
<a href="http://www.393.bz/ws/01/sample.zip" target="_blank">sample.zip</a></p>
<p>講義後のアンケートをみたかんじでは参加者12名の反応はまずまず。<br />
まったくわからなかったという人が居なかったので一安心。<br />
10人中、1人でも「そうだったのか」とおもってくれれば良いと思っていたけど、半分くらいの人が理解が深まったと書いてくれたのでやったかいがありました。<br />
よかったよかった。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1304/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[AS]TextField.textにNumber型のデータをStringにキャストせずに入れる方法</title>
		<link>http://memo.393.bz/archives/1295</link>
		<comments>http://memo.393.bz/archives/1295#comments</comments>
		<pubDate>Wed, 25 Aug 2010 01:57:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1295</guid>
		<description><![CDATA[通常テキストフィールドのtextプロパティにはString型のデータを入れなくてはならない。
以下のように書くとエラーとなるのは既知。


//FlashIDEでのメインタイムラインにダイナミックテキストを配置
//イン [...]]]></description>
			<content:encoded><![CDATA[<p>通常テキストフィールドのtextプロパティにはString型のデータを入れなくてはならない。<br />
以下のように書くとエラーとなるのは既知。</p>
<pre name="code" class="as">

//FlashIDEでのメインタイムラインにダイナミックテキストを配置
//インスタンス名：_txt

//メインタイムラインフレームアクション
_txt.text = 1000;
</pre>
<blockquote><p>
1067: 型 int の値が、関連しない型 String に暗黙で型変換されています。
</p></blockquote>
<p>ここでエラーにならず代入できちゃうケースがあることに気付いた。<br />
やりかたは簡単TextFieldをMovieClipでラップする。</p>
<pre name="code" class="as">

//FlashIDEでのメインタイムラインにMovieClipを配置
//インスタンス名：_mc
//_mcのタイムラインにTextFieldを配置
//インスタンス名：_txt

//メインタイムラインのフレームアクション
_mc._txt.text = 1000;
</pre>
<p>これはエラーにならずにTextFieldにちゃんと文字が表示される。<br />
ちょっと気持ちわるい。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1295/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[AS]TypeError: Error #1006: frame1 は関数ではありません。 	at _fla::MainTimeline/frame1()、となった場合の対処方法</title>
		<link>http://memo.393.bz/archives/1287</link>
		<comments>http://memo.393.bz/archives/1287#comments</comments>
		<pubDate>Wed, 11 Aug 2010 08:54:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1287</guid>
		<description><![CDATA[MovieClipにおいて、特定のフレームのフレームアクションを実行することができるメソッドがあります。
任意のフレームのスクリプトを実行：frame + &#8220;フレーム数&#8221; + ();
たとえば、ス [...]]]></description>
			<content:encoded><![CDATA[<p>MovieClipにおいて、特定のフレームのフレームアクションを実行することができるメソッドがあります。<br />
任意のフレームのスクリプトを実行：frame + &#8220;フレーム数&#8221; + ();</p>
<p>たとえば、ステージに_mcというインスタンス名でMovieClipが配置してある場合。<br />
(_mcには1,2,3フレームにスクリプトが書いてある)<br />
frame+フレーム数というメソッドを実行することができます。</p>
<pre name="code" class="as">

//_mc:ステージに配置してあるMovieClipインスタンスで
//1,2,3フレームにスクリプトが書いてあり、内容は以下の通り
//1フレーム目には、trace(&quot;_mc 1フレーム&quot;);
//2フレーム目には、trace(&quot;_mc 2フレーム&quot;);
//3フレーム目には、trace(&quot;_mc 3フレーム&quot;);

_mc.frame1(); //出力:_mc 1フレーム
_mc.frame2(); //出力:_mc 2フレーム
_mc.frame3(); //出力:_mc 3フレーム
</pre>
<p>このとき以下のようなエラーが発生するときがある。</p>
<blockquote><p>TypeError: Error #1006: frame1 は関数ではありません。<br />
at _fla::MainTimeline/frame1()
</p></blockquote>
<p>このときの原因の一つは、実行対象のMovieClipにリンケージ指定されているということ。<br />
リンケージ指定した状態で、任意のフレームのスクリプトを実行しようと上記のようなエラーになるらしい。</p>
<p>また、動的に生成したMovieClipインスタンスについても、addFrameScript()メソッドでフレームにスクリプトを追加した場合についても、同じ結果になるようす。</p>
<p>以下、例</p>
<pre name="code" class="as">

var mc:MovieClip = new MovieClip();
addChild(mc);
//ムービークリップの1フレーム目にファンクション：testを追加
mc.addFrameScript(0,test);
function test():void{
	trace(&quot;mc script&quot;)
}
mc.frame1()//上記のようなエラーが発生する
</pre>
<p>ということは、動的に生成したmcにaddFrameScript()でファンクションを追加しても実行する術はないということ！？<br />
まぁ理由はわからないけどそんな挙動をするみたい。<br />
まぁ、こんなのそうそう使わないけども。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1287/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[AS][?]FlashIDEでドキュメントクラスをSpriteに設定した場合の怪</title>
		<link>http://memo.393.bz/archives/1266</link>
		<comments>http://memo.393.bz/archives/1266#comments</comments>
		<pubDate>Sat, 31 Jul 2010 13:52:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1266</guid>
		<description><![CDATA[一般的にMovieClipとSpriteの違いは、
・MovieClip：タイムラインを持てる。
・Sprite：タイムラインを持てない。
リファレンスを見てもMovieClipはSpriteのサブクラスであり、タイムラ [...]]]></description>
			<content:encoded><![CDATA[<p>一般的にMovieClipとSpriteの違いは、</p>
<p>・MovieClip：タイムラインを持てる。<br />
・Sprite：タイムラインを持てない。</p>
<p>リファレンスを見てもMovieClipはSpriteのサブクラスであり、タイムライン操作についてのメソッドが追加されたものとなっている。</p>
<p>////////////////////////////////////////////////////////////////////////<br />
・そもそも「タイムラインを持っている」とは具体的に何なのか？<br />
フレームを2フレーム以上持っている状態を指すらしい。<br />
参考：<a href="http://oshige.com/flash/as3note/note/">ActionScript3.0入門ノート｜Spriteの作成と表示</a></p>
<p>つまり<br />
・MovieClip：フレームを2フレーム以上持てる。<br />
・Sprite：フレームを1フレームだけ持てる。<br />
こういうことになるのでしょう。</p>
<p>////////////////////////////////////////////////////////////////////////<br />
・ここで疑問なのです。<br />
FlashIDEではドキュメントクラスをSpriteを継承したクラスを指定することができますよね。<br />
この場合、メインタイムラインはSprite扱いということになると思うのですが、実際はそうではないようです。<br />
以下の画像のような状態の場合、<br />
<a href="http://memo.393.bz/wp-content/uploads/2010/07/1007312220.jpg" target="_blank" ><img src="http://memo.393.bz/wp-content/uploads/2010/07/1007312220-150x150.jpg" alt="" title="1007312220" width="150" height="150" class="alignnone size-thumbnail wp-image-1267" /></a></p>
<p>これをパブリッシュすると、青い四角が点滅する状態となります。<br />
ドキュメントクラスをSpirteにしているのに、メインタイムラインは2フレーム目以降も繰り返し再生されているのです。<br />
ちなみに、この際フレームにstop();等のスクリプトを書くと、errorとなります。<br />
これは、フレームにスクリプトが書けるのはMovieClipだけだからという理由です。<br />
具体的にはフレームにスクリプトを書くという行為は、内部的にはaddFrameScript()というメソッドで実装されているようで、SpirteにはこのaddFrameScript()メソッドが定義されていないから、ということのようです。</p>
<p>つまり、ドキュメントクラスをSpriteで定義した場合（のメインタイムライン)は、完全なSpriteでもなく、またMovieClipでもないというような中途半端な存在に思えるのです。</p>
<p>////////////////////////////////////////////////////////////////////////<br />
ちなみにMovieClipとしてライブラリに登録したシンボルの基本クラスをSpriteとし、<br />
そのシンボルのタイムラインを10フレームにした場合について、<br />
（下画像参照)</p>
<p><a href="http://memo.393.bz/wp-content/uploads/2010/07/1007312250.jpg"  target="_blank" ><img src="http://memo.393.bz/wp-content/uploads/2010/07/1007312250-150x150.jpg" alt="" title="1007312250" width="150" height="150" class="alignnone size-thumbnail wp-image-1281" /></a></p>
<p>このシンボルをステージに置いた場合のシンボルの挙動はどうなると思いますか？<br />
先ほどのように2フレーム目以降が繰り返し再生されるのでしょうか？</p>
<p>答えは、黒いシェイプは点滅しません。<br />
1フレーム目のみが描画された状態でstop();状態となり、2フレーム目以降は無視されているようです。<br />
これが本来のSpriteの挙動であると思います。</p>
<p>////////////////////////////////////////////////////////////////////////<br />
メインタイムラインだけが特別な扱いになっているのでしょうか？<br />
こういうもんだと思えば実害は無いのですが、なんか気持ち悪いですよね。<br />
この理由をご存知の方いましたら是非ご教授くださいませ。</p>
<p>テスト環境：winXP FlashCS5</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1266/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[JSFL]シンボル内の静止テキストのサイズ、色、フォントを変更するJSFL改</title>
		<link>http://memo.393.bz/archives/1260</link>
		<comments>http://memo.393.bz/archives/1260#comments</comments>
		<pubDate>Sun, 18 Jul 2010 03:00:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1260</guid>
		<description><![CDATA[東京てらこでの発表ネタとして以前作ったものを少し改造しました。
基本用途は同じですので上のリンク先を御確認ください。
◆改修点
・パラメータの入力をswfパネルからできるようにしました。
・これによりフォント名については [...]]]></description>
			<content:encoded><![CDATA[<p>東京てらこでの発表ネタとして<a href="http://memo.393.bz/archives/989">以前作ったもの</a>を少し改造しました。<br />
基本用途は同じですので上のリンク先を御確認ください。</p>
<p>◆改修点<br />
・パラメータの入力をswfパネルからできるようにしました。<br />
・これによりフォント名については、直接入力から、PCにインスコされているフォントから選択する形式になりました。<br />
 (入力間違いが減って便利だと思う)<br />
・以前のものは内包するshapeの色まで変わってしまいまいたが、静止テキストの色だけを変更するようにしました。<br />
・mxp形式でインスコできるようにしました。(CS3/CS4/CS5)<br />
・SWFパネルを常駐させるか、コマンド実行時のみ表示させるかの2通り用意しました。<br />
・SWFパネル常駐タイプは、フォント名リストが表示できるSWFパネルがあわせてインスコされます。</p>
<p>◆使い方◆<br />
▼SWFパネル常駐タイプ<br />
1.ウィンドウ→他のパネル→ReInitializeStaticTextを選択<br />
2.ライブラリで変更したいMCを選択し、SWFパネルのパラメータを調整しOKをクリック<br />
※ウィンドウ→他のパネル→FontNameでフォント名一覧が表示されるSWFパネル表示<br />
▼コマンド実行タイプ<br />
1.コマンド→Re-InitializeStaticTextを選択するとSWFパネルが起動<br />
2.ライブラリで変更したいMCを選択し、SWFパネルのパラメータを調整しOKをクリック<br />
( SWFパネルは自動で閉じる)</p>
<p>以下よりDL可能です。<br />
◆CS5<br />
<a href="http://memo.393.bz/data/reinitializeSF_CS5.zip">コマンド実行タイプ</a><br />
<a href="http://memo.393.bz/data/reinitializeSFSWFPanel_CS5.zip">SWFパネル常駐タイプ</a><br />
◆CS4<br />
<a href="http://memo.393.bz/data/reinitializeSF_CS4.zip">コマンド実行タイプ</a><br />
<a href="http://memo.393.bz/data/reinitializeSFSWFPanel_CS4.zip">SWFパネル常駐タイプ</a><br />
◆CS3<br />
<a href="http://memo.393.bz/data/reinitSF_CS3.zip">コマンド実行タイプ</a><br />
<a href="http://memo.393.bz/data/reinitSFSWFP_CS3.zip">SWFパネル常駐タイプ</a></p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1260/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[AS]ActionScript3.0のコーディングスタイルの規約(FlexSDKにおける規約)</title>
		<link>http://memo.393.bz/archives/1256</link>
		<comments>http://memo.393.bz/archives/1256#comments</comments>
		<pubDate>Mon, 05 Jul 2010 10:04:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1256</guid>
		<description><![CDATA[Adobe推奨が以下のリンク
Flex SDKコード記述に関する規則とベストプラクティス
あくまでFlexSDK用っぽいので、FlashIDEがこれに準拠するかといったら微妙っぽい。
たとえば、｛で改行をどこにいれるかと [...]]]></description>
			<content:encoded><![CDATA[<p>Adobe推奨が以下のリンク<br />
<a href="http://opensource.adobe.com/wiki/display/flexsdk/Coding+Conventions-ja">Flex SDKコード記述に関する規則とベストプラクティス</a></p>
<p>あくまでFlexSDK用っぽいので、FlashIDEがこれに準拠するかといったら微妙っぽい。<br />
たとえば、｛で改行をどこにいれるかという点では、<br />
FlashＩＤＥで、ｆｕｎｃｔｉｏｎ生成のショートカットキーESC+f+nで生成されるコードは、</p>
<pre name="code" class="as">

function  () {
    //処理
}
</pre>
<p>規約では、｛を整列させると書かれている</p>
<pre name="code" class="as">

function  ()
{
    //処理
}
</pre>
<p>とはいれ、それ以外の部分は大体真似していいんじゃないかと。</p>
<p>◆気になった部分だけｍｅｍｏ<br />
・new Array()　→ []<br />
・new Object() → {}<br />
・if(flag == true) → if(flag) (flag:Boolean,Object)<br />
・as演算子よりもキャストを使う<br />
・単純な条件はifよりも三項演算子を使う （ifより遅くなるんじゃないの？)<br />
・if文が(全ての項目のステートメントが)一項目のときはブロック{}を書かない<br />
・ｆｏｒ、while、do文では必ずブロック{}を書く<br />
・protected override → override protected<br />
・static public → pubilc static<br />
・定数は全てstaticとする<br />
・変数を初期化するときはコンストラクタではなく宣言時にする。</p>
<p>？なところもあるけど一通り目を通しておいてもよさげ。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1256/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[AS][オレオレライブラリ]シフトキー(ctrlキー)を押してる、押してないを判定してくれるクラス</title>
		<link>http://memo.393.bz/archives/1243</link>
		<comments>http://memo.393.bz/archives/1243#comments</comments>
		<pubDate>Thu, 01 Jul 2010 23:05:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[OREORELibrary]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1243</guid>
		<description><![CDATA[製作の上であったら便利かな、と思ったのでクラス化。
◆動機
たとえば、あるボタンを押したら外部読み込み開始するとしたら、それが失敗したときなどを考慮してにエラー処理を実装しますよね。
この実装のチェックとしては、わざとエ [...]]]></description>
			<content:encoded><![CDATA[<p>製作の上であったら便利かな、と思ったのでクラス化。</p>
<p>◆動機<br />
たとえば、あるボタンを押したら外部読み込み開始するとしたら、それが失敗したときなどを考慮してにエラー処理を実装しますよね。<br />
この実装のチェックとしては、わざとエラーが起こる状態を再現してテストしなくちゃいけない。<br />
たとえば、読み込むべきURLが外部xmlに記述してあって、それが存在しないURLだった場合のエラー処理だったら、わざとxmlに記述されたURLを間違えたものに書き換えてチェックとか。<br />
というようなことを以前はやってました。<br />
が、いちいちファイル書き換えてチェックするのが面倒。</p>
<p>そこで、<br />
もしshiftキーを押しながらクリックしたら、存在しないURLを読みにいくようなロジックを最初から組んどけばテスト簡単じゃね？<br />
お客さんにエラー時の動作処理をみてもらうときも、お客さんの負担減るんじゃね？</p>
<p>ってことで、shiftキーとctrlキーが押されてるかどうかを判定するクラスを作りました。<br />
Singletonで作ってあるので、最初に初期化しちゃえば、どこからでも参照可能。<br />
消すときも、Singletonなのでクラス名で検索書ければどこで使ってるかが一目瞭然（のはず)。</p>
<p>使い方は以下のような感じ</p>
<pre name="code" class="as">

//準備
//ステージに追加、これだけでOK
addChild(AddKeyDownUtil.getInstance());

//使い方、以下のプロパティを参照して、true/falseを取得できる
//シフトキーが押されてたら、true,押されてなかったらflaseを返す
SingletonManager.getInstance().isShiftDown;//戻り値：Boolean
//コントロールキーが押されてたら、true,押されてなかったらflaseを返す
SingletonManager.getInstance().isCtrlDown;//戻り値：Boolean

//使用例）
//_btnがクリックされたときにシフトキーが押されているかいないかで処理を分岐
_btn.addEventListener(MouseEvent.CLICK, clickHandler);
private function clickHandler(e:MouseEvent):void {
    if(AddKeyDownUtil.getInstance().isShiftDown){
        //シフトキーが押されていた場合に実行したい処理
    }else{
        //シフトキーが押されていない場合に実行したい処理
    }
}
</pre>
<p>クラスファイルは以下の通り</p>
<pre name="code" class="as">

package bz393.util {
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;

	/**
	 * ...
	 * @author 393
	 */
	public class AddKeyDownUtil extends Sprite{

		public static var instance:AddKeyDownUtil;
		public var isShiftDown:Boolean = false;
		public var isCtrlDown:Boolean = false;

		public function AddKeyDownUtil(enforcer:SingletonEnforcer) { };

		public static function getInstance():AddKeyDownUtil {
			if (!AddKeyDownUtil.instance) {
				AddKeyDownUtil.instance = new AddKeyDownUtil(new SingletonEnforcer());
				AddKeyDownUtil.instance.addEventListener(Event.ADDED_TO_STAGE,init);
			}
			return AddKeyDownUtil.instance;
		}

		static private function init(e:Event):void {
			AddKeyDownUtil.instance.removeEventListener(Event.ADDED_TO_STAGE, init);

			AddKeyDownUtil.getInstance().stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHander);
			AddKeyDownUtil.getInstance().stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHander);
		}

		static private function keyDownHander(e:KeyboardEvent):void {
			switch (e.keyCode) {
				case Keyboard.SHIFT:
				AddKeyDownUtil.instance.isShiftDown = true;
				break;
				case Keyboard.CONTROL:
				AddKeyDownUtil.instance.isCtrlDown = true;
				break;
			}
		}

		static private function keyUpHander(e:KeyboardEvent):void {
			switch (e.keyCode) {
				case Keyboard.SHIFT:
				AddKeyDownUtil.instance.isShiftDown = false;
				break;
				case Keyboard.CONTROL:
				AddKeyDownUtil.instance.isCtrlDown = false;
				break;
			}
		}
	}

}
class SingletonEnforcer {
};
</pre>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1243/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[AS]StageQuality.MEDIUM以下の状態で日本語フォントを埋め込んだTextFieldの3Dプロパティを有効にすると拡大される。(ただしムービープレビューのときのみ)</title>
		<link>http://memo.393.bz/archives/1237</link>
		<comments>http://memo.393.bz/archives/1237#comments</comments>
		<pubDate>Sun, 27 Jun 2010 23:06:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[FlashPlayer10]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1237</guid>
		<description><![CDATA[あまり意味のない情報だけど数時間ハマったのメモしとく。
まず結論から書くと、これはムービープレビューのときのみ発生(FlashCS4で確認)
ムービープレビューのときに立ち上がるFlashPlayerはブラウザに埋め込ま [...]]]></description>
			<content:encoded><![CDATA[<p>あまり意味のない情報だけど数時間ハマったのメモしとく。</p>
<p>まず結論から書くと、これはムービープレビューのときのみ発生(FlashCS4で確認)<br />
ムービープレビューのときに立ち上がるFlashPlayerはブラウザに埋め込まれてるプレイヤーとは異なるもの。<br />
まれにおかしな挙動をすることがあるのだけど、今回もその類のバグだったわけ。<br />
なので、実際にブラウザ上で確認すれば題記のような現象にはならない。</p>
<p>一応再現手順を書いておく。<br />
1.flaファイルに日本語フォントを埋め込む。(小塚ゴシックProBとする)<br />
2.ASにて、動的にTextFieldを配置(フォントサイズを16とかに)<br />
3.TextFieldに埋め込んだフォントを設定<br />
4.stage.qualityをMedium以下に設定<br />
5.TextFieldの3Dプロパティを変更(ｚ=0とか)<br />
6.ctrl+enterでムービープレビュー<br />
7.指定したフォントサイズよりもでかく表示される</p>
<p>※stage.quailtyをHIGH以上にすれば上記現象はおきません。</p>
<p>まぁ実害はないけど遭遇したら一瞬焦るので一応覚えておいたほうがいいかも。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1237/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[AS]FlashCS4、CS5でフォント埋め込みの際、フォント名の指定には要注意（フォントスタイル違いで日本語/ローマ字が違うケース有)</title>
		<link>http://memo.393.bz/archives/1228</link>
		<comments>http://memo.393.bz/archives/1228#comments</comments>
		<pubDate>Sun, 27 Jun 2010 02:44:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1228</guid>
		<description><![CDATA[すげー、はまったのでメモ。
↓の問題でした。
[AS]フォント名を指定するときの注意（日本語？英語？）
（今、このを記事書いてるときに上のエントリーに気付いた。アホすぎる。。。)
上の記事では、FlashIDEとFlex [...]]]></description>
			<content:encoded><![CDATA[<p>すげー、はまったのでメモ。</p>
<p>↓の問題でした。<br />
<a href="http://memo.393.bz/archives/994">[AS]フォント名を指定するときの注意（日本語？英語？）</a><br />
（今、このを記事書いてるときに上のエントリーに気付いた。アホすぎる。。。)</p>
<p>上の記事では、FlashIDEとFlexSDKでフォント名が異なる？という内容だけど、<br />
FlashIDEでもバージョンによってはフォント名が異なることが発覚。<br />
※windows/mac、Flashの日本語版/英語版で結果が異なるかも<br />
※今回検証したのはwindow、日本語版</p>
<p>例1）小塚ゴシックPro レギュラーの場合<br />
CS3:小塚ゴシック Pro R (日本語で指定)<br />
CS4:Kozuka Gothic Pro R (ローマ字で指定)<br />
CS5:Kozuka Gothic Pro R (ローマ字で指定)</p>
<p>CS3は日本語で指定だったけど、CS4以降はローマ字で指定。</p>
<p>・ちなみにボールドの場合はまた違った感じに。。。<br />
例2）小塚ゴシックPro ボールドの場合<br />
CS3:小塚ゴシック Pro B (日本語で指定)<br />
CS4::Kozuka Gothic Pro B (ローマ字で指定)<br />
CS5:小塚ゴシック Pro B (日本語で指定)</p>
<p>もちろん、日本語で書くべきところをローマ字で書いたりしたら、フォントは指定されない。<br />
同じフォントなのにスタイル違いで、書き方変わるなんてそんなのわからんよ。。。</p>
<p>というわけでフォント名は直接文字列で書くのではなく、FontクラスのfontNameプロパティを使った方が間違いがおきなそう。</p>
<pre name="code" class="as">

//ライブラリにフォントを追加
//ASに書き出しにチェック
//クラス名を指定 （仮にMyFontとする)
var myFont:Font = new MyFont();
myFont.fontName;//フォント名

var tfm:TextFormat = new TextFormat();
tfm.font = myFont.fontName;//文字列で指定しない。
</pre>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1228/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[AS]mouseEnabled=falseで下の階層にあるボタンを有効にするときの注意。</title>
		<link>http://memo.393.bz/archives/1217</link>
		<comments>http://memo.393.bz/archives/1217#comments</comments>
		<pubDate>Wed, 23 Jun 2010 09:28:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1217</guid>
		<description><![CDATA[感覚的に勘違いをしていたのでメモしておく。
言葉で書いてもうまく伝えられないので、まずは以下フレームアクションのスクリプト参照。


import flash.display.Sprite;

//1階層目
//コンテナ [...]]]></description>
			<content:encoded><![CDATA[<p>感覚的に勘違いをしていたのでメモしておく。</p>
<p>言葉で書いてもうまく伝えられないので、まずは以下フレームアクションのスクリプト参照。</p>
<pre name="code" class="as">

import flash.display.Sprite;

//1階層目
//コンテナ的sp(塗り無し）
var container01:Sprite = new Sprite();

//コンテナの背景的なもの(赤塗り）
var bg01:Sprite = new Sprite();
bg01.graphics.beginFill(0xFF0000);
bg01.graphics.drawRect(0,0,300,300);
bg01.graphics.endFill();

//ボタン的なもの
var btn01:Sprite = new Sprite();
btn01.graphics.beginFill(0x660000);
btn01.graphics.drawRect(40,40,40,40);
btn01.graphics.endFill();
btn01.buttonMode = true;

//コンテナ的なものをメインのタイムラインに配置
this.addChild(container01);
//背景的なものをコンテナに配置
container01.addChild(bg01);
//ボタン的なものをコンテナに配置
container01.addChild(btn01);

//////////////////////////////////////

//2階層目
//コンテナ的sp（塗り無し）
var container02:Sprite = new Sprite();
//1階層目が見えるように半透明にして配置をずらす
container02.alpha = .5;
container02.x = container02.y = 20;

//コンテナの背景的なもの(青塗り）
var bg02:Sprite = new Sprite();
bg02.graphics.beginFill(0x0000FF);
bg02.graphics.drawRect(0,0,300,300);
bg02.graphics.endFill();

//ボタン的なもの
var btn02:Sprite = new Sprite();
btn02.graphics.beginFill(0x000066);
btn02.graphics.drawRect(40,40,40,40);
btn02.graphics.endFill();
btn02.buttonMode = true;

//コンテナ的なものをメインのタイムラインに配置
this.addChild(container02);
//背景的なものをコンテナに配置
container02.addChild(bg02);
//ボタン的なものをコンテナに配置
container02.addChild(btn02);

//1階層目のボタンを押せるようにするには、
//2階層目の背景的なものをmouseEnabled = false
bg02.mouseEnabled = false;
//さらに、コンテナ的なspもmouseEnabled = false;
//にしないとだめ
container02.mouseEnabled = false;
</pre>
<p>はまったポイントは2階層目のコンテナ自身に対してもmouseEnable=falseを設定してあげないといけないということ。<br />
2階層目のコンテナ自身は塗りを持ってないから、(塗りの実体である)背景だけをmouseEnable=falseにすればいいんじゃね、と思い込んでおりましたが、それだと1階層目のボタンに触れません。<br />
コンテナ自身もmouseEnabled=falseにしてやらないとだめだったのです。<br />
感覚的に、コンテナをmouseEnabled=falseにしちゃったら、コンテナが内包しているボタンもmouseEnabled=false扱いとなってしまうかと思ったら、そんなことは無いというオチ。<br />
mouseChildrenってプロパティもあるし、それぞれの機能をちゃんと理解しとかないとマズイです。。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1217/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
