亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 辦公 > Flash > 正文

Flash AS 教程:創建文檔類(Document class)

2020-07-17 13:19:26
字體:
來源:轉載
供稿:網友
創建文檔類(Document class)
現在我們對類已經了一定的了解,接下來,看看如果真正地使用它。有時候我常說基于 AS 3的 SWF 是多么的重要,這是因為 AS 3 引入了一個全新的概念,文檔類(document class)。
一個文檔類就是一個繼承自 Sprite 或 MovieClip 的類,并作為 SWF 的主類。讀取 SWF時,這個文檔類的構造函數會被自動調用。它就成為了我們程序的入口,任何想要做的事都可以寫在上面,如:創建影片剪輯,畫圖,讀取資源等等。如果在 Flash CS3 IDE 中寫代碼,可使用文檔類,也可以選擇繼續在時間軸上寫代碼。但如果使用 Flex Builder 2 或免費Flex SDK,那里沒有時間軸,唯一的辦法就是寫在類中。這些工作一切都圍繞著強大的文檔類而展開,沒有它就沒有 SWF。以下是一個文檔類的框架:
package {
import flash.display.Sprite;
public class Test extends Sprite {
public function Test() {
init();
}
private function init():void {
// 寫代碼處
}
}
}
如果你看過前面的部分,不會認為這是個新知識,只不過是把他們放在了一起而已。使用默認包,導入并繼承 Sprite 類。構造函數只有一句,調用 init 方法。當然,也可以把所有代碼寫在構造函數里,但是要養成一個好習慣,就是盡量減少構造函數中的代碼,所以把代碼寫到了另一個方法中。本書會給大家很多代碼塊進行測試,那時要像上面這個例子一樣把代碼塊放入 init 方法中,這樣在影片編譯執行時,就會調用 init 中的代碼。下面我們要開始學習如何連接文檔類和 SWF。
使用 Flash CS3 IDE(集成開發環境)
Flash CS3 IDE 是實現文檔類的最方便的工具。把上述的類選擇一個文件夾進行保存,文件名為 Test.as。打開 Flash CS3 ,創建一個 FLA 文件,保存到一這個類相同的目錄下。確認 FLA 默認發布設置為 Flash Player 9 及 AS 3.0。在屬性面板中,我們注意到出現了一個名為文檔類(Document Class)的區域(圖2-1)。只需輸入類名:Test。


圖2-1 設置文檔類
請注意,我們輸入的是類名,而不是文件名。所以這里不需要輸入擴展名 .as。如果這個類包涵在一個包中,那么就需要輸入類的完整路徑——例如:com.friendsofed.chapter2.Test。
程序動畫
下面,再來學習一些 AS 3 編程的基本原理。如果你已經選擇好了一個開發環境,那么就出發吧。讓我們進入 ActionScript 動畫世界。
動畫的執行過程
幾乎所有的程序動畫都包括幾種不同的執行過程。對于逐幀動畫來說,意味著創建和存儲一組連續的位圖,每一幀都是一幅圖像,只需要進行顯示即可,見圖 2-3。


圖2-3 逐幀動畫
當我們在 Flash 中使用圖形或元件時,事情就發了微妙的變化。這時,Flash 不會為每一幀創建和存儲新的位圖。對于每一幀而言,Flash 存儲的是舞臺上每個對象的位置,大小,顏色等等。比如,一個小球在屏幕上移動,每一幀只存儲小球的在該幀上的位置,第1幀小球的位置在左邊第10個像素,第2幀也許就在第15個像素,等等。Flash 播放器(Flash Player)讀取這些信息,再根據這些信息的描述來渲染舞臺并顯示該幀。根據這些變化擴展一下流程圖,見圖 2-4。


圖2-4 渲染并顯示幀
我是這樣描述一個動態程序動畫的,見圖2-5。


圖2-5 腳本動畫
如圖2-5所示,沒有第1幀、第2幀的概念,腳本動畫通常只由一幀完成。下面我們就來看看動畫的執行過程。
首先,建立初始化。舞臺中放入一個影片剪輯,再創建補間動畫,或使用代碼來描述整個場景??傊詈蠖家獙υ搸M行渲染及顯示。
然后,應用自定義規則。規則可以像“讓球向右移動5像素”這樣簡單,也可以是由幾十條復雜的三角函數組成。使用自定義規則會產生新的描述再根據這些描述進行渲染及顯示,并不斷地應用這個規則。
請注意,同一規則被一遍又一遍地執行,而不是對第1幀用一套規則,而對第2幀又使用另一套規則。所以難度就在于,一套規則要處理所有可能出現的情況。要是球向右移動得過遠,超出了舞臺怎么辦?你的這套規則就要解決這個問題。是否還希望用戶通過鼠標來操作小球?那么你的規則也要把它考慮進去。
聽起來很復雜,其實不然,這里所說的“規則”,實際上就是 ActionScript 代碼。每套規則都可由一行或多行代碼組成。下面是小球向右移動5像素的例子:
ball.x = ball.x 5;
這句話是說無論小球 X 坐標(水平軸)在哪里,都在原來的 X 位置上增加5像素,并把該坐標作為它的新 X 坐標。也可簡化為:
ball.x = 5;
“ =”操作符:把右邊的值與左邊的變量相加,相加的結果再賦值給該變量。以下是更多的高級規則,日后會學到:
var dx:Number = mouseX - ball.x;
var dy:Number = mouseY - ball.y;
var ax:Number = dx * spring;
var ay:Number = dy * spring;
vx = ax;
vy = ay;
vy = gravity;
vx *= friction;
vy *= friction;
ball.x = vx;
ball.y = vy;
graphics.clear();
graphics.lineStyle(1);
graphics.moveTo(ball.x, ball.y);
graphics.lineTo(mouseX, mouseY);
這段現在看不懂沒關系,大家只要知道 Flash 會在每一幀中生成這段代碼,并不斷地執行。
怎樣讓它循環執行?看看我第一次的嘗試,這也是很多 AS 初學者都會犯的錯誤。這是在很多程序設計語言中都存在的循環結構,如 for 和 while。用循環結構使代碼重復執行,這就是我曾寫的那段:
for (i = 0; i < 500; i ) {
ball.x = i;
}
看起來相當簡單。變量 i 從 0 開始,所以小球 X 坐標移動到 0——舞臺最左邊。i 讓i 的值每次增長1,即:0~1~2~3~4…,每次這個值都會做為 ball.x 的值,把小球從左向右移動。當值為500時,表達式 i<500 值為假(false),循環結束。
如果你也犯過同樣的錯誤,就會知道,小球沒有在舞臺上發生移動——只是一下子出現在了舞臺的右邊而已。為什么沒有移動到中間的那些點上?其實它移動了,只是我們沒有看到,因為我們沒有讓 Flash 去刷新屏幕。圖2-6 為另一個流程圖,看看實際都發生了什么。


圖2-6 為什么循環結構無法產生動畫
實際上我們使用自定義規則使球移動到指定位置,并創建了500次新的場景。但在循環結束之前沒有給出顯示,這是因為 Flash 只在每一幀結束后才進行一次刷新,這點很重要。以下是 Flash 進入幀的動作順序:

    在舞臺上放置所有的對象,不論在何級,何層,或是否為加載的影片。 執行幀上所有的 Action 腳本(ActionScript),不論在何級,何層,不論處于影片剪輯還是按鈕中,也不論它嵌套在何處。 判斷是否到了該顯示的時候。如果設置幀頻為 20 幀/秒,Flash 最少要等上一幀顯示后50毫秒后再進行下一次顯示,顯示了該幀后,就要編譯和進入下一幀。如果幀頻沒有到 20 幀/秒,那么要等待到正確的時間再去執行。
定時時間存在著一些問題。首先,眾所周知幀頻是不精確的(即使在Flash 9中),不要依賴它作為精確的定時器。其次,在大量的編譯和 AS 執行花費的時間會超出規定的時間。
盡管如此,我們也不必擔心自己的腳本會被砍掉一部分。在進入第3步之前,Flash 會完成所有可執行代碼(第2步),即使需要延緩幀頻也要完成。Flash 為了能完成腳本,甚至會等上15秒。在上面的例子中,Flash 等待循環結束,然后進入下一幀,只在跳轉到下一幀時進行屏幕的刷新。這就是為什么我們看到的是跳動而不是移動。因此,要想完成移動,我們所要做的就是打散這個循環,請回過頭參考圖 2-5。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美在线x视频| 欧美二区在线播放| 91九色国产视频| 国产九九精品视频| 国产精品第100页| 亚洲理论片在线观看| 国产精品电影在线观看| 精品亚洲男同gayvideo网站| 91精品国产高清久久久久久91| 亚洲第一区第一页| 欧美日韩在线观看视频小说| 日本一区二区不卡| 亚洲美女精品久久| 久久精品国产精品| 亚洲性日韩精品一区二区| 欧美日韩成人在线播放| 成人免费视频网| 色天天综合狠狠色| 欧美高清videos高潮hd| 欧美一级片免费在线| 亚洲日本成人女熟在线观看| 欧美性理论片在线观看片免费| 国产在线日韩在线| 国产精品视频男人的天堂| 日韩精品中文字幕在线播放| 91欧美精品午夜性色福利在线| 91高潮在线观看| 久久综合九色九九| 国产精品永久免费| 中文国产成人精品| 91精品在线看| 97国产在线观看| 性日韩欧美在线视频| 亚洲精品自拍偷拍| 亚洲免费视频在线观看| 91精品久久久久久| 日韩电影在线观看永久视频免费网站| 欧美高清不卡在线| 69久久夜色精品国产7777| 国产精品色视频| 在线播放亚洲激情| 久久久久在线观看| 国产福利精品在线| 精品露脸国产偷人在视频| 欧美裸体视频网站| 亚洲电影免费在线观看| 最新69国产成人精品视频免费| 成人免费网站在线观看| 国产伊人精品在线| 亚洲女人初尝黑人巨大| 国产精品久久久久免费a∨大胸| 成人性生交大片免费看小说| 亚洲摸下面视频| 日韩免费在线免费观看| 国模吧一区二区| 午夜精品一区二区三区在线播放| 欧美在线观看网站| 久久精品视频导航| 国产在线观看不卡| 欧美一区二区.| 最近中文字幕mv在线一区二区三区四区| 久久九九全国免费精品观看| 色樱桃影院亚洲精品影院| 国内精品小视频| 国产成人精品最新| 色妞欧美日韩在线| 黑人欧美xxxx| 中文字幕精品久久久久| 97精品一区二区视频在线观看| 在线视频欧美日韩精品| 亚洲一区999| 亚洲欧美成人一区二区在线电影| 亚洲国产精品va| 久久久久久久91| 日韩久久精品成人| 亚洲国产欧美精品| 欧美三级xxx| 亚洲成人黄色网址| 欧美福利视频在线| 91精品久久久久久久久久久| 欧美激情精品久久久久久大尺度| 538国产精品一区二区免费视频| 亚洲精品日韩久久久| 亚洲免费视频观看| 欧美性xxxxx极品| 91久久综合亚洲鲁鲁五月天| 日韩电影在线观看永久视频免费网站| 亚洲专区中文字幕| 国产精品嫩草影院久久久| 一区二区日韩精品| 波霸ol色综合久久| 日韩av日韩在线观看| 欧美激情xxxxx| 国产精品久久久久久超碰| 亚洲精品一区中文| 91国产中文字幕| 日韩在线视频中文字幕| 日韩有码片在线观看| 久久91亚洲精品中文字幕| 91精品久久久久久久久久| 91视频免费在线| 亚洲第一区在线观看| 国产精品视频最多的网站| 国产精品久久国产精品99gif| 国产98色在线| 97在线视频免费| 4438全国亚洲精品在线观看视频| 茄子视频成人在线| 日韩成人av在线| 亚洲黄页网在线观看| 亚洲国产天堂久久国产91| 亚洲欧美国产日韩天堂区| 亚洲国产精品va在线看黑人动漫| 2024亚洲男人天堂| 国产精品自产拍在线观看中文| 欧美成人亚洲成人日韩成人| 国产一区红桃视频| 欧美二区乱c黑人| 亚洲欧洲一区二区三区在线观看| 91久久精品国产91久久性色| 色与欲影视天天看综合网| 国产成人精品综合久久久| 中文国产成人精品| 久久久久久一区二区三区| 久久精品亚洲94久久精品| 欧美性猛交xxxxx免费看| 国产精品老牛影院在线观看| 欧美激情视频一区二区三区不卡| 国产精品国产三级国产aⅴ9色| 国产成人精品在线播放| 青青青国产精品一区二区| 亚洲高清一二三区| 亚洲精品中文字幕女同| 精品人伦一区二区三区蜜桃网站| 欧美午夜www高清视频| 国产一区二中文字幕在线看| 亚洲欧美在线免费| 欧美日韩亚洲网| 精品久久久国产| 亚洲a中文字幕| 日本精品视频在线播放| 亚洲国产日韩一区| 青青草成人在线| 亚洲人成电影网站色…| 国产精品网红福利| 日韩av在线一区| 精品欧美aⅴ在线网站| 亚洲丝袜在线视频| 九九热这里只有在线精品视| 精品成人国产在线观看男人呻吟| 精品福利一区二区| 日韩中文字幕精品视频| 欧美与欧洲交xxxx免费观看| 日韩精品免费看| 麻豆精品精华液| 欧美成人精品三级在线观看| 成人欧美在线观看| 久久久999国产| 蜜臀久久99精品久久久久久宅男| 亚洲精品综合久久中文字幕| 午夜免费日韩视频| 国产精品久久久久久久久男| 黑人与娇小精品av专区| 亚洲国模精品私拍|