2009 March  5

AS3のオブジェクトの重なり順操作。

長い冬ももうすぐ終わりでしょうか。
早くあったかくなってほしいです。DearWebdesign管理人ツノッチです。

久々にまとめにエントリーしてみます。
AS3でオブジェクトの重なり順を操作してみます。

AS3で重なり順を操作するにはsetChildIndexを使います。

まずはmain_mcをステージに作ります。
次にmain_mcにimg01、img02、img03という画像を格納する
ムービークリップを入れ子で作ります。
図にすると下の画像のような感じ。

ムービーサンプル画像

/************************************
基本情報
************************************/
var myXML:XML;
var xmlPath:String = "setchild.xml";
var xmlRequest:URLRequest = new URLRequest(xmlPath);
var xmlLoader:URLLoader = new URLLoader(xmlRequest);
var loader:Loader;
var time:uint = 0;
var timeEnd:uint = 240;
var nowNum:uint = 1;
/************************************
配列
************************************/
var imgArray:Array = new Array();
var loadArray:Array = new Array();
/************************************
XML読み込み
************************************/
xmlLoader.addEventListener(Event.COMPLETE, setXmlComplete);
function setXmlComplete(event:Event):void{
    myXML = new XML(event.target.data);
    setImg();
}
function setImg():void{
    for(var i:uint = 0; i <= 2; i++){
        loader = new Loader();
        imgArray.push(loader);
        imgArray[i].load(new URLRequest(myXML.item[i].thumb));
    }
    addImage();
}
function addImage():void{
    main_mc.img01.addChild(imgArray[0]);
    main_mc.img02.addChild(imgArray[1]);
    main_mc.img03.addChild(imgArray[2]);
}
/************************************
自動ループ
************************************/
this.addEventListener(Event.ENTER_FRAME, setTime);
function setTime(event:Event):void{
    if(time == timeEnd){
        time = 0;
        autoLoop();
    } else {
        time++;
        //trace(time);
    }
}
function autoLoop():void{
    if(nowNum == 3){
        nowNum = 1;
        changeImg();
        //trace(nowNum);
    } else {
        nowNum ++;
        changeImg();
        //trace(nowNum);
    }
}
function changeImg():void{
    main_mc.setChildIndex(main_mc.getChildByName("img0" + nowNum), (main_mc.numChildren - 1));
}

setChildIndexのサンプル»

このサンプルだと一定時間で、1>>2>>3>>1>>......
のように、順番が入れ替わっていきます。

setChildIndexの(numChildren - 1)で常にターゲットの
ムービークリップをmain_mcの子要素の一番上に
持ってきてます。

関連する記事

TAGS

TRACK BACK URI

http://www.dear-webdesign.com/mt/mt-tb.cgi/33

POST YOUR COMMENTS

Tag Cloud