跳到主要內容

發表文章

目前顯示的是 10月, 2009的文章

氣泡事件與客製化事件

AS3最好用的就是新的事件流 而且可以使用氣泡事件的方法, 一路往上打, 非常的好用 不要再寫像是AS2的 parent.parent.parent.gotoAndPlay(2)了 假設場景結構如下 Stage MainTimeline Loader(載入Child.swf) 當Child.swf裡的按鈕被按下時, 主時間要開始播放 可以用類似AS2的寫法是 MovieClip(parent.parent).gotoAndPlay(2); AS3,可以叫Child.swf發送氣泡事件往上層打, 一路的可視可件都可以偵聽的到。 如果想要發事件時, 一起帶個參數出去 可以寫個 get 的屬性, 透過偵聽者函式 e.target即可得到發出事件者 或是可以發送一個客製化的事件, 就不需要寫 get 屬性。 Child.swf Child.as 該swf上有二個按鈕, 名稱為:btn_mc , btn2_mc package { import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import milkmidi.CustomEvent; /** * ... * @author milkmidi */ public class Child extends Sprite { public var btn_mc :MovieClip; public var btn2_mc :MovieClip; private var _msg :String = "我是Child.swf的變數"; public function Child() { btn_mc.buttonMode = true; btn_mc.addEventListener(MouseEvent.CLICK , _btnClickHandler); btn2_mc.buttonMode = true; btn2_mc.addEventListener(MouseEvent.CLICK , _btn2ClickHandler); } private funct...

二篇很實用的Facebook App開發心得

最近的 facebook 非常的火紅, 什麼活動都想辦法要跟 fb 結合一下 必竟朋友之間的傳遞是最有效的廣告 我自己只研究了一點點的fb app應用, 還沒有很熟 有興趣的朋友可以先參考這二篇教學, 寫的很清楚喔 Jason http://blog.iamjason.com/2009/09/facebook-flash-application4.html 網路基因 http://blog.webgene.com.tw/?p=1085

stage與AddedToStage

無法取存 null 的參考屬性或方法 這大概是 AS3 最常出現的 error 最容易發生在 stage 的屬性使用 所有的 DisplayObject 物件都有 parent(上一層的容器) root(該swf的最上一層容器) stage(唯一的 Stage 類別) 但這三個屬性一開始都是 null 一定要當該可視物件被加入到清單裡, 屬性才會有值 var _mc:MovieClip = new MovieClip(); _mc.parent; _mc.root; _mc.stage; //通通都是 null var _spr:Sprite = new Sprite(); _spr.addChild(_mc); _mc.parent; //可以得到 _spr物件, 因為被加入了 //但root和stage還是null //this是主時間軸 this.addChild(_spr); //這時_mc.root, _mc.stage才會有值。 而在寫 Class 時也一樣 package { import flash.display.Sprite; import flash.events.Event; public class Main extends Sprite { public function Main() { trace(stage); //如果直接執行該swf, stage是有值的 //但如果是被載入, stage一開始是null //要避免這樣的問題, 就直接偵聽 AddedToStage 事件即可 if (stage) init(null); else addEventListener(Event.ADDED_TO_STAGE , init); } private function init(e:Event):void { removeEventListener(Event.ADDED_TO_STAGE, init); //把要做的事寫在這兒 //這樣就可以確保 stage 屬性一定有值 } } }

米蘭數位2010強力徵才

2010強力徵才 資深網頁設計師+資深創意企劃+網路媒體企劃+專案執行+行政助理 因應2010年之業務發展需求及組織調整 米蘭2010年強力大徵才行動開始囉!!! 如果你(妳)對數位行銷有相當的興趣與熱忱 能體認這行業的辛酸甘苦 歡迎您來一同在浪頭上向前進! 原文網址: http://medialand.com.tw/blog/article.asp?id=1007

使用mxml來製作Flash

一般來說, 要產生swf格式有很多方法 1.直接使用Flash發怖.fla , 但大部份 Flex mx 類別都無法使用 2.使用 Flex 標準 mxml發怖, 但檔案 200k 起跳 經過不斷的爬文, 發現 mxml 只是一個序述的格式, 也就是可以完全的客製化表籤名稱 這樣就可以使用 mxml 來寫 as, 只要不用到 mx 類別, 就不會變胖。 參考了這幾個網站得來的心得: http://www.ryancampbell.com/2009/08/26/using-mxml-without-flex-example-and-source/ http://pv3d.org/2009/03/17/mxml-without-the-flex-framework/ 最好用的當然是 Bindable 了呀 只要寫{xxxx}就可以直接挷定, 不需再像寫.as一樣寫一大堆了。 而視覺元件可以用Flash製作成.swc來使用 程式碼: MXMLContainer基底用的類別, 是 extends Sprite不是UIComponent喔 package milkmidi.mxml { import flash.display.DisplayObject; import flash.display.Sprite; [DefaultProperty("children")] public class MXMLContainer extends Sprite { private var _children :Array; public function MXMLContainer() { } public function get children():Array{ return _children; } public function set children(pArr:Array):void { if (_children == pArr) return; _children = pArr; for each(var c:DisplayObject in pArr){ addChild(c); } } } } 把之前練習過...

MQuery2.0.2發怖

這次更新了自己的類別檔MQuery, 版本為2.0.2 和之前的1.0用法都一樣, 新增了許多的功能, 為了都是要減化 AS3 的程式碼。 //標準 Flash AS3 寫法, 還不包含移除事件. clip_mc.addEventListener(MouseEvent.ROLL_OVER , clip_mc_rollOverHandler); function clip_mc_rollOverHandler(e:MouseEvent):void { clip_mc.gotoAndPlay("over"); } clip_mc.addEventListener(MouseEvent.ROLL_OUT , clip_mc_rollOutHandler); function clip_mc_rollOutHandler(e:MouseEvent):void { clip_mc.gotoAndPlay("out"); } clip_mc.addEventListener(MouseEvent.MOUSE_UP , clip_mc_mouseUpHandler); function clip_mc_mouseUpHandler(e:MouseEvent):void { trace("clip_mc onRelease") } //MQuery, 仿 AS2 的寫法。 $(clip_mc).onRollOver = function():void { this.gotoAndPlay("over"); }; $(clip_mc).onRollOut = function():void { this.gotoAndPlay("out"); }; $(clip_mc).onRelease = function():void { trace(this.name , " onRelease"); }; //或是仿 jQuery 的串連寫法: $(clip_mc).rollOver(function(){ this.gotoAndPlay("over"); }).rollOut(function(){ this.gotoAndPlay...