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

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

                                                                                        歡迎您!
                                                                                        朋友圈

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

                                                                                        位置:培訓資訊 > 體驗Flash MX(2):LoadMovie和LoadVars

                                                                                        體驗Flash MX(2):LoadMovie和LoadVars

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

                                                                                          從上一篇文章中我們知道,新的Flash MX在程序員/設計師的界面上做得很好,甚至考慮了他們之前的切換問(wèn)題。你所要做的只是選擇Window-> Panel Sets->xxxx,由于接下來(lái)我們的需要,這個(gè)xxxx你需要選擇Developer。

                                                                                          新改進(jìn)的Flash ActionScript是根據歐洲的ECMA-262編碼標準寫(xiě)的,在Flash MX中,已經(jīng)剔除了Flash 5和以前版本的所有不符合這個(gè)標準的語(yǔ)句和代碼,剩下的一些有的被優(yōu)化有的繼續保留了,也就是說(shuō)這些代碼從此進(jìn)入了Macromedia的歷史(該公司也表示建議使用標準化的語(yǔ)句)。

                                                                                          新的Action Script有兩類(lèi):一類(lèi)是單獨功能的語(yǔ)句,例如運算符,變量,屬性,方法,流程控制語(yǔ)句等;而另一類(lèi)即是面向對象和新加入的部件概念。
                                                                                          面向對象和新加入的部件概念主要又分4小類(lèi):Core;Movie;Client/Server;Authoring。
                                                                                          前三類(lèi)重新對v5的對象進(jìn)行了分類(lèi),并加入了Stage、System、Microphone,Camera,NetStream,NetConnection,Video等新的對象,Button,TextField,TextFormat等常用的物體現在也可以通過(guò)ActionScript來(lái)作為基本對象控制;而且v5常用的LoadVars()已經(jīng)被單獨分離出來(lái)作為對象并且具有很多常用的方法和錯誤狀態(tài),這是值得興奮的呢……還有就是配合Authoring 工具使用的Authoring類(lèi)別,由于Flash MX整合了Generator(又一個(gè)不幸進(jìn)入歷史),加之以后Flash MX的服務(wù)器端將由ColdFusion MX擔任,可見(jiàn)今后的Flash網(wǎng)絡(luò )可以配合自身具有一些Generator的一些功能來(lái)實(shí)現強大的網(wǎng)絡(luò )體系結構。

                                                                                          本文的重點(diǎn)部分是作為交互作用的LoadMovie()ActionLoadVars對象,我們也通過(guò)實(shí)例的形式來(lái)看看其魅力如何。

                                                                                          LoadMovie();LoadMovieNum();

                                                                                          你還在Flash5中為了動(dòng)態(tài)導入JPG圖片而痛苦地把上百個(gè)圖片轉換成Swf格式呢嗎?現在請停止那機械勞動(dòng)吧。升級為Flash MX之后,我們可以嘗試下面的例子:

                                                                                          首先,用Rectangle工具在場(chǎng)景中適當的位置畫(huà)一個(gè)正方形,接著(zhù)按F8把它轉換為標號,按鈕。(圖1)

                                                                                        (圖1)

                                                                                          接著(zhù),選中這個(gè)按鈕,并按“F2”打開(kāi)Action面板,輸入下面的AS:

                                                                                          on (release) {
                                                                                           loadMovieNum("boy.jpg", 1);
                                                                                          }

                                                                                          注意,源文件和jpg文件需要放入同一目錄中,接著(zhù)圖片會(huì )在按鈕釋放的時(shí)候被讀入場(chǎng)景的第1 level中。(圖2)

                                                                                        (圖2)

                                                                                          測試結果表明Flash MX的LoadMovie宣稱(chēng)支持JPG為事實(shí)。

                                                                                          LoadMovie()和LoadMovieNum()有什么不同?如果你在Flash 5中沒(méi)有解決這個(gè)問(wèn)題,下面的修改會(huì )給你滿(mǎn)意的解釋。

                                                                                          修改剛才的按鈕Action:

                                                                                          on (release) {
                                                                                           if (mc == undefined) {
                                                                                            _root.createEmptyMovieClip("mc",1);
                                                                                           }
                                                                                           mc._x=random(300);
                                                                                           mc._y=random(300);
                                                                                           mc.loadMovie("boy.jpg",1);
                                                                                          }

                                                                                          由于懶惰,你甚至連多做一個(gè)空MovieClip都不愿意的時(shí)候,那么上面的if語(yǔ)句可以幫你,當場(chǎng)景中不存在mc這個(gè)MovieClip的Instance時(shí),引入Flash MX的新MovieClip的方法createEmptyMovieClip()來(lái)動(dòng)態(tài)產(chǎn)生一個(gè)MovieClip,叫做“mc”并置入Depth1。然后用loadMovie方法讀入jpg文件,你可以發(fā)現MovieClip的loadMovie方法是沒(méi)有Num字樣的,上面問(wèn)題的答案自然就可以解釋為不讀入MovieClip中的Swf/Jpg是loadMovie,反之既是loadMovieNum,上面*一條語(yǔ)句也可以寫(xiě)為loadMovie(“boy.jpg”,”mc”);。

                                                                                          下面做一個(gè)惡作劇,來(lái)讓按按鈕的人不知道如何按自己的按鈕。這個(gè)時(shí)候你可以加入上面已經(jīng)加入的設置_x/_y屬性的Action。結果我們發(fā)現一個(gè)奇怪的事情,當圖片出現在按鈕之上的時(shí)候,該按鈕的事件還是會(huì )被響應,而沒(méi)有達到我們惡作劇的效果,不知道這個(gè)屬于Bug還是MM早看透了我的惡作劇,不過(guò)下次我們可以嘗試動(dòng)態(tài)產(chǎn)生兩個(gè)按鈕,看看相應優(yōu)先級(后面我們會(huì )講到Button對象)。(圖3)

                                                                                        (圖3)

                                                                                          LoadVars對象

                                                                                          新的LoadVars對象看起來(lái)更像是一個(gè)針對變量處理的XML對象的簡(jiǎn)化版。它通過(guò)傳輸符合application/x-標準的MIME格式的字符串來(lái)和ASP/PHP/JSP服務(wù)器交互信息。

                                                                                          LoadVars對象的主要方法有send()、load()、sendAndLoad(),我簡(jiǎn)單作了一個(gè)服務(wù)器/客戶(hù)的交互結構來(lái)說(shuō)明他們的用法。

                                                                                          首先,隨便做三個(gè)控制按鈕,上面寫(xiě)著(zhù)區分他們的文本即可。

                                                                                          接著(zhù),我們按F2打開(kāi)場(chǎng)景的Action面板,輸入這段Action:

                                                                                          varsobj=new loadvars();
                                                                                          tempvars=new loadvars();
                                                                                          tempvars.onLoad=function(loaded){if (loaded){trace("loaded");this.saved=1;debugTrace(this)}};
                                                                                          aimUrl=
                                                                                          debugTrace = function (what) { for (var elm in what) {trace(elm+"="+what[elm])}};

                                                                                          首先創(chuàng )建兩個(gè)loadVars對象,*個(gè)是發(fā)送用,第二個(gè)是接收用。既然第二個(gè)是接收數據用的,當然就要有onLoad事件,這個(gè)onLoad事件默認狀態(tài)不存在,所以創(chuàng )建它并得給它一個(gè)處理函數。定義服務(wù)器地址aimUrl,*加入自定義的排錯函數察幫助看結果。

                                                                                          *個(gè)按鈕的Action:(Send)

                                                                                          on (release) {
                                                                                           varsobj.send(aimUrl+"savevar.php");
                                                                                           debugTrace(varsobj);
                                                                                          }

                                                                                          發(fā)送數據是不改變當前狀態(tài)的,而且是沒(méi)有任何返回值的,我們可以通過(guò)debugTrace來(lái)查看結果。

                                                                                          第二個(gè)按鈕的Action:(Load)

                                                                                          on (release) {
                                                                                           varsobj.load(aimUrl+"putvar.php");
                                                                                           debugTrace(varsobj);
                                                                                          }

                                                                                          loadVars對象讀入數據的方式是異步傳送,既是如果當前接收到的變量相同則覆蓋,不同則接收,互不影響,結果通過(guò)debugTrace判斷。

                                                                                          第三個(gè)按鈕的Action:(sendAndLoad)

                                                                                          on (release) {
                                                                                           tempvars.saved=0;
                                                                                           varsobj.sendAndLoad(aimUrl+"savevar2.php?saved=1",tempvars);
                                                                                          }

                                                                                          和我們熟知的XML對象一樣,sendAndLoad對象需要有一個(gè)接收的loadVars對象來(lái)接收服務(wù)器的返回數據。這時(shí),onLoad的作用會(huì )體現出來(lái)。

                                                                                          服務(wù)器端

                                                                                          我用PHP簡(jiǎn)單的寫(xiě)了三個(gè)對應請求的.php文本,你可以copy下面的文本。

                                                                                          putvar.php:

                                                                                         ?。?
                                                                                           echo "a=1&b=2&c=3";
                                                                                          ?>

                                                                                          savevar.php:

                                                                                         ?。?
                                                                                           //save function
                                                                                          ?>

                                                                                          savevar2.php:

                                                                                         ?。?
                                                                                           if ($saved==1) echo "saved=2";
                                                                                          ?>

                                                                                          Ok,所需要的一切就緒,那么我們可以看看測試結果:(圖4)

                                                                                        (圖4)

                                                                                          結果沒(méi)有什么可以新意,還是那句話(huà),既是XML對象的簡(jiǎn)化版。不過(guò),這樣的結構在需要速度的前提并處理不到嚴謹的文本結構時(shí)可以有效利用。

                                                                                          可以trace(varsobj.load(false));的返回值居然是true(冷汗……),現在我想我更加確定load的可靠性了…… 對小型的Flash網(wǎng)站來(lái)說(shuō),新改進(jìn)的loadMovie可以善加利用,可以有效的減少用戶(hù)下載時(shí)間和你的制作時(shí)間;而對于速度要求非常高但沒(méi)有條件作專(zhuān)業(yè)數據庫的人呢,loadVars對象應該會(huì )讓你滿(mǎn)意,或者做個(gè)聊天室留言板什么的都不是什么難事。

                                                                                          不知道未知的bug有多少,我還未檢測sendAndLoad是否還有非安全讀入的bug。不過(guò)樂(lè )觀(guān)的是Flash MX在擴展性和官方服務(wù)上作的很好,相信中后期的Flash MX將是一個(gè)完善的開(kāi)發(fā)工具。(目前Macromedia正在做對J2EE和.NET的支持)

                                                                                          輕快的音樂(lè )一首接著(zhù)一首,而寫(xiě)到這里,將是我喜歡的DMX的Party Up:“Y’all gon’ want to check document, Click here, Click here->

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

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