2007-09-12

Flash/AS3 z-index 處理 part 2

承上一篇
3)欲以物件的某個參考值當作 Depth
將 Display Object 和 Depth (參考值) 做成 Object
所有 Object 做成 Object Array, 就可以用 sortOn 幫你排
FLA 原始檔
var numObj:int = 12;
var dang:Number = Math.PI*2/numObj;
var xr:int = 200;
var yr:int = 20;
var shift:Number = 0;
var arObj:Array = [];
for (var i:int = 0; i < numObj; i++) {
arObj[i] = new mc_star;
this.addChild( arObj[i] );
}
this.addEventListener(Event.ENTER_FRAME, mEnterFrame);
function mEnterFrame(e:Event):void {
var _mc:MovieClip;
var ang:Number;
var depth:int;
var depthsRela:Array = [];
for (var i:int = 0; i < numObj; i++) {
ang = i*dang +shift;
_mc = arObj[i] as MovieClip;
_mc.x = xr*Math.cos(ang);
_mc.y = yr*Math.sin(ang);
_mc.scaleX = 0.8 + 0.2*Math.sin(ang);
_mc.scaleY = _mc.scaleX;
var blurN:Number = 4*(1- Math.sin(ang) );
_mc.filters = [new BlurFilter(blurN, blurN, BitmapFilterQuality.HIGH)];
// z-index 的參考值
depth = Math.sin(ang)*1000;
depthsRela.push({d:depth, mc:_mc});

}
// 排序
depthsRela.sortOn("d", Array.NUMERIC);
for (i=0; i < numObj; i++) {
this.setChildIndex(depthsRela[i].mc, i);
}
shift += 0.01;
}

2007-09-11

Flash/AS3 z-index 處理 part 1

z-index 的處理經常遇到的有三種情況, 先提兩種:

1) 將 display object 由原來的 z-index 提到最高值
可以先 removeChild, 再使用 addChild

2) display object 在某些時候要提到最高值, 某些時候要回到原來的 z-index
做個空的 Sprite 物件去佔原來位置, 之後再對調回來
FLA 原始檔
this.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
this.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
function onMouseOver(e:MouseEvent):void{
var _mc:MovieClip = e.target as MovieClip;
var _p:DisplayObjectContainer =
_mc.parent as DisplayObjectContainer;
// 建立佔茅坑者
_mc.occu = new Sprite;
_p.addChild(_mc.occu);
// 交換位置
_p.swapChildren(_mc, _mc.occu);
}
function onMouseOut(e:MouseEvent):void{
var _mc:MovieClip = e.target as MovieClip;
var _p:DisplayObjectContainer =
_mc.parent as DisplayObjectContainer;
// 換回原來的位置
_p.swapChildren(_mc, _mc.occu);
delete _mc.occu;
}

2007-09-06

Adobe 公開預覽 Flash Media Server 3

FMS3 大概 2008 第一季會開賣
官方消息
支援 H.264 和 AAC
支援 Flash Lite 3
伺服端依然使用 AS1, 客戶端不限 AS1 ~ AS3
詳情請看 fms3 faq

2007-09-03

fl.controls.Button 的 click 事件

看樣子 fl 包又出包了 ...
主時間軸上放個 AS3 組件 Button b
以下的兩個事件偵聽器居然有不同的結果
b.addEventListener(MouseEvent.CLICK, lisa);
b.toggle = true;
b.addEventListener(MouseEvent.CLICK, lisb);
function lisa(e:Event) {
trace("lisa:", b.selected);
}
function lisb(e:Event) {
trace("lisb:", b.selected);
}

按一下 b 的結果:
lisa: false
lisb: true

FB 留言