[AS3] 使用 Sprite 實體來建立按鈕
Flash本身有Button元件,也有組件Button可以使用,為什麼還要用Sprite類別來建立按鈕?
最近碰到一個狀況,要在Flash上建立類似網頁展開選單的功能,主功能選項旁邊有個「+」,按下去會展開內部的子功能列表,可惜我不是在做網頁,是純Flash,所以只好自己慢慢刻一個。
除了點選「+」會展開子功能列表,每個子功能列表還要有點選的功能,就跟網頁的超連結一樣,如果是單純文字,就算可以點,點起來也一點快感都沒有(我那麼龜毛做什麼=.=),總不能把每個子功能選單都做成Button的模樣,看起來挺蠢的,還有一個原因就是本人的美工很爛,偏好使用組件大於元件,因為組件的設計比較典雅高尚(被踢飛)。
碰到上述的情形,如果你也很龜毛,那麼你也可以試試看用Sprite類別來建立按鈕,顯示效果如下:
(滑鼠移上子選單會顯示手型,就像網頁上的超連結一樣)
如果要在增加子選單,那就依照上面的方法自己新增Sprite吧!
最近碰到一個狀況,要在Flash上建立類似網頁展開選單的功能,主功能選項旁邊有個「+」,按下去會展開內部的子功能列表,可惜我不是在做網頁,是純Flash,所以只好自己慢慢刻一個。
除了點選「+」會展開子功能列表,每個子功能列表還要有點選的功能,就跟網頁的超連結一樣,如果是單純文字,就算可以點,點起來也一點快感都沒有(我那麼龜毛做什麼=.=),總不能把每個子功能選單都做成Button的模樣,看起來挺蠢的,還有一個原因就是本人的美工很爛,偏好使用組件大於元件,因為組件的設計比較典雅高尚(被踢飛)。
碰到上述的情形,如果你也很龜毛,那麼你也可以試試看用Sprite類別來建立按鈕,顯示效果如下:
(滑鼠移上子選單會顯示手型,就像網頁上的超連結一樣)
//建立主標題文字方塊 var Pre_action:TextField = createTextField(35,80,230,150); Pre_action.text = "台北市"; var Con:int = 0;//Button"+"、"-"控制器 var container:Sprite = new Sprite();//選單容器 addChild(container); var names:TextField = new TextField;//建立選單上的文字方塊 names.defaultTextFormat = format;//設定format names.autoSize = TextFieldAutoSize.LEFT;//預設靠左對齊 names.text = "- 動物園"; var spr:Sprite = new Sprite;//建立Sprite物件 spr.mouseChildren = false;//子系物件不支援滑鼠事件 spr.addChild(names); spr.x = 35;//設定Sprite的位置x spr.y = 105;//設定Sprite的位置y spr.buttonMode = true;//開啟Sprite的按鈕模式 //滑鼠Click監聽事件 spr.addEventListener(MouseEvent.CLICK,showPic); function showPic(event:MouseEvent):void { //按下Sprite按鈕後事件 } //建立"+"、"-"Button var add_btn:Button = createButton(15,80,20,20,"+"); //"+"、"-"Button監聽事件 --> "+"變"-"、"-"變"+" add_btn.addEventListener(MouseEvent.CLICK, showEdit); function showEdit(event:Event) { var buttonInfo:Array = new Array("+","-");//設定Array Con = (Con+1)%2; add_btn.label = buttonInfo[Con];//每次互換"+"、"-"狀態 if (Con == 1) {//顯示選單內容 addChild(container); container.addChild(spr); } else {//移除選單內容 removeChild(container); } }
如果要在增加子選單,那就依照上面的方法自己新增Sprite吧!
留言
張貼留言