2011年6月8日 星期三

深度交換_DisplayObjectContainer.swapChildrenAt()

swapChildrenAt(index1:int, index2:int)
在子清單的兩個指定索引位置,替換子物件的 z 順序 (深度階層,由前至後順序)。
UIScrollBar
UIScrollBar.scrollPosition = UIScrollBar.maxScrollPosition;
scrollPosition : 會取得或設定目前的捲動位置,並更新縮圖的位置。
maxScrollPosition : 會取得或設定代表最高捲動位置的數字。
UIScrollBar.update();
會強制捲軸立即更新其捲動屬性。

※此例, 點擊舞台,透過 swapChildrenAt()方法, 物件bbb與ccc交換深度,右邊TextField文字欄位info會呈現bbb與ccc深度上下順序. (文字欄位中, 先trace低索引, 再trace高索引)
※UIScrollBar捲軸被附加綁定到info文字欄位上,當字串資料超出欄位底部,捲軸將持續捲至捲動最大值位置並更新畫面,以便閱讀最新字串訊息.

1000608_displayObjectContainer.swapChildrenAt.swf


import fl.controls.UIScrollBar;
import fl.controls.ScrollBarDirection;

var vScrollBar:UIScrollBar = new UIScrollBar();
this.setInfoTF();
this.createUIScrollBar();

trace("this.numChildren : " + this.numChildren);
this.addInfo("this.numChildren : " + this.numChildren);
this.getSpriteIndex();

this.stage.addEventListener(MouseEvent.MOUSE_DOWN,swap);
function swap(event:MouseEvent):void {
 /*深度交換*/
 this.swapChildrenAt(this.getChildIndex(bbb),this.getChildIndex(ccc));
 trace("****************");
 this.getSpriteIndex();
}

/*取得為Sprite類別物件且不為UIScrollBar 的實體*/
/*UIScrollBar 繼承自Sprite → UIScrollBar →ScrollBar →UIComponent →Sprite*/
function getSpriteIndex():void {
 for (var i:uint=0; i < this.numChildren; i++) {
  if (this.getChildAt(i) is Sprite && !(this.getChildAt(i) is UIScrollBar)) {
   trace("索引 " + i + " : " + this.getChildAt(i).name);
   addInfo("索引 " + i + " : " + this.getChildAt(i).name);
  }
 }
 addInfo("**************");
 /*強制捲軸立即更新其捲動屬性。 - 重要,否則捲軸拖曳Bar會不見*/
 this.vScrollBar.scrollPosition = this.vScrollBar.maxScrollPosition;
 trace(this.vScrollBar.scrollPosition);
 this.vScrollBar.update();
 return;
}

/*設置info動態文字欄位屬性*/
function setInfoTF():void {
 var format:TextFormat = new TextFormat();
 format.color = 0x000000;
 this.info.selectable = true;
 this.info.wordWrap = true;
 /*autoSize屬性不能開, 否則捲軸會不正常*/
 /*this.info.autoSize = TextFieldAutoSize.LEFT;*/
 this.info.setTextFormat(format);
 this.info.defaultTextFormat = format;
 return;
}

/*附加字串至TextField 欄位目前字串之後*/
function addInfo(_obj:*):void {
 this.info.appendText(_obj.toString() + "\n");
 return;
}

/*初始定義UIScrollBar屬性*/
function createUIScrollBar():void{
 this.vScrollBar = new UIScrollBar();
 this.vScrollBar.direction = ScrollBarDirection.VERTICAL;
 this.vScrollBar.scrollTarget = info;
 this.vScrollBar.move(info.x + info.width + 10, info.y);
 this.vScrollBar.height = info.height;
 this.addChild(vScrollBar);
 return;
}

沒有留言: