Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

24 gio hoc flash

704 views

Published on

test choi

Published in: Education, Technology, Sports
  • Be the first to comment

  • Be the first to like this

24 gio hoc flash

  1. 1. Gi th 01: Làm quen v i AS, Your First Look at ASAS 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 ngkhác như Javascript, C++ v.v. nhưng b n không c n bi t các ngôn ng khác h cAS (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 icá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ư thnà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 tnhư 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 úngnh ng gì mình vi t (ch có mình vi t sai ch computer không làm sai ). Ph n nhi uthì 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 nhcho 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 ư cvi 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 ASAS 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 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ênECMAScript.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 nnhư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 iFlash 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 trongmovie. . Sang t i Flash MX thì AS ã tr thành ngôn ng l p trình toàn di n v i hơn300 câu l nh, hàm .v.vNh n biêt ASAS ơ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ôngd 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 ngcomputer hay ti ng vi t cho l m) và các phép tính và d u câu. Ví d sau:ActionScripton (press) { gotoAndPlay ("my frame");}
  2. 2. 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ư ngh 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 nbi u???) và timeline s có các frame (khung) b t u t s 1. Thông thư ng thì Flashs 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 hayl pl it u tuy theo ngư i làm Flash.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ùngb 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ìnhc 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 • Navigation (hông bi t d chlàm sao cho hay ): thay vì movie ch chơi t ng 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 V iAS 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 iAS ư 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 ó
  3. 3. 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 âuCâ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 ã cqua 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 tiêp t c ây. Ơ trong m c Flash T ng Quá, VNFX có post link download 3 cái CD hư ngd n cơ b n cho ngư i chưa bao gi dùng Flash.Vi t AS time lineAS 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 Action Panel ra (có th nh n F9) viêt hayxem AS ã ư c vi t ó. Mình khuyên b n nên dùng Action Panel dư i d ngExpert 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à Flashchơi t i key frame ó. Ví d như l nh AS stop() ư c t key frame 5 thì Flashchơ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 tvào time lineM 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útCá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), movieclips( 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 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 ó mAction 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ôiVi t AS MCMC 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 t như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 timelinehay các timeline ngoài movieBài t p
  4. 4. 1. T o m t movie m i2. t o 3 key frames3. Dung Flash v m i hình khác nhau cho m i frame4. Ch y th movie (nh n Control + enter)5. Sau ó tr l i timeline, vi t vào keyframe 2 o n mã : "stop();"6. Cho ch y th movie l n n a7. 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ôngtrong vi c vi t AS : Gi th 02: S d ng Action panel, Using the Script Editing WindowN u dân ho coi Timeline là nhà thì dân l p trình v i AS coi Action Panel là nơicư 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 quantr ng là b n có th s d ng quen thu c Action PanelFlash MX s d ng các panel giúp b n có th l y các thông tin v movie b n anglà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 nmu 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ũngcó 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ácpanel ch gi l i 2 cái chính trên màn hình, mình kéo cái action panel và propertypanel qua m t bên monitor, còn cái bên kia cho cái stage, n u c n m panel nàothì 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). Khim i ch y máy l n u thì Action panel ư c set dư i d ng bình thư ng. d ng bìnhthư 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 menubê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 tAS 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ôngbao 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 sh c ư c mau và nh lâu hơnS d ng Action panel v i expert mode thì b n có nhi u t do hơn, nhưng t do ngnghĩ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 nsang 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ímt t). B n có th i t Normal mode sang expert mode b t c lúc nào, nhưng ingư 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 actionpanel) và trong ó có nhi u l nh r t t t cho b n khi b n dùng Action panel, nh t là iv 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 ab 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 ti p t c tìm ch , câu b n mu n tìm.
  5. 5. 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 "CheckSyntax" 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 theolà "Auto Format" và "Auto Format Options" giúp cho b n trình bày script c a b n chod 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 nd c code hơn b ng cách vào Edit > Preferences > ActionScript Editor. Các ph ncò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 filevà 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ư iexpert 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 ActionPanel. 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âul 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 Actionpanel ư 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 expertmode1. T o m t movie m i2. Ch n key frame u tiên (frame s 1) c a layer 1 (mình không d ch ch layer = l pvì 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 panel4. Chuy n sang expert mode (dùng phím t t hày vào trong pop-up menu c a Actionpanel i)5. Vào ch vi t AS6. Vi t o n code sau:ActionScripttrace ("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
  6. 6. Gi th 03: H c cách l p trình, Learning to programL 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 uki 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 chcó 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 nThư 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 sbàn v nh ng khái ni m l p trình và làm sao áp d ng nó trong FlashCách suy nghĩ c a computerTh 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 nhm 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 nhsai 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àmnh 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 nhAS 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 acomputer, 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êntuy 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ínhL 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 tgotoAndPlay(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ácphép tính và cho ra (return) m t k t qu . Ví d hàm random() s cho ra m t con sng u nhiên nào ó, hay hàm sqrt() s cho ra giá tr bình phương c a 1 s mà hàmnh 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 sdùng t parameter thay vì thông s ), và nh ng thông s ó giúp cho hàm và l nh ư cc th hơn. Ví d gotoAndPlay(5) thì 5 là thông s , n u như không có thông s nàythì 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
  7. 7. Bi n sBi 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 vm 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 nch 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 thihà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 ral nh cho Flash ngưng ngay sau khi thi hành xong l nh l n th 10. Nhưng cũng có lúcb 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 igian 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 1ch 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 tc 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ùngtrong bi n s thì b n nên t tên bi n s ó là userName (mình nghĩ t tên ti ng Anhd 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ư ngMovieClip)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ênquy ư 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.Có nhi u lo i bi n s lưu tr nhi u lo i thông tin, và ngay m i lo i thông tin cũngcó 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 chochu 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 tc các chu i sau ây u h p l : "ablsdfjksl", "a", " ", "". Khi vi t m t chu i thì c ndù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 trongFlash 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 ns . Nhưng v i ActionScript 1 (trong FlashMX) thì b n không c n làm vi c này. Ví dbi n s userName lúc u ch a 1 chu i, nhưng sau ó l i ch a 1 s nguyên thì cũngv 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àonh ng bài sau. i u ki nTrong 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ì chothí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.
  8. 8. 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 trongFlash 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 thomã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á trch 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í dnhư 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 13thì chơi o n phim B, và nh ng ai dư i 13 thì chơi o n phim C.Vòng l pCon ngư i làm ra computer vì lư i không mu n làm nhi u, mà bán cái chocomputer. 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òngl 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 nmu 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 t0, 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 ngl i. Sau ây minh ho c a vòng l p này:1. M t s l nh tr ơc vòng l p2. B t u vòng l p, set bi n s counter = 03. Làm m t s l nh trong vòng l p4. Tăng bi n s counter +=15. N u bi n s counter nh hơn 9, tr l i bư c th 36. 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 ptrì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 nhtrong 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ácl 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 ti pLàm nh ng i u không tư ngL 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 ntrong 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ànhm 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 nnà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 nph 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
  9. 9. ơ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 muagà 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 nhb 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 chthì 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 nmua gà ơn gi n v y mà có th t n c ngày tr i lên chương trìnhVi 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ó thlàm úng theo như ý b n trong m i tình hu ng. Các chương trình có bug không ph ivì 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ànhnhi u v n nh cho t i khi không còn nh hơn n a, và sau ó xây d ng chươngtrì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 nhB (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 icú 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ôitrư 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ântí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 scriptc 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 docon ngư i làm ra mà không có bug c . Vì v y b n ng c g ng viêt code sao chotuy 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 tkho mà bi t bug âu di t. Flash có kèm theo vài công c giúp b n debug d dànghơ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 FlashKhi 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ênchú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.ActionScripton (press) { var myVariable = 7; var myOtherVariable = "Macromedia";
  10. 10. 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àonú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 chod 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àotrong 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á trb ng 7 cho nó. tương t hàng k ti p l p ra var tên là myOtherVariable và cho giá trc 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áclo 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 nb 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 tnhư 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úcb n làm vi c v i Flash, user s không th y ư c. K ti 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 myOtherVariableV 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 uFlash compile movie cho b n và phát hi n ra l i thì Flash s vi t ra các outputwindow này. Trong khi ch y th movie, thì l nh trace() m i có th vi t các thông tinra output window. Output window r t quan tr ng trong vi t "di t b ", dùng nó chungv 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 itư ng .v.vTrong 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 chvi t thông tin ra output window, như o n code trên.
  11. 11. Th c hành: vi t thông tin ra output windownCá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 svi t m t o n code ng n g i thôi tin ra output window nhe.1. T o m t file m i2. Ch n frame u tiên c a movie, m Action panel. Ch nh kích thư c cho actionpanel l n vi t, và nh dùng expert mode3. 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)5. B n th y gì output window? (N u output window c a b n chưa m thì hãy nh nF2)Gi ng như action panel, output window có 1 cái pop-up menu nho nh trên gócph 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 tb ", 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á trcho 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:ActionScriptvar1= 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: helloworld 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ó thtruy c p giá tr c a nó b t c nơi nào trong movie. T o global variable không òih 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 tFlash movie nh trong Flash movie l n. Các hình nh, script trong m t movie cliplà 1 level th p hơn root level.
  12. 12. Local variable (bi n s c c b ), khác v i global variable, local variable ch có trtruy c p trong cùng m t o n code, hay trong cùng m t timeline. Khi dùng localvariable thì khi ra kh i timeline hay o n code ó thì Flash s xoá local variable rakh i b nh . Mu n t o local variable thì dùng t khoá var trư c tên c a localvariable, ví d : var myLocal = "This is local"; B n ch c n dùng t khoá var 1 l nthô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 ncode:ActionScriptvar myLocal = 9;myLocal = 11;trace(myLocal);Phép so sánh và các phép tínhSo 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 ncode sau xét coi giá tr c a a có b ng 7 không, và in k t qu ra output window. Và khitest o n code sau, b n s th y true output windowActionScriptvar a = 7;trace(a == 7);N u b n dùng l n = v i == thì s b l i runtime ch Flash s không có th tìm ư cl i này cho b n.B n có th dùng == so sánh 2 chu i m u t :ActionScriptvar 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ácnhau.N u b n mu n th coi 2 giá tr có khác nhau không thì dùng ky hi u !=ActionScriptvar 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"
  13. 13. N u b n mu n th giá tr coi l n hơn hay nh hơn thì dùng > và <ActionScriptvar 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 tnh 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 nhauthì dùng ký hi u >= và <=ActionScriptvar 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 ncó 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àmtă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:ActionScriptvar 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á trc 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:ActionScriptvar 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ănggiá 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 tt 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 nTrong 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
  14. 14. 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 avariable a v i 7, n u úng thì Flash s chơi frame 10ActionScriptif (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 sosánh gi a ngo c ơn (). T t c các code ư c kích ho t n u i u ki n ư c thomã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 :ActionScriptif (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ùngso sánh a h p (compound comparision). Trong i u ki n c a Flash ta có th dùngnhi u so sánh 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 inh hơn 15 thì ra l nh cho Flash chơi frame 10.ActionScriptif ((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 2phé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ư chc n tho mãn 1 i u ki n trong 2 phép so sánh thôi.ActionScriptif ((a > 10) or (a < 15)) { gotoAndPlay(10);}Vòng l pCú 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
  15. 15. nó tương t như C, C++, Java. G m có 3 lo i vòng l p chính là for loop, while loopvà do-while loopfor 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:ActionScriptfor(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 afor 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 uki n b t u v i vi c t o local variable cho for loop var i=0. ph n này for loop chth 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 loopi<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 ti p t cvò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 ib t u. 3 ph n này u ư c b vào trong ngo c ơn (). Còn nh ng code th c hi ntrong 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 loopT i bư c th 5 thì giá tr c a i s b ng 10while loop v i t khoá while có cú pháp nhìn tương t như sau:ActionScriptwhile (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áccode 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àngr 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 codetrê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 ngl i.Gi ng như while loop, do-while loop có cú pháp nhìn như sau:ActionScript
  16. 16. 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 iki 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ì chphá 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 tph 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àmCho 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 trnê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 ovà 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 tfunction ơn gi n:ActionScriptfunction 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ư ita 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 1hay 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 gichú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 amyFunction. 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 icù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 codedùng chung 1 fuction và cho 3 k t qu khác nhauActionScript
  17. 17. 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 ngnên chúng ta ch c n thay i code trong myFunction thì t t c các k t q a có ư ct g i function này cũng thay i theo luôn.Dot SyntaxM 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 chsao bây gi ) Dot syntax là phương pháp ư c dùng trong l p trình theo hư ng itư 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àtrong Flash ã có s n function làm chuy n này r i, và hàm này thu c v i tư ngtoá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ư ngmà fucntion này tr c thu c, ó là Math, theo sau ó là d u ch m (dot), và r i t i tênc a function ó là sqrt. Cách vi t như sau:ActionScriptvar 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 itư ng, như là movie clip.ActionScriptvar a = myClip._x;var a = myClip.myVariable;Chúng ta s c p n i tư ng Math và MovieClip trong các bài t i, còn bây githì quan tr ng là b n n m ư c khái ni m v dot syntax.Chú gi iM 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à dhi 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 nkhó 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 ASthì 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
  18. 18. // add 2 to bb += 2;DebuggingThư 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 nn 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ó 3cách di t b h u hi n là: phân tích, vi t message ra output window và dùng ASdebugger.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 ndi 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 debuggercó s n trong Flash. Debugger window cho phép b n có th coi h t t t c moi thànhph 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 nmu 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 movieS 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 di n y ..D ng movie ây là câu l nh stop:ActionScriptstop();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ácanimation 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 timeline ti p t c ch y, ta s d ng m t lênh ơn gi n ó là l nhplay.. ta s bàn n nó sau.Ví dT i frame 1, b n hãy th m t text box và vi t vào ó Ch AT i frame 2, b n hãy th m t text box và vi t vào ó Ch BT i frame 3, b n hãy th m t text box và vi t vào ó Ch CBâ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
  19. 19. 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 kiaM 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ó thnh y t frame này n frame mà b n mu n. B n có th sư d ng s th t c a framehay là tên c a frameActionScriptgotoAndPlay(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 nhgotoAndPlay 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ênframe.ActionScriptgotoAndPlay("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à nextFrameand prevFrame hi u rõ hơn v các câu l nh này, ta s i ti 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ìnhT o m t buttonCó nhi u cách t o nút. M t trong nhưng cách ó là ch n Insert, New Symbol tMenu. 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 thtimeline 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 abutton.
  20. 20. N ub n tm t h a, ch ng h n là m t vòng tròn, trong frame u tiên(UP) và kocó gì trong 3 frame sau, tr ng thái Over và Down c a button s gi ng như tr ng tháic a Up. VÙng ho t ng c a button cũng tương t như v y.M t khác , b n có th t o các hi u ng khác nhau cho button c a b n. VÍ d n u b n i m u c a vòng tròn là màu xanh Frame OVER,có nghĩa là khi b n ưa chu t quabutton, button s chuy n sang màu xanh.Khi b n t o xong 1 button, b n tr lai movie timeline chính. Và button c a b n ã s nsàng trong thư vi n c a FLash. B n ch viêc b m F11, tìm button c a b n và kéo thnó vào nơi nào b n c n trên c a s thi t k .T o script cho button t script cho button, u tiên hãy ch m m t button. Sau ó vào c a s Actionb ng cách b m chu t ph i lên button và ch n Action t menu xu t hi n.Hãy Ch c ch n r ng c a s Action ã ư c t ch Expert. B n có th ki m trabăng m t popup menu góc trên cùng bên ph i c a c a s . ây là m t o n mã thông thư ng cho button. B n có th t nó trong c a s mã vàsau ó ki m tra movie xem nó h at ng th nào.ActionScripton (release) { trace("You clicked the button!")}on : là m t keyword, ư c g i ra x lí m t s ki nRelease : Là m t s ki n, khi ngư i s d ng click vào button và nh chu t ra. o nmã trace s ư c th c thi.Ngoài ra Release có th thay th b ng s ki n PRESS, s ki n này ch khác Releasech khi ngư i s d ng b m vào button, o n mã trace s ươc th c thi mà ko c n ph ith chu t ra.Trace : là in ra màn hình dòng ch YOU CLICKED THE BUTTON.Th c Hành: T o m t Slide Show ơn gi n...Có l ko ph i di n t nhi u v Slide Show, các b n hãy tư ng tư ng giông PowerPoint.. Khi chúng ta b m chu t, các slide s chuy n sang slide khác.1. M Flash, ch n New2. Trong Layer 1, t Frame 1 n Frame 4, b n hãy ăt các bi u tư ng hay hình nh,text khác nhau phân bi t ư c các frame3. Sau ó b n t o m t layer m i, hãy t m t button lên layer này.Ti p theo b n ch n
  21. 21. Frame 4 c a layer 2, và b m F6. i u này m b o cho button c a b n s xu t hi ntrong t t c các Frame c a Layer 1.Bây gi copy o n mã sau vào button c a b n, chú ý nh là copy vào action c abutton, ch ko ph i vào b t kì frame nàoActionScripton (release) { nextFrame();}Cu i cùng ch n Frame 1 Layer 1 action và chèn o n code sauActionScriptstop();Hãy ch y th slide show c a b n = cách b m Ctrl Enter.5) Xây d ng m t presentation ơn gi n:Presentation này s d ng nguyên t c giông h t như ví d Slide show trên, các b nhay down load file FLA xem .. easy Gi th 06: i u khi n movie clip, Controlling Movie Clips6th Hour i u khi n movie clipB ns h c1- ra l nh cho movie clip2-T o playback cho animation3-TÌm hi u ích(target) c a movie clip4-T p vi t code cho movie clip5-T o movie clip có th ch y lùi l i.1) Ra l nh cho movie clip :M t movie chính có th r t ơn gi n. NÓ ch c n 1 frame và m t movie clip. Nhưngb n thân movie clip l i có th là m t animation dài. Vi c này d dàng th c hi n mà koc n Actioncript. i u khi n ư c movie, b n ph i t tên cho movie clip. Chú ý r ng m t moviesclip có 2 tên, m t tên s d ng cho timeline . M t tên s d ng cho actioncript. 2 tênnày có th t trùng tên nhau ho c khác tên nhau.Làm sao t tên cho movie clip :Ch n insert -----> New Symbol (ho c b m Ctrl F8), t tên cho movies clip(nh l a ch n option movies clip, ch ko ph i là button hay graphic)Tên này ư c s d ng cho timeline. vd: gear animationTh movie gear animation vào c a s thi t k .. PHía dư i c a s properties, ban s
  22. 22. th y box instance name.. t tên cho movietên này ư c s d ng cho Action script , vd : gearsvà như v y, khi b n l p trình , tên s d ng là gears , ch ko ph i gear animation.b n có th s d ng d u ch m ưa ra các lênh cho movie c a b n. ví dActionScriptgears.stop();gears.gotoAndStop(5);Nh r ng movie clip luôn có level. N u o n mã ư c t trên chính movieclip, b nko c n s d ng tên movies, ch c n gotoAndStop();. N u b n t c tên movie vào,Flash s tìm movie c a b n t timeline chính.. T c là s ph i qua 2 level. ---> ch mhơn chút.2)Animation Playback ControllerHãy down load source code t trên ph n download và xem. V cơ b n, chúng ta làmcác vi c sau:- T o m t Movie , t tên là gear animation- t instance name là gear(hư ng d n trên)- Frame u tiên c a time line chính, chèn codeActionScriptgears.stop();-T o các button Advance, Previous, Play, Stop, and Rewind-Code cho các button l n lư t làAdvanceActionScripton (release) { gears.nextFrame();}PreviousActionScripton (release) { gears.prevFrame();}PlayActionScripton (release) { gears.play();}StopActionScripton (release) {
  23. 23. gears.stop();}RewindActionScripton (release) { gears.gotoAndStop (1);}3) Target m t movieLevel cơ b n u tiên c a Flash là time line chính(Level 0). N u b n mu n ra l nhcho time line này, b n dùng code sau_root.gotoAndStop();th m chí n u b n t code time line chính, b n ko c n _root. Ch c ngotoAndStop();Gi s n u b n có m t movie trên time line, t c là b n có m t level sâu hơn(level 1).N u b n t time line chính, mu n goi movie gears , b n ph i dùng câu l nhgears.gotoAndStop(7);_root["gears"].gotoAndStop(7);this["gears"].gotoAndStop(7);C 3 cách trên u gi ng nhau.. Tuy nhiên this có nghĩa là level hi n hành. VÍ d trên,level hi n hành c a this là level 0. Nhưng n u code t trong movie, level hi n hànhs là level 1. B n ph i chú ý.Gi s b n có m t movie khác bên trong movie, t c là b n có level 2. N u b n mu nt level 1 g i n level 2, b n ph i dùng _parent.Parent dùng gi ng như root, nhưng khác ch , nó ư c g i t level trên. Còn root ư c g i t level 0 (t c là level g c).Thu n l i t vi c s d ng root, this là b n có th gán bi n cho movie clipsActionScriptvar whichClipToUse = "gears";this[whichClipToUse].stop();Thu n l i c a v c s d ng this nhi u hơn root ch , ko ph i lúc nào m i th cũngx y ra time line chính, ôi khi ta ch mu n nó x y ra m t level nh t nh. B i v ythis là cách t t nh t goi level c a m t movie. Tuy nhiên trong nh ng trương h p ơn gi n, hay nh t là c t tên cho movies.4) Mã cho movie clip
  24. 24. Chúng ta ã bàn v button trên, v y v cơ b n movie clip script cũng gi ng button, ó làActionScriptonClipEvent (load) { trace("This clip has been loaded.");}onClipEvent : key word g i s ki n (gi ng on c a button)load : s ki n này x y ra khi movie clip xu t hi n l n u tiên trên màn hình . NÓ chx y ra m t l n.Nh r ng ngay c khi time line chính b ng, movie clip n m trên time line v n ti pt c ch y. S kiên enterFrame x y ra liên t c bên trong movie clip m i khi n m tframe m i. S ki n này s th c thi o n mã m t cách liên t c cho n khi nó b k tthúc.ActionScriptonClipEvent (enterFrame) { trace("This clip has entered a new frame.");}bây gi hãy copy 2 o n code trên vào c a s action c a timeline chính và run .. b ns th yActionScriptThis clip has been loaded This clip has entered a new frame This clip has entered a new frame This clip has entered a new frame This clip has entered a new framedòng ch s ti p t c hi n ra cho n khi b n t t movie. Gi th 07: d ch chuy n và thay i movie, Moving and Changing Movie ClipsM t movie clip (MC) bao gi cũng có các thu c tính, cho phép b n xác nh v trí,phóng to thu nh , quay, th m chí làm nó bi n m t.Chương này các b n s bi t cách:-thay i v trí c a mc-xác inh v trí chu t-làm sao quay m t mc-làm sao phóng to mc-làm sao movie invisible
  25. 25. 1) V trí c a MC:M i th trong Flash u có v trí. V trí này ư c o b ng PIXEL. Góc trên cùng bêntrái c a màn hình là v trí (0,0) .Nó là v trí giao c a hàng ngang và c t d c.N u b n s d ng m t movie m c nh, thì góc dư i bên ph i s là 550,400. Có nghialà 550 pixel t bên trái sang và 400 pixel t bên trên xu ng.nhìn hình sau rõ hơn.2) V trí c a Mouse:Cũng như movie, mouse cũng có th xác inh ư c t a .. CHú ý thu t ng mouse ây là nói n con tr (cursor), ch không ph i con chu t b n ang c m trên tay.. ^^
  26. 26. Có hai thu c tính cơ b n c a con tr , ó là _xmouse và _ymouse.V y _xmouse và _ymouse là thu c tính c a chính i tư ng mà chúng ư c gán. N ub n s d ng trên time line chính, thì chúng là thu c tính c a time line. N u b n sd ng chúng trên movie clip, thì nó là thu c tính c a movie clip. N u xmous y mouselà thu c tính c a time line chính, nó s m c nh là góc trái trên cùng. N u xmouseymouse là thu cc tính c a 1 movie clip, nó s m c nh trung tâm c a MC.H u h t các trư ng h p thu c tính liên quan n movie chính, b n nên dùng cách_root._xmouse và _root._ymouse ây là m t o n code ví duCODEonClipEvent (enterFrame) { trace(_root._xmouse); trace(_root._ymouse); trace("");}Khi b n ch y movie, b n s th y các c p s ư c in ra, ó chính là t a x,y mouse.Hãy d ch chuy n mouse lên góc trái trên, b n s th y ó v trí mouse là 0.0. ho cgóc ph i dư i, t a là 550 400.Chú ý: khi b n ưa chu t ra ngoài Flash window, t a chuôt xmouse y mousekhông thay i. N u b n di chuy n chu t th t nhanh t trung tâm c a c a s ra ngoàic a s , các giá tr cũ v n ó cho n khi b n quay tr l i c a s . VÌ v y, b n ph iluôn lên k ho c c n th n trư c khi dùng xmouse, y mouse3) Làm movie quayM t thu c tính khac ó là thu c tính _rotationThu c tính rotation ch p nh n giá tr là góc . M t vòng tròn chia ra 360 , mi ngiá tr c thu c tính rotation là -180 và 180. B n có th s d ng giá tr integer ho cfloating point.Giá tr c a _rotation luôn luôn trong vòng -180 và 180, ví d 179, ho c -179. Nhưngn u b n t nó là 181, nó s hi u thành góc -179.v y quay m t movie, ơn gi n là t giá tr cho nó, b n cũng có th s d ng cácbi u toán ++, += thay i giá tr . Hãy xem ví d sauCODEmyClip._rotation = 90;myClip._rotation++;_root["myClip"]._rotation = 45;this._rotation += 0.5;
  27. 27. 4) Co giãn àn h i m t MC:B n có th làm co giãn, thay i chi u dài chi u r ng c a movie clipScale thu c tínhTHu c tính làm vi c này là _xscale cho chi u ngang và _yscale cho chi u d c.Các giá tr ư c gán cho x,y scale là ph n trăm. Có nghĩa giá tr 100 là 100 ph n trăm, ây là thu c tính m c inh cho m t movie clip g c. B n có th s d ng các s nhhơn như 50 làm movie co l i. Ho c có th s d ng s to hơn, 200 giãn movie ra.Th m có th dùng các giá tr âm l t movie.ví d 07mousesclae.fla ch a m t o n mã mà chúgn ta s g p r t nhi u sau này. Nóki m tra t a c a mouse,. Sau ó xác inh t mouse n trung tâm movie xa baonhiêu. R i nó s d ng kho ng cách ,c chi u cao chi u r ng tính ph n trăm t lcho movie clip.CODEonClipEvent (load) { // get the original width and height of the mc origWidth = this._width; origHeight = this._height;}onClipEvent (enterFrame) { // get the distance from the center of the mc to the mouse dx = _root._xmouse-this._x; dy = _root._ymouse-this._y; // calculate the percentage of scale sx = 100*dx/(origWidth/2); sy = 100*dy/(origHeight/2); // set the scale of the mc this._xscale = sx; this._yscale = sy;}Chú ý ây ta s d ng 2 thu c tính m i, _width và _height tr v chi u cao và chi ur ng c a movie clip b ng Pixel. CHúng ư c lưu giú trong onClipEvent (load) vìkhi ta c n l y l i giá tr g c c a movie.Thu c tính _width, _heightS khác nhau gi a scale và width,height í scale s d ng giá tr ph n trăm. Còn widthheight s d ng pixel . Movie có th có giá tr sau: width 75, height 45, nhưng scalecho c xscale and yscale là 100 ph n trăm.Dư i ây là m t ví d s d ng width height th y th cho xscale, yscale.CODE
  28. 28. onClipEvent (enterFrame) { // get the distance from the center of the mc to the mouse dx = _root._xmouse-this._x; dy = _root._ymouse-this._y; // set the scale of the mc this._width = dx*2; this._height = dy*2;}b n có th th y code này ng n g n hơn ơ trên. b i vì nó ko s d ng s kiênonClipEvent(load) b i gái tr chi u dài chi u cao c a movie g c ko c n lưu tr . ây làm t ví d cho th y s d ng width và height ti n hơn d ng xscale ,y scale.5) VisibilityM t thu c tính khác c a MC là thu c tính _visible , giá tr c a thu c tính này là giá trboolean true , false.CODEmyClip._visible = false;hãy xem ví d 07visible.fla rõ hơn.Gi s ta không mu n movie bi n m t h n, mà ch b m i, ta s d ng thu c tính_alpha . Thu c tính có giá tr t 0 n 100CODEmyClip._alpha = 50;Thu c tính alpha là kênh màu th 4, tên là alpha channel . 3 kênh u tiên là red,green, blue t o ra 7 màu c u v ng. Khi b n nghe n h a 32 bit, có nghĩa lànó 4 kênh màu.. Còn 24 bit có nghĩa ch c 3 kênh u tiên.N u giá tr c a _visible là 0 thì movie là trong su t hoàn tòan và có th nhìn th y t tc m i th phía sau movie.Nhìn hình sau xem cùng 1 movieclip nhưng v i 3 giá tr alpha khác nhau, 10, 50và 100 (t trái sang) Gi th 08: ch n, kéo th movie clip, Moving and Changing Movie Clips1. Selection
  29. 29. B n ã bi t cách h c sao t o m t button và cho phép ngư i s d ng click vào làms ki n ho t ng. Tuy nhiên ây ta s h c cách click vào ch n l a m t itư ng trên màn hình.T o m t ch n l a, có nghĩa là user click vào item , nhưng không có gì x y ra. Nhưv y, ngư i dùng có th l a ch n và thay i l a ch n.Chúng ta s s d ng l a ch n như bư c u tiên h c kéo th movie.Button bên trong m t Movie method.M t movie không th ph n ng v i mouse click. Không th s d ng các s ki n nhưon (release) hay (Press). vì v y ta ph i tìm cách ánh l a nó. ó là s d ng m tbutton bên trong movie. Button có th x lý ư c mouse click, và mi n là nó cól n bao trùm m t movie.Hãy xem ví d 08buttoninmc.fla . Ta ch nhìn th y m t movie clip trên mànhình.nhưng th c ch t bên trong c a movie clip là m t button. t o ra kh năng select, ta ph i t o nhi u frame.Frame u tiên ch a m t button tênlà offbutton. Button này có mã làCODEon (release) { this.gotoAndStop(2);}b ng this, button s g i n movie clip mà nó n m trên y. Frame th 2 ch a núttương t nhu frame 1 , tên là onbutton, nút này có m u hơi sáng hơn ngư i dùngnh n ra khi nó ư c ch n.CODEon (release) { this.gotoAndStop(1);}cu i cùng t vào frame 1CODEstop();Bây gi hãy ch y xem.Phương th c hitTestCó cách khác làm movie có th s lý mouse click mà không c n button, ó là sd ng s ki n onClipEvent(mouseDown) ho c là onClipEvent(mouseUp)ví dCODEonClipEvent (mouseUp) { this.gotoAndStop(2);}Hãy ch y ví d 08twomcs1.fla xem.B n s th y t i sao onClipEvent(mouseUp)khác v i on (Release) . N u b n click vào movie, c hai u ph n ng.B i vì t t cmovie clip nh n s ki n mouse up ư c g i n cho chúng.
  30. 30. Quy t inh movie nào ư c click.Có m t cách click vào movie mình mu n. ó là s d ng v trí chu t xác nh.S a o n mã thành như sauCODEonClipEvent (mouseUp) { if (this.hitTest(_root._xmouse, _root._ymouse)) { this.gotoAndStop(2); }}v y b ng cách ràng bu c movie clip v i mouse location , ta có th click movie tamu n.VI t mã cho selection:Chúng ta ph i cho phép User click lên movies nhi u l n và thay i tr ng thái c a MCt b t sang t t, hay t t sang b t. o n mã sau có th xác nh movie ang tr ng thái nào và g i nó n frame khác.VI c này th c hi n b ng thu c tính _currentFrame . Thu c tính này s c giá tr 1kh nó frame th nh t, giá tr 2 khi nó frame th 2.CODEonClipEvent (mouseUp) { if (this.hitTest(_root._xmouse, _root._ymouse)) { if (this._currentFrame == 1) { this.gotoAndStop(2); } else { this.gotoAndStop(1); } }}Bây gi b n ã th y các cách t o s ch n l a movie. Cách thư nh t ti n l i n u b nmu n dùng c các trang thái khác như Over,up , down.. Cách th hai thì không c nnhi u bi u tư ng trong thư vi n.Enjoy..2) Kéo m t movie clipBây gi ta s h c kéo m t movie.Có 2 cách kéo movie, cách th nh t là s d ng l nh . Cách này r t d s d ngnhưng nó không cho b n nhi u l a ch n trong vi c s a i và giám sát movie.Cách Drag cơ b n:2 câu l nh drag co b n là :startDrag và stopDrag. b n dùng startDrag khi b n mu nmovie c a b n i theo chu t, còn stopDrag khi b n mu n movie c a b n không theochu t n a. ây là o n code cơ b n :CODEonClipEvent (mouseDown) { if (this.hitTest(_root._xmouse, _root._ymouse)) {
  31. 31. this.startDrag(); }}onClipEvent (mouseUp) { if (this.hitTest(_root._xmouse, _root._ymouse)) { this.stopDrag(); }}S ki n onClipEvent nhìn tương t như ta ã làm trên. Chúng s d ng hitTestnh n bi t movie nào ang ư c click. Và sau ó câu l nh startDrag và stopDrag ư cs d ng. Khi chu t ư c b m xu ng, câu l nh startDrag th c thi. Và ngư c l i, khichu t th ra, stopDrag th c thi.Hãy xem movie, b n s th y v i các câu l nh drag, b n có th kéo các movie m tcách c l p. Nhưng chú ý r ng b n không th kéo 2 movie cùng m t lúc. Ch m tmovie ư c kéo t i m t th i i m. Vì v y b n nên c n cách drag ph c t p và linh ng hơn làm ng d ng hay game.Note: startDrag có 5 thám s . Tham s th nh t là giá tr True(ho c False) quy t nh vi c trung tâm c a movie clip có khóa v i v trí chu t hay không. Các tham scòn l i là left, top, right, bottom. N u b n t chúng, movie c a b n ch có th ư ckéo theo các ràng bu c ó.Kéo nâng caoBây gi ta h c cách kéo movie mà ko dùng câu l nh startDrag và stopDrag. V y làmth nào??B n c n có 4 ph n mã sau trong movie c a b n:Th nh t là s ki n onClipEvent(load), s ki n này s t cho bi n global tên làdragging giá tr false. Khi bi n này true, t c là báo hi u r ng movie có th ư c kéo.Th hai, ngưòi dùng click vào m t movie. Có nghĩa là dragging = true .Th ba, quá trình kéo s ti p t c di n ra b i s ki n onClipEvent(enterFrame). Ski n này ch ơn gi n gán _x và _y (thu c tính c a movie clip) cho _root._xmouse và_root._ymouse(thu c tính c a con tr ).Th 4, n u ngưòi dùng th chu t , thì bi n dragging ư c gán false.Sau ây là o n code yCODEonClipEvent (load) { // start out not dragging dragging = false;}
  32. 32. onClipEvent (mouseDown) { if (this.hitTest(_root._xmouse, _root._ymouse)) { // follow the mouse from now on dragging = true; }}onClipEvent (enterFrame) { if (dragging) { // set to location of the mouse this._x = _root._xmouse; this._y = _root._ymouse; }}onClipEvent (mouseUp) { if (this.hitTest(_root._xmouse, _root._ymouse)) { // dont follow the mouse any longer dragging = false; }}Trong ví d 08complexdrag.fla ch a 2 MC. Ki m tra movie, nhưng ch s d ng MCbên trái. ây là MC làm theo o n code trên. Chú ý xem trung tâm movie ơc khóav i v trí chu t như th nào. Nó làm movie nh y ngay l p t c n u b n click vào nó.Thông thư ng, khi b n mu n kéo MC ó lên màn hình, b n không mu n nó nh y t i làm kh p v trí chu t v i trung tâm c a MC. Hãy kéo file xung quanh mànhình.B n s th y khi b n click chu t vào b t kì i m nào trên movie, movie s l p t clàm kh p v trí click chu t v i trung tâm movie. i u này cũng tương t v i câu l nhstartDrag . tránh i u này, chúng ta ch c n thêm m t o n code nh . Khi ngưòi s d ng b mchu t, chúng ta s l y offset, ây là kho ng cách t chu t cho n trung tâm c amovie. Sau ó, thay th b ng vi c gán v trí chu t n trung tâm movie, ta se thêmvào offset cho MC luôn luôn xu t hi n offset b i cùng m t giá tr khi ngư i dùngkéo.Tư ng tư ng , ví d ngưòi dùng click vào m t i m cách trung tâm movie 5 pixel.Sau ó ta luôn mu n kho ng cách 5 pixel ó ư c duy trì. i u này làm cho ngư idùng có th click vào b t c i m nào kéo movie. ây là code cho movie 2(bên ph i)CODEonClipEvent (load) { // start out not dragging
  33. 33. dragging = false;}onClipEvent (mouseDown) { if (this.hitTest(_root._xmouse, _root._ymouse)) { // follow the mouse from now on dragging = true; // get the mouse offset xOffset = this._x - _root._xmouse; yOffset = this._y - _root._ymouse; }}onClipEvent (enterFrame) { if (dragging) { // set to location of the mouse this._x = _root._xmouse + xOffset; this._y = _root._ymouse + yOffset; }}onClipEvent (mouseUp) { if (this.hitTest(_root._xmouse, _root._ymouse)) { // dont follow the mouse any longer dragging = false; }}Hãy xem movie th y khác bi t gi a 2 o n code.3) Kéo và thBây gi ta ã bi t kéo movie, v y ta s th nó âu.?V n là b n mu n theo dõi hành ng c a ngư i s d ng và xác inh ngư i s dung t movie âu.Basic Drop ZoneCh c năng hitTest có th ư c s d ng xác nh khi MC b è lên nhau. Trong o n mã sau, chúgn ta s d ng l nh startDrag o n mã kéo th ơn gi n i, nh óta có th t p trung vào các ch c năng m i.Trong o n mã sau, ch c năng hitTest ư c s d ng so sánh MC ư c kéo v i m tmovie khác tên là dragZone trên m t lêvl(root level)CODEonClipEvent (mouseDown) { if (this.hitTest(_root._xmouse, _root._ymouse)) {
  34. 34. this.startDrag(); }}onClipEvent (mouseUp) { if (this.hitTest(_root._xmouse, _root._ymouse)) { this.stopDrag(); // see if this mc is inside the dropZone mc if (this.hitTest(_parent.dropZone)) { trace("Dropped in zone"); } else { trace("Dropped outside zone"); } }}Chú ý hitTest không ư c s d ng như các bài trư c, chúng ta thay th v trí _x và _yb i m t movie khác.Lo i hitTest này so sánh v trí và vùng ư c bao ph c a 2 movie clip. Trong trư ngh p này, nó ư c so sánh v i _parent.dropZone. N u có 2 movie è lên nhau, hitTesttr giá tr True. xác inh xem MC nào ang t n t i, hình ch nh t c a c 2 movie u ư c s d ng. i u này có nghĩa là khi b n s d ng 2 hình tròng, như trong víd , b n thân chính các vòng tròn ó không ư c ch m vào mi n là các hình ch nh tc a 2 movie ư c dùng.Hãy xem hình minh h a. T t c các movie Dragme u n m è trên DropZone.Có 2 cách s d ng hitTest. Th nh t là s d ng t a x,y. Chúng ta có th s d ngmovie clip như v trí x,y, r i sau ó s d ng dropzone như m t movie clip th nh t.CODEif (_parent.dropZone.hitTest(this._x,this._y)) {V i o n code này, thay th ví d trên, movie clip s n m bên trong hình ch nh tc a vùng dropzone.Chúng ta có th thêm m t bư c n a v i hittest. B ng cách thêm tham s th 3 chohitTest, chúng ta có th dùng hitTest xem hình d ng chính xác c a movie clip vàxác inh v trí x,y. Bi n th 3 này c n gán true n u b n mu n hành vi này. N u nófalse, nó se hành ng gi ng như ch c năng hitTest bình thư ng. ây là o n codeCODEif (_parent.dropZone.hitTest(this._x,this._y,true)) {
  35. 35. Bây gi movie kéo th c a ta h at ng t t hơn. N u b n s d ng ví d 08drop.fla,movie bên ph i s s d ng o n mã gôc, và nó n m è trên hình ch nh t c adropzone. Các movie khác s d ng o n code ph c t p hitTest và chúng có trung tâmnàm bên trong hình d ng g c c a dropzone. Gi th 09: L y thông tin t ngư i dùng, Getting input from the userCho t i bây gi , qua 8 gi làm quen v i AS, t t c các tác ng c a b n lên trên flash u ư c làm qua chu t. Nhưng ngoài chu t, b n có th dùng bàn phím n p thôngtin vào Flash.Làm sao phát hi n khi ngư i dùng b m phímCó 3 cách phát hi n khi m t phím tên bàn phím b nh n. 1 là dùng nút, 2 là dùng i tư ng Key, và 3 là dùng "listener" (ch có Flash MX và MX 2004)1. Phát hi n qua nút:B n có th dùng nút phát hi n khi ngư i dùng s d ng bàn phím. B n chi c n dùngl nh x lý s ki n on cho o n code c a nút . Ví d o n code sau s kích ho t khimà ngư i dùng nh n phím "a".ActionScripton (keyPress "a"){ trace ("Key a pressed");}Trong movie m u 09keybutton.fla có m t nút ơn gi n n m trên màn hình và vài víd trong ó. N u b n cho ch y th movie và nh n phím "a" thì Output window s cóvi t ra dòng ch "Key a pressed.". X lý d ki n on(keyPress) nh là ph i phânbi t d ng ch (case-sensitive) nên n u b n ch code cho nó nh n phím "a" thì nó skhông th nh n ư c phím "A". May mà chúng ta có th dùng bao nhi u b x lý dki n cũng ư c.N u b n mu n x lý các phím khác, như các phím mũi tên, enter, thanh dài (spacebar) ... thì b n ph i dùng các code dành riêng cho chúng. Vì d b n mu n x lý phímmũi tên trái (left arrow key) thì dùng o n code sau:ActionScripton (keyPress "<Left>") { trace("Left pressed.");}Và sau ây là các code dành cho các phím c bi t: • <Right> • <Left> • <End> • <PageUp>
  36. 36. • <Insert> • <PageDown> • <Down> • <Up> • <Delete> • <Tab> • <Backspace> • <Escape> • <Home> • <Enter> • <Space>B n có th h p nhi u d ki n l i chung v i nhau. Ví d b n có m t nút và nút ó cóphím t t là "b". V y khi b n nh n nút ó hay là nh n phím "b" thì code c a nút ó s ư c kích ho t.ActionScripton (keyPress "b", release) { trace("b pressed or button clicked.");}Các ví d trên u có trong movie m u 09keybutton.fla2. Phát hi n qua i tư ng phím (key object)M c dù nút r t h u ích trong vi c phát hi n khi ngư i dùng nh n phím, nhưng nút l ikhông th phát hi n ư c trư ng h p khi ngư i dùng nh n phím và không nh t tay.Ví d n u b n làm m t game b ng Flash, và trong ó ngư i chơi cho th làm cho cácnhân v t trong game di chuy n liên t c n u như h nh n phím mũi tên và không nhâttay lên.Cho nh ng trư ng h p như v y, b n ph i dùng i tư ng Key. i tư ng Key là t ph p c a m t s hàm (function) và h ng s (constant) ư c xây d ng s n trong Flash.B n có th dùng các hàm và h ng s này biêt ư c các phím ang b nh n haykhông. Ví d , n u mu n ki m tra coi phím mũi tên trái có b ang nh n hay không thìdùng o n code sau:ActionScriptif (Key.isDown(Key.LEFT)) { trace("The left arrow is down");}Hàm Key.isDown s cho ra k t qu úng hay sai ph thu c vào thông s có ph i làphím ang b nh n hay không. H ng s Key.LEFT tư ng trưng cho phím mũi têntrái. v y khi mũi tên trái b nh n thì output window s cho ra hàng ch "The left arrowis down". Dư i ây là các h ng s tương t như Key.LEFT c p trên • Key.BACKSPACE • Key.ENTER • Key.PGDN
  37. 37. • Key.CAPSLOCK • Key.ESCAPE • Key.RIGHT • Key.CONTROL • Key.HOME K • ey.SHIFT • Key.DELETEKEY • Key.INSERT • Key.SPACE • Key.DOWN • Key.LEFT • Key.TAB • Key.END • Key.PGUP • Key.UPN u b n mu n ki m tra xem n u nh ng phím bình thư ng ang b nh n thì b n ph idùng Key.getCode l y mã s c a phím ó dùng trong hàm Key.isDown. ây làcode m u khi b n mu n ki m tra phím "a"ActionScriptif (Key.isDown(Key.getCode("a")) { trace("The left arrow is down");}Cho 2 ví d trên, b n có th coi source Fla 09keyobject.fla3. Key ListenerKey listener ư c dùng quan sát bàn phím và thông báo cho Flash khi phím ư cnh n. cách th 2 chúng ta dùng i tư ng Key ki m tra coi phím có b nh n haykhông, nhưng nó không th bi t chính xác lúc nào thì phím b nh n. N u mà ngư idùng nh n phím quá nhanh, trư c khi onClipEvent(enterFrame) k p kích ho t itư ng key ki m tra thì Flash s không bao gi bi t ư c ngư i dùng ã nh n phím.M t b t ti n n a khi dùng cách th 2 là n u b n mu n ngư i dùng nh n phím nhi ul n thì i tư ng Key s không phân bi t ư c ó là 1 l n nh n dài hay là nhi u cáinh n th t nhanh.Ví v y Flash MX, MM cho chúng ta thêm m t l a ch n n a là Key listeners. b n cóth dùng "listener" (có th hi u nó như m t quan sát viên) theo dõi s ki n c a bànphím và thông báo cho Flash ngay khi phím ư c nh n.Listener có 2 ph n. Ph n u là ph n t o listener. B n ph i ra l nh cho listener nàychú ý vào s ki n c a bàn phím. ây là code cho t o listenerActionScriptKey.addListener(_root);
  38. 38. L nh Key.addlistner t o listener cho i tư ng trong thông s là _root. Và i tư ngnày s ư c thông báo v s ki n c a bàn phím.Trong o n code trên, _root là i tư ng ư c thông báo v s ki n c a bàn phím.Nhưng khi nh n ư c thông báo thì _root ph i làm gì? Vì v y chúng ta c n ph i vi tcode x lý s ki n cho _root. Ví d o n code sau s ư c th c hi n khi _root nh n ư c thông báo v s ki n bàn phím.ActionScript_root.onKeyUp = function() { trace(Key.getAscii());}Khi ngư i dùng nh n phím, r i nh t tay lên thì s t o ra s ki n onKeyUP, và s ki nnày ư c thông báo t i _root (b n có th thay th _root b ng b t kỳ i tư ng nào) vàsau ó thì hàm Key.getAscii() s cho ra k t qu là mã s ASCII tương ng v i phímv a ư c nh n, ví d A = 65, B = 66 .v.vB n có th xem cái fla m u 09keylistener.fla, trogn ó có o n code trên (lưu ý làtrong fla này s không có gì h t ngoài o n code AS frame u tiên)N u b n mu n bi t phím ư c nh t là gì thay vì ASCII code thì b n có th dùngString.fromCharCode() cho ra k t qu b n mu n tìm. Thay dòngtrace(Key.getAscii()); băng trace(String.fromCharCode(Key.getAscii()));Th t ra ngoài 3 cách trên, còn m t cách n a là dùng b x lý s ki n onClipEven c amovie clip theo d i s ki n keyDown, keyUp, nhưng cách này không còn ư cdùng trong Flash MX n a, vì v y b n ch có th cách này trong các Flash trư c MXthôi.Bài T p: Dùng phím di chuy n movie clip1. T o m t file Flash m i2. T o m t movie clip ơn gi n3. G n o n code này vào movie clip óActionScriptonClipEvent(enterFrame) { if (Key.isDown(Key.LEFT)) this._x -= 5; if (Key.isDown(Key.RIGHT)) this._x += 5; if (Key.isDown(Key.UP)) this._y -= 5; if (Key.isDown(Key.DOWN)) this._y += 5;}[/b] o n code trên ki m tra 4 phím mũi tên và di chuy n movie clip theo hư ng c a mũitên. B n hãy th movie coi sao4. Thay i o n code trên cho hoàn ch nh hơn: t o 2 bi n [b]x, y[/b] có giá tr tương ương v i v trí ban u c a movie clip, và l p giá tr cho bi n [b]speed[/b] b ng 5.M i frame c a movie, mình s ki m tra 4 phím mũi tên và i u ch nh giá tr c a 2
  39. 39. bi n [b]x,y[/b] ch không i u ch nh v trí c a movie clip, sau ó ph i h p v i bi n[b]speed[/b] tìm v trí m i cho movie clip, r i m i di chuy n movie clip t i ó:[code]onClipEvent(load) { x = this._x; y = this._y; speed = 5;}onClipEvent(enterFrame) { if (Key.isDown(Key.LEFT)) { x -= speed; } if (Key.isDown(Key.RIGHT)) { x += speed; } if (Key.isDown(Key.UP)) { y -= speed; } if (Key.isDown(Key.DOWN)) { y += speed; } this._x = x; this._y = y;} o n code trên có 2 lơi i m. Th nh t, chúng ta tìm v trí m i c a movie clip trư ckhi chúng ta di chuy n movie clip t i ó, và như v y chúng ta có th ki m tra v trím i có h p lý không (áo d ng rât nhi u trong game), và th hai là r t ti n cho chúngta thay i t c di chuy n c a movie clip, ch c n thay i giá tr c a bi n speedNh p văn b nTrong Flash, ngư i dùng có th nh p văn b n vào các khung, và b n có th dùng AS l y nh ng văn b n ó. cho ngư i dùng có th nh p văn b n, b n ph i t o khunginput text và t o cho 1 varible tương ng v i gía tr trong khung input text ó.(n u b n nào chưa bi t t o input text thì có th download 3 cái CD hư ng d n ơ bênbox tài li u tham kh o thêm)Các ch c năng và thao tác làm vi c v i chu i ký t (stringChúng ta có r t nh iu thao tác v i chu i ký t :1. Ghép 2 chu i l i v i nhau: dùng ký hi u +. Ví d b n có variable tên là myVariablecó giá tr là "Hello", và mu n ghép ch "world" vào sau ó thì dùng như sau:myVariable = myVariable + "world" và k t qu có ư c s là "Hello world". B ncũng có th ghép nhi u hơn 2 chu i l i v i nhau b ng cách trên.2. Substrings. Substring là m t chu i ký t nh trong 1 chu i ký t khác. Ví d "ell"
  40. 40. là substring c a "hello world" hay là "hello" hay là "elle" hay "hell".B n có th l y b t c substring nào c a 1 string v i cú pháp sau:String.substring(start, end));. String là i tư ng chu i mà b n mu n trích ra m tph n, start là s th t c a ký t b t u cho chu i b n mu n lây, và end là s th tb t âu cho ph n b n không mu n l y. Lưu ý r ng ký t u tiê s có s th t là 0.Ví d v i o n code sau, output window s cho ra hàng ch "lo W"ActionScriptvar myString = "Hello World.";trace(myString.substring(3,7));Ngoài ra còn 1 cách n a dùng tương t như cách trên nhưng ch khác v thông s vàcó cú pháp như sau: String.substr(start, length);. thông s 1 cho s th t c a chcái u tiên và th hai cho chi u dài c a chu i. o n code sau cũng s có k t qutư ng t như cách 1ActionScriptvar myString = "Hello World.";trace(myString.charAt(6));Các hàm c a i tư ng StringSau ây là m t s hàm tiêu bi u c a i tư ng String.1. indexOf: dùng tìm s th t c a m t ký t hay m t chu i nh trong i tư ngString. N u hàm indexOf tìm không th y ký t hay chu i nh thì s cho ra k t qu -1. ây là cú pháp:myString.indexOf(substring,start)); substring là ký t hay chu imình mu n tìm, start là s th t mình b t u tìm trong i tư ng String. Ví d :ActionScriptvar myString = "Hello World.";//output: 6trace(myString.indexOf("W",0));//output: 2trace(myString.indexOf("llo",0));2. lastIndexOf: tương t như indexOf nhưng chúng ta tìm ký t cu i cùng i ngư clên t iký t u tiên.ActionScriptvar myString = "Hello World.";//output: 2trace(myString.indexOf("l",0));//output: 9trace(myString.lastIndexOf("l"));
  41. 41. 3. toUpperCase/toLowerCase: dùng i chu i t vi t thư ng sang vi t hoa vàngư c l iActionScriptvar myString = "Hello World.";//output: HELLO WORLDtrace(myString.toUpperCase());//output: hello worldtrace(myString.toLowerCase());4. length: là c tính c a Sring dùng tính chi u dài c a chu i.ActionScriptvar myString = "Hello World.";//output: 12trace(myString.length);Bài t p:1. m file 09form-noscripts.fla2. ki m tra tên c a variable c a m i input text field qua property panel3. Thêm o n mã sau vào nút CLEARActionScripton (release) { clearForm();}4. thêm o n mã sau vào nút SUBMITActionScripton (release) { submitForm();}5. Thêm o n code sau vào frame u tiên c a movieActionScriptfunction clearForm() { firstName = ""; middleInitial = ""; lastName = ""; address = ""; city = ""; state = ""; zip = ""; phone = ""; comments = "";
  42. 42. }function submitForm() { if (middleInitial.length == 1) { trace("Name: "+firstName+" "+middleInitial+". "+lastName); } else { trace("Name: "+firstName+" "+lastName); }}R i b n test movie. Gi th 10: T o Và i u Khi n Văn B n, Creating and Controlling TextDynamic TextB n cũng có th hi n th văn b n b ng dynamic text field. Khác v i Input field màb n làm quen trong gi s 9, dynamic text field ch cho phép AS thay i n i dungvăn b n ch không ph i là ngư i dùng. Vì n i dung, hình th c c a văn b n có ththay i b t c lúc nào nên m i g i là dynamic textTrư c tiên b n t o dynamic text b ng d ng c text trên thanh toolbar, nhưng thay vìch n "Input Text" trong property panel, b n ch n "Dynamic Text"Bư c k ti p là n i n i dung c a văn b n trong dynamic text field v i m t variableb ng cách vi t tên c a variable ó vào trong khung Var trong propery panel. Ví dnhư b n t variable myText vào trong khung Var thì khi b n thay i giá tr c amyText thì văn b n trong dynamic text field cũng thay i gi ng như giá tr c a bi nmyText. Ngoài ra b n còn có th thay i m t s l a ch n cho dynamic text field như"Single", "Multiline", or "Multiline No Wrap" x lý trư ng h p n i dung c a vănb n quá dài và cònn nhi u l a ch n khác n a. (N u b n chưa n m v ng ph n này thìcó th tham kh o thêm v s d ng Flash trong CD ư c post box tài li u) nh d ng văn b n theo HTML(HTML format) nh d ng văn b n ki u HTML, b n ph i cho phép dynamic text field ch p nh n nh d ng HTML (click vào HTML icon trên property panel) và sau ó b n có thdùng th HTML nh d ng văn b n c a b n. Ví d o n code này s t o văn b nsau:CODEmyText = "This text is <B>bold</B>.<BR>";myText += "This text is <I>italic</I>.<BR>";myText += "This text is <U>underlined</U>.<BR>";myText += "This text is <FONT COLOR=#FF0000>red</FONT>.<BR>";myText += "This text is <FONT FACE=Arial Black>Arial Black</FONT>.<BR>";
  43. 43. myText += "This text is <FONT SIZE=24>large</FONT>.<BR>";myText += "This text is <A HREF=link.html>linked</A>.<BR>";QUOTEThis text is <B>bold</B>.<br>This text is <I>italic</I>.<br>This text is <U>underlined</U>.<br>This text is <FONT COLOR=#FF0000>red</FONT>.<br>This text is <FONT FACE=Arial Black>Arial Black</FONT>.<br>This text is <FONT SIZE=24>large</FONT>.<br>This text is linked.Siêu liên k t (hyper link) trên có tác d ng gi ng như trong HTML như khác 1 i u làkhông có g ch dư iSau ây là nh ng th HTML có th dùng trong Flash MX • <B></B>: vi t m • <I></I>: vi t nghiêng • <U></U>: g ch dư i • <FONT FACE=Arial Black></FONT>: ki u ch • <FONT SIZE=24></FONT>: c ch • <FONT COLOR=#XXXXXX></FONT>: màu ch • <A HREF=></A>: link • <P></P>: an văn • <BR>: Xu ng hàng i Tư ng TextFormatCòn m t cách khác nh d ng cho văn b n là dùng i tư ng TextFormat. làm ư c i u này, b n c n ph i t o ra 1 bi n t i tư ng TextFormat. Sau ó b n có th nh giá tr cho các thu c tính c a nó. Ví d b n mu n ki u ch Arial Black, c 26, vàmàu thì dùng an code sau:CODEmyFormat = new TextFormat();myFormat.font = "Arial Black";myFormat.size = 36;myFormat.color = 0xFF0000;textInstance.setTextFormat(myFormat);B n có th dùng i tư ng TextFormat như là stylesheet trong các file HTML, m tkhi b n t o nó ra thì b n có th dùng nó b t c ch nào trong movieB n có th coi các an code trên trong file m u: 10formattext.flaVariable ngoài FlashB n có th l y bi n t ngoài trang HTML vào trong Flash thay i n i dung c aFlash hay dùng vào b t c chuy n gì. Ví d b n ph i làm 30 cái banner b ng Flashcho 30 trang web, thì b n có th ch làm 1 cái banner thôi, nhưng thay i n i dung
  44. 44. tuỳ theo t ng trang web. Mu n nh p văn b n hay giá tr c a bi n nào t HTML, b nch c n thêm vài ch vào sau cái tên c a movie trong ph n <object> và <embed>trong HTML.. o n mã HTML sau ây nh p giá tr c a bi n txtName vào trong FlashHTML<PARAM NAME=movie VALUE="10banner.swf?txtName=Dominico Savio!">và trong th <embed> thì b n thêm ph n variable và giá tr vào sau tên fileHTMLsrc="10banner.swf?txtName=Dominico Savio!">Khi movie load thì nó s t t o variable "txtname" và t giá tr cho bi n này b ng"Dominico Savio". B n có th xem trang 10banner.html, 10banner.fla trong cáisource file xem chi ti t hơn.B n có th làm nhi u giá tr m t lúc cũng b ng cách này10banner.swf?txtName=Dominico Savio!&gender=male"Ngoài l y bi n t HTML, b n còn có th l y bi n t các text file. Cách này thích h pkhi b n có nhi u bi n nh p vào Flash, hay giá tr c a các bi n quá dài g n vàoth HTML. B n ch c n dùng l nh loadVariables() làm ư c i u này. Ví d :CODEloadVariables("10external.txt", _root);B n có th coi thêm v cách dùng loadVariables() bên box ActionScript[Bài T pM t ví d ơn gi n áp d ng các i u mà b n v a h c trong bài này là làm m t cái"news ticker" như dư i ây:Dòng ch s ch y t bên ph i qua bên trái cho su t b n tin. B n có th tham kh osource fla: 10ticker.fla và test nó có khái ni m thêm v "news ticker"1. T o movie m i2. T o dynamic text field, v i cao ch v a 1 hàng, và dài b ng chi u ngang c astage, cho d nh n, b n có th vi t vài chư trong ó, như là "text goes here"3. T o variable cho text field này là text4. Ch n font, nên dùng ki u ch tương t như Courier New, sao cho b ngang c am i chư b ng nhau5. Con text field r i nh n F8 i thành Movie Clip, và t cho nó 1 cái tên như thnào tuỳ b n6. Sau ó thì g n o n script sau vào movieCODEonClipEvent(load) { // t b n tin tickerText = "News Alert: "; tickerText += "Stock prices shoot up sharply with good earnings reports. "; tickerText += "The first manned flight to Mars prepares to leave Earth orbit. "; tickerText += "Your favorite sports team wins championship. "; tickerText += "Scientists find cure for major diseases. ";
  45. 45. firstChar = 0; // b t u ch cái u tiên lineLength = 50; // s ch cái t i a trên news ticker // thêm các kho ng tr ng vào trư c dòng tin for(var i=0;i<lineLength;i++) { tickerText = " " + tickerText; }}onClipEvent(enterFrame) { // phát b n tin text = tickerText.substr(firstChar,lineLength); // thêm ch cái kê ti p firstChar++; // phát l i b n tin sau m i l n k t thúc if (firstChar > tickerText.length) { firstChar = 0; }}Trư c tiên b n t o ra bi n tickerText ch a b n văn news ticker, bi n firstCharch a giá tr c a ch cái u tiên s th y trong news ticker, và lineLenght là s ch cáicó th xu t hi n m t lúc trên news ticker. Và t t c các u ư c cho vào trong b slý d ki n onLoadTrong onEnterFrame, Flash s l y 50 ch cái u tiên b vào bi n text ( trongdynamic text field) cho nó hi n th lên màn hình. Sau ó di chuy n sang ch cáith 2 b ng câu firstChar++;, và sau cùng là ki m tra, n u b n tin ã ư c phát h t thìphát l i t u.6. B n có th thay i giá tr c a lineLenght và giá tr c a b n văn trong tickerTexthi u hơn v 2 bi n này7. Bây gi b n hãy th dùng loadVariable() nh p b n tin t text file vào coi có ư c không. N u không thì hãy tr l i ây h i mình nheHappy flashing Gi th 11: Làm vi c v i các con s , Chương này r t hay và b ích!Chúng ta ã nghiên c u v text và strings trong các chương trư c. Bây gi chúng ta snghiên c u v nh ng con s . B n s ph i ng v i nh ng con s trong ActionScript trong nhi u trư ng h p, vì v y b n c n ph i hi u làm sao s d ng chúng.Nh ng phép toán (operator) và nh ng hàm (function) v sNh ng phép toán ơn gi nChúng ta cũng ã h c qua các phép toán ơn gi n r i. Bây gi hãy xem l i nhé. D u +và d u - s th c hi n phép toán c ng và tr , d u * th c hi n phép nhân, d u / th chi n phép chia.Ngoài ra, b n cũng có th s d ng nh ng phép toán như +=, -=, *=, /= làm ơngi n cho code c a b n. L y ví d hai câu l nh dư i ây s th c hi n cùng m t công
  46. 46. vi c là c ng thêm 7 và bi n aCODEa = a + 7;a += 7;Nh ng phép so sánhNh ng phép toán so sánh như == so sánh hai s xem có b ng nhau không, > (l nhơn), < (nh hơn), <= (nh hơn ho c b ng), >= (l n hơn ho c b ng). Trong ActionScript chúng ta có th so sánh m t s nguyên v i m t s th c. Ví d như 7.2 s l nhơn 7.Math.abs i tư ng Math ch a m t t p h p các hàm x lý các con s . Hàm Math.abs s tr vgiá tr tuy t i c a m t s . B n hãy th o n code này xem k t qu th nào nhé:CODEtrace(Math.abs(-7));Math.roundN u b n có m t s th c, nhưng b n l i mu n hi n th cho ngư i dùng xem dư i d ngs nguyên thay vì ph i cho h xem các con s ph n th p phân, b n hãy s d ng hàmMath.round. Th nhé:CODEtrace(Math.round(7.2));Math.ceil, Math.floorHai hàm khác dùng làm tròn s th c thành s nguyên là Math.ceil và Math.floor.Hàm Math.ceil s làm tròn s lên và Math.floor s làm tròn s xu ng. Th nhé:CODEtrace(Math.ceil(7.2));trace(Math.floor(8.3));Math.min, Math.maxCác b n có th s d ng hai hàm này tìm s l n hơn và s nh hơn trong hai s . Víd hàm Math.min(4, 5); s tr v 4, Min.math(4, 5); s tr v 5Math.pow ây là hàm l y lũy th a, cũng ơn gi n thôi, tham s th nh t là cơ s , tham s thhai là lũy th a. Ví d b n mu n l y 4 lu th a 3 thì vi t th này
  47. 47. CODEMath.pow(4, 3);Math.sqrt ây là hàm tính căn, nhưng mà mình xin nói tr ơc luôn là ngoài hàmMath.sqrt, b n còn có th s d ng hàm Math.pow v i lũy th a nh hơn 1 tính căn.Ví d mu n l y căn 2 c a 4 thì có th s d ngCODEMath.pow(4, .5);ho cMath.sqrt(4);C hai cách trên u ra cùng m t k t qu là 2.Hàm s lư ng giácNh ng hàm c a object class mà các b n ư c bi t trên có v như r t d h c. Nhưngcòn nh ng hàm v lư ng giác như sin, cosin thì “khó nu t” hơn nhi u. M c dù b n cóth b qua nh ng hàm này nhưng nh ng hàm lư ng giác này r t h u ích và hay trongvi c t o nh ng ng d ng trong Flash. V y chúng ta hãy cùng tìm hi u cách nó làmvi c nhé!Hàm sin và cosin s d ng qua Math.sin và Math.cosin, bi u di n m i quan h gi a ư ng th ng v i ư ng cong c a m t ư ng tròn.Hình dư i ây bi u di n m t vòng tròn v i m t s i m ư c ánh d u b ng các ch .Hãy tư ng tư ng tâm c a vòng tròn to 0,0; bán kính c a ư ng tròn b ng 1. Vìth , i m trên cùng s có to 0,1 và i m t n cùng bên ph i s có to 1,0Bây gi b n hãy tư ng tư ng vòng tròn trên là m t ư ng th ng. B t ut i m “a”
  48. 48. có to 1,0 n i m 0,-1 qua -1,0 r i qua 0,1 và cu i cùng tr v 1,0.Trong Flash, và cũng như trong các ngôn ng l p trình khác, chúng ta nh v m t v tb t kỳ b ng to x, y c a chúng. Vì th , vi c chuy n m t i m trên ư ng th ngthành m t i m có to x, y trên ư ng tròn r t h u d ng. ó là nh ng gì mà hàmsin và cosin th c hi n. Ví d như chúng ta t i m “a” là i m b t u c a ư ngth ng c a ư ng tròn, b n có s d ng hàm sin và cosin c a 0 tính to x, y c a i m “a” trên ư ng tròn. T t nhiên, Math.cos(0) s tr v giá tr 1, Math.sin(0) s trv giá tr 0. K t qu s tr v to c a i m “a” 1,0V y i m “c” s n m âu trên ư ng tròn? N u du i ư ng tròn ra s có dàib ng 6.28 l n bán kính, do bán kính b ng 1 nên dài s b ng 6.28. ây là xu t xc a h ng s pi. Pi b ng 3.14, b ng m t n a dài c a ư ng tròn. dài c a ư ng tròn là 6.28 thì m t ph n tư dài ư ng tròn là 1.57. i m ótương ng v i i m “c”. Hàm Math.cos(1.57) s tr v m t giá tr r t nh , g n b ng 0.Hàm Math.sin(1.57) s tr v giá tr g n b ng -1. Ch g n b ng ch không b ng vìh ng s pi không chính xác b ng 3.14, ch là g n b ng thôi.B n có th s d ng cách này chuy n các i m trên ư ng tròn thành i m có to x,yV y thì nó có ích như th nào? Gi s như b n mu n t o m t movieclip bay quanhmàn hình trong m t vòng tròn. Làm sao làm ư c i u ó? N u làm b ng frame cóth ph i t n hàng trăm frame . Ho c cách khác là có th dùng hàm Math.cos vàMath.sin tính chuy n sang to x,y quanh vòng tròn.Trong o n code dư i ây, khi c ng thêm n, movie clip s chuy n ng d c theo ư ng tròn. Hàm Math.cos s tính ra giá tr x và hàm Math.sin s tính ra giá tr y,chúng s ư c nhân thêm v i giá tr c a radius tăng kích thư c c a ư ng tròn.Giá tr c a centerX và centerY s ư c c ng thêm cho các to x, y, vì th tâm ư ng tròn bây gi không còn 0,0 n a mà s v trí 150,150CODEonClipEvent(load) { n = 0; radius = 100; centerX = 150; centerY = 150;}onClipEvent(enterFrame) { n += .1; this._x = Math.cos(n) * radius + centerX; this._y = Math.sin(n) * radius + centerY;}Ch (string) và s (number)Có r t nhi u cách chuy n i t chu i sang s và ngư c l i. Ví d như trư ng h pngư i dùng nh p m t s vào text field, b n s nh n giá tr ó và c ng thêm m t. Hãyxem o n code sau ây, num là m t bi n giá tr text fieldCODE
  49. 49. b = num + 1;N u num = 42, v y thì b s là 43, úng không? Xin tr l i là sai, k t qu b là 421, ơngi n b i vì num là m t chu i (string) ch không ph i là m t s , vì th khi chúng tath c hi n phép c ng num v i 1 có nghĩa là c ng ký t “1” vào chu i num ang có giátr “42”. làm cho Flash hi u num là m t s , b n có th s d ng m t trong hai hàm sau ây chuy n m t chu i thành s . Hàm parseInt chuy n m t chu i thành ki u s nguyên,hàm parseFloat chuy n m t chu i thành ki u s th c. Ví d hàm parseInt(“42”) s trv giá tr là 42, n u chúng ta s d ng parseInt(“42.9”) thì cũng s nh n ư c giá tr là42 b i vì hàm parseInt không làm tròn s , nó ch l y ph n nguyên mà thôi. Còn n us d ng hàm parseFloat(“42.9”) b n s nh n ư c giá tr là 42.9, mu n làm tròn cácb n có th s d ng hàm Math.round(parseFloat(“42.9”)). Hàm parseFloat cũng s trv m t m t s nguyên n u tham s truy n vào là m t chu i s nguyên. Ví dparseFloat(“42”) s cho ta s 42. Tr trư ng h p b n mu n tr v m t giá tr snguyên, còn không b n nên s d ng hàm parseFloat.M t nét r t c bi t và r t hay c a hàm parseInt là có th chuy n m t chu i thành m ts nhưng thành nhi u d ng h s khác nhau. Hãy xem m t ví d cho d hi u:CODEparseInt(“FF”, 16);Hàm này s tr v giá tr là 255, ý nghĩa c a nó là chuy n chu i ch a s FF là m t shexa h s 16 thành m t s h nguyên h s 10.Ngư c l i, chuy n t m t s sang m t chu i, hãy s d ng hàm toString. Hàm nàys ho t ng khác v i hàm parse, b i vì nó ho t ng bên trong m i bi n, g i hàmnày sau d u ch m (.). Xem ví d nhé:CODEa = 135;trace(a.toString() + 1);K t qu s là 1351.Chúng ta cũng có th s d ng hàm toString chuy n m t s thành m t chu i ch as dư i m t h s khác. Ví d a.toString(16) s tr v k t qu là chu i “ff”S ng u nhiênT o s ng u nhiên là m t ph n quan tr ng trong công vi c thi t k game và m t sho t hình. B i vì n u không có sô ng u nhiên thì nh ng o n phim c a b n s ch ygi ng nhau, không còn gì thú v n a! t o s ng u nhiên, b n có th s d ng hàm Math.random(). Hàm này s tr v m tgiá tr t 0.0 n 1.0 nhưng thư ng thì không tr v giá tr b ng 1.0Hãy xem ví d dư i ây, b n s nh n ư c con s ng u nhiên trong c a s OutPutCODE
  50. 50. trace(Math.random());K t qu tr v i lo i gi ng như 0.023268056102097, nhưng m i l n l i khác nhau.M t ví d khác là b n c n t o m t s ng u nhiên t 1 n 10, vi c này r t ơn gi n,ch c n nhân thêm s ng u nhiên cho 10. o n code sau s cho ta con s ng u nhiênt 0.0 n 10.0CODEtrace(Math.random() * 10);Nhưng cái chúng ta c n là con s ng u nhiên t 1.0 n 10.0 ch không ph i t 0.0 n 10.0, vì th , hãy c ng thêm 1CODEtrace(Math.random() * 10 + 1);Bây gi thì k t qu tr v là 1.0 n 11.0 nhưng s không có k t qu 11.0. Hãy sd ng hàm Math.floor làm tròn xu ng.CODEtrace(Math.floor(Math.random() * 10 + 1));Th t ra thì con s ng u nhiên trong máy tính cũng chưa th t s ng u nhiên. B i vì nókhông th t s thay i trong b vi x lý. Thay vào ó s có m t con s chu n, m tcon s nào ó không bi t trư c ư c như là gi ho c phút… c a h th ng, con s nàys ư c ưa và m t bi u th c r t ph c t p, r t r t ph c t p mà chúng ta không th oán ư c. K t qu tr v cho chúng ta k t qu dư ng như là ng u nhiên. K t qu nàys ư c ưa và m t hàm tính m t l n n a là lưu l i thành con s chu n tính ng unhiên cho l n ti p theo.Hãy nghĩ v i u này, s ng u nhiên trong i s ng th t s cũng không th t s ng unhiên. N u chúng ta gi m t m t c a con xúc x c, th y úng theo m t hư ng th tchính xác, chúng ta s có cùng m t k t qu ư c r i, bây gi hãy th t o m t s ng u nhiên t 3 n 7. Làm th nào ây? Ah, cóm t th thu t cho b n ây:CODEtrace(Math.floor(Math.random() * 5 + 3);Trong ph m vi t 3 n 7 s có t t c là 5 s nguyên 3, 4, 5, 6, và 7. Th còn trongph m vi t 50 n 100 thì saoCODEtrace(Math.floor(Math.random() * 51 + 50);

×