長い冬ももうすぐ終わりでしょうか。
早くあったかくなってほしいです。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));
}
このサンプルだと一定時間で、1>>2>>3>>1>>......
のように、順番が入れ替わっていきます。
setChildIndexの(numChildren - 1)で常にターゲットの
ムービークリップをmain_mcの子要素の一番上に
持ってきてます。













