忍者ブログ
主にFlashのTIPSを紹介するページです。
 カレンダー 
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
 ブログ内検索 
 P R 
 アクセス解析 
[1]  [2
 [PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ちょっとしたTIPSです。

引数がArray型のファンクションにパラメータを渡すには、
ダミーの配列を作って、それに格納してから引き渡してる方も
多いかと思いますが、以下の方法が楽で見た目にも分かりやすいです。

例)
var foo:Array = new Array();
foo.push("abc");
foo.push("xyz");
hoge(foo);

↓↓↓

hoge(["abc","xyz"]);

後からfooを使うのなら別ですが、
ただパラメータを渡したいだけならこれで十分です。
「こんなの常識だよ!」と思われるかもしれませんが、
意外に盲点かと思われます。
なぜなら、私が上記の書き方をしていたからです(笑)
いや~、全然気づかなかったですよ。間抜けですね。

久しぶりの記事が他愛もない話ですいません……。

PR
※[AS2.0]の場合は、こちらを参照してください

htmlファイルのembedタグからswfファイルにパラメータを渡すには、
AS2.0同様FlashVarsが使える。ただし、Flash側の処理が異なる。

・<param>タグを1行追加。
・<embed>タグに項目を追加。

[例] 変数名「option」にパラメータを渡す
<param name="FlashVars" value="option=value" />

<embed FlashVars="option=value" ... />

↑ここまでは、AS2.0の時と同じになる。

■Flash側の処理
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
trace( paramObj["option"] );
のように取り出す。

また、AS2.0同様「&」で区切ることで、複数指定することができる。
[例]
<embed FlashVars="option=1&version=2" />

※[AS3.0]の場合は、こちらを参照してください

htmlファイルのembedタグからswfファイルにパラメータを渡すには、FlashVarsを使う。

・<param>タグを1行追加。
・<embed>タグに項目を追加。

[例] 変数名「option」にパラメータを渡す
<param name="FlashVars" value="option=value" />

<embed FlashVars="option=value" ... />

■Flash側の処理
trace( _root.option );
のように取り出す。

また、「&」で区切ることで、複数指定することができる。
[例]
<embed FlashVars="option=1&version=2" />

通常「addEventListener」を使うときは
addEventListener(イベントタイプ, 関数名);
と記述し、イベントが発生したら「関数名」で指定した関数が呼び出される。

そして処理が終わったら「removeEventListener」で削除する。
removeEventListener(イベントタイプ, 関数名);

これが基本パターンだが「関数名」の箇所に直接処理を書いてしまうこともできる。
↓こんな感じ
addEventListener(イベントタイプ, function(e:Event):void{ trace("hoge"); });

しかしこうすると、この関数は名前を持たないので「removeEventListener」する時に困ってしまう。
これを解決するには「arguments.callee」を使う。
↓こんな感じ
removeEventListener(イベントタイプ, arguments.callee);

※「arguments.callee」のヘルプを見ると「現在実行中の関数への参照です」と記述されている

[プログラム例]:traceを10回実行して、終了する
public function Main()
{
    var cnt:int = 0;
    addEventListener(Event.ENTER_FRAME,
        function(e:Event):void
        {
            trace("count:"+cnt);
            cnt++;
            if(cnt==10)
            {
                removeEventListener(Event.ENTER_FRAME, arguments.callee);
            }
        }
    );
}

本当はちゃんと関数を作った方がいいんだろうけど「フラグをセットするだけ」とか、単純な使い方ならプログラムがスッキリする気がしないでもない。。。
でも、あまり使わないかな?

親クラス内で外部クラスをaddChildした後でなければ、外部クラス内でstageを参照することはできない。
↓で、自分自身がaddChildされたことを検知できる。

public class Test extends Sprite
{
    public function Test()
    {
        trace(stage);    // null と表示される
        addEventListener(Event.ADDED_TO_STAGE, onAdded);    // class TestがaddChildされたらonAddedへ
    }

    private function onAdded(e:Event)
    {
        // この段階でstageが使用可能になる
        trace(stage);    // [object Stage] と表示される
    }
}

 カウンター 
 フリーエリア 
 プロフィール 
HN:
hirody
性別:
非公開
 リンク 

Template by ららららいふ / Material by 素材くん「無料WEB素材屋」

忍者ブログ [PR]