Giáo trình Script và kĩ thuật hoạt hình (Phần 2)

ActionScript là một ngôn ngữ lập trình hướng đối tượng được dùng để phát triển

các ứng dụng nhờ vào Adobe Flash Player và Adobe AIR. Ngôn ngữ lập trình

ActionScript có thể được biên dịch bởi:

- Adobe Flex Builder.

- Adobe Flash Professional.

- Command Line nhờ vào bộ SDK.

Cũng tương tự như Java, sau khi được biên dịch, các ActionScript sẽ được chuyển

thành dạng bytecode mà chỉ có máy ảo ActionScript (AVM) mới hiểu được. Máy

ảo ActionScript n{y được tích hợp bên trong Flash Player, Flash Plugin và Adobe

AIR.

Ngôn ngữ lập trình ActionScript (AS) là ngôn ngữ có cú pháp kết hợp của cả Java

và Delphi (cú pháp và từ khóa giống Java, cách khai báo giống Delphi). Nếu bạn đ~

từng làm quen với ngôn ngữ lập trình Java, thì khi làm quen với ngôn ngữ lập

trình ActionScript, bạn sẽ cảm thấy đơn giản hơn rất nhiều. Các toán tử, các câu

lệnh tương tự như Java. Một điều đặc biệt, đó l{ lớp của ActionScript có cú pháp

khai báo và cách sử dụng rất giống với Java. Dường như Adobe đ~ thiết kế nên

ngôn ngữ ActionScript theo chuẩn của Java để tạo nên sự đơn giản và quen thuộc

với đa số người dùng.

Bạn cũng cần lưu ý rằng, chúng ta đang thảo luận về phiên bản 3.0 của AS. Đ}y l{

phiên bản mới nhất cho đến thời điểm này. AS là ngôn ngữ hướng đối tượng như

Delphi (hay C++), nghĩa l{ không tuyệt giao với lập trình hướng thủ tục (bằng

chứng là ta có thể viết hàm bên ngoài lớp). AS là ngôn ngữ phân biệt chữ hoa và

chữ thường.

Một ví dụ kinh điển khi học một ngôn ngữ lập trình đó l{ ví dụ “Hello, world !”.

Thông qua ví dụ kinh điển này, chúng ta sẽ có được cái nhìn tổng quan về ngôn

ngữ ActionScript này.

pdf 139 trang yennguyen 9340
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Script và kĩ thuật hoạt hình (Phần 2)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Script và kĩ thuật hoạt hình (Phần 2)

Giáo trình Script và kĩ thuật hoạt hình (Phần 2)
CHƯƠNG 5. LẬP TRÌNH VỚI ACTIONSCRIPT 
CHƯƠNG 5. LẬP TRÌNH VỚI ACTIONSCRIPT 
ActionScript là một ngôn ngữ lập trình hướng đối tượng được dùng để phát triển 
các ứng dụng nhờ vào Adobe Flash Player và Adobe AIR. Ngôn ngữ lập trình 
ActionScript có thể được biên dịch bởi: 
- Adobe Flex Builder. 
- Adobe Flash Professional. 
- Command Line nhờ vào bộ SDK. 
Cũng tương tự như Java, sau khi được biên dịch, các ActionScript sẽ được chuyển 
thành dạng bytecode mà chỉ có máy ảo ActionScript (AVM) mới hiểu được. Máy 
ảo ActionScript n{y được tích hợp bên trong Flash Player, Flash Plugin và Adobe 
AIR. 
Ngôn ngữ lập trình ActionScript (AS) là ngôn ngữ có cú pháp kết hợp của cả Java 
và Delphi (cú pháp và từ khóa giống Java, cách khai báo giống Delphi). Nếu bạn đ~ 
từng làm quen với ngôn ngữ lập trình Java, thì khi làm quen với ngôn ngữ lập 
trình ActionScript, bạn sẽ cảm thấy đơn giản hơn rất nhiều. Các toán tử, các câu 
lệnh tương tự như Java. Một điều đặc biệt, đó l{ lớp của ActionScript có cú pháp 
khai báo và cách sử dụng rất giống với Java. Dường như Adobe đ~ thiết kế nên 
ngôn ngữ ActionScript theo chuẩn của Java để tạo nên sự đơn giản và quen thuộc 
với đa số người dùng. 
Bạn cũng cần lưu ý rằng, chúng ta đang thảo luận về phiên bản 3.0 của AS. Đ}y l{ 
phiên bản mới nhất cho đến thời điểm này. AS là ngôn ngữ hướng đối tượng như 
Delphi (hay C++), nghĩa l{ không tuyệt giao với lập trình hướng thủ tục (bằng 
chứng là ta có thể viết hàm bên ngoài lớp). AS là ngôn ngữ phân biệt chữ hoa và 
chữ thường. 
Một ví dụ kinh điển khi học một ngôn ngữ lập trình đó l{ ví dụ “Hello, world !”. 
Thông qua ví dụ kinh điển này, chúng ta sẽ có được cái nhìn tổng quan về ngôn 
ngữ ActionScript này. 
Bạn hãy quan sát ví dụ minh họa này được viết trên ngôn ngữ lập trình 
ActionScript. Bạn cũng cần lưu ý rằng, đoạn chương trình n{y được viết bên 
ngoài lớp (thể hiện tính lưỡng cực giữa hướng đối tượng v{ hướng thủ tục). 
CHƯƠNG 5. LẬP TRÌNH VỚI ACTIONSCRIPT 
- 110 - 
Hình 102 – Giao diện ActionScript 3. 
Trong ví dụ này, bạn có thể thấy nhiều điểm tương đồng giữa AS với Java là: dấu 
comment (// - comment trên một dòng và /**/ - comment trên nhiều dòng), cách 
viết nội dung hàm (nằm trong cặp dấu {}) và chỉ có một khái niệm là hàm (trả về 
kiểu dữ liệu hoặc không trả về kiểu dữ liệu). 
C|c điểm tương đồng với Delphi: từ khóa khai báo hàm là function và kiểu dữ liệu 
hàm trả về nằm sau tên hàm và dấu hai chấm. 
Một điểm khác biệt của AS so với Java và Delphi l{ chương trình chính nằm tự do 
trong vùng soạn thảo (không giống Java phải trong hàm main, Delphi trong begin 
và end). Nó có thể nằm trước hay sau c|c h{m khai b|o. Để quy ước về trật tự sử 
dụng, ta sẽ sử dụng cú pháp tuần tự (lệnh trước thực hiện trước, lệnh sau thực 
hiện sau) – nghĩa là phần chương trình chính luôn nằm ở phía sau cùng và ta sẽ 
đ|nh dấu nó bằng dòng comment /*Chương trình chính*/. 
Bạn cũng cần lưu ý rằng, AS là ngôn ngữ kịch bản (scripting language), nên nó 
cũng mang nhiều đặc trưng của một ngôn ngữ kịch bản. Các câu lệnh nằm tự do, 
không nhất thiết phải được đặt trong một hàm cụ thể n{o, đ}y chính l{ đặt trưng 
dễ nhận thấy của một ngôn ngữ kịch bản (như JavaScript, Jscript). 
CHƯƠNG 5. LẬP TRÌNH VỚI ACTIONSCRIPT 
- 111 - 
Chúng ta sẽ tìm thấy nhiều điểm tương đồng và khác biệt của AS so với hai ngôn 
ngữ Java và Delphi (nếu bạn đ~ tưng l{m quen với hai ngôn ngữ này). Chúng ta sẽ 
lần lượt tìm hiểu cú pháp của ngôn ngữ lập trình AS này. Xin nhắc lại là phiên bản 
ActionScipt m{ ta đang thảo luận là ACTIONSCRIPT 3.0. 
5.1. C|c kiểu dữ liệu 
Ở đ}y ta thảo luận về các kiểu dữ liệu trên hệ Windows 32 bit. Các kiểu dữ liệu 
mà ta thảo luận là kiểu nguyên thủy. Trong AS, mọi kiểu dữ liệu đều tương ứng 
với một lớp dữ liệu tạo ra nó: kiểu int và lớp int, kiểu Number và lớp Number... 
a. Kiểu số nguyên 
Có hai dạng số nguyên được hỗ trợ trong AS là kiểu số nguyên có dấu int và số 
nguyên không dấu uint. Cả hai loại số nguyên n{y điều chiếm 4byte, nghĩa l{ vùng 
giá trị của int là -231 đến 231-1 và giá trị của uint l{ 0232-1. Bạn lưu ý rằng, trong 
các kiểu dữ liệu, thì chỉ có kiểu số nguyên có chữ c|i đầu tiên viết thường. 
b. Kiểu số thực 
Số thực dấu chấm động theo chuẩn IEEE-754. Số thực trong AS chiếm 32 bit. Từ 
khóa khai báo là Number. Bạn lưu ý Number viết hoa chữ c|i đầu tiên. 
c. Kiểu Boolean 
Kiểu Boolean trong AS có hai giá trị là true và false. Bạn lưu ý Boolean viết hoa 
chữ c|i đầu tiên, true và false viết thường mọi chữ cái. 
d. Kiểu xâu String 
Xâu kí tự được đ|nh dấu từ 0. Phần tử cuối cùng trong xâu có chỉ số là xâu.lengh-
1. Kiểu x}u được khai báo nhờ từ khóa String. Bạn cũng cần lưu ý rằng String viết 
hoa chữ c|i đầu tiên. 
e. Kiểu mảng Array 
Việc đ|nh dấu trong Array ho{n to{n tương tự String. Kiểu Array cũng viết hoa 
chữ c|i đầu tiên. 
f. Kiểu đối tượng Object 
Tương tự kiểu Struct của C. Nhưng mềm dẻo hơn rất nhiều. Chúng ta sẽ thấy rõ 
điều n{y qua c|c chương trình trong gi|o trình n{y. 
CHƯƠNG 5. LẬP TRÌNH VỚI ACTIONSCRIPT 
- 112 - 
 Để xử lý các dữ liệu liên quan đến các kiểu dữ liệu nguyên thủy này ta phải làm 
việc với các lớp đối tượng tương ứng: kiểu int và uint với lớp int và uint, kiểu 
Number với lớp Number, kiểu String với lớp String, kiểu Array với lớp Array và 
kiểu đối tượng Object. Chi tiết về c|c phương thức xử lý của các lớp này ta sẽ 
thảo luận sau khi tìm hiểu về lớp trong AS. 
5.2. Biến v{ Hằng 
a. Biến: có giá trị thay đổi được. Khi khai báo một biến ta khai báo theo cú pháp 
sau: 
var tên_biến:Kiểu_Dữ_Liệu [= giá_trị_khởi_tạo]; 
Khi khai báo một biến, bạn phải sử dụng từ khóa var. Ta có thể lấy một vài ví dụ 
về khai báo biến trong AS 
var a:int = 1; 
var b:Number; 
b = 1.5; 
//C|c dòng khai b|o sau tương đương 
var s:String = “Hello”; 
var s:String = new String(“Hello”); 
var s:String = String(“Hello”); 
//Kết thúc tính tương đương 
//C|c dòng khai b|o sau tương đương 
var ar:Array = new Array(“a”, “b”); 
var ar:Array = new Array(3); 
//Kết thúc tương đương 
var myAssocArray:Object = {fname:"John", lname:"Public"}; 
trace(myAssocArray.fname); // John 
trace(myAssocArray["lname"]); // Public 
CHƯƠNG 5. LẬP TRÌNH VỚI ACTIONSCRIPT 
- 113 - 
myAssocArray.initial = "Q"; 
trace(myAssocArray.initial); // Q 
Bạn có thể khởi tạo giá trị cho biến tại thời điểm khai báo biến hoặc khai báo biến 
và khởi tạo giá trị cho biến đó sau. 
b. Hằng: có giá trị không thay đổi. Trong AS, để khai báo hằng ta thay từ khóa var 
trong khai báo biến bằng từ khóa const. Bạn lưu ý rằng khi khai báo hằng bạn cần 
phải bổ sung giá trị cho nó. Nghĩa l{ cú ph|p khai báo hằng phải tuân theo quy tắc 
sau 
const tên_hằng:Kiểu_Dữ_Liệu = giá_trị_khởi_tạo; 
Bạn lưu ý rằng, giá trị khởi tạo không giống trong trường hợp khởi tạo cho biến là 
có thể có hoặc không, đối với hằng bắt buộc phải có. 
Các bạn có thể quan sát các khai báo hằng sau đ}y 
const a:int = 1; 
const s:String = “abc”; 
5.3. To|n tử v{ Biểu thức 
Toán tử l{ c|c phép to|n được sử dụng trong AS. Các giá trị được sử dụng cho 
toán tử gọi là toán hạng. Biểu thức là tập hợp các toán tử và toán hạng được sắp 
xếp theo một trật tự có ý nghĩa. 
Toán tử gán 
Toán tử g|n dùng để gán giá trị cho một biến. Ví dụ a = 5; 
Câu lệnh gán sẽ thực hiện gán giá trị ở bên phải cho biến ở bên trái. Bạn cũng có 
thể gán giá trị của hai biến cho nhau. Ví dụ a = b; 
a = b + 2; Giá trị của a bằng giá trị của b cộng thêm 2 
a = a + 1; Tăng gi| trị của a lên 1 
a = b = c = 5; 
G|n đồng thời nhiều giá trị. Nó tương ứng với tập các 
lệnh sau: 
CHƯƠNG 5. LẬP TRÌNH VỚI ACTIONSCRIPT 
- 114 - 
c = 5; 
b = c; 
a = b; 
Toán tử thực hiện phép toán số học 
Ngôn ngữ lập trình AS hỗ trợ các toán tử số học sau đây 
Toán tử Ý nghĩa 
+ Phép cộng 
- Phép trừ 
* Phép nhân 
/ Phép chia (chia nguyên đối với số nguyên) 
% Chia lấy dư (chỉ với số nguyên) 
Bạn lưu ý rằng, phép chia có thể thực hiện trên số nguyên hoặc số thực. Nếu thực 
hiện phép chia trên hai số nguyên thì đ}y chính l{ kết quả của phép chia lấy phần 
nguyên. Còn nếu nó thực hiện trên hai số thực, thì nó là kết quả của phép chia 
bình thường. Như vậy, theo mặc định, hai số nguyên (hoặc thực) thực hiện phép 
to|n tương ứng thì nó sẽ trả về kết quả nguyên (hoặc thực). Nếu phép toán thực 
hiện trên một số nguyên và một số thực, nó sẽ tự động chuyển đổi về kiểu cao 
hơn (th{nh số thực). Vậy làm thế n{o để thực hiện phép chia 3 cho 2, nếu ta muốn 
nhận được kết quả là 1.5. Ta biết rằng 3 và 2 là hai số nguyên, nếu ta thực hiện 
phép chia 3/2 thì ta thu được số nguyên – là kết quả của phép chia nguyên 3/2, 
tức là 1. Muốn thu được kết quả 1.5, bạn cần chuyển đổi 3 và 2 về dạng số thực 
bằng một trong các cách sau: 
 Khai báo 3 và 2 là các số thực (bằng c|ch quy định kiểu dữ liệu như a:Number 
= 3, b:Number = 2 hoặc 3.0, 2.0). 
 Chuyển đổi kiểu dữ liệu (Xem thêm phần toán tử chuyển đổi kiểu dữ liệu). 
CHƯƠNG 5. LẬP TRÌNH VỚI ACTIONSCRIPT 
- 115 - 
Toán tử logic 
Toán tử Phép toán A b Kết quả 
Toán tử phủ 
định ! 
Phép toán 
một ngôi !a 
true - false 
false - true 
Toán tử và && 
Phép toán hai 
ngôi 
a&&b 
true true true 
true false false 
false true false 
false false false 
Toán tử hoặc 
|| 
Phép toán hai 
ngôi 
a||b 
true true true 
true false true 
false true true 
false false false 
Toán tử dịch bit 
Các toán tử n{y được sử dụng đến tính toán trên các số nguyên bằng cách sử 
dụng các bit. 
Toán tử Tên gọi Ví dụ 
& Phép “V{” bit 2&3=2 
210=102 
310=112 
210=102 
| Phép “hoặc” bit 2|3=3 
210=102 
310=112 
310=112 
^ Phép “hoặc loại” 2^3=1 210=102 
CHƯƠNG 5. LẬP TRÌNH VỚI ACTIONSCRIPT 
- 116 - 
bit 310=112 
110=012 
<< Dịch trái bit 2<<3=16 2*23=2*8=16 
>> Dịch phải bit 2>>3=0 2/23=2/8=0 
~ Phủ định bit ~2=1 
210=102 
110=012 
Các toán tử và bit, hoăc bit, hoặc loại bit và phủ định bit được tính như sau: chúng 
ta chuyển đổi các số thập phân sang nhị ph}n tương ứng, sau đó sử dụng các 
phép to|n tương ứng cho từng bit theo vị trí của nó. Ví dụ như ở trên 210=102, 
310=112 và ta sẽ thực hiện c|c phép to|n tương ứng với từng bit. Bit thứ nhất (từ 
phải sang trái) là 0&1=1, bit thứ hai 1&1=1, như vậy kết quả của phép toán 2&3 
là 102 hay 210. Tương tự cho các phép toán còn lại. Ở đ}y bạn lưu ý rằng phép 
toán tuyển loại sẽ có chân trị là 1 nếu hai bit tương ứng là khác nhau, nếu giống 
nhau thì tương ứng là 0(1^1=0^0=0, 1^0=0^1=1). 
Các toán tử > sẽ được tính như sau: a>b=a/2b. 
Toán tử gán hợp nhất 
Khi muốn thay đổi giá trị của một biến, chúng ta có thể sử dụng cách viết 
thông thường, tuy nhiên AS cũng hỗ trợ các toán tử viết tắt. 
Toán tử Ví dụ Ý nghĩa Phạm vi 
+= a+=b a=a+b Phép toán số học 
-= a-=b a=a-b Phép toán số học 
*= a*=b a=a*b Phép toán số học 
/= a/=b a=a/b Phép toán số học 
%= a%=b a=a%b Phép toán số học 
&= a&=b a=a&b Phép toán bit 
CHƯƠNG 5. LẬP TRÌNH VỚI ACTIONSCRIPT 
- 117 - 
|= a|=b a=a|b Phép toán bit 
^= a^=b a=a^b Phép toán bit 
>>= a>>=b a=a>>b Phép toán bit 
<<= a<<=b a=a<<b Phép toán bit 
Toán tử tăng và giảm 
Một cách viết thu gọn hơn nữa, đó l{ sử dụng toán tử tăng v{ giảm. Nếu 
trong biểu thức a+=b, với b = 1 thì ta có thể viết th{nh a++. Tương tự, nếu a-=b, b 
= 1 thì ta có thể viết a--. 
Chúng ta cũng lưu ý rằng, toán tử này có chút khác biệt. Nó có thể nằm 
trước hoặc nằm sau toán hạng. Có nghĩa l{ có thể có a++ hoặc ++a (tương ứng a-- 
hoặc --a). 
Phép toán Ý nghĩa 
a++; Thực hiện phép to|n trước, sau đó mới thực hiện toán tử 
++a; Thực hiện toán tử trước, sau đó mới thực hiện phép toán 
a--; Tương tự a++; 
--a; Tương tự ++a; 
Ví dụ Cách thực thi 
a:int = 1; 
b:int = 1; 
a+=b++; 
a = 1, b chưa khởi tạo 
a = 1, b = 1 
Thực hiện phép to|n a+=b trước, sau 
đó mới thực hiện phép toán b++. Tức 
là a=2, b=2. 
CHƯƠNG 5. LẬP TRÌNH VỚI ACTIONSCRIPT 
- 118 - 
a+=++b; 
Thực hiện phép to|n ++b trước, sau 
đó mới thực hiện phép toán a+=b. 
Tức là b=3, a=5. 
Toán tử so sánh 
Để thực hiện việc so sánh giá trị của hai biến, biểu thức; ta có thể sử dụng 
toán tử so sánh. Giá trị của phép toán so sánh trả về kiểu bool. 
Toán tử Tên gọi 
Giá trị biểu thức “a Toán tử b” 
Đúng Sai 
== Bằng Nếu a bằng b Nếu a khác b 
!= Khác Nếu a khác b Nếu a bằng b 
> Lớn hơn Nếu a lớn hơn b Nếu a nhỏ hơn hoặc 
bằng b 
< Bé hơn Nếu a nhỏ hơn b Nếu a lớn hơn hoặc 
bằng b 
>= Lớn hơn hoặc bằng Nếu a lớn hơn hoặc 
bằng b 
Nếu a nhỏ hơn b 
<= Bé hơn hoặc bằng Nếu a nhỏ hơn hoặc 
bằng b 
Nếu a lớn hơn b 
Bạn hãy cẩn thận khi sử dụng toán tử so sánh bằng. Hãy chú ý rằng toán tử 
so sánh bằng là ==, khác với toán tử gán =. 
Toán tử điều kiện 
Toán tử điều kiện có dạng cú ph|p như sau: 
điều_kiện?kết_quả_1:kết_quả_2; 
CHƯƠNG 5. LẬP TRÌNH VỚI ACTIONSCRIPT 
- 119 - 
Kết quả trả về giá trị kết_quả_1 nếu điều_kiện l{ đúng, ngược lại, nếu điều_kiện 
là sai, thì trả về giá trị kết_quả_2. 
Ví dụ Kết quả 
a:int = 1; 
b:int = 2; 
c:int; 
c = (a>b)?a:b; 
trace(c); 
2 
Toán tử phân tách 
Toán tử này kí hiệu là dấu phẩy. Nó dùng để phân tách hai hay nhiều biểu 
thức chứa trong một biểu thức tương ứng. 
Ví dụ Kết quả 
a:int; 
b:int; 
c:int; 
c = (a=1, b=2, a+b); 
trace(c); 
3 
Toán tử chuyển đổi kiểu dữ liệu 
Toán tử n{y dùng để chuyển đổi một biến hay hằng thuộc kiểu dữ liệu này 
sang kiểu dữ liệu khác. Giả sử bạn có biến int a = 3, int b = 2. Khi thực hiện phép 
chia để nhận được kết quả thực, bạn chỉ cần viết như sau: (Number)3/2. Bạn phải 
lưu ý rằng số 3 ở đ}y đ~ bị chuyển thành kiểu thực, và việc thực hiện phép chia 
một số thực cho số nguyên sẽ trả về kiểu thực 1.5. Nếu bạn viết 3/(float)2, kết 
quả cũng tương tự. Trong C, nếu bạn viết (float)(3/2) thì kết quả lại khác. Sở dĩ 
như vậy là vì, nó sẽ thực hiện phép chia nguyên 3/2 (kết quả l{ 1), sau đó nó sẽ 
CHƯƠNG 5. LẬP TRÌNH VỚI ACTIONSCRIPT 
- 120 - 
chuyển giá trị 1 nguyên này sang 1 thực. Nhưng với AS thì kết quả tương tự hai 
trường hợp trên. 
Cách biểu diễn sự chuyển đổi một biến thuộc kiểu dữ liệu này, sang kiểu 
khác chỉ có thể thực hiện nếu kiểu của chúng tương đương. Bạn có thể chuyển số 
thành số (sau này khi học về hướng đối tượng, bạn có thể chuyển giữa c|c đối 
tượng tương đương). Bạn không thể chuyển đổi từ số th{nh x}u, hay ngược lại. 
Khi chuyển đổi, bạn sử dụng một trong các cú pháp sau: (kiểu_dữ_liệu)biến hoặc 
(kiểu_dữ_liệu)(biến) hoặc kiểu_dữ_liệu(biến). 
Thứ tự ưu tiên của các toán tử 
Trong toán học, chúng ta biết rằng khi tính giá trị của một biểu thức, thì 
luôn có sự ưu tiên của các toán tử như: phép nh}n thực hiện trước phép cộng, 
phép chia và nhân thực hiện đồng thời, ưu tiên từ trái sang phải Trong lập trình 
C++ cũng vậy, các toán tử cũng có những độ ưu tiên nhất định. Trong một biểu 
thức phức tạp, bạn nên chú ý đến độ ưu tiên của các toán tử, điều này rất dễ gây 
ra sai sót. Trong bảng sau đ}y, chúng tôi xin đưa ra thứ tự ưu tiên của các toán tử 
trong lập trình AS 
Mức ưu tiên Toán tử Độ ưu tiên cùng loại 
1 :: Trái-sang-phải 
2 () [] . -> ++ -- (hậu tố) dynamic_cast 
static_cast reinterpret_cas ... terial = new CompositeMaterial(); 
CHƯƠNG 7. THƯ VIỆN PAPERVISION3D 
- 234 - 
Để bổ sung một material cho đối tượng cm, bạn sử dụng phương thức 
addMaterial của đối tượng này. 
cm.addMaterial(material:MaterialObject3D):void; 
7.4.7. Đối tượng MaterialsList 
Đối tượng MaterialsList được sử dụng khi khởi tạo một đối tượng Cube. Phương 
thức khởi tạo cảu MaterialsList cũng không chứa tham số. 
var ma:MaterialsList = new MaterialsList(); 
Để bổ sung một material cho đối tượng ma, bạn sử dụng phương thức 
addMaterial. 
ma.addMaterial(material:MaterialObject3D, name:String); 
Trong đó, tham số name là tên của các mặt trong hình hộp: all (áp dụng cho tất 
cả), front (trước), back(sau), top(trên), bottom(dưới), right(phải) và left(trái). 
7.5. Import một mô hình 3D 
Dù rằng việc tạo dựng c|c đối tượng đồ họa 3D trong PaperVision3D tương đối 
thuận lợi, tuy nhiên để tạo dựng c|c đối tượng đồ họa phức tạp trong thế giới 
thực tương đối phức tạp. Do đó, chúng ta cần sử dụng c|c chương trình thiết kế 
đồ họa 3D chuyên nghiệp như Maya, 3DsMax. Papervision3D hỗ trợ định dạng 
DAE. Bạn có thể sử dụng Maya để xuất bản tập tin này. Để tải đối tượng trong tập 
tin 3D này vào trong Flash, ta sử dụng đối tượng 
org.papervision3d.objects.parsers.DAE. 
Hàm tạo của đối tượng DAE n{y tương đối đơn giản 
var dae:DAE = new DAE(autoplay:Boolean, name:String, loop:Boolean); 
Trong đó, 
 Tham số autoplay cho phép h{nh động của các đối tượng được import từ 
tập tin DAE sẽ được thực thi hay không (bởi tập tin DAE này chứa đối 
tượng 3D động). 
 Tham số name quy định tên cho đối tượng DAE. 
 Tham số loop quy định sự lặp lại c|c h{nh động cho c|c đối tượng trong 
tập tin DAE. 
Để tải c|c đối tượng trong tập tin DAE vào Flash, ta sử dụng phương thức load 
dae.load(url:String) 
Trong đó, url l{ địa chỉ của tập tin DAE. 
CHƯƠNG 7. THƯ VIỆN PAPERVISION3D 
- 235 - 
Sau khi bạn tải c|c đối tượng trong tập tin DAE vào Flash, bạn có thể thao tác với 
c|c đối tượng n{y như với c|c đối tượng 3D kh|c được tạo bởi Papervision3D. 
Một khó khăn gặp phải là chúng ta cần có một hiểu biết về một chương trình thiết 
kế nhân vật 3D để đưa v{o trong Flash. Với một chương trình chuyên nghiệp như 
Maya thì không phải ai cũng có thể học nhanh được, vì vậy bạn có thể sử dụng 
những tập tin DAE được chia sẻ trong cộng đồng mạng để sử dụng. 
Một địa chỉ rất hữu ích để bạn khai th|c thư viện hình ảnh DAE đó l{ 
 Đ}y l{ một dự án miễn phí của google cung 
cấp cho ta các mô hình 3D tuyệt vời. 
Hình 170 – Google Sketchup 
Bạn chỉ việc tìm kiếm mô hình sau đó tải nó về máy của bạn. Bạn sẽ nhận được 
tập tin *.kmz. Tập tin này có thể đọc bởi Google Earth. Tuy nhiên, bản chất của tập 
tin n{y cũng chỉ là tập tin nén. Bạn có thể giải nén bằng chương trình WinRar bạn 
sẽ thu được một thư mục chứa tập tin DAE. 
Với dự án này, chúng ta có rất nhiều mô hình 3D để khai thác và sử dụng trong 
các dự án hoạt hình 3D của mình. 
CHƯƠNG 7. THƯ VIỆN PAPERVISION3D 
- 236 - 
Tổng kết chương 7 
Trong chương n{y, chúng tôi đ~ giới thiệu đến bạn cách sử dụng lớp thư viện 
PaperVision3D để tạo c|c đối tượng đồ họa 3D cũng như c|ch thức tạo chuyển 
động trong thế giới thực. Đ}y l{ thư viện mã nguồn mở được xây dựng trên 
ActionScript. Hi vọng bạn đ~ có được một cái nhìn tổng quan về đồ họa 3D. 
Với thư viện PaperVision3D này, bạn có thể tạo dựng cho mình một thước phim 
3D đơn giản hoặc một game 3D đơn giản. 
CHƯƠNG 7. THƯ VIỆN PAPERVISION3D 
- 237 - 
Blank Page 
BÀI TẬP THỰC HÀNH 
Để phát triển kĩ năng thiết kế và lập trình trên Flash CS5 và ActionScript3.0, 
chúng tôi đề nghị bạn hãy thực hiện các bài thực h{nh sau đ}y. 
BÀI THỰC HÀNH SỐ 1 
SỬ DỤNG CÔNG CỤ VẼ CƠ BẢN 
Hãy sử dụng các công cụ vẽ để tạo các nội dung sau đ}y trên cùng một Stage: 
1. Tạo Layer 1 v{ đổi tên thành BauTroi. Chọn biểu tượng bảng màu. Chọn 
Stroke color = None, Fill Color = Linear Gradient. Chọn chế độ đổ màu 
Extends Color. Trong kiểu đổ màu cầu vồng này, bạn chỉ chọn hai màu: 
màu đen (mã màu là #000000) đến màu đen trắng (mã màu #999999), 
trong đó màu đen ở phía trên, màu đen trắng ở phía dưới. Sử dụng công cụ 
Rectangle, tạo một hình chữ nhật ở trên Layer này. Sử dụng bảng hiệu 
chỉnh Align để can chỉnh kích thước và vị trí cho hình chữ nhật này trùng 
khớp với kích thước Stage. 
2. Tạo Layer 2 v{ đổi tên thành MatTrang. Chọn biểu tượng Oval với thuộc 
tính Stroke Color = None, Fill Color là màu Radial Gradient (màu một có mã 
màu là #FFFF00, màu 2 có mã màu là #FFFFFF). Hãy sử dụng công cụ 
Gradient Transform để hiệu chỉnh kích thước của vòng màu bên trong lớn 
hơn v{ đặt mặt trăng vào vị trí thích hợp trên bức tranh này. 
3. Sử dụng công cụ PolyStar để tạo một ngôi sao màu vàng nhạt, kích thước là 
20x20. Convert ngôi sao này sang biểu tượng Graphics v{ đặt tên là Sao. 
Chọn công cụ Spray Brush, chọn biểu tượng cho nó là Sao ở trên. Hiệu 
chỉnh các thông số như sau: 
Scale width = 20% 
Scale height = 25% 
Chọn cả ba tùy chọn Random Scaling, Rotate Symbol và Random Rotation. 
Hiệu chỉnh kích thước của Brush là width=height=300px, Brush Angel là 
90 CW. 
Tạo mới Layer đặt tên là Sao. Hãy quét nhanh công cụ Spray Brush này lên 
Layer n{y để tạo các ngôi sao nhỏ trên bầu trời. 
4. Tạo mới một Layer v{ đặt tên là KhungCua. Sử dụng công cụ Rectangle 
Primitive để tạo một hình chữ nhật có kích thước width=200, height=150, 
- 239 - 
chọn Fill color l{ None, Stroke color l{ m{u đen, loại đường viền style là 
stippled, kích thước của đường viền là 5px. Sử dụng công cụ Deco để đổ 
màu nghệ thuật (cành hoa nho) cho khung cửa sổ này. 
5. Tạo mới Layer đặt tên là NgoiNha. Hãy sử dụng các công cụ cần thiết để vẽ 
nên ngôi nh{ mơ ước của bạn. Lưu ý: h~y sử dụng màu sắc thật hài hòa 
trong đêm tối. 
6. Tạo mới Layer đặt tên là DamMay. Hãy sử dụng công cụ Pen để tạo nên 
c|c đ|m m}y có viền cong. Tô màu cho nó bằng màu xanh nhạt (mã màu 
#66CCCC) và hãy loại bỏ viền của nó. 
7. Tạo mới Layer đặt tên là ConNguoi. Hãy sử dụng các công cụ cần thiết để 
phát họa chân dung của một cô g|i đang đi dưới |nh trăng. 
8. Tạo mới Layer đặt tên là DenLong. Hãy phát họa c}y đền lồng v{ đặt nó 
vào tay cô gái. 
9. Tạo mới Layer đặt tên là CayCoi. Hãy phát họa hình một rặng tre hoặc một 
cây cổ thụ. Chọn màu sắc hợp lý. 
10. Tạo mới Layer đặt tên là TieuDe. Sử dụng công cụ Text để soạn thảo trên 
Layer này nội dung “Ánh Trăng Trên Quê Hương”. 
BÀI THỰC HÀNH SỐ 2 
SỬ DỤNG BIỂU TƯỢNG VÀ TẠO HOẠT CẢNH 
Hãy sử dụng bức ảnh chứa c|c đối tượng được vẽ ở trên để thực thi bài thực hành 
số 2. 
1. Hãy chuyển đổi MatTrang trong Layer 2 thành biểu tượng MovieClip và 
đặt tên cho nó là MatTrang. Hãy sử dụng Classic Tween để tạo hiệu ứng 
động cho mặt trăng. Mặt trăng có hai hiệu ứng động l{: đổ bóng mờ và di 
chuyển. Để tạo hiệu ứng bóng mờ, hãy sử dụng thuộc tính Filter=Blur của 
MovieClip. Các thao tác này chỉ được sử dụng Classic Tween. 
2. Hãy xóa bỏ các ngôi sao trên bầu trời ở trên. Trong thư viện, hãy chọn lại 
biểu tượng Graphic là Sao mà bạn đ~ tạo. Bạn hãy chuyển đổi nó thành 
MovieClip. Sử dụng Motion Tween để tạo hiệu ứng tăng giảm độ trong suốt 
(thuộc tính Alpha của MovieClip). Thuộc tính n{y thay đổi từ 80% đến 
100%. Tiếp tục sử dụng công cụ Spray Brush, lần này bạn chọn biểu tượng 
- 240 - 
cho nó là MovieClip Sao. Hiệu chỉnh các thông số tương tự như b{i thực 
hành số 1. Sau đó, quét lên Layer Sao. 
3. Hãy sử dụng công cụ Bone để tạo chuyển động cho đôi ch}n cô g|i. C|c 
phần còn lại không cần tạo chuyển động. Bạn kết hợp với Motion Tween để 
tạo sự di chuyển (thay đổi vị trí trong bức ảnh) cho cô gái. 
4. Sử dụng Motion Tween để tạo chuyển động cho c|c đ|m m}y. C|c đ|m m}y 
chuyển động theo dạng thức 3D (kết hợp công cụ 3D Rotation và 3D 
Translation). 
5. Hãy tạo mới một Layer đặt tên là BienHinh. Trên Layer này, bạn hãy tạo 
một ngũ gi|c. Sử dụng Shape Tween để tạo hiệu ứng biến hình cho hình thể 
n{y th{nh hình ngôi sao năm c|nh. H~y đặt nó vào một vị trí thích hợp. 
BÀI THỰC HÀNH SỐ 3 
SỬ DỤNG BIỂU TƯỢNG VÀ TẠO HOẠT CẢNH (TIẾP THEO) 
Hãy sử dụng các công cụ tạo hoạt hình (Tween, Bone, Bind, 3D,) để tạo một 
VideoClips. Lưu ý trong b{i n{y, sinh viên cần kết hợp với một bài hát. Nội dung 
phim và nội dung bài hát phải tương đối phù hợp. Bài hát dài không dưới 1 phút. 
BÀI THỰC HÀNH SỐ 4 
LẬP TRÌNH VỚI ACTIONSCRIPT 
Trong bài thực hành này, bạn cần hoàn tất các nội dung sau: 
1. Tạo một đối tượng quả bóng bằng công cụ Oval. Sau đó, h~y chuyển đổi nó 
thành biểu tượng MovieClip. C{i đặt tên thể hiện cho nó là QuaBong. Hãy 
xóa quả bóng này trên Stage. Mở khung soạn thảo ActionScript, bây giờ 
bạn hãy viết ActionScript để tạo chuyển động 3D cho quả bóng, thay đổi 
thuộc tính alpha khi nó chuyển động. Sự thay đổi thuộc tính alpha này qui 
định theo thời gian (thay đổi từ 80% đến 100%). 
- 241 - 
2. Tạo mới một Scene. Trên Scene này, bạn hãy sử dụng hai bức ảnh. Hiệu 
chỉnh kích thước cho chúng bằng nhau. Kích thước của chúng không quá 
lớn, sao cho ta có thể đặt chúng trên Stage nhưng vẫn còn khoảng trống. Sử 
dụng đối tượng Tween để tạo hoạt hình cho hai bức ảnh này. 
Để tạo hoạt hình nhờ vào Tween trong ActionScript, bạn có thể thao tác 
như hướng dẫn sau: 
H~y đưa hai đối tượng ảnh n{y v{o trong thư viện, sau đó chuyển đổi 
chúng thành các biểu tượng MovieClip, v{ đặt tên cho chúng lần lượt là 
Anh1 và Anh2. Bạn quan s|t m~ chương trình sau 
import fl.transitions.easing.*; 
import fl.transitions.Tween; 
var OneTween:Tween; 
var TwoTween:Tween; 
Ở đ}y, bạn sử dụng package fl.transition. Đối tượng Tween được đưa v{o 
để sử dụng. Các hiệu ứng động cũng được đưa v{o qua dòng lệnh thứ nhất. 
Tiếp theo, bạn hãy tạo chuyển động cho đối tượng nhờ v{o đối tượng 
Tween. Cách sử dụng Tween cũng tương tự như bạn tạo một Thread vậy. 
OneTween = new Tween(Anh1, "y", Bounce.easeOut, 50, 100, 3, true); 
OneTween.start(); 
TwoTween = new Tween(Anh2, "y", Bounce.easeOut, 250, 300, 3, true); 
TwoTween.start(); 
Đối tượng Tween có phương thức khởi tạo Tween(Object, String, Function, 
Number, Number, Number, Boolean). Object l{ đối tượng mà ta sẽ áp dụng 
hiệu ứng Tween; String là tên thuộc tính mà ta sẽ sử dụng – như “x”, “y”,; 
Function l{ tên phương thức sẽ áp dụng – chi tiết hơn bạn có thể thử 
nghiệm với chức năng Add New Items to Script với gói fl.transition.easing; 
Number thứ nhất và Number thứ hai là hai biên chuyển động. Number thứ 
ba là số lần chuyển động (duration), tham số Boolean mặc định được sử 
dụng là true. Hãy kiểm tra xem thử nó hoạt động hoàn hảo hay không. Đ}y 
thực sự là cách tạo chuyển động rất hoàn hảo. 
3. Tạo mới một dự án khác. Trong dự án này có ba file: file main.fla, file 
human.as, file student.as. File main.fla là khung trình diễn chính. Các file 
- 242 - 
còn lại được sử dụng như c|c lớp. File human.as là một lớp chứa hai thuộc 
tính là Name:String và Age:int và bốn phương thức chính là void 
SetName(String), String GetName(void), void SetAge(int) và int 
GetAge(void). Lớp student kế thừa lớp Human. Ngoài ra, nó còn có thêm 
thuộc tính ID:String v{ hai phương thức void SetID(String), String 
GetID(void). Quay trở lại với khung trình diễn chính, bạn hãy phát họa 
hình một con người. Sau đó, bạn hãy convert nó sang biểu tượng 
MovieClip. C{i đặt tên hiển thị cho nó là ConNguoi. Cuối cùng bạn hãy xóa 
nó ra khỏi stage. Trên khung trình diễn này, bạn hãy tạo một Button và ba 
textbox kèm theo ba label. Ba label có nội dung là: Tên, Tuổi, MãSV. Ba 
textbox còn lại tương ứng dùng để nhập nội dung theo ba trường này 
(Name, Age v{ ID). Khi người dùng nhập dữ liệu và nhấp nút Add, hình 
người sẽ hiển thị ra bên dưới. Đồng thời, bên cạnh nó là các thông tin về 
đối tượng này (Tên, Tuổi và MãSV). 
4. Trong bài thực hành này, bạn hãy tạo một dự án gồm bốn file: main.fla, 
solutions.as, solution1.as và solution2.as. Trên stage của main có ba 
textbox v{ ba label tương ứng để nhập các số a, b và c. Một nút nhấn để giải 
phương trình, v{ một label nữa để hiển thị kết quả. File solutions.as là một 
interface chứa hai phương thức là DoSolution và ToString. Hai lớp 
solution1.as và solution2.as là hai lớp thực thi giao diện solutions.as này. 
Phương thức DoSolution của đối tượng trong solution1.as sẽ giải phương 
trình bậc 1, phương thức DoSolution của đối tượng trong solution2.as sẽ 
giải phương trình bậc hai. Phương thức ToString của cả hai đối tượng có 
nhiệm vụ in ra nghiệm cuối cùng. Đối tượng trong solution1.as chứa hai 
thuộc tính l{ a:Number v{ b:Number. Đối tượng trong solution2.as chứa ba 
thuộc tính là a:Number, b:Number và c:Number. Sau khi bạn hoàn tất yêu 
cầu này, hi vọng bạn sẽ hiểu rõ hơn về giao diện. 
BÀI THỰC HÀNH SỐ 5 
XÂY DỰNG PHIM QUẢNG CÁO BẰNG FLASH 
Hãy xây dựng một thước phim quảng cáo giới thiệu về một bộ phim có sử dụng kĩ 
xảo điện ảnh. Đoạn phim quảng c|o có đội dài trình diễn khoảng 5 phút. Trong 
phim phải sử dụng âm thanh và có lời thuyết trình bằng chữ hoặc lời thuyết minh 
(những đoạn phim sử dụng lời thuyết minh sẽ được đ|nh gi| cao). 
- 243 - 
Để xây dựng thước phim quảng cáo này, bạn cần sử dụng một bộ phim hoàn 
chỉnh. Sau đó, bạn cắt lấy những đoạn phim hay trong bộ phim n{y để tạo một bộ 
phim quảng cáo hoàn chỉnh (nếu không có một bộ phim hoàn chỉnh, bạn có thể 
liên hệ với giảng viên để được cung cấp các đoạn phim mẫu). 
BÀI THỰC HÀNH SỐ 6 
HOÀN TẤT DỰ ÁN VÀ XUẤT BẢN 
Hãy vận dụng các kiến thức đ~ học trong giáo trình này, bạn hãy lựa chọn một 
trong các dự |n sau đ}y: 
Các dự án 
Dự án 1. Tạo một dự án Game bằng Flash kết hợp với ActionScript theo yêu 
cầu sau 
a) Màn hình Splash (scene 1): chỉ hiển thị bốn Menu: Play, Score, Help và Quit. 
Play cho phép người dùng chuyển sang màn hình thứ hai (scene 2), trong 
m{n hình n{y, người dùng có thể chơi game. Score cho phép hiển thị kết 
quả chơi, m{n hình n{y tương ứng với scene 3. Help cho phép chuyển sang 
màn hình trợ giúp (scene 4), trong màn hình này sẽ hiển thị vài thông tin 
về game, c|ch chơi game. 
b) Nội dung game có thể l{ game h{nh động, game thể thao, game học tập 
nhưng cần phải được điều khiển bằng chuột hoặc bàn phím. 
c) Nếu người dùng hoàn tất việc chơi game, thì sẽ hiện ra các thông số mà 
người chơi đạt được: Họ và Tên (nhập vào từ đầu), điểm. Dữ liệu được đọc 
từ file data.xml. 
Dự án 2. Tạo một dự án phim hoạt hình bằng Flash kết hợp với ActionScript 
theo yêu cầu sau 
a) Phim mô tả một chủ đề bất kì nhưng phải có cấu trúc (có kịch bản). 
b) Phim có độ d{i không dưới 10 phút. 
c) Có thanh Playback để điều khiển. 
d) Có sử dụng âm thanh, tiếng nói (phải được đồng bộ với đối tượng trong 
phim) 
e) Không chấp nhận các Clip nhạc. 
- 244 - 
Dự án 3. Tạo một dự |n kĩ xảo điện ảnh bằng Flash kết hợp với ActionScript 
theo yêu cầu sau 
a) Tạo một thước phim có sử dụng kĩ xảo điện ảnh (chỉ chấp nhận kĩ xảo điện 
ảnh, không chấp nhận kĩ xảo truyền hình). 
b) Phim có độ d{i không dưới 10 phút. 
c) C|c kĩ xảo phải sử dụng phù hợp với nội dung, số lượng kĩ xảo không dưới 
10. 
d) Thước phim cuối cùng phải có nội dung. 
- 245 - 
Blank Page 
- 246 - 
TÀI LIỆU THAM KHẢO THÊM 

File đính kèm:

  • pdfgiao_trinh_script_va_ki_thuat_hoat_hinh_phan_2.pdf