<?xml version="1.0" encoding="UTF-8" ?>
<rss version="0.91">
  <channel>
    <title>Flash Tech Labo.</title>
    <description>主にFlashのTIPSを紹介するページです。</description>
    <link>http://flashtechlabo.blog.shinobi.jp/</link>
    <language>ja</language>
    <copyright>Copyright (C) NINJATOOLS ALL RIGHTS RESERVED.</copyright>

    <item>
      <title>ファンクションの引数が、Array型の場合の引き渡しかた</title>
      <description>ちょっとしたTIPSです。&lt;br /&gt;
&lt;br /&gt;
引数がArray型のファンクションにパラメータを渡すには、&lt;br /&gt;
ダミーの配列を作って、それに格納してから引き渡してる方も&lt;br /&gt;
多いかと思いますが、以下の方法が楽で見た目にも分かりやすいです。&lt;br /&gt;
&lt;br /&gt;
例）&lt;br /&gt;
var foo:Array = new Array();&lt;br /&gt;
foo.push(&amp;quot;abc&amp;quot;);&lt;br /&gt;
foo.push(&amp;quot;xyz&amp;quot;);&lt;br /&gt;
hoge(foo);&lt;br /&gt;
&lt;br /&gt;
&amp;darr;&amp;darr;&amp;darr;&lt;br /&gt;
&lt;br /&gt;
hoge([&amp;quot;abc&amp;quot;,&amp;quot;xyz&amp;quot;]);&lt;br /&gt;
&lt;br /&gt;
後からfooを使うのなら別ですが、&lt;br /&gt;
ただパラメータを渡したいだけならこれで十分です。&lt;br /&gt;
「こんなの常識だよ！」と思われるかもしれませんが、&lt;br /&gt;
意外に盲点かと思われます。&lt;br /&gt;
なぜなら、私が上記の書き方をしていたからです（笑）&lt;br /&gt;
いや～、全然気づかなかったですよ。間抜けですね。&lt;br /&gt;
&lt;br /&gt;
久しぶりの記事が他愛もない話ですいません&amp;hellip;&amp;hellip;。&lt;br /&gt;
&lt;br /&gt;</description> 
      <link>http://flashtechlabo.blog.shinobi.jp/actionscript3.0/%E3%83%95%E3%82%A1%E3%83%B3%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E5%BC%95%E6%95%B0%E3%81%8C%E3%80%81array%E5%9E%8B%E3%81%AE%E5%A0%B4%E5%90%88%E3%81%AE%E5%BC%95%E3%81%8D%E6%B8%A1%E3%81%97%E3%81%8B%E3%81%9F</link> 
    </item>
    <item>
      <title>htmlファイルのembedタグから、swfファイルにパラメータを渡す[AS3.0]</title>
      <description>※[AS2.0]の場合は、&lt;a href=&quot;http://flashtechlabo.blog.shinobi.jp/Entry/6/&quot;&gt;こちら&lt;/a&gt;を参照してください&lt;br /&gt;
&lt;br /&gt;
htmlファイルのembedタグからswfファイルにパラメータを渡すには、&lt;br /&gt;
AS2.0同様FlashVarsが使える。ただし、Flash側の処理が異なる。&lt;br /&gt;
&lt;br /&gt;
・&amp;lt;param&amp;gt;タグを１行追加。&lt;br /&gt;
・&amp;lt;embed&amp;gt;タグに項目を追加。&lt;br /&gt;
&lt;br /&gt;
[例]　変数名「option」にパラメータを渡す&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New;&quot;&gt;&amp;lt;param name=&amp;quot;FlashVars&amp;quot; value=&amp;quot;option=value&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;embed FlashVars=&amp;quot;option=value&amp;quot; ... /&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&amp;uarr;ここまでは、AS2.0の時と同じになる。&lt;br /&gt;
&lt;br /&gt;
■Flash側の処理&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New;&quot;&gt; var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;&lt;br /&gt;
trace( paramObj[&amp;quot;option&amp;quot;] );&lt;br /&gt;
&lt;/span&gt;のように取り出す。&lt;br /&gt;
&lt;br /&gt;
また、AS2.0同様「&amp;amp;」で区切ることで、複数指定することができる。&lt;br /&gt;
[例]&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New;&quot;&gt;&amp;lt;embed FlashVars=&amp;quot;option=1&amp;amp;version=2&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;br type=&quot;_moz&quot; /&gt;</description> 
      <link>http://flashtechlabo.blog.shinobi.jp/actionscript3.0/html%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AEembed%E3%82%BF%E3%82%B0%E3%81%8B%E3%82%89%E3%80%81swf%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%82%92%E6%B8%A1%E3%81%99-as3.0-</link> 
    </item>
    <item>
      <title>htmlファイルのembedタグから、swfファイルにパラメータを渡す[AS2.0]</title>
      <description>※[AS3.0]の場合は、&lt;a href=&quot;http://flashtechlabo.blog.shinobi.jp/Entry/7/&quot;&gt;こちら&lt;/a&gt;を参照してください&lt;br /&gt;
&lt;br /&gt;
htmlファイルのembedタグからswfファイルにパラメータを渡すには、FlashVarsを使う。&lt;br /&gt;
&lt;br /&gt;
・&amp;lt;param&amp;gt;タグを１行追加。&lt;br /&gt;
・&amp;lt;embed&amp;gt;タグに項目を追加。&lt;br /&gt;
&lt;br /&gt;
[例]　変数名「option」にパラメータを渡す&lt;br /&gt;
&amp;lt;param name=&amp;quot;FlashVars&amp;quot; value=&amp;quot;option=value&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;embed FlashVars=&amp;quot;option=value&amp;quot; ... /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
■Flash側の処理&lt;br /&gt;
trace( _root.option );&lt;br /&gt;
のように取り出す。&lt;br /&gt;
&lt;br /&gt;
また、「&amp;amp;」で区切ることで、複数指定することができる。&lt;br /&gt;
[例]&lt;br /&gt;
&amp;lt;embed FlashVars=&amp;quot;option=1&amp;amp;version=2&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;</description> 
      <link>http://flashtechlabo.blog.shinobi.jp/actionscript2.0/html%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AEembed%E3%82%BF%E3%82%B0%E3%81%8B%E3%82%89%E3%80%81swf%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%82%92%E6%B8%A1%E3%81%99-as2.0-</link> 
    </item>
    <item>
      <title>addEventListenerでの無名関数内でremoveEventListenerをする方法[AS3.0]</title>
      <description>通常「addEventListener」を使うときは&lt;br /&gt;
addEventListener(イベントタイプ, 関数名);&lt;br /&gt;
と記述し、イベントが発生したら「関数名」で指定した関数が呼び出される。&lt;br /&gt;
&lt;br /&gt;
そして処理が終わったら「removeEventListener」で削除する。&lt;br /&gt;
removeEventListener(イベントタイプ, 関数名);&lt;br /&gt;
&lt;br /&gt;
これが基本パターンだが「関数名」の箇所に直接処理を書いてしまうこともできる。&lt;br /&gt;
&amp;darr;こんな感じ&lt;br /&gt;
addEventListener(イベントタイプ, function(e:Event):void{ trace(&amp;quot;hoge&amp;quot;); });&lt;br /&gt;
&lt;br /&gt;
しかしこうすると、この関数は名前を持たないので「removeEventListener」する時に困ってしまう。&lt;br /&gt;
これを解決するには「arguments.callee」を使う。&lt;br /&gt;
&amp;darr;こんな感じ&lt;br /&gt;
removeEventListener(イベントタイプ, arguments.callee);&lt;br /&gt;
&lt;br /&gt;
※「arguments.callee」のヘルプを見ると「現在実行中の関数への参照です」と記述されている&lt;br /&gt;
&lt;br /&gt;
[プログラム例]：traceを10回実行して、終了する&lt;br /&gt;
public function Main()&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var cnt:int = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; addEventListener(Event.ENTER_FRAME,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; function(e:Event):void&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; trace(&amp;quot;count:&amp;quot;+cnt);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; cnt++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(cnt==10)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; removeEventListener(Event.ENTER_FRAME, arguments.callee);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
本当はちゃんと関数を作った方がいいんだろうけど「フラグをセットするだけ」とか、単純な使い方ならプログラムがスッキリする気がしないでもない。。。&lt;br /&gt;
でも、あまり使わないかな？&lt;br /&gt;
&lt;br type=&quot;_moz&quot; /&gt;</description> 
      <link>http://flashtechlabo.blog.shinobi.jp/actionscript3.0/addeventlistener%E3%81%A7%E3%81%AE%E7%84%A1%E5%90%8D%E9%96%A2%E6%95%B0%E5%86%85%E3%81%A7removeeventlistener%E3%82%92%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95-as3.0-</link> 
    </item>
    <item>
      <title>自分自身がstageにaddChildされたことを検知する方法[AS3.0]</title>
      <description>親クラス内で外部クラスをaddChildした後でなければ、外部クラス内でstageを参照することはできない。&lt;br /&gt;
&amp;darr;で、自分自身がaddChildされたことを検知できる。&lt;br /&gt;
&lt;br /&gt;
public class Test extends Sprite&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public function Test()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; trace(stage);&amp;nbsp;&amp;nbsp;&amp;nbsp; // null と表示される&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; addEventListener(Event.ADDED_TO_STAGE, onAdded);&amp;nbsp;&amp;nbsp;&amp;nbsp; // class TestがaddChildされたらonAddedへ&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private function onAdded(e:Event)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // この段階でstageが使用可能になる&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; trace(stage);&amp;nbsp;&amp;nbsp;&amp;nbsp; // [object Stage] と表示される&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br type=&quot;_moz&quot; /&gt;</description> 
      <link>http://flashtechlabo.blog.shinobi.jp/actionscript3.0/%E8%87%AA%E5%88%86%E8%87%AA%E8%BA%AB%E3%81%8Cstage%E3%81%ABaddchild%E3%81%95%E3%82%8C%E3%81%9F%E3%81%93%E3%81%A8%E3%82%92%E6%A4%9C%E7%9F%A5%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95-as3.0-</link> 
    </item>
    <item>
      <title>読み込んだ外部swf内の変数にアクセスする方法[AS3.0]</title>
      <description>例）&lt;br /&gt;
読み込まれるファイル：test.swf&lt;br /&gt;
変数hogeがある　　　　var hoge:int;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var url:URLRequest = new URLRequest(&amp;quot;test.swf&amp;quot;);&lt;br /&gt;
var loader:Loader&amp;nbsp; = new Loader();&lt;br /&gt;
&lt;br /&gt;
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadEnd);&lt;br /&gt;
loader.load(url);&lt;br /&gt;
&lt;br /&gt;
function loadEnd(e:Event)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; addChild(loader);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // 変数にアクセスする&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var obj:Object = loader.content;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; obj.hoge = 123;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; trace( obj.hoge );&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // タイムライン制御する&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var myMc:MovieClip ;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; myMc = loader.content as MovieClip;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; myMc.stop();&lt;br /&gt;
}&lt;br /&gt;
&lt;br type=&quot;_moz&quot; /&gt;</description> 
      <link>http://flashtechlabo.blog.shinobi.jp/actionscript3.0/%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%82%93%E3%81%A0%E5%A4%96%E9%83%A8swf%E5%86%85%E3%81%AE%E5%A4%89%E6%95%B0%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95-as3.0-</link> 
    </item>
    <item>
      <title>外部クラス内で、親クラス内の変数を使う[AS3.0]</title>
      <description>&lt;span style=&quot;font-family: Courier New;&quot;&gt;親クラスの変数にアクセスするような作りは好ましくないが、いざというときのために。。。&lt;br /&gt;
&lt;br /&gt;
○親クラス&lt;br /&gt;
package&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.display.*;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public class Main extends Sprite&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public var hoge:String = &amp;quot;&amp;quot;;&amp;nbsp;&amp;nbsp;&amp;nbsp; // publicをつけて外部から見えるようにする&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public function Main()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var myClass:NewClass = new NewClass();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // addChildすることで外部クラスでparentが使えるようになる&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.addChild(myClass);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; myClass.test();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; trace(hoge);&amp;nbsp;&amp;nbsp;&amp;nbsp; // hogehoge と表示される&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
○外部クラス&lt;br /&gt;
package&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.display.*;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public class NewClass extends Sprite&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public function test()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Main(parent).hoge = &amp;quot;hogehoge&amp;quot;;&amp;nbsp;&amp;nbsp;&amp;nbsp; // parentを親クラス名でキャストする&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ちなみにアクセスしたい変数のアクセス修飾子を省略すると internal 扱いとなるので、同一パッケージ内からならアクセスが出来る。&lt;br /&gt;
&lt;span&gt;public var hoge:String = &amp;quot;&amp;quot;;&lt;br /&gt;
&amp;darr;&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;var hoge:String = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;</description> 
      <link>http://flashtechlabo.blog.shinobi.jp/actionscript3.0/%E5%A4%96%E9%83%A8%E3%82%AF%E3%83%A9%E3%82%B9%E5%86%85%E3%81%A7%E3%80%81%E8%A6%AA%E3%82%AF%E3%83%A9%E3%82%B9%E5%86%85%E3%81%AE%E5%A4%89%E6%95%B0%E3%82%92%E4%BD%BF%E3%81%86-as3.0-</link> 
    </item>
    <item>
      <title>Hello, world!</title>
      <description>このブログでは、主に「Flash」(ActionScript)についての話題を取り扱います。&lt;br /&gt;
&lt;br /&gt;
基本的には自分用の備忘録なので、説明もなくプログラムだけが貼り付けてあることもあるかと思いますが、その辺りはご了承ください。&lt;br /&gt;
&lt;br /&gt;
まぁ、タイトルくらいはつけますが。。。(^_^;&lt;br /&gt;
&lt;br /&gt;
「自分用の備忘録」というコンセプトなので非公開で作ろうかとも思ったのですが、私自身ネット上のテクニカル系ブログにお世話になることも多いので、こんなブログでも誰かの参考になるかもしれないと思い、公開することにしました。&lt;br /&gt;
&lt;br type=&quot;_moz&quot; /&gt;</description> 
      <link>http://flashtechlabo.blog.shinobi.jp/%E9%9B%91%E8%AB%87/hello-%20world-</link> 
    </item>

  </channel>
</rss>