跳到主要內容

發表文章

目前顯示的是 十月, 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 function _btnClickHand…

二篇很實用的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喔
<br />package milkmidi.mxml { <br /> import flash.display.DisplayObject;<br /> import flash.display.Sprite; <br /> [DefaultProperty("children")]<br /> public class MXMLContainer extends Sprite { <br /> private var _children :Array; <br /> public function MXMLContainer() { <br /> } <br /> public function get children():Array{<br /> return _children;<br /> } <br /> public function set children(pArr:Array):void { <br /> if (…

MQuery2.0.2發怖

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