天才教育網(wǎng)合作機構 > 培訓機構 >

                                                                                        東莞設計培訓網(wǎng)

                                                                                        歡迎您!
                                                                                        朋友圈

                                                                                        全國統一學(xué)習專(zhuān)線(xiàn) 9:00-21:00

                                                                                        位置:培訓資訊 > 體驗Flash MX(9):Button對象

                                                                                        體驗Flash MX(9):Button對象

                                                                                        日期:2005-12-24 00:00:00     瀏覽:301    來(lái)源:東莞設計培訓網(wǎng)

                                                                                          Flash MX的出現讓我們看到了實(shí)現問(wèn)題的各種捷徑,而且內部對象全部Object化,而其中一個(gè)讓人興奮的對象就是Button Object——曾經(jīng)是不可Programmable(AS控制)的頑固分子之一。

                                                                                          Button對象是Object對象的繼承(言下之意即是所有Object的屬性方法都可以使用),現在已經(jīng)可以和MovieClip一樣可以有自己的Instance Name屬性,同樣在設置MovieClip的Instance Name的PropertyInspector面板內設置(Ctrl+f3,圖1)。

                                                                                        (圖1)

                                                                                          Button的InstanceName可以看作為一個(gè)指針I(yè)D,指向被Action編程操作MovieClip;當然,逆向地,動(dòng)態(tài)產(chǎn)生的MovieClip如果具有了使用了Button對象的方法,也即是“變成”了Button對象的指針I(yè)D。

                                                                                          我們做兩個(gè)例子來(lái)看看:

                                                                                          1) 手動(dòng)制作的Button。通常,在編程風(fēng)的跟隨下,很多人已經(jīng)走入了編程的誤區,就是無(wú)論什么都主張編程(不要學(xué)我哦,我寫(xiě)教程而已),其實(shí)解決問(wèn)題需要在速度和效率間尋找那個(gè)臨界點(diǎn),如果你覺(jué)得自己手動(dòng)速度更快一些就可以用手動(dòng)來(lái)做,例如圖1的按鈕就是很簡(jiǎn)單的用一個(gè)Rectangle Tool做出來(lái)的Button,并且給于Instance Name“btn1”。

                                                                                          2) 雖然手動(dòng)在某種情況下是非常直觀(guān)而且迅捷的,但是我們也看看另一個(gè)做法:

                                                                                          Movieclip.prototype.makeBoxV2 = function(x, y, l, w) {
                                                                                           this.lineto(x, y+w);
                                                                                           this.lineto(x+l, y+w);
                                                                                           this.lineto(x+l, y);
                                                                                           this.lineto(x, y);
                                                                                          };

                                                                                          with (btn2) {
                                                                                           moveto(120, 180);
                                                                                           beginfill(0x333333, 100);
                                                                                           linestyle(.1, 0x333333, 100);
                                                                                           makeBoxV2(120, 180, 65, 16);
                                                                                           endfill();
                                                                                          }

                                                                                          改進(jìn)的MakeBoxV2支持長(cháng)和寬的設定,這樣可以實(shí)現制作長(cháng)方形;程序動(dòng)態(tài)產(chǎn)生一個(gè)btn2,并且用粗度.1并且用色碼333333的顏色填充顏色代碼為333333的65x16的長(cháng)方形區域,這樣就有了形成一個(gè)Button的前提。

                                                                                          接著(zhù),賦予Button的屬性,即把Button的事件給于MovieClip:

                                                                                          btn2.onRollOver=function(){
                                                                                           this.myClr=new color(this);
                                                                                           this.myClr.setRGB(0xdddddd)
                                                                                          }

                                                                                          btn2.onRollOut=function(){
                                                                                           this.myClr=this.myClr.setRGB(0x333333);
                                                                                          }

                                                                                          接觸過(guò)Flash 5的朋友也許一下就看到里面用到了Color對象,這個(gè)對象在Flash MX沒(méi)有太大的改進(jìn),所以我們也就不多說(shuō)它;把onRollOver鼠標浮動(dòng)事件的Handler寫(xiě)為一個(gè)function,并設置這個(gè)按鈕的顏色為發(fā)亮的0xdddddd;由于鼠標不會(huì )在浮動(dòng)上之前就會(huì )有RollOut,所以把初始化Color對象的語(yǔ)句可以寫(xiě)入onRollOver事件。

                                                                                          測試一下兩個(gè)不同實(shí)現的結果:

                                                                                        (圖2)

                                                                                          下面介紹Button對象的屬性、方法等。

                                                                                          Button對象的屬性:

                                                                                          Button對象在默認狀態(tài)下的屬性是:

                                                                                          useHandCursor = true;
                                                                                          enabled = true;

                                                                                          useHandCursor在true狀態(tài)下是當鼠標移動(dòng)上來(lái)時(shí)顯示手形圖像,反之保持鼠標箭頭狀態(tài),說(shuō)到enabled,就直接影響B(tài)utton的狀態(tài)了,默認狀態(tài)總是true,否則當前不響應用戶(hù)鼠標事件,這個(gè)在不需要用戶(hù)響應的時(shí)候十分有效。

                                                                                          Button對象的方法:

                                                                                          Button對象的方法很簡(jiǎn)單,只有g(shù)etDepth一個(gè),目的是獲取目標Button的Level:

                                                                                          trace(btn2.getDepth());

                                                                                          TAB鍵關(guān)聯(lián)

                                                                                          在處理成組的很多Button 同時(shí)存在時(shí),會(huì )遇到按TAB鍵按鈕間組內切換的情況,在Flash MX中會(huì )把需要切換的Button按照tabIndex順序排列:

                                                                                          Button.Prototype.onKillFocus=function(){trace("kill focus"+this._name)}
                                                                                          btn1.tabIndex=2
                                                                                          btn2.tabIndex=3
                                                                                          btn1.tabEnabled=btn2.tabEnabled=true

                                                                                        (圖3)

                                                                                          試驗的結果發(fā)現了問(wèn)題,在有手動(dòng)和程序實(shí)現的Button同時(shí)存在的時(shí)候,tab并不起什么作用,而在無(wú)手動(dòng)Button的時(shí)候卻只能使tabIndex和tabEnabled起作用,但killfocus毫無(wú)響應,可見(jiàn)程序作的按鈕的可靠性。

                                                                                          btn2.tabEnabled=true
                                                                                          btn2.tabIndex=3

                                                                                        (圖4)

                                                                                          Button對象大概就是這個(gè)樣子了,值得高興的是可以用程序作button了,不過(guò)程序和設計總是有個(gè)點(diǎn),那個(gè)點(diǎn)的把握就決定著(zhù)Flash MX的應用性。

                                                                                          感謝DnVsystem,源代碼:

                                                                                          注:Button對象的getDepth其實(shí)也就是MovieClip的getDepth(代碼號全為105)。

                                                                                        如果本頁(yè)不是您要找的課程,您也可以百度查找一下:

                                                                                        奇米在线7777在线精品|国产成人精品免费视|精品无码不卡一区二区三区|国内综合精品午夜久久资源|亚洲视频在线观看..