Tìm hiều về lập trình hướng đối tượng trong ActionScrip
Trang 2Phụ lục
I :Khái quát về Action Scrip
1 Khái niệm về Action
2 Cách hoạt động của Action
3 Viết Action ở đâu
II : Các kiểu dữ liệu trong Action Scrip
1 Các câu lệnh điều kiện, vòng lặp
2 Xây dựng trò chơi “Phi Thuyền Không Gian”
IV : Kết luận
Tài liệu tham khảo
Trang 3I.Khái quát về Action Script
1 Khái niệm Action Script :
AS (Action Script) là ngôn ngữ lập trình với các lệnh sai khiến trong Flash movielàm việc theo đúng những gì mình viết Phần nhiều thì AS làm việc trong môi trường củaFlash, tuy nhiên AS cũng có thể gửi lệnh cho brower, hệ điều hành v.v
Xuất xứ của AS
AS rất giống ngôn ngữ C++, Java, javascript v.v và được dựa trên tiêu chuẩn doECMA(European Computer Manufactuers Association) lập ra gọi la ECMAScrip Nhiềungười hiểu lằm rằng AS dựa trên Javascript nhưng thực chất cả 2 đều dựa trênECMAScript
Lúc đầu viết script trong Flash rất đơn giản và cho tới Flash 4 mới được phát triển nhưngcũng vẫn còn “thô sơ” với những vòng lặp và các điều kiện “if…else” Cho tới Flash 5 thìdân Flash mới có thể lập trình và gắn liền script với các yếu tố trong movie Sang tớiFlash MX thì AS đã trở thành ngôn ngữ lập trình toàn diện với hơn 300 câu lệnh, hàm v.v
AS đơn giản chỉ là những câu lệnh được viết bằng tiếng anh
Mục đích chính của AS là thay đổi thứ tự trong cách chơi của Flash AS có thể dung ở bất
cứ Frame nào hay chạy ngược trở lại frame trước hay nhảy vài frame rồi chơi tiếp Nhưng
đó không chỉ là những gì AS có thể làm được AS có thể biến film hoạt hình của Flashthành một chương trình ứng dụng có sự tương tác của người dung Dưới đây là những cơbản mà AS có thể làm:
- Hoạt hình : Bạn không cần AS để làm hoạt hình nhưng với AS thì bạn có thểtạo những hoạt hình phức tạp hơn
- Navigation: thay vì movie chỉ chơi từng frame một theo thứ tự thì bạn có thểdừng movie ở bất cứ frame nào và cho phép người dùng có thể chơi ở bất cứframe nào v.v
Trang 4- Thu thập thong tin từ người dung (user input): bạn có thể dùng AS để hỏingười dùng một câu hỏi rồi dùng thông tin đó trong movie hay có thể gửi choserver hay làm những gì bạn muốn.
- Thu nhập thông tin từ các nguồn khác: AS có thể tương tác với server và lấycác thông tin từ server hay text file
- Tính toán: AS có thể làm bất cứ phép tình nào mà toán học cho phép
- Thay đổi hình ảnh trong movie : AS có thể thay đổi kích thước, màu săc, vịtrí của bất cứ movie clip (MC) nào trong movie flash của bạn Bạn có thể tạothêm phiên bản hay xoá bở phiên bản của MC với AS
- Phân tích môi trường của máy tính: với AS bạn có thể lấy giờ từ hệ điều hànhhay địa chỉ đang chơi movie Flash đó
- Điều khiển âm thanh trong flash movie: AS là cách tốt nhất để điều khiển âmthanh trong Flash AS có thể chơi chậm, nhanh, ngừng, quay vòng v.v bất kỳ
âm thanh nào trong Flash
3 Viết AS ở đâu
- Viết AS ở timeline : AS có thể viết vào key frame ở bất cứ timeline nào Đểlàm như vậy bạn chọn keyframe ở trong timeline trước rồi bạn mở ActionPanel ra (F9) để viết hay xem AS đã được viết ở đó ( Nên để Action Paneldưới dạng Expert hơn là Normal )
Note: Khi viết AS vào key frame như vậy thì AS ở key frame đó sẽ hoạt động khi màFlash chơi tới key frame đó VD như lệnh AS stop()được đặt ở keyframe 5 thì Flashchơi tới key frame 5 thì dừng lại cho tới khi có lệnh khác Cách viết này gọi là viếtvào time line
Một trong những lý do viết script vào time line là khi bạn muốn dùng function (hàm),
vì function cho phép chúng ta tái sử dụng đoạn mã đó từ nhiều nơi, nhiều level khác
- Viết AS ở nút : Các phần tử của Flash movie được gọi là symbol (biểutượng), thường thì symbol là các hình ảnh Và có 3 loại symbol : button (nút),graphic (hình ảnh), movie clip(đoạn phim) 3 loại trên thì AS không thể viếtliền với graphic, chỉ có thể viết được với button và movie clip
Nút sẽ không có tác dụng gì cả nếu như không kèm AS lên trên nó Muốn kèm ASvào nút thì chọn nút trên stage (sân khấu: diện tích của flash movie), rồi sau đó mởAction panel và viết vào đó như ta
viết vào key frame
AS viết trên nút chỉ hoạt động khi chuột hoặc bàn phím tác động lên nút mà thôi
- Viết AS ở MC
Trang 5MC khác với graphic ở chỗ MC được đặt tên khi mang vào stage, MC thường làhình ảnh động, và có thể có AS kèm theo MC Để viết AS vào MC thì cũng tương
Toán tử số và so sánh :
+ Cộng một giá trị số với một giá trị số khác
- Trừ một giá trị số với một giá trị số khác
* Nhân một giá trị số với một giá trị số khác
/ Chia một giá trị số với một giá trị số khác
%(modulo) Lấy phần dư của phép chia
<<= Đảo bit dời trái và phép gán
Trang 6>>= Đảo bit dời phải và phép gán
>>>= Dời phải zero lấp đầy và phép gán
+=, -=, /=, *= Phép cộng ,trừ,chia,nhân và phép gán
1.2 Kiểu chuỗi ký tự - String :
Kiểu chuỗi dùng để lưu trữ một dãy ký tự Chuỗi ký tự đó cần phải đặt trong dấunháy đôi “ ” hay nháy đơn Muốn kết hợp các chuỗi bạn sử dụng dấu (+) Nếu cộng mốt
số với một chuỗi sẽ cho ra kết quả là chuỗi
Action script sử dụng toán tử (+ ) để nối chuỗi
VD : sử dụng toán tử (+) để nối chuỗi
&& (and) True nếu các biểu thức đều thoả mãn điều kiện hoặc trả về
False nếu một biểu thức không thoả
||(or) True nếu một trong các biểu thức thoả điều kiện hoặc trả về
False nếu tất cả không thoả
Trang 71.4 Kiểu đối tượng Object :
Một đối tượng là tập hợp các thuộc tính Mỗi thuộc tính có tên và giá trị Giá trị củamột thuộc tính có thể là một kiểu dữ liệu của Flash, thậm chí là kiểu dữ liệu đối tượng.Điều này cho phép bạn sắp xếp những đối tượng bên trong đối tượng khác để chị địnhđến những đối tượng hoặc thuộc tính của chúng bằng cách sử dụng dấu chấm (.)
Ví dụ : trong đoạn mã lệnh dưới đây hoursWorked là thuộc tinhs của WeeklyStats màWeeklyStats lại là thuộc tính của Employee
Employee.WeeklyStats.hoursWorked
Bạn có thể sử dụng những đối tượng được định nghĩa sẵn trước để truy cập và thực hiệnnhững loại thông tin mặc định, ví dụ đối tượng Math có phương thức biểu diễn nhữngtoán tử toán học trên những con số mà bạn định cho chúng Trong ví dụ này sử dụngphương thức sqrt (lấy căn bậc hai)
squareRoot = Math.sqrt (100);
1.5 Kiểu Movie Clip :
Movie Clip là những thực thể mà có thể chuyển động trong phim Flash Chúng làkiểu dữ liệu duy nhất mà tham chiếu tới một yếu tố đồ hoạ
Kiểu dữ liệu Movie Clip cho phép điều khiển thực thể Movie Clip bằng cách sử dụngcác phương thức của đối tượng Movie Clip Bạn có thể gọi những phương thức này bằngcách sử dụng toán tử dấu chấm (.)được diễn đạt dưới đây
Kiểu dữ liệu null chỉ có một giá trị, null Giá trị này nghĩa là “không có giá trị
nào”đó là, một sự thiếu của data Giá trị null có thể được dùng trong các hoàn cảnh đa dạng Đây là vài ví dụ:
• Để chỉ ra một biến chưa nhận giá trị
• Để chỉ ra một biến khôngchứa một giá trị nữa
• Như giá trị trả về của một function, để chỉ ra không có giá trị nào sẵn dùng để
Trang 8được trả về bởi function
• Như một tham số vào một function, để chỉ ra một tham số đang bị bỏ quên
Undefined
1.7 Kiểu undefined:
Kiểu dữ liệu undefined có một giá trị, undefined, và được dùng cho một biến mà
không được gán giá trị
Visible = true;// hằng số logic
Name = “Movie”; // Hằng chuỗi
Khai báo :
Var <Tên biến 1, tên biến 2, >[: kiểu]
Trang 9Var<Tên biến > = <Giá trị khởi tạo>
VD:
Var x,y,z; // Khai báo các biến có tên x,y,z
Var S = 0, Name= “MC”; // Khai báo và khởi tạo giá trị ban đầu cho biến S=0, biếnName= “MC”
Var x: Number = 10;
- Khởi tạo biến :
Một ý hay luôn gán một biến một giá trị đã biết ở lúc bạn định nghĩa biến đầu tiên Điều này được biết như khởi tạo một biến và thường xuyên được làm trong frame đầu tiên của tệp SWF
* Phạm vi và công bố các biến:
+ Các biến cục bộ: Để công bố các biến cục bộ, dùng câu lệnh var bên trong thân
của một function Một biến cục bộ thuộc phạm vi khối và hết hiệu lực ở cuối khối Một biến cục bộ không công khai bên trong một khối, hết hiệu lực ở cuối script của nó.Các biến cục bộ có thể cũng giúp chặn các sự tranh chấp tên, mà có thể là nguyên nhân các lỗi trong ứng dụng của bạn
Ví dụ : var a:Number
+ Các biến Timeline : Các biến Timeline là sẵn dùng tới bất cứ script trên Timeline.
Để công bố các biến Timeline, khởi tạo chúng trên bất cứ frame nào trong Timeline Đừng quên khởi tạo biến trước khi thử truy cập nó trong một script
Ví dụ, nếu bạn đặt code var x = 10; trên Frame 20, một script đã gắn tới bất cứ frame trước Frame 20 không thể truy cập vào biến
+ Biến_global : Các biến này có hiệu lực với mọi bảng tiến trình, phạm vi hoặc
các hàm trong tập tim SWF Do đó bạn có thể khai báo một biến toàn cục và sau đó sử dụng biến trong các tập tin SWF được tải vào tập tin SWF chính mà không cần thực hiệnthay đổi bất kỳ mã lệnh nào trong Actioncript hay cấu trúc của tập tin
Biến toàn cục được định nghĩa với từ khoá _global ở phía trước mỗi biến
Trang 102.3 Biểu thức :
Biểu thức được xem như một phần của mã lệnh, là sự kết hợp hằng, biến và các toán
tử theo cú pháp của Actioncript để thực hiện việc tính toán (xác định) một giá trị
Một trong những tiện ích của việc sử dụng hàm là có thể thực hiện một số chức năngnào đó trong chương trình nhiều lần mà không cần viết lại mã lệnh Ngoài ra về kỹ thuật
Trang 11lập trình cho phép bạn phân chia thành nhóm các chức năng Module để dễ dàng quản lý
và theo dõi chương trình
Function <Tên hàm>([các tham số hình thức nếu có])
{
Var <Danh sách cấc biến cục bộ>;
Statements; // Các mã lệnh thực hiện của hàm
[return kq;//kq là lưu kết quả trả về của hàm]
Khi chương trình gọi hàm thì các tham số hình thức sẽ được truyền vào bằng các tham
số thực để tính toán ra giá trị cụ thể Tham số thực có thể được truyền vào bằng cáchtruyền theo giá trị cụ thể hoặc truyền theo địa chỉ (thông qua biến lưu giữu giá trị)
VD: Khai báo hàm tính tổng 3 số a,b,c
<instance name>.<biến cố> = function(){
Trang 12
}
Biến cố ở đây thông thường là onPress, onRelease, onRollOver
VD : Tạo một nút bấm với tên thực thể là “nut”, với biến cố thả chuột:
- Viết kịch bản trực tiếp trong nút bấm :
On (release) {
}
- Viết theo hàm biến cố tại một khung hình nào đó
Nut onRelease = function(){
}
4 Truy Xuất Dữ Liệu :
4.1 Truy xuất D.Text, I.Text và TextArea :
Flash cho phép truy xuất hai đối tượng nhập liệu (Input Text) và xuất dữ liệu(Dynamic Text) trực tiếp thông qua tên biến được khai báo trong hộp var hay từ tên thựcthể (Instance Name) thông qua lệnh Text với cú pháp
Khai báo cấu trúc tập tin
-Tạo một tập tin văn bản text
-Khai báo biến và giá trị theo cú pháp : <& ten_bien>= giá trị và liên tiếp chocác biếnkhác
Tạo đối tượng Loadvas
Cú pháp : var <doi_tuong>: LoadVars = new Loadvars()
VD : Khai báo một biến Loadvar, tên dt
Var dt: LoadVars = new Loadvars()
Lệnh load(): Dùng để tải tập tin biến vào đối tượng Loadvars
Cú pháp : <doi_tuong>.load(tap_tin.txt)
Trang 13VD: tải tập tin “bien.txt” vào đối tượng dt
Trang 14III Tìm hiểu một số vấn đề về AS
1 Các câu lệnh điều kiện, vòng lặp :
1.1 Các câu lệnh điều kiện :
a Câu lệnh if : Kiểm tra cho biết một điều kiện là true hoặc false, nếu đúng thực hiện
trong khối lệnh if, nếu sai không thực hiện lệnh trong khối lệnh đó
b Câu lệnh if… else : Kiểm tra nếu điều kiện if mà sai thì thực hiện dòng lệnh else
Dùng while, do while, for, và for in các action để tạo các vòng lặp
Để lặp lại một action while một điều kiện tồn tại:
a Dùng câu lệnh while :
Một vòng lặp while đưa về giá trị một biểu thức và thực thi code trong thân của vòng lặp nếu biểu thức là true Sau khi từng câu lệnh trong thân được thực hiện, biểu thức đượcxem lại một lần nữa
Trong ví dụ sau, vòng lặp thực thi bốn lần:
Trang 15Đa số các vòng lặp dùng vài loại bộ đếm để điều khiển làm thế nào nhiều lần vòng
lặp thực thi Từng sự thi hành của một vòng lặp được gọi là một sự nhắc lại Bạn có thể công bố một biến và viết một câu lệnh tăng hoặc giảm biến mỗi lần vòng lặp thực thi Trong action For, bộ đếm và câu lệnh các sự gia tăng bộ đếm là phần của action Trong ví
dụ sau, biểu thức đầu tiên (var i = 4) là biểu thức ban đầu đó, được đánh giá trước sự nhắc lại đầu tiên Biểu thức thứ hai (i>0) là điều kiện được kiểm tra mỗi lần, trước khi vòng lặp chạy Biểu thức thứ ba (i- -) được gọi post biểu thức và được đánh giá mỗi lần sau khi vòng lặp chạy
for (var i = 4; i>0; i- -){
myMC.duplicateMovieClip("PhimMoi" + i, i + 10);
}
Để lặp xuyên suốt children của một movie clip hoặc object:
c Dùng câu lệnh for in
Children có chứa các movie clip, các function, các object, và các biến khác
2 Xây dựng trò chơi “Phi Thuyền Không Gian”
Trong phần này chúng ta sẽ tìm hiểu AS thông qua một trò chơi đơn giản là trò chơi phithuyền không gian :
2.1 Xây dựng các nhân vật trong trò chơi và kịch bản trò chơi :
Xây dựng nhân vật và kịch bản trong trò chơi là một điều thiết yếu khi xây dựng một
trò chơi, trong trò chơi này, về cơ bản tên trò chơi đã nói lên hầu hết các nhân vật trongtrò chơi
- Nhân vật chính của chúng ta là một phi thuyền có nhiệm vụ bảo vệ trái đất khỏi sựlược của các phi thuyền ngoài hành tinh đến để xâm lược trái đất ta có một phi thuyền.Phi thuyền này do chính người chơi điều khiển Một điều nữa để đơn giản trò chơi chúng
ta giả sử rằng tốc độ di chuyển của tàu và phi thuyền lạ theo chiều Oy là giống nhau dovậy phi thuyền chỉ có thể di chuyển sang trái hoặc sang phải để nã đạn vào phi thuyền lạ
Trang 16- Nhân vật thứ hai là các phi thuyền lạ, một phần hấp dẫn không thể thiếu trong tròchơi Nhiệm vụ các phi thuyền này là : bay lượn trong không gian, chờ thời cơ tấn côngphi thuyền bảo vệ trái đất các phi thuyền này có số lượng áp đảo phi thuyền trái đất domức độ khó và do tính duy nhất chỉ một người chơi trong trò chơi Flash này
- Điều quyết định thứ ba để ta có thể tiến hành trò chơi được đó là phi thuyền chínhphải chứa đạn để bắn vào kẻ thù Sau khi đã đẩy lùi các phi thuyền xâm lược trở lạikhông gian, phi thuyền chính sẽ phải dùng đến đạn LAZE để bắn đối phương các tên lửagắn vào phi thuyền không thể hoạt động được Hành trình của đạn LAZE chỉ có thể đi lêntrên và chờ khi bắn trúng hoặc quá biên thì phi thuyền chính mới có thề bắn lại được
- Một vấn đề là làm sao nhìn thấy các phi thuyền di chuyền trong không gian Vấn đềnày giải quyết khá đơn giản bằng cách tạo ra một số ngôi sao di chuyển xuống biên dưới
để đánh lừa thị giác cảm nhận các phi thuyền đang đi lên
2.2 Xây dựng từng phần của trò chơi :
2.2.1 Xây dựng cách thức hoạt động của các ngôi sao tạo nền:
Tạo một movie có tên là star_mc Trong Library nhấp chuột phải và phim này vàchọn properties -> Advance -> trong linkage tích vào Export for ActionScript Mục đíchcủa hành động này để tạo kết nối giữa Library với AS, chúng ta có thể gọi trực tiếp moviekhi trên timeline không có mặt movie này
Trang 17Tạo thuộc tính cho các ngôi sao khi trò chơi bắt đầu đến khi kết thúc Mỗi ngôi sao xẽ
di chuyển đi xuống đều với những tốc độ khác nhau, xuất hiện ở những chỗ khác nhaunhư vậy phải sử dụng đên các hàm Math.random() hàm này tạo ra các số random từ 0 ->
1 do tốc độ thế là quá chậm nên ta phải nâng tốc độ lên bằng cách nhân với một số nào đólớn hơn 1 Mặt khác do những ngôi sao này càng về xa thì độ sáng tối khác nhau nêndùng thuộc tính _alpha làm sáng hoặc mờ các ngôi sao một cách ngẫu nhiên Các lệnh
this._x, this._y cho ta biết tọa độ x,y của movie
Nói thêm về câu lênh this : Nó thuộc về vấn đề TAGET của một movie
+ this để nói về level hiện hành nếu code đặt trong timeline chính thì level là 0còn nếu đặ trong movie thi level là 1 Trong một movie ta dùng this để thay cho tênmovie
+ _parent giả sử bạn có 2 movie clip được lồng vào nhau có nghĩa là movie này
có level lớn hơn hoặc bằng 2 để gọi từ level 1 tới level 2 dùng _parent
+ _root gọi level timeline chính level 0
this._x = Math.random()*599+1; // Xuất hiên ở các vị trí từ 1-> 600
this._y = 0; // Ban đầu tốc độ di chuyển xuống = 0
this._alpha = Math.random()*80+20; // tạo độ sáng tối từ 20 đến 100}
this.khoitao(); // Khởi tạo cho từng sao
this.onEnterFrame = function()
{
this._y = this._y+this.speed;