Ngôn ngữ lập trình AS

Chia sẻ: trong_127

AS là ngôn ngự lập trình được xây dựng trong Flash. AS giống như các ngôn ngữ khác như Javascript, C++ ... nhưng bạn không cần biết các ngôn ngữ khác để học AS. Bắt đầu học AS, thì chúng ta coi thử AS là gì, làm được những gì và có quan hệ gì với các chức năng khác của Flash.Mảng (array) – Cấu trúc của những phần tử dữ liệu có liên quan – Thực thể tĩnh (giữ nguyên kích thước trong suốt chương trình) • Một vài loại mảng – mảng dựa vào con trỏ (Pointer-based arrays)...

Bạn đang xem 20 trang mẫu tài liệu này, vui lòng download file gốc để xem toàn bộ.

Nội dung Text: Ngôn ngữ lập trình AS

 

  1. Ngôn ngữ lập trình AS
  2. Gi th 01: Làm quen v i AS, Your First Look at AS AS là m t ngôn ng l p trình ư c xây d ng trong Flash. AS gi ng như các ngôn ng khác như Javascript, C++ v.v. nhưng b n không c n bi t các ngôn ng khác h c AS (n u có thì càng d hơn). B t âu h c AS, thì chúng ta coi th AS là gì, làm ư c nh ng gì và có quan h gì v i các ch c năng khác c a Flash. Trong bài này, b n s tìm hi u coi AS ra i như th nào, xem cách vi t AS làm sao, tìm hi u AS làm ư c nh ng gì và sau sau cùng là xác nh ư c nơi lưu tr AS trong Flash. i sát nghĩa và ti n cho sau này, mình s không d ch m t s t ng ra ti ng vi t như script, movieclip v.v. Script là gì? AS là ngôn ng l p trình, v i các l nh sai khi n Flash movie làm vi c theo úng nh ng gì mình vi t (ch có mình vi t sai ch computer không làm sai ). Ph n nhi u thì AS ch làm vi c trong môi trư ng c a Flash, tuy nhiên AS cũng có th g i l nh cho browser, h i u hành v.v. Script có th ng n g n vài ch hay cũng có th dài c trăm trang. Script có th ưc vi t g p l i m t ch hay cũng có th vi t rãi rác kh p nơi trong movie. 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 do ECMA (European Computer Manufactuers Association) l p ra g i là ECMAScript. Nhi u ngư 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ên ECMAScript. Lúc u vi t script trong Flash r t ơn gi n và cho t i Flash 4 m i u c phát tri n nhưng cũ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 i Flash 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 Nh n biêt AS AS ơn gi n là nh ng câu l nh ư c vi t b ng ti ng Anh (vì l này mà mình s không d ch các tư ti ng Anh liên quan n AS, và m t ph n thì mình không gi i thu t ng computer hay ti ng vi t cho l m) và các phép tính và d u câu. Ví d sau: ActionScript on (press) { gotoAndPlay ("my frame"); }
  3. B n có th gi i nghĩa o n mã trên b ng cách tìm hi u các t chính trong ó. Ch "press" g i ý răng ngư i dùng ang kích chu t vào m t cái gì ó, (và trong trư ng h p này là cái nút) Ch k ti p "gotoAndPlay" do 4 ch "go to and play" g p l i, g i ý r ng AS ra l nh cho Flash t im t i m nào ó trong movie và b t u chơi t i m ó. AS có th làm nh ng gì? Flash movie g m có các scence (c nh), và m i c nh s có 1 timeline (th i gi n bi u???) và timeline s có các frame (khung) b t u t s 1. Thông thư ng thì Flash s chơi t frame 1 cho t i frame cu i c a scence v i t c c nh và d ng l i hay u tuy theo ngư i làm Flash. l pl it M c ích chính c a AS là thay i th t trong cách chơi c a Flash. AS có th dùng b t 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 Flash thành m t chương trình ng d ng có s tương tác c a ngư i dùng. 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. Ví d , trái banh có th tưng xung quanh mành hình mà không bao gi ng ng, và tuân theo các nh lu t v t lý như l c hút, l c ma sát, l c ph n v.v N u không có AS thì b n c n ph i dùng c hàng ngàn frame làm, còn v i AS thì ch 1 frame cũng ): thay vì movie ch chơi t ng • Navigation (hông bi t d chlàm sao cho hay frame 1 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 Thu nh p thông tin t ngư i dùng (user input): b n có th dùng AS h i • ngư i dùng 1 c u h i, r i dùng thông tìn ó trong movie hay có th g i cho server hay làm nh ng gì b n mu n. Thu nh p thông tìn t các ngu n khác: AS có th tương tác v i server và l y • cá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 o thêm phiên b n hay xoá b i 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ành • hay 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 âm thanh trong Flash,AS có chơi ch m, chơi nhanh, ng ng, quay vòng .v.v bât kỳ âm thanh nào trong Flash. Phát tri n các kh năng c a AS i u quan tr ng nh t mà AS có th làm cho b n là nh ng gì chưa ai nghĩ t i Vi AS và trí tư ng tư ng và óc sáng t o c a b n thì không có gì là không th x y ra v i AS ư c. M c ích c a các sách, và c a VNFX là hư ng d n b n hi u bi t v Flash t ó
  4. b n có th t dùng nó làm ra nh ng s n ph m tuy t v i mà không ai có. Vi t AS âu Câu h i u tiên nh ng ai tìm hi u AS thư ng h i là "Vi t AS vào âu?". Flash có m t môi trư ng làm multimedia khá ph c t p. N u b n ã dùng Flash r i hay ã c qua các hư ng d n i kèm v i Flash, thì b n ã bi t các y u t cơ b n như timeline, key frame v.v. nêu b n chưa bi t thì mình khuyên b n nên tìm hi u trư c r i t iêp t c ây. Ơ trong m c Flash T ng Quá, VNFX có post link download 3 cái CD hư ng d n cơ b n cho ngư i chưa bao gi dùng Flash. Vi t AS time line làm như v y, b n ch n key AS có th vi t vào key frame b t c timeline nào. frame trong timeline trư c r i b n m Action Panel ra (có th nh n F9) viêt hay xem AS ã ư c vi t ó. Mình khuyên b n nên dùng Action Panel dư i d ng Expert hơn là Normal, vì như v y b n s h c ư c nhi u và l hơn. 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 ó. Ví d như l nh AS stop() ư c t key frame 5 thì Flash chơi t i key frame 5 thì s d ng l i cho t i khi có l nh khác. cách vi t này g i là vi t và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 u tư ng). thư ng thì symbol là các hình nh. Và có 3 lo i symbol: button (nút), graphich (hình nh), movie clips( o n phim). 3 lo i trên thì AS không th vi t li n v i graphic, còn button và movie clip thì OK. 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 AS và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 MC khác v i graphic ch MC ư c t tên khi mang vào stage, MC thư ng là hình vi t AS vào MC thì cũng tương t như ành ng, và có th có AS kèm theo MC. ta làm v i nút. AS kèm theo MC có th i u khi n MC ó hay là các MC trong cùng m t timeline hay các timeline ngoài movie Bài t p
  5. 1. T o m t movie m i 2. t o 3 key frames 3. Dung Flash v m i hình khác nhau cho m i frame 4. Ch y th movie (nh n Control + enter) 5. Sau ó tr l i t imeline, vi t vào keyframe 2 o n mã : "stop();" 6. Cho ch y th movie l n n a 7. Và kỳ này b n ch th y Flash chơi t i frame th 2 thì ng ng, và b n ã thành công trong vi c vi t AS : Gi th 02: S d ng Action panel, Using the Script Editing Window ho coi Timeline là nhà thì dân l p trình v i AS coi Action Panel là nơi N u dân cư ng c a mình, t i ó dân AS có th thay i, vi t t t c các l nh. Vì v y r t quan tr ng là b n có th s d ng quen thu c Action Panel Flash MX s d ng các panel giúp b n có th l y các thông tin v movie b n ang làm m t cách d dàng. Khi b n cài t và chay Flash l n u tiên, Flash s h i b n mu n s d ng Flash như th nào và Flash s x p t các panel cho h p lý. B n cũng có th thay i cách x p t theo ý c a b n. Nói chung b n nên x p t các panel c a b n làm sao cho thu n ti n cho b n nh t, và cái này cũng c n có kinh nghi m ó Mình dùng dual monitor, mình close h t các panel ch gi l i 2 cái chính trên màn hình, mình kéo cái action panel và property panel qua m t bên monitor, còn cái bên kia cho cái stage, n u c n m panel nào thì mình dùng phím t t m . S d ng Action panel có 2 cách: bình thư ng (normal) và chuyên d ng (expert). Khi m i ch y máy l n u thì Action panel ư c set dư i d ng bình thư ng. d ng bình thư ng thì b n không có th ánh tr c ti p các câu l nh, mà ph i ch n t các menu bên tay trái c a panel. V i setup như v y thì b n không bao gi ph m ph i l i khi vi t AS c . Mình s b ph n hư ng d n dùng normal vì mình th y dùng normal mode s không bao gi ti n ư c, dùng expert mode lúc u hơi m t nhưng b o m là các b n s h c ư c mau và nh lâu hơn S d ng Action panel v i expert mode thì b n có nhi u t do hơn, nhưng t do ng nghĩa v i trách nhi m nên b n ph i c n th t khi vi t code. T normal mode chuy n sang expert mode thì nh n phím t t CONTROL + SHIFT + E, chuy n ngư c l i thì dùng CONTROL + SHIFT + N (nh kích chu t vào action panel trư c khi dùng phím i t Normal mode sang expert mode b t c lúc nào, nhưng i t t). B n có th ngư c l i thì ch ư c khi mà code c a b n không có l i. Action panel có popup menu (mũi tên ch xu ng dư i, n m góc ph i c a action panel) và trong ó có nhi u l nh r t t t cho b n khi b n dùng Action panel, nh t là i v i Expert mode. B n có th tìm và thay th b t c câu nào, ch nào trong script c a b n. Phím t t cho tìm ki m là Control + F và cho thay th là Control + H, nh n F3 thì Flash s t i p t c tìm ch , câu b n mu n tìm.
  6. M t l nh n a là "Goto Line" giúp b n tìm ư c câu b n mu n tìm. L nh "Check Syntax" s rà soát script c a b n và tìm nh ng l i cú pháp. Lúc m i t p vi t AS, thì dùng nên thư ng xuyên dùng Chech Syntax check l i trong sctipt. L nh ti p theo là "Auto Format" và "Auto Format Options" giúp cho b n trình bày script c a b n cho c hơn. B n có th thay i màu s c, font ch v.v. cho script c a b n cho b n d c code hơn b ng cách vào Edit > Preferences > ActionScript Editor. Các ph n d còn l i c a pop-up window cho phép b n ư c xu t hay nh p AS dư i d ng text file và in script ra gi y. Tuy g i là expert mode nhưng th c ra dùng còn d hơn là normal mode. B i vì dư i expert mode thi Action panel ch ng khác gì chương trình "note pad" hay "text pad". B n ch vi c vi t nh ng gì b n mu n vào ó. Khi dùng dư i expert mode, b n v n có th tham kh o các câu l nh, các cú pháp c a AS cái khung bên trái c a Action Panel. Và n u b n tôn th m t s quy t t thì b n s s ư c ch c năng "Code Hint" c a Action Panel, ch c năng này t o nên nhưng khung nh nh trong ó có nh ng câu l nh c a AS úng h p quy cho b n l a ch n. tr thành m t "cao th " v AS thì b n không th nào không n m v ng v Action panel ư c. Sau ây là bài th c hành nho nh , giúp b n làm quen v i Action panel dư i expert mode 1. T o m t movie m i 2. Ch n key frame u tiên (frame s 1) c a layer 1 (mình không d ch ch layer = l p vì d trùng v i class= l p) 3. M Action panel (có th dùng phím t t hay vào trong ph n Window > Action panel 4. Chuy n sang expert mode (dùng phím t t hày vào trong pop-up menu c a Action panel i) 5. Vào ch vi t AS 6. Vi t o n code sau: ActionScript trace ("I am expert"); Khi b n th movie thì dòng ch "I am expert" s ư c hi n ra trong Output panel, và mình s c p n l nh trace() vào nh ng gi t i
  7. Gi th 03: H c cách l p trình, Learning to program L p trình có th coi là khoa h c và ngh thu t. Vì v y l p trình viên gi i c n có 2 i u ki n ki n th c v ngôn ng mà h dùng và tính sáng t o, ít khi nào có trư ng h p ch có 1 cách l p trình cho m t án l m. Trong quá trình vi t AS, b n s t o ra cho riêng mình m t phong thái vi t code khá c trưng. Có th m i u b n s dùng phong cách vi t code trong nh ng bài vi t này, r i sau ó b n s t t chuy n sang phong cách c a riêng b n Thư ng thì khái ni m v các ngôn ng l p trình u gi ng nhau, và trong bài này s bàn v nh ng khái ni m l p trình và làm sao áp d ng nó trong Flash Cách suy nghĩ c a computer Th t ra computer d t l m ch ng bi t suy nghĩ âu, ch bi t làm vi c theo m nh l nh m t cách không suy nghĩ. Vì v y computer không bao gi l i mà l i ngư i vi t l nh sai khi n nó. Còn AS ch là m t chu i l nh, ch th cho computer, hay úng ra là Flash ph i làm nh ng gì trong môi trư ng runtime (runtime environment). Khi vi t AS thì b n nên t coi mình "ngu" như computer, và c l i nh ng dòng l nh AS và nghĩ t i k t qu c a vi c thi hành l nh ó. Khi t t mình vào v trí c a computer, b n s oán ư c script c a b n s làm nh ng gì trong môi trư ng runtime, và b n có th th y ra nh ng l i mà b n vô ý m c ph i. Khi mà b n tr thành di n viên tuy t v i trong vai computer thì b n cũng tr thành m t l p trình viên tài ba. L nh, hàm, và phép tính L nh (command) là y u t căn b n c a AS ch th Flash làm m t hành ng c th . L nh ư c thi hành tuy t i trong các trư ng h p kh thi. Ví d n u như ta vi t gotoAndPlay(5) cho Flash t i frame 5 và chơi, nhưng n u trong movie không có frame 5 thì l nh không th làm ư c. Hàm (function, mình s dùng t function nhi u hơn là hàm) là ph n tính toán các phép tính và cho ra (return) m t k t qu . Ví d hàm random() s cho ra m t con s ng u nhiên nào ó, hay hàm sqrt() s cho ra giá tr bình phương c a 1 s mà hàm nh n ư c truy n cho. L nh và hàm u có th ư c truy n cho 1 hay nhi u thông s (parameter, mình s dùng t parameter thay vì thông s ), và nh ng thông s ó giúp cho hàm và l nh ư c c th hơn. Ví d gotoAndPlay(5) thì 5 là thông s , n u như không có thông s này thì l nh "gotoAndPlay" s không bi t rõ ph i nói Flash i âu. cũng như hàm sqrt() cũng c n có thông s cho ra giá tr bình phương c a s y. S khác bi t gi a hàm và l nh chính là các phép tính. Phép tính thư ng là nh ng d u +, -, *, / hay là phép so sánh <, ==. >. Hàm có phép tính, l nh thì không
  8. Bi n s Bi n s (parameter) c n thi t trong m i ngôn ng l p trình vì nó lưu tr thông tin v m t cái gì ó trong chương trình. Bi n s g m có 2 ph n: tên và giá tr . ôi khi b n ch c n lưu tr thông tin trong bi n s m t th i gian ng n, ví d b n mu n Flash thi hành 1 s l nh 10 l n thì b n c n m s l n mà Flash ã thi hành l nh có th ra l nh cho Flash ngưng ngay sau khi thi hành xong l nh l n th 10. Nhưng cũng có lúc b n c n ph i lưu l i thông tin trong m t th i gian dài hay trong su t quá trình th i gian Flash chơi. Tên c a bi n s thư ng là m t nhóm t , hay cũng có th ch ơn gi n là 1 t , hay 1 ch cái. Thông thư ng tên c a bi n s nên rõ ràng d hi u và nói lên ư c tính ch t c a thông tin mà bi n s ang lưu tr . Ví d n u b n mu n lưu tr tên c a ngư i dùng trong bi n s thì b n nên t tên bi n s ó là userName (mình nghĩ t tên ti ng Anh d hi u hơn, vì ti ng vi t không d u cũng d b hi u l m), b n có th t tên bi n s ó là "n" nhưng quá ng n, ngư i c script c a b n s khó hi u, n u t là name thì d trùng v i các bi n s hay t khoá khác (_name là m t c tính c a i tư ng MovieClip) Khi vi t AS, b n c n lưu ý vi t làm sao cho d hi u và d c. Và các l p trình viên quy ư c tên bi n s theo quy t c sau: tên bi n s luôn vi t thư ng ch u tiên, và vi t hoa ch cái u tiên cho các ch k ti p, ví d userName, userLastName, userMotherMaidenName v.v. Lưu ý r ng ch các ch cái và s m i ư c dùng t tên cho bi n s , và luôn b t âu tên b ng ch cái. lưu tr nhi u lo i thông tin, và ngay m i lo i thông tin cũng Có nhi u lo i bi n s có th có nhi u lo i khác nhau n a. Như s (number) là m t lo i giá tr c a bi n s , và dư i nó còn có các lo i khác như s nguyên (integer), s ... không nguyên (floating, double). B n cũng có th dùng bi n s ch a các chu i (chu i g i t t cho chu i ch cái), chu i có th ch có 1 ch cái, nhi u ch cái hay là không có gì h t, t t c các chu i sau ây u h p l : "ablsdfjksl", "a", " ", "". Khi vi t m t chu i thì c n dùng d u ngo c kép ("") b t u và k t thúc chu i. Trong các ngôn ng l p trình khác như Java, C++, hay ngay c ActionScript 2.0 trong Flash MX 2004 thì b n ph i xac nh trư c lo i thông tin nào b n s lưu trong bi n s . Nhưng v i ActionScript 1 (trong FlashMX) thì b n không c n làm vi c này. Ví d bi n s userName lúc u ch a 1 chu i, nhưng sau ó l i ch a 1 s nguyên thì cũng v nh pl . Ngoài chu i và s , còn có nhi u lo i khác n a nhưng chúng ta s c p t i vào nh ng bài sau. i u ki n Trong nh ng trư ng h p chúng ta không bi t nên ra l nh cho Flash ph i làm gì cho thích h p v i t ng tình hu ng thì ta có th dùng " i u ki n" ra l nh cho Flash.
  9. Ví d n u như b n ra l nh cho Flash không cho ngư i dùng coi m t o n phim trong Flash n u như user dư i 18 tu i, n u user trên 18 tu i thì hãy chơi o n phim y. Trư c tiên, Flash s so sánh s tu i c a user v i s 18, n u như s tu i c a user tho mãn i u ki n chúng ta t ra thì Flash s có 1 giá tr true t phép so sánh trên, và ngư c l i s là false i u ki n s luôn luôn là úng (true) hay sai (false). M t giá tr ch có úng hay sai thì ư c g i là boolean. Sau khi th c hi n phép so sánh và có ư c k t qu t phép so sánh trên, Flash s ch n m t trong 2 gi i pháp do chúng ta ưa ra cho t ng trư ng h p. ôi khi chúng ta c n có nhi u i u ki n hơn ch là ơn gi n "true" hay "false", ví d như b n mu n Flash chơi o n phim A cho ng ơi trên 18 tu i, dư i 18 nhưng trên 13 thì chơi o n phim B, và nh ng ai dư i 13 thì chơi o n phim C. Vòng l p Con ngư i làm ra computer vì lư i không mu n làm nhi u, mà bán cái cho computer. Nh t là ph i làm i làm l i 1 vi c nào ó thì càng nhàm chán. Vì v y vòng l p (loop) là m t y u t quan tr ng trong các ngôn ng l p trình. AS cũng v y, b n có th dùng vòng l p trong script. Trong vòng l p, " i u ki n" r t quan tr ng. M i vòng l p c n có i m b t u và i m d ng và m t i u ki n báo hi u i m d ng c a vòng l p. Ví d như b n mu n cho vòng l p ch y 10 l n thì s có 1 bi n s dùng m vòng l p, b t u t 0, M i vòng l p ch y thì bi n s này s tăng thêm 1. Khi t i 9 thì vòng l p s d ng l i. Sau ây minh ho c a vòng l p này: 1. M t s l nh tr ơc vòng l p 2. B t u vòng l p, set bi n s counter = 0 3. Làm m t s l nh trong vòng l p 4. Tăng bi n s counter +=1 5. N u bi n s counter nh hơn 9, tr l i bư c th 3 6. Ra kh i vòng l p, và ti p t c chương trình. ây chúng ta b t d u bi n s counter = 0 vì quy ư c thông thư ng các ngôn ng l p trình u b t u vòng l p 0. M t i m áng lưu ý c a vòng l p là i u ki n ư c xét trư c khi th c hi n các l nh trong vòng l p. Trong vài trư ng h p, i u ki n s ư c xét sau khi th c hi n các l nh trong vòng l p. Chúng ta cũng có th ngưng vòng l p trư c i m d ng c a nó, và i u này s ư c c p t i vào bài k t i p Làm nh ng i u không tư ng L nh, hàm, phép tính, bi n s , thông s , i u ki n, vòng l p là nh ng ph n căn b n trong ngôn ng l p trình, và cái này thì ai cũng bi t nhưng làm sao ph i h p l i thành m t chương trình hoàn h o m i là cái khó. Chương trình ơn gi n ch là m t t p h p l nh cho computer gi i quy t 1 v n nào ó. Vì v y trư c khi vi t 1 chương trình chúng ta c n ph i xác nh "v n " c n ph i gi i quy t. Ví d th c t ngoài i, m b n nh b n ra ch mua gà. Nhưng ch
  10. ơn gi n nói ra ch mua gà thì chưa vì bi t mua gà s ng hay gà làm r i. n u mua gà s ng thì mua lo i nào v.v. ó là chưa nói t i mua gà ch nào, giá c ra sao v.v. N u như b n m nói rõ là ra ch b n thành, mua 1 con gà mái d u, n ng kho ng 2 kg, v i giá kho ng 10000 thì th t là d dàng cho b n ph i không? Bi t ư c v n mua gà r i thì tìm cách mua gà. B n ph i "lên k ho ch", nên nh b n ch hay i taxi ra ch b n thành. N u i taxi i hãng nào, tìm s phone g i, v.v. còn nh b n ch i thì nh tên nào. R i nên m c qu n áo nào i ch . Ra n ch thì ph i m c c làm sao, tr ti n m t hay ghi s n . B n th y không, t m t chuy n mua gà ơn gi n v y mà có th t n c ngày tr i lên chương trình Vi t AS, b n c n ph i lưu ý t i t t c m i vi c dù nh cách m y cho Flash có th làm úng theo như ý b n trong m i tình hu ng. Các chương trình có bug không ph i vì ngư i vi t d mà vì chưa nghĩ t i h t m i tình hu ng thôi. Tóm l i, i u quan tr ng trong l p trình là kh n ng phân tích m t v n chính thành nhi u v n nh cho t i khi không còn nh hơn n a, và sau ó xây d ng chương trình t gi i quy y các v n nh lên d n cho t i v n chính. Vi t mã hoàn ch nh B (bug) ơn gi n là l i c a chương trình mà b n t o ra. Bug có th ch là nh ng l i cú pháp ơn gi n, hay là nh ng l i ph c t p do cách b n gi i quy t v n trong môi trư ng runtime. tránh có bug trong script c a b n thì b n nên t n nhi u thì gi vào giai o n phân tích, thi t k chương trình cho script c a b n. Ki m tra các o n code nhi u l n, và óng vai "computer" cho th t gi ng, ng suy nghĩ, mà thi hành các l nh trong script c a b n. Vi t t ng o n code nh r i ráp l i v i nhau (vì v y mà l p trình theo hư ng i tư ng ư c s d ng nhi u nh t) N u script c a b n có bug thì ng th mà n n lòng, vì không có chương trình nào do con ngư i làm ra mà không có bug c . Vì v y b n ng c g ng viêt code sao cho tuy t h o không có l i. N u có bug thì b n di t bug thôi B n có th chu n b "chi n u" v i bug b ng cách vi t code sao cho d hi u và d c, vi t nhi u chú thích cho các o n mã. ôi khi di t bug (debug) r t ơn gi n nhưng có khi cũng r t kho mà bi t bug âu di t. Flash có kèm theo vài công c giúp b n debug d dàng hơn, chúng ta s nói t i các công c này trong bài t i. Gi th 04: Viêt code trong Flash, Writing code in Flash Khi b n vi t script, b n s dùng t t c nh ng t khóa, và ký hi u v.v. V y trư c tiên chúng ta s phân tích m t o n script sau ây. o n script này g n vào 1 button. ActionScript on (press) { var myVariable = 7; var myOtherVariable = "Macromedia";
  11. for (var i=0; i<10; i++) { trace(i); if (myVariable + 3 == 5) { trace(myOtherVariable); } } } Dòng u tiên xác nh nh ng o n code sau ó ư c kích ho t khi mà user nh n vào nút. hàm on(press) ch có th s d ng trong vào trong nút mà thôi. Ngoài ra b n có th dùng on(release) n u như b n mu n kích ho t o n mã trên sau khi user nh n nút, và buông tay. D u ngo c móc {} u và cu i o n code, gói o n code ó vào làm m t, và u ư c kích ho t khi nh n nút. Các b n lưu ý th y o n code ư c vi t vào trong cho d nh n th y c o n code này ph thu c vào on(press). Các b n nên vi t lùi vào trong cho nh ng o n code ph thu c vào 1 l nh hay hàm nào ó. Dòng th hai l p ra bi n s (mình s vi t t t là var nhe) tên myVariable, và t giá tr b ng 7 cho nó. tương t hàng k ti p l p ra var tên là myOtherVariable và cho giá tr c a nó là "Macrmedia". C 2 câu này ư c k t thúc b ng d u ch m ph y ; Dòng th 4 chính là vòng l p (mình s g i là loop cho ti n nhe) for (s nh c t i các lo i loop phía dư i) và các i u ki n c a loop này. Nó s l p 10 l n v i i u ki n b t u là i=0 và nó s tăng thêm 1 cho m i l n l p cho t i khi nó lên t i 9. Tương t như on(press), for loop cũng có o n code cho riêng nó, và ơc b c quanh b ng { } và o n code trong ó ch kích ho t khi mà các i u ki n c a for loop ư c th a mãn. Dòng th 5 là l nh trace(), l nh này ch vi t thông tin ra output window trong lúc b n làm vi c v i Flash, user s không th y ư c. K t i p là i u ki n, if là t khoá trong Flash, và nó s ki m tra k t qu c a phép so sánh myVariable + 3 ==5. N u mà k t qu là úng thì nó s kích ho t l nh trace trong, và s vi t ra output window giá tr c a myOtherVariable V y là b n ã th y m t o n script hoàn ch nh b ng AS r i. Ti p theo chúng ta s nói n vài ph n khác c a AS. Output window trên chúng ta có nh c t i output window, mà không nói rõ là gì. Output window là m t window trong software Flash, và ch xu t hi n khi mà b n ch y th movie. N u Flash compile movie cho b n và phát hi n ra l i thì Flash s vi t ra các output window này. Trong khi ch y th movie, thì l nh trace() m i có th vi t các thông tin ra output window. Output window r t quan tr ng trong vi t "di t b ", dùng nó chung v i trace b n có th quan sát các thông s , bi n s , các i tư ng, thu c tính i tư ng .v.v Trong lúc h c AS, b n có th vi t m t an script ng n không làm gì c nh ng ch vi t thông tin ra output window, như o n code trên.
  12. Th c hành: vi t thông tin ra output windown Cách t t nh t hi u rõ ch c năng c a output window là s d ng nó. Bây gi mình s vi t m t o n code ng n g i thôi tin ra output window nhe. 1. T o m t file m i 2. Ch n frame u tiên c a movie, m Action panel. Ch nh kích thư c cho action panel l n vi t, và nh dùng expert mode 3. Kích chu t vào ph n vi t script và vi t câu sau: trace("hello world"); 4. Ch y th movie (Control + Enter) output window? (N u output window c a b n chưa m thì hãy nh n 5. B n th y gì F2) Gi ng như action panel, output window có 1 cái pop-up menu nho nh trên góc ph i. B n có th dùng nó copy, xoá hay save n i dung c a output window hay có th tìm ki m ch , v.v. Ngoài ra, pop-up menu này có ph n cho b n ch nh ch "di t b ", b n có th ch n không c n output window in ra các l i (none), hay ch in l i (error), hay ch in c nh báo (error) và cu i cùng là in ra chi ti t các l i hay c nh báo (verbose) Bi n s c c b và toàn b trong gi th 3, chúng ta có nh c n variable (bi n s ) dùng lưu tr thông tin. Và s d ng variable trong AS r t d dàng. B n ch c n n nh giá tr cho variable. Ví d : myVariable = 7. Chúng ta t o variable có tên là myVariable và n nh 7 là giá tr cho nó. (b n có th t tên cho variable là b t c gì b n muôn) Bây gi b n có th th vi t o n code sau: ActionScript var1= 7; var2= "hello world"; trace ("var1: " + var1+ " /var2: " + var2); Khi b n ch y th movie thì output window s có hàng ch sau: var1: 7 /var2: hello world Vì s 7 và "hello world" ư c ch a trong var1 và var2 s ư c in ra. Variable có 2 lo i, local và global. Global variable (bi n s toàn b ) thì b n có th truy c p giá tr c a nó b t c nơi nào trong movie. T o global variable không ò i h i m t b n ph i làm m t cái gì c bi t c , b n có th dùng nó như cách trên, và Flash t ng bi n nó thành global variable. Flash movie dùng h th ng level, và timeline c a movie chính là root leve (g c), còn các movie clip cũng chính là m t Flash movie nh trong Flash movie l n. Các hình nh, script trong m t movie clip là 1 level th p hơn root level.
  13. Local variable (bi n s c c b ), khác v i global variable, local variable ch có tr truy c p trong cùng m t o n code, hay trong cùng m t timeline. Khi dùng local variable thì khi ra kh i t imeline hay o n code ó thì Flash s xoá local variable ra kh i b nh . Mu n t o local variable thì dùng t khoá var trư c tên c a local variable, ví d : var myLocal = "This is local"; B n ch c n dùng t khoá var 1 l n thôi, nh ng l n dùng sau ó thì ch c n dùng tên c a local variable thôi. Ví d o n code: ActionScript var myLocal = 9; myLocal = 11; trace(myLocal); Phép so sánh và các phép tính So sánh 2 giá tr trong AS r t ơn gi n, dùng các ký hi u toán h c như <, >, = Khi n nh giá tr thì dùng d u =, và cho khác bi t thì khi so sánh dùng ==. o n code sau xét coi giá tr c a a có b ng 7 không, và in k t qu ra output window. Và khi test o n code sau, b n s th y true output window ActionScript var a = 7; trace(a == 7); runtime ch Flash s không có th tìm ư c N u b n dùng l n = v i == thì s b l i l i này cho b n. B n có th dùng == so sánh 2 chu i m u t : ActionScript var myString = "Hello World."; trace(myString == "Hello World."); trace(myString == "hello world."); Khi b n test o n code trên thì b n s có ư c "true" và "false" output window, vì l n so sánh th nh t thì b ng nhau, nhưng l n th hai thì không vì ch H và h khác nhau. N u b n mu n th coi 2 giá tr có khác nhau không thì dùng ky hi u != ActionScript var a = 7; trace(a != 9); trace(a != 7); Hàm trace u tiên s cho ra "true" vì 7 khác 9, và cái th hai thì s cho ra "false"
  14. N u b n mu n th giá tr coi l n hơn hay nh hơn thì dùng > và < ActionScript var a = 7; trace(a < 8); trace(a > 6); trace(a < 1); o n code trên s cho ra "true", "true" và "false" trong output window vì "a" qu th t nh hơn 8 và l n 6, nhưng không nh hơn 1. N u b n mu n th giá tr coi l n hơn hay b ng nhau ho c là nh hơn hay b ng nhau thì dùng ký hi u >= và <= ActionScript var a = 7; trace(a <= 9); trace(a >= 5); trace(a >= 7); o n code trên s cho ra 3 k t qu "true" c . B n có th thay i giá tr c a variable v i các phép tính ơn gi n như c ng (+), tr (- ), nhân (*), chia (/). Ví d mu n thêm 4 vào giá tr c a a thì vi t a = a + 4. AS cũng có cách vi t t t như Java, C++ cho vì d này, a += 4 N u b n mu n thêm 1 vào a thì b n có th vi t như 2 cách trên a = a +1 và a += 1 và còn cách th 3 a++ . D u ++ ch làm tăng thêm 1 cho giá tr ó thôi. Có 2 cách dùng ++, 1 là sau variable như cách trên, và 1 cách thì trư c variable. Bây gi thư o n code sau: ActionScript var a = 7; trace(a++); trace(a); output window b n s th y 7 r i m i t i 8. dòng th 2, hàm trace s cho ra giá tr c a a trư c r i m i tăng giá tr c a a lên thêm 1. Bây gi xem ví d khác: ActionScript var a = 7; trace(++a); trace(a); output window b n s th y 8 và 8. dòng th 2 c a ví d này, hàm trace s tăng giá tr c a a trư c r i m i cho ra giá tr c a a. Tương t như ++, AS cũng có cách vi t t t cho giãm giá tr c a variable là d u -, -=, =- và --. Phép tính nhân và chia thì ch có *, *=, /, /= thôi. i u ki n Trong AS và các ngôn ng khác, if ... else chính là các t khoá c a i u ki n. Ti ng
  15. vi t có nghĩa là "n u ... n u không". T khoá if dùng k t qu c a s so sánh nào ó i t i quy t nh kích ho t m t o n code. o n code sau s so sánh giá tr c a variable a v i 7, n u úng thì Flash s chơi frame 10 ActionScript if (a == 7) { gotoAndPlay(10); } T khoá if luôn b t u cho 1 i u ki n và ti p theo s là s so sánh. Luôn t code so sánh gi a ngo c ơn (). T t c các code ư c kích ho t n u i u ki n ư c tho mãn s trong âu ngo c móc {}. T khoá else b sung cho if trong trư ng h p b n mu n th c hi n m t o n code n u i u ki n c a if không ư c th a mãn. Ví d : ActionScript if (a == 7) { gotoAndPlay(10); } else { gotoAndPlay(15); } N u trư ng h p c n th a mãn nhi u i u ki n thì có th dùng cú pháp if .... else if ... else. B n có th có bao nhi u cái else if cũng ư c. Nãy gi ta chi nói t i i u ki n d a trên 1 s so sánh, nh ng AS cũng cho phép dùng so sánh a h p (compound comparision). Trong i u ki n c a Flash ta có th dùng i t i m t k t qu chính xác hơn. Ví d n u như a l n 10 và a ph i nhi u so sánh nh hơn 15 thì ra l nh cho Flash chơi frame 10. ActionScript if ((a > 10) and (a < 15)) { gotoAndPlay(10); } T khoá and (còn có th ư c vi t là &&) yêu c u ph i tho mãn i u ki n c a 2 phép so sánh. B n cũng có th dùng t khoá or (còn có th ư c vi t là ||)n u như ch c n tho mãn 1 i u ki n trong 2 phép so sánh thôi. ActionScript if ((a > 10) or (a < 15)) { gotoAndPlay(10); } Vòng l p Cú pháp c a vòng l p (loop) thì hơi r c r i hơn so v i cú pháp c a i u kiên if. nhưng
  16. nó tương t như C, C++, Java. G m có 3 lo i vòng l p chính là for loop, while loop và do-while loop for loop ư c coi là vòng l p chính v i t khoá for và cú pháp c a nó nhìn như sau: ActionScript for(var i=0;i<10;i++) { trace(i); } N u b n cho ch y o n code trên thì b n s có ư c t s 0 t i 9 output window. for loop tăng giá tr c a variable i trong su t quá trình th c hi n loop. i u ki n c a for loop có 3 ph n chính, và ư c cách bi t b i d u ch m ph y ( . u tiên là i u ki n b t u v i vi c t o local variable cho for loop var i=0. ph n này for loop ch th c hi n có 1 l n duy nh t lúc b t âu. Ph n th hai là i u ki n chính c a for loop i<10, s ư c th c hi n m i vòng l p. N u i u ki n này tho mãn thì m i t i p t c vòng l p. Và ph n cu i cùng là phép tính cho s ti p n i c a for loop m i vòng l p, ây là i++ nên giá tr c a i s ư c tăng sau m i vòng l p trư c khi vòng l p m i b t u. 3 ph n này u ư c b vào trong ngo c ơn (). Còn nh ng code th c hi n trong m i vòng l p thì trong ngo c móc {}. Bây gi chúng ta gi làm computer và ch y cái for loop này. 1. T o local variable và n nh giá tr cho nó b ng 0 2. Ki m tra giá tr c a i có nh hơn 10 không, n u nh hơn 10 thì vòng l p th c hi n các code trong {}, còn không thì t i bư c th 5 3. hàm trace vi t giá tr c a i output window 4. c ng 1 vào giá tr c a i, và tr v bư c th 1 5. ra kh i for loop T i bư c th 5 thì giá tr c a i s b ng 10 while loop v i t khoá while có cú pháp nhìn tương t như sau: ActionScript while (a > 0) { // code th c hi n trong while loop } ơn gi n hơn for loop, while loop tương t như i u ki n if ơn gi n, th c hi n các code trong vòng l p n u i u ki n c a while loop ư c thoã mãn, vì v y b n d dàng r i vào trư ng h p vòng l p vô h n, và d n n t ình tr ng treo máy. Trong o n code trên, b n ph i làm th nào cho co 1 lúc a s nh hay b ng 0 cho vòng l p ng ng l i. Gi ng như while loop, do-while loop có cú pháp nhìn như sau: ActionScript
  17. do { // code th c hi n trong do-while loop } while (a > 0); Ch khác v i while loop là do-while loop th c hi n code trong vòng l p trư c r i m i ki m tra i u ki n. (while loop ki m tra i u ki n r i m i ch y code trong vòng l p) Mu n phá ra kh i quá trình t hành c a 3 lo i loop trên thì dùng l nh break và continue. L nh break s phá ra kh i loop hoàn toàn trong khi l nh continue thì ch phá ra kh i vòng l p hi n t i và b t u vòng l p m i. T o ra m t ví d c th r t ph c t p, nên chúng ta t m khoan bàn t i 2 l nh này cho t i các bài sau. Hàm Cho t i bây gi các script c a chúng ta u ư c vi t vào frame u tiên c a moive, cách này ch t t cho nhưng chương trình ơn gi n, nhưng n u mà chương trình tr nên ph c t p thì ây không ph i là cách. Hàm (function) s cho phép chúng ta c u t o và qu n lý code d dàng hơn trong các chương trình ph c t p. Dư i ây là m t function ơn gi n: ActionScript function myFunction(num) { var newNum = num + 3; return newNum; } Fuction b t u b ng t khoá function, tên c a function có th là b t c ch gì như cách b n t tên cho variable, nhưng lưu ý cách t tên cho fuction làm sao ngư i ta c tên có th bi t ư c ch c năng c a function. Theo sau tên c a function s là thông s (parameter, cho ng n mình s g i thông s là param trong các bài vi t này) ư c trong ngo c ơn (). Function có th co 1 hay nhi u param hay không c n param cũng ư c. Param ch ng qua ch la variable ư c dùng trong function, nhưng variable này ư c truy n t ngoài vào khi function ư c g i. o n code ư c function th c hi n s n m gi a ngo c móc {}. Bây gi chúng ta phân tích o n code trên. Khi function myFunction ư c g i, thì param num ư c truy n vào, sau ó function myFunction t o ra m t local variable tên là newNum, và n nh giá tr c a newNum b ng giá tr c a param num c ng v i 3. Sau ó myFunction dùng l nh return n nh giá tr c a newNum là k t qu c a myFunction. L nh return là l nh c bi t ch ư c dùng trong function mà thôi. L nh này s k t thúc function. s dùng function này, dùng nó như m t l nh hay hàm c a AS, gi ng như là trace() v y ó. ây là ví d : var a= myFunction(7);. Trư c tiên t o m t local var r i sau n nh giá tr c a local var này b ng k t qu c a myFunction v i param là 7, và cu i cùng thi local var này s b ng 10. M t trong ưu i m c a function là b n có th tái s d ng. Dư i ây là hàng code dùng chung 1 fuction và cho 3 k t qu khác nhau ActionScript
  18. trace(myFunction(7)); trace(myFunction(13)); trace(myFunction(2)); Khi ch y o n code này thì output windown s là 10, 16 và 5. Ví có th tái s d ng nên chúng ta ch c n thay i code trong myFunction thì t t c các k t q a có ư c t g i function này cũng thay i theo luôn. Dot Syntax M t i u b n s th y r t nhi u trong quá trình h c AS là dot syntax (h ng bi t d ch sao bây gi ) Dot syntax là phương pháp ư c dùng trong l p trình theo hư ng i tư ng (oob: object oriented programming). ây là m t ví d c a dot syntax. N u b n mu n l y căn bình phương c a m t s , và i tư ng trong Flash ã có s n function làm chuy n này r i, và hàm này thu c v toán, tên là Math. V y mu n g i function này thì trư c tiên b n ph i g i tên i tư ng mà fucntion này tr c thu c, ó là Math, theo sau ó là d u ch m (dot), và r i t i tên c a function ó là sqrt. Cách vi t như sau: ActionScript var a = Math.sqrt(4); M t cách dùng dot syntax khác là truy c p c tính hay variable c a m t i tư ng, như là movie clip. ActionScript var a = myClip._x; var a = myClip.myVariable; c p n i tư ng Math và MovieClip trong các bài t i, còn bây gi Chúng ta s thì quan tr ng là b n n m ư c khái ni m v dot syntax. Chú gi i M t trong c tính c n có c a l p trình viên là vi t code làm sao cho d c và d hi u. Nhưng nhi u khi dù khi vi t có c g ng cách m y thì nh ng o n code ó v n khó hi u cho ngư i xem, vì v y m i c n nh ng l i chú gi i. Mu n chú gi i trong AS thì ch c n dùng ký hi u// trư c câu chú gi i ó. N u chú gi i nhi u hơn vài dòng thì có th dùng ki u sau/* ..... chú gi i ....*/. ActionScript /* chú gi i: c ng 2 cho a c ng 2 cho b */ a += 2; // add 2 a
  19. // add 2 to b b += 2; Debugging Thư ng thì th i gian di t b t n g n 1/3 th i gian phát tri n chương trình. N u b n n m v ng ư c "nghê thu t" di t b thì b n s rút ng n ư c r t nhi u th i gian. Có 3 cách di t b h u hi n là: phân tích, vi t message ra output window và dùng AS debugger. V i các lo i b ơn gi n thì phân tích các o n code s giúp b n b t trúng con b c n di t. Dùng output window theo dõi các i tư ng, vòng l p, i u ki n, và nh vào ó b n có th bi t ư c ch nào trong code có v n , cu i cùng là dùng AS debugger có s n trong Flash. Debugger window cho phép b n có th coi h t t t c moi thành ph n trong movie c a b n, cho phép b n dùng AS b t ch khi nào và ch nào b n mu n. Tham kh o thêm ph n tr giúp c a Flash bi t cách dùng debugger. Gi th 05: i u khi n lu ng movie, Control the flow of the movie S d ng AScript là cách i u khi n movie ơn g n nh t, nhung l i hi u qu nh t. Chương này b n s h c cách : • làm sao d ng Movie trên frame • Sao nh y t frame này n frame kia • t o nút cho phép i u khi n movie t o m t slide show ơn gi n • • t o m t bi u d i n y . . D ng movie ây là câu l nh stop: ActionScript stop(); Khi b n dùng câu l nh này , movie ch t m d ng frame mà b n t câu l nh. Các animation bên trong movieClip và các file h a v n ti p t c ch y trên frame ó. Nhưng animation c a time line s b d ng. cho animation c a t imeline ti p t c ch y, ta s d ng m t lênh ơn gi n ó là l nh play.. ta s bàn n nó sau. Ví d T i frame 1, b n hãy th m t text box và vi t vào ó Ch A T i frame 2, b n hãy th m t text box và vi t vào ó Ch B T i frame 3, b n hãy th m t text box và vi t vào ó Ch C Bây gi b n hay t câu l nh stop(); vào Frame 2, b n se th y ch A xu t hi n r t
  20. nhanh r i n ch B, nhưng ch C s ko th y xu t hi n,, ơn gi n vì câu l nh stop() ã d ng animation c a timeline t i Frame 2. Nh y t frame này n frame kia M t câu l nh cơ b n c a AS là câu l nh gotoAndPlay. Câu l nh này giúp b n có th nh y t frame này n frame mà b n mu n. B n có th sư d ng s th t c a frame hay là tên c a frame ActionScript gotoAndPlay(7); gotoAndPlay(20); gotoAndPlay("my frame label") b n có th s d ng nhi u movies , hay còn g i là c nh(scene) . N u Câu l nh gotoAndPlay ch có m t tham s , thì tham s ó là frame. Nhưng n u có 2 tham s ,thì tham s u ti n là tên c a scene, còn tham ss th 2 là s th t c a frame hay tên frame. ActionScript gotoAndPlay("My Scene","My Frame"); Khi b n dùng gotoandPlay,movies s nh y n frame mà b n g i , và ti p t c ch y, nhưng n u b n mu n nó nh y n frame và d ng l i, b n co th s d ng gotoAndStop . Câu l nh này dùng y h t như gotoAndPlay, v i l a ch n 1 tham s hay 2 tham s . Ngoài ra có thêm 2 câu l nh cũng h at ng gi ng gotoAndStop , ó là nextFrame and prevFrame hi u rõ hơn v các câu l nh này, ta s i t i p ph n sau... T o nút (button) Nút là m t trong 3 bi u tư ng (symbol) chính trong Flash, 2 cái kia là movie cilps và hình T o m t button Có nhi u cách t o nút. M t trong nhưng cách ó là ch n Insert, New Symbol t Menu. M t h p tho i s hi n lên và h i b n t tên và l a ch n bi u tư ng c a b n là lo i Movie clip, button, hay h a. B n hãy ch n Button. Bây gi trong c a s chính c a Flash s thay i, timeline c a button s thay th timeline c a movie chính. Có 4 frames trong timeLine c a button. Chúng có tên là Up, Over, Down, HIt. CHúng th hi n 3 tr ng thái c a button, và vùng h at ng c a button.
Theo dõi chúng tôi
Đồng bộ tài khoản