Làm quen vi AS, Your Fi rst Look at AS

Tài liệu Làm quen vi AS, Your Fi rst Look at AS: Gi th 01: Làm quen vi AS, Your First Look at AS AS là mt ngôn ng lp trình c xây dng trong Flash. AS ging nh các ngôn ng khác nh Javascript, C++ v.v. nhng 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 hn). Bt âu h c AS, thì chúng ta coi th AS là gì, làm c nhng gì và có quan h gì vi các chc nng khác ca 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 nhng gì và sau sau cùng là xác nh c ni lu tr AS  trong Flash.  i sát ngha và tin cho sau này, mình s không dch mt s t ng ra ti ng vit nh script, movieclip v.v. Script là gì? AS là ngôn ng lp trình, vi các lnh sai khi n Flash movie làm vic theo úng nhng gì mình vi t (ch có mình vi t sai ch computer không làm sai ). Ph n nhiu thì AS ch làm vic trong môi trng ca Flash, tuy nhiên AS cng có th gi lnh cho browser, h iu hành v.v. Script có th ngn g n vài ch hay...

pdf149 trang | Chia sẻ: tranhong10 | Lượt xem: 958 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Làm quen vi AS, Your Fi rst Look at AS, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Gi th 01: Làm quen vi AS, Your First Look at AS AS là mt ngôn ng lp trình c xây dng trong Flash. AS ging nh các ngôn ng khác nh Javascript, C++ v.v. nhng 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 hn). Bt âu h c AS, thì chúng ta coi th AS là gì, làm c nhng gì và có quan h gì vi các chc nng khác ca 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 nhng gì và sau sau cùng là xác nh c ni lu tr AS  trong Flash.  i sát ngha và tin cho sau này, mình s không dch mt s t ng ra ti ng vit nh script, movieclip v.v. Script là gì? AS là ngôn ng lp trình, vi các lnh sai khi n Flash movie làm vic theo úng nhng gì mình vi t (ch có mình vi t sai ch computer không làm sai ). Ph n nhiu thì AS ch làm vic trong môi trng ca Flash, tuy nhiên AS cng có th gi lnh cho browser, h iu hành v.v. Script có th ngn g n vài ch hay cng có th dài c trm trang. Script có th c vit gp l i mt ch hay cng có th vi t rãi rác khp ni trong movie. Xut x ca AS AS rât ging ngôn ng C++, Java, javascript .v.v và c da trên tiêu chu!n do ECMA (European Computer Manufactuers Association) lp ra g i là ECMAScript. Nhiu ngi hi u l m r"ng AS da trên Javascript, nhng thc ch#t c 2 u da trên ECMAScript. Lúc  u vi t script trong Flash r#t n gin và cho ti Flash 4 mi uc phát tri n nhng cng v$n còn "thô s" vi nhng vòng l%p và các iu kin "if...else". Cho ti Flash 5 thì dân Flash mi có th lp trình và gn lin script vi các y u t trong movie. . Sang ti Flash MX thì AS ã tr thành ngôn ng lp trình toàn din vi hn 300 câu lnh, hàm .v.v Nhn biêt AS AS n gin là nhng câu lnh c vi t b"ng ti ng Anh (vì l này mà mình s không dch các t ti ng Anh liên quan  n AS, và mt ph n thì mình không gi&i thut ng computer hay ti ng vit cho lm) và các phép tính và d#u câu. Ví d' sau: ActionScript on (press) { gotoAndPlay ("my frame"); } B n có th gii ngh(a o n mã trên b"ng cách tìm hi u các t) chính trong ó. Ch "press" gi ý rng ngi dùng ang kích chut vào mt cái gì ó, (và trong trng hp này là cái nút) Ch k ti p "gotoAndPlay" do 4 ch "go to and play" gp l i, gi ý r"ng AS ra lnh cho Flash timt i m nào ó trong movie và bt  u chi t) i m ó. AS có th làm nhng gì? Flash movie g*m có các scence (cnh), và m i cnh s có 1 timeline (thi gin bi u???) và timeline s có các frame (khung) bt  u t) s 1. Thông thng thì Flash s chi t) frame 1 cho ti frame cui ca scence vi tc  c nh và d)ng l i hay l%p l i t)  u tuy theo ngi làm Flash. M'c ích chính ca AS là thay  i th t trong cách chi ca Flash. AS có th dùng  b#t frame nào, hay ch y ngc tr l i frame trc hay nhy vài frame r*i chi ti p. Nhng ó không ch là nhng gì AS có th làm c. AS có th bi n film ho t hình ca Flash thành mt chng trình ng d'ng có s tng tác ca ngi dùng. Di ây là nhng c bn mà AS có th làm:  Ho t hình: B n không c n AS  làm ho t hình, nhng vi AS thì b n có th t o nhng ho t hình phc t p hn. Ví d', trái banh có th tng xung quanh mành hình mà không bao gi ng)ng, và tuân theo các nh lut vt lý nh lc hút, lc ma sát, lc phn v.v N u không có AS thì bn c n phi dùng c hàng ngàn frame  làm, còn vi AS thì ch 1 frame cng   Navigation (hông bi t dchlàm sao cho hay ): thay vì movie ch chi 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 ngi dùng có th chi  b#t c frame nào .v.v  Thu nhp thông tin t) ngi dùng (user input): b n có th dùng AS  h&i ngi dùng 1 c u h&i, r*i dùng thông tìn ó trong movie hay có th gi cho server hay làm nhng gì b n mun.  Thu nhp thông tìn t) các ngu*n khác: AS có th tng tác vi 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 thc, màu sc, v trí ca b#t c movie clip (MC) nào trong movie flash ca b n. B n có th t o thêm phiên bn hay xoá bi phiên bn ca MC vi AS  Phân tích môi trng ca máy tính: Vi AS b n có th l#y gi t) h iu hành hay a ch ang chi movie Flash ó.  +i u khi n âm thanh trong flash movie: AS là cách tt nh#t  iu khi n âm thanh trong Flash,AS có chi chm, chi nhanh, ng)ng, quay vòng .v.v bât k, âm thanh nào trong Flash. Phát trin các kh n ng ca AS +iu quan tr ng nh#t mà AS có th làm cho b n là nhng gì cha ai ngh( ti Vi AS và trí tng tng và óc sáng t o ca b n thì không có gì là không th xy ra vi AS c. M'c ích ca các sách, và ca VNFX là hng d$n b n hi u bi t v Flash  t) ó b n có th t dùng nó  làm ra nhng sn ph!m tuyt vi mà không ai có. Vi t AS âu Câu h&i  u tiên nhng ai tìm hi u AS thng h&i là "Vi t AS vào âu?". Flash có mt môi trng làm multimedia khá phc t p. N u b n ã dùng Flash r*i hay ã  c qua các hng d$n i kèm vi Flash, thì b n ã bi t các y u t c bn nh timeline, key frame v.v. nêu b n cha bi t thì mình khuyên b n nên tìm hi u trc r*i tiêp t'c  ây. - trong m'c Flash T ng Quá, VNFX có post link  download 3 cái CD hng d$n c bn cho ngi cha bao gi dùng Flash. Vi t AS time line AS có th vi t vào key frame  b#t c timeline nào. + làm nh vy, b n ch n key frame  trong timeline trc 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 di d ng Expert hn là Normal, vì nh vy b n s h c c nhiu và l hn. Khi vi t AS vào key frame nh vy thì AS  key frame ó s ho t ng khi mà Flash chi ti key frame ó. Ví d' nh lnh AS stop() c %t  key frame 5 thì Flash chi ti key frame 5 thì s d)ng l i cho ti khi có lnh khác. cách vi t này g i là vi t vào time line Mt trong nhng lý do vi t script vào time line là khi b n mun dùng function (hàm), vì function cho phép chúng ta tái s d'ng o n mã ó t) nhiu ni, nhiu level khác. Viêt AS nút Các ph n t ca Flash movie c g i là symbol (bi u tng). thng 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 lin vi 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ó. Mun kèm AS vào nút thì ch n nút trên stage (sân kh#u: din tích ca 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 chut ho%c bàn phím tác ng lên nút mà thôi Vi t AS MC MC khác vi graphic  ch MC c %t tên khi mang vào stage, MC thng là hình ành ng, và có th có AS kèm theo MC. + vi t AS vào MC thì cng tng t nh ta làm vi nút. AS kèm theo MC có th i u khi n MC ó hay là các MC trong cùng mt timeline hay các timeline  ngoài movie Bài tp 1. T o mt movie mi 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 timeline, vi t vào keyframe 2 o n mã : "stop();" 6. Cho ch y th movie l n na 7. Và k, này b n ch th#y Flash chi ti frame th 2 thì ng)ng, và b n ã thành công trong vic vi t AS : Gi th 02: S dng Action panel, Using the Script Editing Window N u dân * ho coi Timeline là nhà thì dân lp trình vi AS coi Action Panel là ni c ng' ca mình, t i ó dân AS có th thay  i, vi t t#t c các lnh. Vì vy r#t quan tr ng là b n có th s d'ng quen thuc 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 mt 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 mun s d'ng Flash nh th nào và Flash s x p %t các panel cho hp lý. B n cng có th thay  i cách x p %t theo ý ca b n. Nói chung bn nên x p t các panel ca bn làm sao cho thun tin cho bn nht, và cái này cng cn có kinh nghim ó Mình dùng dual monitor, mình close h t các panel ch gi li 2 cái chính trên màn hình, mình kéo cái action panel và property panel qua mt bên monitor, còn cái bên kia  cho cái stage, n u cn m panel nào thì mình dùng phím tt  m. S d'ng Action panel có 2 cách: bình thng (normal) và chuyên d'ng (expert). Khi mi ch y máy l n  u thì Action panel c set di d ng bình thng. / d ng bình thng thì b n không có th ánh trc ti p các câu lnh, mà phi ch n t) các menu bên tay trái ca panel. Vi setup nh vy thì b n không bao gi ph m phi l.i khi vi t AS c. Mình s b phn h ng dn dùng normal vì mình thy dùng normal mode s không bao gi ti n  c, dùng expert mode lúc u hi mt nh ng bo m là các bn s hc  c mau và nh lâu hn S d'ng Action panel vi expert mode thì b n có nhiu t do hn, nhng t do *ng ngh(a vi trách nhim nên b n phi c!n tht khi vi t code. T) normal mode chuy n sang expert mode thì nh#n phím tt CONTROL + SHIFT + E, chuy n ngc l i thì dùng CONTROL + SHIFT + N (nh kích chut vào action panel trc khi dùng phím tt). B n có th  i t) Normal mode sang expert mode b#t c lúc nào, nhng  i ngc l i thì ch c khi mà code ca b n không có l.i. Action panel có popup menu (mi tên ch xung di, n"m  góc phi ca action panel) và trong ó có nhiu lnh r#t tt cho b n khi b n dùng Action panel, nh#t là i vi Expert mode. B n có th tìm và thay th b#t c câu nào, ch nào trong script ca b n. Phím tt 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 mun tìm. Mt lnh na là "Goto Line" giúp b n tìm c câu b n mun tìm. Lnh "Check Syntax" s rà soát script ca b n và tìm nhng l.i cú pháp. Lúc mi tp vi t AS, thì dùng nên thng xuyên dùng Chech Syntax  check l i trong sctipt. Lnh ti p theo là "Auto Format" và "Auto Format Options" giúp cho b n trình bày script ca b n cho d  c hn. B n có th thay  i màu sc, font ch v.v. cho script ca b n  cho b n d  c code hn b"ng cách vào Edit > Preferences > ActionScript Editor. Các ph n còn l i ca pop-up window cho phép b n c xu#t hay nhp AS di d ng text file và in script ra gi#y. Tuy g i là expert mode nhng thc ra dùng còn d hn là normal mode. Bi vì di expert mode thi Action panel ch0ng khác gì chng trình "note pad" hay "text pad". B n ch vic vi t nhng gì b n mun vào ó. Khi dùng di expert mode, b n v$n có th tham kho các câu lnh, các cú pháp ca AS  cái khung bên trái ca Action Panel. Và n u b n tôn th mt s quy tt thì b n s s c chc nng "Code Hint" ca Action Panel, chc nng này t o nên nhng khung nh& nh& trong ó có nhng câu lnh ca AS úng hp quy cho b n la ch n. + tr thành mt "cao th" v AS thì b n không th nào không nm vng v Action panel c. Sau ây là bài thc hành nho nh&, giúp b n làm quen vi Action panel di expert mode 1. T o mt movie mi 2. Ch n key frame  u tiên (frame s 1) ca layer 1 (mình không dch ch layer = lp vì d trùng vi class= lp) 3. M Action panel (có th dùng phím tt hay vào trong ph n Window > Action panel 4. Chuy n sang expert mode (dùng phím tt hày vào trong pop-up menu ca 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 hin ra trong Output panel, và mình s  cp  n lnh trace() vào nhng gi ti Gi th 03: Hc cách lp trình, Learning to program Lp trình có th coi là khoa h c và ngh thut. Vì vy lp trình viên gi&i c n có 2 iu kin ki n thc v ngôn ng mà h dùng và tính sáng t o, ít khi nào có trng hp ch có 1 cách lp trình cho mt  án lm. Trong quá trình vi t AS, b n s t o ra cho riêng mình mt phong thái vi t code khá %c trng. Có th mi  u b n s dùng phong cách vi t code trong nhng bài vi t này, r*i sau ó b n s t) t) chuy n sang phong cách ca riêng b n Thng thì khái nim v các ngôn ng lp trình u ging nhau, và trong bài này s bàn v nhng khái nim lp trình và làm sao áp d'ng nó trong Flash Cách suy ngh ca computer Tht ra computer dt lm ch0ng bi t suy ngh( âu, ch bi t làm vic theo mnh lnh mt cách không suy ngh(. Vì vy computer không bao gi l.i mà l.i  ngi vi t lnh sai khi n nó. Còn AS ch là mt chu i lnh, ch th cho computer, hay úng ra là Flash phi làm nhng gì trong môi trng runtime (runtime environment). Khi vi t AS thì b n nên t coi mình "ngu" nh computer, và  c l i nhng dòng lnh AS và ngh( ti k t qu ca vic thi hành lnh ó. Khi t %t mình vào v trí ca computer, b n s oán c script ca b n s làm nhng gì trong môi trng runtime, và b n có th th#y ra nhng l.i mà b n vô ý mc phi. Khi mà b n tr thành din viên tuyt vi trong vai computer thì b n cng tr thành mt lp trình viên tài ba. Lnh, hàm, và phép tính Lnh (command) là y u t cn bn ca AS  ch th Flash làm mt hành ng c' th . Lnh c thi hành tuyt i trong các trng hp kh thi. Ví d' n u nh ta vi t gotoAndPlay(5)  cho Flash ti frame 5 và chi, nhng n u trong movie không có frame 5 thì lnh không th làm c. Hàm (function, mình s dùng t) function nhiu hn là hàm) là ph n tính toán các phép tính và cho ra (return) mt k t qu. Ví d' hàm random() s cho ra mt con s ng$u nhiên nào ó, hay hàm sqrt() s cho ra giá tr bình phng ca 1 s mà hàm nhn c truyn cho. Lnh và hàm u có th c truyn cho 1 hay nhiu thông s (parameter, mình s dùng t) parameter thay vì thông s), và nhng thông s ó giúp cho hàm và lnh c c' th hn. Ví d' gotoAndPlay(5) thì 5 là thông s, n u nh không có thông s này thì lnh "gotoAndPlay" s không bi t rõ phi nói Flash i âu. cng nh hàm sqrt() cng c n có thông s  cho ra giá tr bình phng ca s #y. S khác bit gia hàm và lnh chính là các phép tính. Phép tính thng là nhng d#u +, -, *, / hay là phép so sánh . Hàm có phép tính, lnh thì không Bi n s Bi n s (parameter) c n thi t trong m i ngôn ng lp trình vì nó lu tr thông tin v mt cái gì ó trong chng trình. Bi n s g*m có 2 ph n: tên và giá tr. +ôi khi b n ch c n lu tr thông tin trong bi n s mt thi gian ngn, ví d' b n mun Flash thi hành 1 s lnh 10 l n thì b n c n  m s l n mà Flash ã thi hành lnh  có th ra lnh cho Flash ngng ngay sau khi thi hành xong lnh l n th 10. Nhng cng có lúc b n c n phi lu l i thông tin trong mt thi gian dài hay trong sut quá trình thi gian Flash chi. Tên ca bi n s thng là mt nhóm t), hay cng có th ch n gin là 1 t), hay 1 ch cái. Thông thng tên ca bi n s nên rõ ràng d hi u và nói lên c tính ch#t ca thông tin mà bi n s ang lu tr. Ví d' n u b n mun lu tr tên ca ngi 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 hn, vì ti ng vit không d#u cng d b hi u l m), b n có th %t tên bin s ó là "n" nhng quá ngn, ngi  c script ca b n s khó hi u, n u %t là name thì d trùng vi các bi n s hay t) khoá khác (_name là mt %c tính ca i tng MovieClip) Khi vi t AS, b n c n lu ý vi t làm sao cho d hi u và d  c. Và các lp trình viên quy c tên bi n s theo quy tc sau: tên bi n s luôn vi t thng 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. Lu ý r"ng ch các ch cái và s mi c dùng  %t tên cho bi n s, và luôn bt âu tên b"ng ch cái. Có nhiu lo i bi n s  lu tr nhiu lo i thông tin, và ngay m.i lo i thông tin cng có th có nhiu lo i khác nhau na. Nh s (number) là mt lo i giá tr ca bi n s, và di nó còn có các lo i khác nh s nguyên (integer), s ... không nguyên (floating, double). B n cng có th dùng bi n s  cha các chu.i (chu.i g i tt cho chu.i ch cái), chu.i có th ch có 1 ch cái, nhiu ch cái hay là không có gì h t, t#t c các chu.i sau ây u hp l: "ablsdfjksl", "a", " ", "". Khi vi t mt chu.i thì c n dùng d#u ngo%c kép ("")  bt  u và k t thúc chu.i. Trong các ngôn ng lp trình khác nh Java, C++, hay ngay c ActionScript 2.0 trong Flash MX 2004 thì b n phi xac nh trc lo i thông tin nào b n s lu trong bi n s. Nhng vi ActionScript 1 (trong FlashMX) thì b n không c n làm vic này. Ví d' bi n s userName lúc  u cha 1 chu.i, nhng sau ó l i cha 1 s nguyên thì cng v$n hp l. Ngoài chu.i và s, còn có nhiu lo i khác na nhng chúng ta s  cp ti vào nhng bài sau. iu kin Trong nhng trng hp chúng ta không bi t nên ra lnh cho Flash phi làm gì cho thích hp vi t)ng tình hung thì ta có th dùng "iu kin"  ra lnh cho Flash. Ví d' n u nh b n ra lnh cho Flash không cho ngi dùng coi mt o n phim trong Flash n u nh user di 18 tu i, n u user trên 18 tu i thì hãy chi o n phim #y. Trc tiên, Flash s so sánh s tu i ca user vi s 18, n u nh s tu i ca user tho mãn iu kin chúng ta %t ra thì Flash s có 1 giá tr true t) phép so sánh trên, và ngc l i s là false +iu kin s luôn luôn là úng (true) hay sai (false). Mt giá tr ch có úng hay sai thì c g i là boolean. Sau khi thc hin phép so sánh và có c k t qu t) phép so sánh trên, Flash s ch n mt trong 2 gii pháp do chúng ta a ra cho t)ng trng hp. +ôi khi chúng ta c n có nhiu iu kin hn ch là n gin "true" hay "false", ví d' nh b n mun Flash chi o n phim A cho ng)i trên 18 tu i, di 18 nhng trên 13 thì chi o n phim B, và nhng ai di 13 thì chi o n phim C. Vòng lp Con ngi làm ra computer vì li không mun làm nhiu, mà bán cái cho computer. Nh#t là phi làm i làm l i 1 vic nào ó thì càng nhàm chán. Vì vy vòng l%p (loop) là mt y u t quan tr ng trong các ngôn ng lp trình. AS cng vy, b n có th dùng vòng l%p trong script. Trong vòng l%p, "iu kin" r#t quan tr ng. M i vòng l%p c n có i m bt  u và i m d)ng và mt iu kin  báo hiu i m d)ng ca vòng l%p. Ví d' nh b n mun cho vòng l%p ch y 10 l n thì s có 1 bi n s dùng   m vòng l%p, bt  u t) 0, M.i vòng l%p ch y thì bi n s này s tng thêm 1. Khi ti 9 thì vòng l%p s d)ng l i. Sau ây minh ho ca vòng l%p này: 1. Mt s lnh trc vòng l%p 2. Bt  u vòng l%p, set bi n s counter = 0 3. Làm mt s lnh trong vòng l%p 4. Tng bi n s counter +=1 5. N u bi n s counter nh& hn 9, tr l i bc th 3 6. Ra kh&i vòng l%p, và ti p t'c chng trình. / ây chúng ta bt d u bi n s counter = 0 vì quy c thông thng các ngôn ng lp trình u bt  u vòng l%p  0. Mt i m áng lu ý ca vòng l%p là iu kin c xét trc khi thc hin các lnh trong vòng l%p. Trong vài trng hp, iu kin s c xét sau khi thc hin các lnh trong vòng l%p. Chúng ta cng có th ngng vòng l%p trc i m d)ng ca nó, và iu này s c  cp ti vào bài k ti p Làm nhng iu không t ng Lnh, hàm, phép tính, bi n s, thông s, iu kin, vòng l%p là nhng ph n cn bn trong ngôn ng l%p trình, và cái này thì ai cng bi t nhng làm sao phi hp l i thành mt chng trình hoàn ho mi là cái khó. Chng trình n gin ch là mt tp hp lnh cho computer  gii quy t 1 v#n  nào ó. Vì vy trc khi vi t 1 chng trình chúng ta c n phi xác nh "v#n " c n phi gii quy t. Ví d' thc t  ngoài i, m b n nh b n ra ch mua gà. Nhng ch n gin nói ra ch mua gà thì cha  vì bi t mua gà sng hay gà làm r*i. n u mua gà sng thì mua lo i nào v.v. +ó là cha nói ti 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 khong 2 kg, vi giá khong 10000 thì tht là d dàng cho b n phi không? Bi t c v#n  mua gà r*i thì tìm cách mua gà. B n phi "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ì phi m%c c làm sao, tr tin m%t hay ghi s n. B n th#y không, t) mt chuyn mua gà n gin vy mà có th tn c ngày tri  lên chng trình Vi t AS, b n c n phi lu ý ti t#t c m i vic dù nh& cách m#y  cho Flash có th làm úng theo nh ý b n trong m i tình hung. Các chng trình có bug không phi vì ngi vi t d1 mà vì cha ngh( ti h t m i tình hung thôi. Tóm l i, iu quan tr ng trong lp trình là kh n0ng phân tích mt v#n  chính thành nhiu v#n  nh& cho ti khi không còn nh& hn na, và sau ó xây dng chng trình t) gii quy y các v#n  nh& lên d n cho ti v#n  chính. Vi t mã hoàn chnh B (bug) n gin là l.i ca chng trình mà b n t o ra. Bug có th ch là nhng l.i cú pháp n gin, hay là nhng l.i phc t p do cách b n gii quy t v#n  trong môi trng runtime. + tránh có bug trong script ca b n thì b n nên tn nhiu thì gi vào giai o n phân tích, thi t k chng trình cho script ca b n. Ki m tra các o n code nhiu l n, và óng vai "computer" cho tht ging, )ng suy ngh(, mà thi hành các lnh trong script ca b n. Vi t t)ng o n code nh& r*i ráp l i vi nhau (vì vy mà lp trình theo hng i tng c s d'ng nhiu nh#t) N u script ca b n có bug thì )ng th mà nn lòng, vì không có chng trình nào do con ngi làm ra mà không có bug c. Vì vy b n )ng c gng viêt code sao cho tuyt ho không có l.i. N u có bug thì b n dit bug thôi B n có th chu!n b "chi n #u" vi bug b"ng cách vi t code sao cho d hi u và d  c, vi t nhiu chú thích cho các o n mã. +ôi khi dit bug (debug) r#t n gin nhng có khi cng r#t kho mà bi t bug  âu  dit. Flash có kèm theo vài công c' giúp b n debug d dàng hn, chúng ta s nói ti các công c' này trong bài ti. 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 nhng t) khóa, và ký hiu v.v. Vy trc tiên chúng ta s phân tích mt o n script sau ây. +o n script này gn vào 1 button. ActionScript on (press) { var myVariable = 7; var myOtherVariable = "Macromedia"; for (var i=0; i<10; i++) { trace(i); if (myVariable + 3 == 5) { trace(myOtherVariable); } } } Dòng  u tiên xác nh nhng 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 mun 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à cui o n code, gói o n code ó vào làm mt, và u c kích ho t khi nh#n nút. Các b n lu ý th#y o n code c vi t vào trong  cho d nhn th#y c o n code này ph' thuc vào on(press). Các b n nên vi t lùi vào trong cho nhng o n code ph' thuc vào 1 lnh hay hàm nào ó. Dòng th hai lp ra bi n s (mình s vi t tt là var nhe) tên myVariable, và %t giá tr b"ng 7 cho nó. tng t hàng k ti p lp ra var tên là myOtherVariable và cho giá tr ca 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 tin nhe) for (s nhc ti các lo i loop  phía di) và các iu kin ca loop này. Nó s l%p 10 l n vi iu kin bt  u là i=0 và nó s tng thêm 1 cho m.i l n l%p cho ti khi nó lên ti 9. Tng t nh on(press), for loop cng 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 iu kin ca for loop c th&a mãn. Dòng th 5 là lnh trace(), lnh này ch vi t thông tin ra  output window trong lúc b n làm vic vi Flash, user s không th#y c. K ti p là iu kin, if là t) khoá trong Flash, và nó s ki m tra k t qu ca phép so sánh myVariable + 3 ==5. N u mà k t qu là úng thì nó s kích ho t lnh trace  trong, và s vi t ra output window giá tr ca myOtherVariable Vy là b n ã th#y mt o n script hoàn chnh b"ng AS r*i. Ti p theo chúng ta s nói  n vài ph n khác ca AS. Output window / trên chúng ta có nhc ti output window, mà không nói rõ là gì. Output window là mt window trong software Flash, và ch xu#t hin khi mà b n chy th movie. N u Flash compile movie cho b n và phát hin ra l.i thì Flash s vi t ra các output window này. Trong khi ch y th movie, thì lnh trace() mi có th vi t các thông tin ra output window. Output window r#t quan tr ng trong vit "dit b ", dùng nó chung vi trace b n có th quan sát các thông s, bi n s, các i tng, thuc tính i tng .v.v Trong lúc h c AS, b n có th vi t mt  an script ngn không làm gì c nhng ch  vi t thông tin ra output window, nh o n code trên. Thc hành: vi t thông tin ra output windown Cách tt nh#t  hi u rõ chc nng ca output window là s d'ng nó. Bây gi mình s vi t mt o n code ngn gi thôi tin ra output window nhe. 1. T o mt file mi 2. Ch n frame  u tiên ca movie, m Action panel. Chnh kích thc cho action panel  ln  vi t, và nh dùng expert mode 3. Kích chut 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 ca b n cha m thì hãy nh#n F2) Ging nh action panel, output window có 1 cái pop-up menu nho nh&  trên góc phi. B n có th dùng nó  copy, xoá hay save ni dung ca 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 chnh ch  "dit 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 cnh báo (error) và cui cùng là in ra chi ti t các l.i hay cnh báo (verbose) Bi n s cc b và toàn b / trong gi th 3, chúng ta có nhc  n variable (bi n s) dùng  lu 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 cha 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 cp giá tr ca nó  b#t c ni nào trong movie. T o global variable không òi h&i mt b n phi làm mt cái gì %c bit 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 thng level, và timeline ca movie chính là root leve (gc), còn các movie clip cng chính là mt Flash movie nh&  trong Flash movie ln. Các hình nh, script  trong mt movie clip là 1 level th#p hn root level. Local variable (bi n s c'c b), khác vi global variable, local variable ch có tr truy cp trong cùng mt o n code, hay trong cùng mt timeline. Khi dùng local variable thì khi ra kh&i timeline hay o n code ó thì Flash s xoá local variable ra kh&i b nh. Mun t o local variable thì dùng t) khoá var trc tên ca local variable, ví d': var myLocal = "This is local"; B n ch c n dùng t) khoá var 1 l n thôi, nhng l n dùng sau ó thì ch c n dùng tên ca 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 gin, dùng các ký hiu toán h c nh , = Khi #n nh giá tr thì dùng d#u =, và  cho khác bit thì khi so sánh dùng ==. +o n code sau xét coi giá tr ca 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); N u b n dùng ln = vi == thì s b l.i  runtime ch Flash s không có th tìm c 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, nhng l n th hai thì không vì ch H và h khác nhau. N u b n mun th coi 2 giá tr có khác nhau không thì dùng ky hiu != 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" N u b n mun th giá tr coi ln hn hay nh& hn 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 tht nh& hn 8 và ln 6, nhng không nh& hn 1. N u b n mun th giá tr coi ln hn hay b"ng nhau ho%c là nh& hn hay b"ng nhau thì dùng ký hiu >= 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 ca variable vi các phép tính n gin nh cng (+), tr) (- ), nhân (*), chia (/). Ví d' mun thêm 4 vào giá tr ca a thì vi t a = a + 4. AS cng có cách vi t tt nh Java, C++ cho vì d' này, a += 4 N u b n mun 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 tng 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ì  trc 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 mi ti 8. / dòng th 2, hàm trace s cho ra giá tr ca a trc r*i mi tng giá tr ca 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 ca ví d' này, hàm trace s tng giá tr ca a trc r*i mi cho ra giá tr ca a. Tng t nh ++, AS cng có cách vi t tt cho giãm giá tr ca variable là d#u -, -=, =- và --. Phép tính nhân và chia thì ch có *, *=, /, /= thôi. iu kin Trong AS và các ngôn ng khác, if ... else chính là các t) khoá ca i u kin. Ti ng vit có ngh(a là "n u ... n u không". T) khoá if dùng k t qu ca s so sánh nào ó  i ti quy t nh kích ho t mt o n code. +o n code sau s so sánh giá tr ca variable a vi 7, n u úng thì Flash s chi  frame 10 ActionScript if (a == 7) { gotoAndPlay(10); } T) khoá if luôn bt  u cho 1 iu kin và ti p theo s là s so sánh. Luôn %t code so sánh  gia ngo%c n (). T#t c các code c kích ho t nu iu kin c tho mãn s  trong âu ngo%c móc {}. T) khoá else b sung cho if trong trng hp b n mun thc hin mt o n code n u iu kin ca if không c th&a mãn. Ví d': ActionScript if (a == 7) { gotoAndPlay(10); } else { gotoAndPlay(15); } N u trng hp c n th&a mãn nhiu iu kin thì có th dùng cú pháp if .... else if ... else. B n có th có bao nhiu cái else if cng c. Nãy gi ta chi nói ti iu kin da trên 1 s so sánh, nhng AS cng cho phép dùng so sánh a hp (compound comparision). Trong iu kin ca Flash ta có th dùng nhiu so sánh  i ti mt k t qu chính xác hn. Ví d' n u nh a ln 10 và a phi nh& hn 15 thì ra lnh cho Flash chi  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 phi tho mãn iu kin ca 2 phép so sánh. B n cng 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 iu kin trong 2 phép so sánh thôi. ActionScript if ((a > 10) or (a < 15)) { gotoAndPlay(10); } Vòng lp Cú pháp ca vòng l%p (loop) thì hi rc ri hn so vi cú pháp ca iu kiên if. nhng nó tng 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 vi t) khoá for và cú pháp ca 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 ti 9  output window. for loop tng giá tr ca variable i trong sut quá trình thc hin loop. +iu kin ca for loop có 3 ph n chính, và c cách bit bi d#u ch m ph!y ( . + u tiên là iu kin bt  u vi vic t o local variable cho for loop var i=0. ph n này for loop ch thc hin có 1 l n duy nh#t lúc bt âu. Ph n th hai là iu kin chính ca for loop i<10, s c thc hin  m.i vòng l%p. N u iu kin này tho mãn thì mi ti p t'c vòng l%p. Và ph n cui cùng là phép tính cho s ti p ni ca for loop  m.i vòng l%p,  ây là i++ nên giá tr ca i s c tng sau m.i vòng l%p trc khi vòng l%p mi bt  u. 3 ph n này u c b& vào trong ngo%c n (). Còn nhng code thc hin 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 ca i có nh& hn 10 không, n u nh& hn 10 thì vòng l%p thc hin các code  trong {}, còn không thì ti bc th 5 3. hàm trace vi t giá tr ca i  output window 4. cng 1 vào giá tr ca i, và tr v bc th 1 5. ra kh&i for loop Ti bc th 5 thì giá tr ca i s b"ng 10 while loop vi t) khoá while có cú pháp nhìn tng t nh sau: ActionScript while (a > 0) { // code thc hin trong while loop } +n gin hn for loop, while loop tng t nh iu kin if n gin, thc hin các code trong vòng l%p n u iu kin ca while loop c thoã mãn, vì vy b n d dàng r*i vào trng hp 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 phi 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. Ging nh while loop, do-while loop có cú pháp nhìn nh sau: ActionScript do { // code thc hin trong do-while loop } while (a > 0); Ch khác vi while loop là do-while loop thc hin code trong vòng l%p trc r*i mi ki m tra iu kin. (while loop ki m tra iu kin r*i mi ch y code trong vòng l%p) Mun phá ra kh&i quá trình t hành ca 3 lo i loop trên thì dùng lnh break và continue. Lnh break s phá ra kh&i loop hoàn toàn trong khi lnh continue thì ch phá ra kh&i vòng l%p hin t i và bt  u vòng l%p mi. T o ra mt ví d' c' th r#t phc t p, nên chúng ta t m khoan bàn ti 2 lnh này cho ti các bài sau. Hàm Cho ti bây gi các script ca chúng ta u c vi t vào frame  u tiên ca moive, cách này ch tt cho nhng chng trình n gin, nhng n u mà chng trình tr nên phc t p thì ây không phi là cách. Hàm (function) s cho phép chúng ta c#u t o và qun lý code d dàng hn trong các chng trình phc t p. Di ây là mt function n gin: ActionScript function myFunction(num) { var newNum = num + 3; return newNum; } Fuction bt  u b"ng t) khoá function, tên ca function có th là b#t c ch gì nh cách b n %t tên cho variable, nhng lu ý cách %t tên cho fuction làm sao  ngi ta  c tên có th bi t c chc nng ca function. Theo sau tên ca 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 nhiu param hay không c n param cng c. Param ch0ng qua ch la variable c dùng trong function, nhng variable này c truyn t ngoài vào khi function c g i. +o n code c function thc hin s n"m gia 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 truyn vào, sau ó function myFunction t o ra mt local variable tên là newNum, và #n nh giá tr ca newNum b"ng giá tr ca param num cng vi 3. Sau ó myFunction dùng lnh return  #n nh giá tr ca newNum là k t qu ca myFunction. Lnh return là lnh %c bit ch c dùng  trong function mà thôi. Lnh này s k t thúc function. + s dùng function này, dùng nó nh mt lnh hay hàm ca AS, ging nh là trace() vy ó. +ây là ví d': var a= myFunction(7);. Trc tiên t o mt local var r*i sau #n nh giá tr ca local var này b"ng k t qu ca myFunction vi param là 7, và cui cùng thi local var này s b"ng 10. Mt trong u i m ca function là b n có th tái s d'ng. Di ây là hàng code dùng chung 1 fuction và cho 3 k t qu khác nhau ActionScript 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 qa có c t) g i function này cng thay  i theo luôn. Dot Syntax Mt iu b n s th#y r#t nhiu trong quá trình h c AS là dot syntax (h.ng bi t dch sao bây gi) Dot syntax là phng pháp c dùng trong lp trình theo hng i tng (oob: object oriented programming). +ây là mt ví d' ca dot syntax. N u b n mun l#y cn bình phng ca mt s, và trong Flash ã có s2n function  làm chuyn này r*i, và hàm này thuc v i tng toán, tên là Math. Vy mun g i function này thì trc tiên b n phi g i tên i tng mà fucntion này trc thuc, ó là Math, theo sau ó là d#u ch#m (dot), và r*i ti tên ca function ó là sqrt. Cách vi t nh sau: ActionScript var a = Math.sqrt(4); Mt cách dùng dot syntax khác là  truy cp %c tính hay variable ca mt i tng, nh là movie clip. ActionScript var a = myClip._x; var a = myClip.myVariable; Chúng ta s  cp  n i tng Math và MovieClip trong các bài ti, còn bây gi thì quan tr ng là b n nm c khái nim v dot syntax. Chú gi i Mt trong c tính c n có ca lp trình viên là vi t code làm sao cho d  c và d hiu. Nhng nhiu khi dù khi vi t có c gng cách m#y thì nhng o n code ó v$n khó hiu cho ngi xem, vì vy mi c n nhng li chú gii. Mun chú gii trong AS thì ch c n dùng ký hiu// trc câu chú gii ó. N u chú gii nhiu hn vài dòng thì có th dùng ki u sau/* ..... chú gi i ....*/. ActionScript /* chú gii: cng 2 cho a cng 2 cho b */ a += 2; // add 2 a // add 2 to b b += 2; Debugging Thng thì thi gian dit b tn g n 1/3 thi gian phát tri n chng trình. N u b n nm vng c "nghê thut" dit b thì b n s rút ngn c r#t nhiu thi gian. Có 3 cách dit b hu hin là: phân tích, vi t message ra output window và dùng AS debugger. Vi các lo i b n gin thì phân tích các o n code s giúp b n bt trúng con b c n dit. Dùng output window  theo dõi các i tng, vòng l%p, iu kin, và nh vào ó b n có th bi t c ch nào trong code có v#n , cui cùng là dùng AS debugger có s0n trong Flash. Debugger window cho phép b n có th coi h t t#t c moi thành ph n trong movie ca b n, cho phép b n dùng AS b#t ch khi nào và ch nào b n mun. Tham kho thêm ph n tr giúp ca Flash  bi t cách dùng debugger. Gi th 05: iu khin lung movie, Control the flow of the movie S d'ng AScript là cách iu khi n movie n gn nh#t, nhung l i hiu qu nh#t. Chng này b n s h c cách :  làm sao  d)ng Movie trên frame  Sao  nhy t) frame này  n frame kia  t o nút cho phép iu khi n movie  t o mt slide show n gin  t o mt bi u din  y .. Dng movie +ây là câu lnh stop: ActionScript stop(); Khi b n dùng câu lnh này , movie ch t m d)ng  frame mà b n %t câu lnh. Các animation bên trong movieClip và các file * h a v$n ti p t'c ch y trên frame ó. Nhng animation ca time line s b d)ng. + cho animation ca timeline ti p t'c ch y, ta s d'ng mt lênh n gin ó là lnh play.. ta s bàn  n nó sau. Ví d' T i frame 1, b n hãy th mt text box và vi t vào ó Ch A T i frame 2, b n hãy th mt text box và vi t vào ó Ch B T i frame 3, b n hãy th mt text box và vi t vào ó Ch C Bây gi b n hay %t câu lnh stop(); vào Frame 2, b n se th#y ch A xu#t hin r#t nhanh r*i  n ch B, nhng ch C s ko th#y xu#t hin,, +n gin vì câu lnh stop() ã d)ng animation ca timeline t i Frame 2. Nh y t frame này n frame kia Mt câu lnh c bn ca AS là câu lnh gotoAndPlay. Câu lnh này giúp b n có th nhy t) frame này  n frame mà b n mun. B n có th s d'ng s th t ca frame hay là tên ca frame ActionScript gotoAndPlay(7); gotoAndPlay(20); gotoAndPlay("my frame label") b n có th s d'ng nhiu movies , hay còn g i là cnh(scene) . N u Câu lnh gotoAndPlay ch có mt tham s, thì tham s ó là frame. Nhng n u có 2 tham s,thì tham s  u tin là tên ca scene, còn tham ss th 2 là s th t ca frame hay tên frame. ActionScript gotoAndPlay("My Scene","My Frame"); Khi b n dùng gotoandPlay,movies s nhy  n frame mà b n g i , và ti p t'c ch y, nhng n u b n mun nó nhy  n frame và d)ng l i, b n co th s d'ng gotoAndStop . Câu lnh này dùng y ht nh gotoAndPlay, vi la ch n 1 tham s hay 2 tham s. Ngoài ra có thêm 2 câu lnh cng h at ng ging gotoAndStop , ó là nextFrame and prevFrame + hi u rõ hn v các câu lnh này, ta s i ti p ph n sau... To nút (button) Nút là mt trong 3 bi u tng (symbol) chính trong Flash, 2 cái kia là movie cilps và hình T o mt button Có nhiu cách  t o nút. Mt trong nhng cách ó là ch n Insert, New Symbol t) Menu. Mt hp tho i s hin lên và h&i b n %t tên và la ch n bi u tng ca b n là lo i Movie clip, button, hay * h a. B n hãy ch n Button. Bây gi trong ca s chính ca Flash s thay  i, timeline ca button s thay th timeline ca movie chính. Có 4 frames trong timeLine ca button. Chúng có tên là Up, Over, Down, HIt. CHúng th hin 3 tr ng thái ca button, và vùng h at ng ca button. N u b n %t mt * h a, ch0ng h n là mt vòng tròn, trong frame  u tiên(UP) và ko có gì trong 3 frame sau, tr ng thái Over và Down ca button s ging nh tr ng thái ca Up. VÙng ho t ng ca button cng tng t nh vy. M%t khác , b n có th t o các hiu ng khác nhau cho button ca b n. VÍ d' n u b n  i m u ca vòng tròn là màu xanh  Frame OVER,có ngh(a là khi b n a chut qua button, 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 ca b n ã s2n sàng trong th vin ca FLash. B n ch viêc b#m F11, tìm button ca b n và kéo th nó vào ni nào b n c n trên ca s thi t k . T o script cho button + %t script cho button,  u tiên hãy ch m mt button. Sau ó vào ca s Action b"ng cách b#m chut phi lên button và ch n Action t) menu xu#t hin. Hãy Chc chn r"ng ca s Action ã c %t  ch  Expert. B n có th ki m tra bng mt popup menu  góc trên cùng bên phi ca ca s . +ây là mt o n mã thông thng cho button. B n có th %t nó trong ca s mã và sau ó ki m tra movie xem nó h at ng th nào. ActionScript on (release) { trace("You clicked the button!") } on : là mt keyword, c g i ra  x lí mt s kin Release : Là mt s kin, khi ngi s d'ng click vào button và nh chut ra. +o n mã trace s c thc thi. Ngoài ra Release có th thay th b"ng s kin PRESS, s kin này ch khác Release  ch. khi ngi s d'ng b#m vào button, o n mã trace s c thc thi mà ko c n phi th chut ra. Trace : là in ra màn hình dòng ch YOU CLICKED THE BUTTON. Thc Hành: To mt Slide Show n gi n... Có l ko phi din t nhiu v Slide Show, các b n hãy tng tng giông Power Point.. Khi chúng ta b#m chut, các slide s chuy n sang slide khác. 1. M Flash, ch n New 2. Trong Layer 1, t) Frame 1  n Frame 4, b n hãy t các bi u tng hay hình nh, text khác nhau  phân bit c các frame 3. Sau ó b n t o mt layer mi, hãy %t mt button lên layer này.Ti p theo b n ch n Frame 4 ca layer 2, và b#m F6. +iu này m bo cho button ca b n s xu#t hin trong t#t c các Frame ca Layer 1. Bây gi copy o n mã sau vào button ca b n, chú ý nh là copy vào action ca button, ch ko phi vào b#t kì frame nào ActionScript on (release) { nextFrame(); } Cui cùng ch n Frame 1 Layer 1 action và chèn o n code sau ActionScript stop(); Hãy ch y th slide show ca b n = cách b#m Ctrl Enter. 5) Xây dng mt presentation n gin: Presentation này s d'ng nguyên tc giông ht nh ví d' Slide show  trên, các b n hay down load file FLA  xem .. easy Gi th 06: iu khin movie clip, Controlling Movie Clips 6th Hour iu khin movie clip B n s h c 1- ra lnh cho movie clip 2-T o playback cho animation 3-TÌm hi u ích(target) ca movie clip 4-Tp vi t code cho movie clip 5-T o movie clip có th ch y lùi l i. 1) Ra lnh cho movie clip : Mt movie chính có th r#t n gin. NÓ ch c n 1 frame và mt movie clip. Nhng bn thân movie clip l i có th là mt animation dài. Vic này d dàng thc hin mà ko c n Actioncript. + iu khi n c movie, b n phi %t tên cho movie clip. Chú ý r"ng mt movies clip có 2 tên, mt tên s d'ng cho timeline . Mt tên s d'ng cho actioncript. 2 tên nà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 la ch n option movies clip, ch ko phi là button hay graphic) Tên này c s d'ng cho timeline. vd: gear animation Th movie gear animation vào ca s thi t k .. PHía di ca s properties, ban s th#y box instance name.. +%t tên cho movie tên này c s d'ng cho Action script , vd : gears và nh vy, khi b n lp trình , tên s d'ng là gears , ch ko phi gear animation. b n có th s d'ng d#u ch#m  a ra các lênh cho movie ca b n. ví d' ActionScript gears.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 n ko 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 ca b n t) timeline chính.. Tc là s phi qua 2 level. ---> chm hn chút. 2)Animation Playback Controller Hãy down load source code t) trên ph n download và xem. V c bn, chúng ta làm các vic sau: - T o mt Movie ,%t tên là gear animation - +%t instance name là gear(hng d$n  trên) - Frame  u tiên ca time line chính, chèn code ActionScript gears.stop(); -T o các button Advance, Previous, Play, Stop, and Rewind -Code cho các button l n lt là Advance ActionScript on (release) { gears.nextFrame(); } Previous ActionScript on (release) { gears.prevFrame(); } Play ActionScript on (release) { gears.play(); } Stop ActionScript on (release) { gears.stop(); } Rewind ActionScript on (release) { gears.gotoAndStop (1); } 3) Target mt movie Level c bn  u tiên ca Flash là time line chính(Level 0). N u b n mun ra lnh cho time line này, b n dùng code sau _root.gotoAndStop(); thm chí n u b n %t code  time line chính, b n ko c n _root. Ch c n gotoAndStop(); Gi s n u b n có mt movie trên time line, tc là b n có mt level sâu hn(level 1). N u b n t) time line chính, mun goi movie gears , b n phi dùng câu lnh gears.gotoAndStop(7); _root["gears"].gotoAndStop(7); this["gears"].gotoAndStop(7); C 3 cách trên u ging nhau.. Tuy nhiên this có ngh(a là level hin hành. VÍ d' trên, level hin hành ca this là level 0. Nhng n u code %t trong movie, level hin hành s là level 1. B n phi chú ý. Gi s b n có mt movie khác bên trong movie, tc là b n có level 2. N u b n mun t) level 1 g i  n level 2, b n phi dùng _parent. Parent dùng ging nh root, nhng khác  ch., nó c g i t) level  trên. Còn root c g i t) level 0 (tc là level gc). Thun li t) vic s d'ng root, this là b n có th gán bi n cho movie clips ActionScript var whichClipToUse = "gears"; this[whichClipToUse].stop(); Thun li ca vc s d'ng this nhiu hn root  ch. , ko phi lúc nào m i th cng xy ra  time line chính, ôi khi ta ch mun nó xy ra  mt level nh#t nh. Bi vy this là cách tt nh#t  goi level ca mt movie. Tuy nhiên trong nhng trng hp n gin, hay nh#t là c %t tên cho movies. 4) Mã cho movie clip Chúng ta ã bàn v button  trên, vy v c bn movie clip script cng ging button, ó là ActionScript onClipEvent (load) { trace("This clip has been loaded."); } onClipEvent : key word g i s kin (ging on ca button) load : s kin này xy ra khi movie clip xu#t hin l n  u tiên trên màn hình . NÓ ch xy ra mt 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 p t'c ch y. S kiên enterFrame xy ra liên t'c bên trong movie clip m.i khi  n mt frame mi. S kin này s thc thi o n mã mt cách liên t'c cho  n khi nó b k t thúc. ActionScript onClipEvent (enterFrame) { trace("This clip has entered a new frame."); } bây gi hãy copy 2 o n code trên vào ca s action ca timeline chính và run .. b n s th#y ActionScript This 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 frame dòng ch s ti p t'c hin ra cho  n khi b n tt movie. Gi th 07: dch chuyn và thay i movie, Moving and Changing Movie Clips Mt movie clip (MC) bao gi cng có các thuc tính, cho phép b n xác nh v trí, phóng to thu nh&, quay, thm chí làm nó bi n m#t. Chng này các b n s bi t cách: -thay  i v trí ca mc -xác inh v trí chut -làm sao  quay mt mc -làm sao  phóng to mc -làm sao  movie invisible 1) V trí ca MC: M i th trong Flash u có v trí. V3 trí này c o b"ng PIXEL. Góc trên cùng bên trái ca màn hình là v trí (0,0) .Nó là v trí giao ca hàng ngang và ct d c. N u b n s d'ng mt movie m%c nh, thì góc di bên phi s là 550,400. Có nghia là 550 pixel t) bên trái sang và 400 pixel t) bên trên xung. nhìn hình sau  rõ hn. 2) V trí ca Mouse: Cng nh movie, mouse cng có th xác inh c t a .. CHú ý thut ng mouse  ây là nói  n con tr& (cursor), ch không phi con chut b n ang c m trên tay.. ^^ Có hai thuc tính c bn ca con tr& , ó là _xmouse và _ymouse. Vy _xmouse và _ymouse là thuc tính ca chính i tng mà chúng c gán. N u b n s d'ng trên time line chính, thì chúng là thuc tính ca time line. N u b n s d'ng chúng trên movie clip, thì nó là thuc tính ca movie clip. N u xmous y mouse là thuc tính ca time line chính, nó s m%c nh là góc trái trên cùng. N u xmouse ymouse là thucc tính ca 1 movie clip, nó s m%c nh  trung tâm ca MC. H u h t các trng hp thuc tính liên quan  n movie chính, b n nên dùng cách _root._xmouse và _root._ymouse +ây là mt o n code ví du CODE onClipEvent (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 dch chuy n mouse lên góc trái trên, b n s th#y  ó v trí mouse là 0.0. ho%c góc phi di, t a  là 550 400. Chú ý: khi b n a chut ra ngoài Flash window, t a  chuôt xmouse y mouse không thay  i. N u b n di chuy n chut tht nhanh t) trung tâm ca ca s ra ngoài ca s , các giá tr c v$n  ó cho  n khi b n quay tr l i ca s . VÌ vy, b n phi luôn lên k ho c c!n th!n trc khi dùng xmouse, y mouse 3) Làm movie quay Mt thuc tính khac ó là thuc tính _rotation Thuc tính rotation ch#p nhn giá tr là góc . Mt vòng tròn chia ra 360 , min giá tr c thuc tính rotation là -180 và 180. B n có th s d'ng giá tr integer ho c floating point. Giá tr ca _rotation luôn luôn  trong vòng -180 và 180, ví d' 179, ho%c -179. Nhng n u b n %t nó là 181, nó s hi u thành góc  -179. vy  quay mt movie, n gin là %t giá tr cho nó, b n cng có th s d'ng các bi u toán ++, +=  thay  i giá tr . Hãy xem ví d' sau CODE myClip._rotation = 90; myClip._rotation++; _root["myClip"]._rotation = 45; this._rotation += 0.5; 4) Co giãn àn hi mt MC: B n có th làm co giãn, thay  i chiu dài chiu rng ca movie clip Scale thuc tính THuc tính  làm vic này là _xscale cho chiu ngang và _yscale cho chiu d c. Các giá tr c gán cho x,y scale là ph n trm. Có ngh(a giá tr 100 là 100 ph n trm , ây là thuc tính m%c inh cho mt movie clip gc. B n có th s d'ng các s nh& hn nh 50  làm movie co l i. Ho%c có th s d'ng s to hn, 200  giãn movie ra. Thm có th dùng các giá tr âm  lt movie. ví d' 07mousesclae.fla cha mt o n mã mà chúgn ta s g%p r#t nhiu sau này. Nó ki m tra t a  ca mouse,. Sau ó xác inh t) mouse  n trung tâm movie xa bao nhiêu. R*i nó s d'ng khong cách ,c chiu cao chiu rng  tính ph n trm t l cho movie clip. CODE onClipEvent (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 thuc tính mi, _width và _height tr v chiu cao và chiu rng ca movie clip b"ng Pixel. CHúng c lu giú trong onClipEvent (load) vì  khi ta c n l#y l i giá tr gc ca movie. Thuc tính _width, _height S khác nhau gia scale và width,height í scale s d'ng giá tr ph n trm. Còn width height s d'ng pixel . Movie có th có giá tr sau: width 75, height 45, nhng scale cho c xscale and yscale là 100 ph n trm. Di ây là mt ví d' s d'ng width height th#y th cho xscale, yscale. CODE 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 ngn g n hn  trên. bi vì nó ko s d'ng s kiên onClipEvent(load) bi gái tr chiu dài chiu cao ca movie gc ko c n lu tr.+ây là mt ví d' cho th#y s d'ng width và height tin hn d'ng xscale ,y scale. 5) Visibility Mt thuc tính khác ca MC là thuc tính _visible , giá tr ca thuc tính này là giá tr boolean true , false. CODE myClip._visible = false; hãy xem ví d' 07visible.fla  rõ hn. Gi s ta không mun movie bi n m#t h0n, mà ch b m i, ta s d'ng thuc tính _alpha . Thuc tính có giá tr t) 0  n 100 CODE myClip._alpha = 50; Thuc 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 ca _visible là 0 thì movie là trong sut hoàn tòan và có th nhìn th#y t#t c m i th phía sau movie. Nhìn hình sau  xem cùng 1 movieclip nhng vi 3 giá tr alpha khác nhau, 10, 50 và 100 (t) trái sang) Gi th 08: chn, kéo th movie clip, Moving and Changing Movie Clips 1. Selection B n ã bi t cách h c sao  t o mt button và cho phép ngi s d'ng click vào làm s kin ho t ng. Tuy nhiên  ây ta s h c cách click vào  ch n la mt i tng trên màn hình. T o mt ch n la, có ngh(a là user click vào item , nhng không có gì xy ra. Nh vy, ngi dùng có th la ch n và thay  i la ch n. Chúng ta s s d'ng l'a ch n nh bc  u tiên  h c kéo th movie. Button  bên trong mt Movie method. Mt movie không th phn ng vi mouse click. Không th s d'ng các s kin nh on (release) hay (Press). vì vy ta phi tìm cách ánh l)a nó. +ó là s d'ng mt button bên trong movie. Button có th x lý c mouse click, và min là nó có  ln   bao trùm mt movie. Hãy xem ví d' 08buttoninmc.fla . Ta ch nhìn th#y mt movie clip trên màn hình.nhng thc ch#t bên trong ca movie clip là mt button. + t o ra kh nng select, ta phi t o nhiu frame.Frame  u tiên cha mt button tên là offbutton. Button này có mã là CODE on (release) { this.gotoAndStop(2); } b"ng this, button s g i  n movie clip mà nó n"m trên #y. Frame th 2 cha nút tng t nhu frame 1 , tên là onbutton, nút này có m u hi sáng hn  ngi dùng nhn ra khi nó c ch n. CODE on (release) { this.gotoAndStop(1); } cui cùng %t vào frame 1 CODE stop(); Bây gi hãy ch y  xem. Phng thc hitTest Có cách khác  làm movie có th s lý mouse click mà không c n button, ó là s d'ng s kin onClipEvent(mouseDown) ho%c là onClipEvent(mouseUp)ví d' CODE onClipEvent (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 vi on (Release) . N u b n click vào movie, c hai u phn ng.Bi vì t#t c movie clip nhn s kin mouse up c gi  n cho chúng. Quy t inh movie nào c click. Có mt cách  click vào movie mình mun. +ó là s d'ng v trí chut  xác nh. Sa o n mã thành nh sau CODE onClipEvent (mouseUp) { if (this.hitTest(_root._xmouse, _root._ymouse)) { this.gotoAndStop(2); } } vy b"ng cách ràng buc movie clip vi mouse location , ta có th click movie ta mun. VI t mã cho selection: Chúng ta phi cho phép User click lên movies nhiu l n và thay  i tr ng thái ca MC t) bt sang tt, hay tt sang bt. +o n mã sau có th xác nh movie ang  tr ng thái nào và gi nó  n frame khác. VIc này thc hin b"ng thuc tính _currentFrame . Thuc tính này s  c giá tr 1 kh nó  frame th nh#t, giá tr 2 khi nó  frame th 2. CODE onClipEvent (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 la movie. Cách th nh#t tin li n u b n mun dùng c các trang thái khác nh Over,up , down.. Cách th hai thì không c n nhiu bi u tng trong th vin. Enjoy.. 2) Kéo mt movie clip Bây gi ta s h c kéo mt movie. Có 2 cách  kéo movie, cách th nh#t là s d'ng lnh . Cách này r#t d s d'ng nhng nó không cho b n nhiu la ch n trong vic sa  i và giám sát movie. Cách Drag c bn: 2 câu lnh drag co bn là :startDrag và stopDrag. b n dùng startDrag khi b n mun movie ca b n i theo chut, còn stopDrag khi b n mun movie ca b n không theo chut na. +ây là o n code c bn : CODE onClipEvent (mouseDown) { if (this.hitTest(_root._xmouse, _root._ymouse)) { this.startDrag(); } } onClipEvent (mouseUp) { if (this.hitTest(_root._xmouse, _root._ymouse)) { this.stopDrag(); } } S kin onClipEvent nhìn tng t nh ta ã làm  trên. Chúng s d'ng hitTest  nhn bi t movie nào ang c click. Và sau ó câu lnh startDrag và stopDrag c s d'ng. Khi chut c b#m xung, câu lnh startDrag thc thi. Và ngc l i, khi chut th ra, stopDrag thc thi. Hãy xem movie, b n s th#y vi các câu lnh drag, b n có th kéo các movie mt cách c lp. Nhng chú ý r"ng b n không th kéo 2 movie cùng mt lúc. Ch mt movie c kéo t i mt thi i m. Vì vy b n nên c n cách drag phc t p và linh ng hn  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 vic trung tâm ca movie clip có khóa vi v trí chut hay không. Các tham s còn l i là left, top, right, bottom. N u b n %t chúng, movie ca b n ch có th c kéo theo các ràng buc ó. Kéo nâng cao Bây gi ta h c cách kéo movie mà ko dùng câu lnh startDrag và stopDrag. Vy làm th nào?? B n c n có 4 ph n mã sau trong movie ca b n: Th nh#t là s kin onClipEvent(load), s kin này s %t cho bi n global tên là dragging giá tr false. Khi bi n này true, tc là báo hiu r"ng movie có th c kéo. Th hai, ngòi dùng click vào mt movie. Có ngh(a là dragging = true . Th ba, quá trình kéo s ti p t'c din ra bi s kin onClipEvent(enterFrame). S kin này ch n gin gán _x và _y (thuc tính ca movie clip) cho _root._xmouse và _root._ymouse(thuc tính ca con tr& ). Th 4, n u ngòi dùng th chut , thì bi n dragging c gán false. Sau ây là o n code  y  CODE onClipEvent (load) { // start out not dragging dragging = false; } 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)) { // don't follow the mouse any longer dragging = false; } } Trong ví d' 08complexdrag.fla cha 2 MC. Ki m tra movie, nhng ch s d'ng MC bên trái. +ây là MC làm theo o n code trên. Chú ý xem trung tâm movie c khóa vi v trí chut nh th nào. Nó làm movie nhy ngay lp tc n u b n click vào nó. Thông thng, khi b n mun kéo MC ó lên màn hình, b n không mun nó nhy ti  làm khp v trí chut vi trung tâm ca MC. Hãy kéo file xung quanh màn hình.B n s th#y khi b n click chut vào b#t kì i m nào trên movie, movie s lp tc làm khp v trí click chut vi trung tâm movie. +iu này cng tng t vi câu lnh startDrag . + tránh iu này, chúng ta ch c n thêm mt o n code nh&. Khi ngòi s d'ng b#m chut, chúng ta s l#y offset, ây là khong cách t) chut cho  n trung tâm ca movie. Sau ó, thay th b"ng vic gán v trí chut  n trung tâm movie, ta se thêm vào offset  cho MC luôn luôn xu#t hin offset bi cùng mt giá tr khi ngi dùng kéo. Tng tng , ví d' ngòi dùng click vào mt i m cách trung tâm movie 5 pixel. Sau ó ta luôn mun khong cách 5 pixel ó c duy trì. +iu này làm cho ngi dùng có th click vào b#t c i m nào  kéo movie. +ây là code cho movie 2(bên phi) CODE onClipEvent (load) { // start out not dragging 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)) { // don't follow the mouse any longer dragging = false; } } Hãy xem movie  th#y khác bit gia 2 o n code. 3) Kéo và th Bây gi ta ã bi t kéo movie, vy ta s th nó  âu.? V#n  là b n mun theo dõi hành ng ca ngi s d'ng và xác inh ngi s dung %t movie  âu. Basic Drop Zone Chc nng 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 lnh startDrag  o n mã kéo th n gin i, nh ó ta có th tp trung vào các chc nng mi. Trong o n mã sau, chc nng hitTest c s d'ng  so sánh MC c kéo vi mt movie khác tên là dragZone  trên mt lêvl(root level) CODE onClipEvent (mouseDown) { if (this.hitTest(_root._xmouse, _root._ymouse)) { 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 trc, chúng ta thay th v trí _x và _y bi mt movie khác. Lo i hitTest này so sánh v trí và vùng c bao ph ca 2 movie clip. Trong trng hp này, nó c so sánh vi _parent.dropZone. N u có 2 movie è lên nhau, hitTest tr giá tr True. + xác inh xem MC nào ang t*n t i, hình ch nht ca c 2 movie u c s d'ng. +iu này có ngh(a là khi b n s d'ng 2 hình tròng, nh trong ví d', bn thân chính các vòng tròn ó không c ch m vào min là các hình ch nht ca 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'ng movie clip nh v trí x,y, r*i sau ó s d'ng dropzone nh mt movie clip th nh#t. CODE if (_parent.dropZone.hitTest(this._x,this._y)) { Vi o n code này, thay th ví d' trên, movie clip s n"m  bên trong hình ch nht ca vùng dropzone. Chúng ta có th thêm mt bc na vi hittest. B"ng cách thêm tham s th 3 cho hitTest, chúng ta có th dùng hitTest  xem hình d ng chính xác ca 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 mun hành vi này. N u nó false, nó se hành ng ging nh chc nng hitTest bình thng. +ây là o n code CODE if (_parent.dropZone.hitTest(this._x,this._y,true)) { Bây gi movie kéo th ca ta h at ng tt hn. N u b n s d'ng ví d' 08drop.fla, movie bên phi s s d'ng o n mã gôc, và nó n"m è  trên hình ch nht ca dropzone. Các movie khác s d'ng o n code phc t p hitTest và chúng có trung tâm nàm bên trong hình d ng gc ca dropzone. Gi th 09: Ly thông tin t ngi dùng, Getting input from the user Cho ti bây gi, qua 8 gi làm quen vi AS, t#t c các tác ng ca b n lên trên flash u c làm qua chut. Nhng ngoài chut, b n có th dùng bàn phím  n p thông tin vào Flash. Làm sao  phát hin khi ngi dùng bm phím Có 3 cách  phát hin khi mt phím tên bàn phím b nh#n. 1 là dùng nút, 2 là dùng i tng Key, và 3 là dùng "listener" (ch có  Flash MX và MX 2004) 1. Phát hin qua nút: B n có th dùng nút  phát hin khi ngi dùng s d'ng bàn phím. B n chi c n dùng lnh x lý s kin on cho o n code ca nút . Ví d' o n code sau s kích ho t khi mà ngi dùng nh#n phím "a". ActionScript on (keyPress "a"){ trace ("Key 'a' pressed"); } Trong movie m$u 09keybutton.fla có mt nút n gin 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 kin on(keyPress) nh là phi phân bit d ng ch (case-sensitive) nên n u b n ch code cho nó nhn phím "a" thì nó s không th nhn c phím "A". May mà chúng ta có th dùng bao nhiu b x lý d kin cng c. N u b n mun x lý các phím khác, nh các phím mi tên, enter, thanh dài (space bar) ... thì b n phi dùng các code dành riêng cho chúng. Vì d' b n mun x lý phím mi tên trái (left arrow key) thì dùng o n code sau: ActionScript on (keyPress "") { trace("Left pressed."); } Và sau ây là các code dành cho các phím %c bit:                B n có th hp nhiu d kin l i chung vi nhau. Ví d' b n có mt nút và nút ó có phím tt là "b". Vy khi b n nh#n nút ó hay là nh#n phím "b" thì code ca nút ó s c kích ho t. ActionScript on (keyPress "b", release) { trace("'b' pressed or button clicked."); } Các ví d' trên u có trong movie m$u 09keybutton.fla 2. Phát hin qua i t!ng phím (key object) M%c dù nút r#t hu ích trong vic phát hin khi ngi dùng nh#n phím, nhng nút l i không th phát hin c trng hp khi ngi dùng nh#n phím và không nh#t tay. Ví d' n u b n làm mt game b"ng Flash, và trong ó ngi chi cho th làm cho các nhân vt trong game di chuy n liên t'c n u nh h nh#n phím mi tên và không nhât tay lên. Cho nhng trng hp nh vy, b n phi dùng i tng Key. +i tng Key là tp hp ca mt s hàm (function) và h"ng s (constant) c xây dng s0n 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 hay không. Ví d', n u mun ki m tra coi phím mi tên trái có b ang nh#n hay không thì dùng o n code sau: ActionScript if (Key.isDown(Key.LEFT)) { trace("The left arrow is down"); } Hàm Key.isDown s cho ra k t qu úng hay sai ph' thuc vào thông s có phi là phím ang b nh#n hay không. H"ng s Key.LEFT tng trng cho phím mi tên trái. vy khi mi tên trái b nh#n thì output window s cho ra hàng ch "The left arrow is down". Di ây là các h"ng s tng t nh Key.LEFT  cp  trên  Key.BACKSPACE  Key.ENTER  Key.PGDN  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.UP N u b n mun ki m tra xem n u nhng phím bình thng ang b nh#n thì b n phi dùng Key.getCode  l#y mã s ca phím ó  dùng trong hàm Key.isDown. +ây là code m$u khi b n mun ki m tra phím "a" ActionScript if (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.fla 3. Key Listener Key listener c dùng  quan sát bàn phím và thông báo cho Flash khi phím c nh#n. / cách th 2 chúng ta dùng i tng Key  ki m tra coi phím có b nh#n hay không, nhng nó không th bi t chính xác lúc nào thì phím b nh#n. N u mà ngi dùng nh#n phím quá nhanh, trc khi onClipEvent(enterFrame) kp kích ho t i tng key  ki m tra thì Flash s không bao gi bi t c ngi dùng ã nh#n phím. Mt b#t tin na khi dùng cách th 2 là n u b n mun ngi dùng nh#n phím nhiu l n thì i tng Key s không phân bit c ó là 1 l n nh#n dài hay là nhiu cái nh#n tht nhanh. Ví vy  Flash MX, MM cho chúng ta thêm mt la ch n na là Key listeners. b n có th dùng "listener" (có th hi u nó nh mt quan sát viên)  theo dõi s kin ca bàn phí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 phi ra lnh cho listener này chú ý vào s kin ca bàn phím. +ây là code cho t o listener ActionScript Key.addListener(_root); Lnh Key.addlistner t o listener cho i tng trong thông s là _root. Và i tng này s c thông báo v s kin ca bàn phím. Trong o n code trên, _root là i tng c thông báo v s kin ca bàn phím. Nhng khi nhn c thông báo thì _root phi làm gì? Vì vy chúng ta c n phi vi t code x lý s kin cho _root. Ví d' o n code sau s c thc hin khi _root nhn c thông báo v s kin bàn phím. ActionScript _root.onKeyUp = function() { trace(Key.getAscii()); } Khi ngi dùng nh#n phím, r*i nh#t tay lên thì s t o ra s kin onKeyUP, và s kin này c thông báo ti _root (b n có th thay th _root bng b#t k, i tng nào) và sau ó thì hàm Key.getAscii() s cho ra k t qu là mã s ASCII tng ng vi phím v)a c nh#n, ví d' A = 65, B = 66 .v.v B n có th xem cái fla m$u 09keylistener.fla, trogn ó có o n code trên (lu ý 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 mun bi t phím c nh#t là gì thay vì ASCII code thì b n có th dùng String.fromCharCode()  cho ra k t qu b n mun tìm. Thay dòng trace(Key.getAscii()); bng trace(String.fromCharCode(Key.getAscii())); Tht ra ngoài 3 cách trên, còn mt cách na là dùng b x lý s kin onClipEven ca movie clip  theo d&i s kin keyDown, keyUp, nhng cách này không còn c dùng trong Flash MX na, vì vy b n ch có th cách này trong các Flash trc MX thôi. Bài Tp: Dùng phím  di chuy n movie clip 1. T o mt file Flash mi 2. T o mt movie clip n gin 3. Gn o n code này vào movie clip ó ActionScript onClipEvent(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 mi tên và di chuy n movie clip theo hng ca mi tên. B n hãy th movie coi sao 4. Thay  i o n code trên cho hoàn chnh hn: t o 2 bi n [b]x, y[/b] có giá tr tng ng vi v trí ban  u ca movie clip, và lp giá tr cho bi n [b]speed[/b] bng 5. M i frame ca movie, mình s ki m tra 4 phím mi tên và iu chnh giá tr ca 2 bi n [b]x,y[/b] ch không iu chnh v trí ca movie clip, sau ó phi hp vi bi n [b]speed[/b]  tìm v trí mi cho movie clip, r*i mi di chuyn movie clip ti ó: [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 li i m. Th nh#t, chúng ta tìm v trí mi ca movie clip trc khi chúng ta di chuy n movie clip ti ó, và nh vy chúng ta có th ki m tra v trí mi có hp lý không (áo d'ng rât nhiu trong game), và th hai là r#t tin cho chúng ta thay  i tc  di chuy n ca movie clip, ch c n thay  i giá tr ca bi n speed Nhp v n b n Trong Flash, ngi dùng có th nh$p vn bn vào các khung, và b n có th dùng AS  l#y nhng vn bn ó. + cho ngi dùng có th nhp vn bn, b n phi t o khung input text và t o cho 1 varible  tng ng vi gía tr trong khung input text ó. (n u b n nào cha bi t t o input text thì có th download 3 cái CD hng d$n  bên box tài liu  tham kho thêm) Các chc n ng và thao tác làm vic vi chu"i ký t (string Chúng ta có r#t nhiu thao tác vi chu.i ký t: 1. Ghép 2 chu.i l i vi nhau: dùng ký hiu +. Ví d' b n có variable tên là myVariable có giá tr là "Hello", và mun 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 n cng có th ghép nhiu hn 2 chu.i l i vi nhau b"ng cách trên. 2. Substrings. Substring là mt chu i ký t nh& trong 1 chu i ký t khác. Ví d' "ell" là substring ca "hello world" hay là "hello" hay là "elle" hay "hell". B n có th l#y b#t c substring nào ca 1 string vi cú pháp sau: String.substring(start, end));. String là i tng chu.i mà b n mun trích ra mt ph n, start là s th t ca ký t bt  u cho chu i b n mun lây, và end là s th t bt âu cho ph n b n không mun l#y. Lu ý rng ký t  u tiê s có s th t là 0. Ví d' vi o n code sau, output window s cho ra hàng ch "lo W" ActionScript var myString = "Hello World."; trace(myString.substring(3,7)); Ngoài ra còn 1 cách na dùng tng t nh cách trên nhng 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 ca ch cái  u tiên và th hai cho chiu dài ca chu.i. +o n code sau cng s có k t qu tng t nh  cách 1 ActionScript var myString = "Hello World."; trace(myString.charAt(6)); Các hàm ca i t!ng String Sau ây là mt s hàm tiêu bi u ca i tng String. 1. indexOf: dùng  tìm s th t ca mt ký t hay mt chu.i nh& trong i tng String. 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.i mình mun tìm, start là s th t mình bt  u tìm trong i tng String. Ví d': ActionScript var myString = "Hello World."; //output: 6 trace(myString.indexOf("W",0)); //output: 2 trace(myString.indexOf("llo",0)); 2. lastIndexOf: tng t nh indexOf nhng chúng ta tìm ký t cui cùng i ngc lên tiký t  u tiên. ActionScript var myString = "Hello World."; //output: 2 trace(myString.indexOf("l",0)); //output: 9 trace(myString.lastIndexOf("l")); 3. toUpperCase/toLowerCase: dùng   i chu.i t) vit thng sang vi t hoa và ngc l i ActionScript var myString = "Hello World."; //output: HELLO WORLD trace(myString.toUpperCase()); //output: hello world trace(myString.toLowerCase()); 4. length: là %c tính ca Sring dùng  tính chiu dài ca chu.i. ActionScript var myString = "Hello World."; //output: 12 trace(myString.length); Bài tp: 1. m file 09form-noscripts.fla 2. ki m tra tên ca variable ca m.i input text field qua property panel 3. Thêm o n mã sau vào nút CLEAR ActionScript on (release) { clearForm(); } 4. thêm o n mã sau vào nút SUBMIT ActionScript on (release) { submitForm(); } 5. Thêm o n code sau vào frame  u tiên ca movie ActionScript function clearForm() { firstName = ""; middleInitial = ""; lastName = ""; address = ""; city = ""; state = ""; zip = ""; phone = ""; comments = ""; } 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: To Và iu Khin V n B n, Creating and Controlling Text Dynamic Text B n cng có th hi n th vn bn b"ng dynamic text field. Khác vi Input field mà b n làm quen trong gi s 9, dynamic text field ch cho phép AS thay  i ni dung vn bn ch không phi là ngi dùng. Vì ni dung, hình thc ca vn bn có th thay  i b#t c lúc nào nên mi g i là dynamic text Trc tiên b n t o dynamic text b0ng d'ng c' text trên thanh toolbar, nhng thay vì ch n "Input Text"  trong property panel, b n ch n "Dynamic Text" Bc k ti p là ni ni dung ca vn bn trong dynamic text field vi mt variable b"ng cách vi t tên ca variable ó vào trong khung Var  trong propery panel. Ví d' nh b n %t variable myText vào trong khung Var thì khi b n thay  i giá tr ca myText thì vn bn trong dynamic text field cng thay  i ging nh giá tr ca bi n myText. Ngoài ra b n còn có th thay  i mt s la ch n cho dynamic text field nh "Single", "Multiline", or "Multiline No Wrap"  x lý trng hp ni dung ca vn bn quá dài và cònn nhiu la ch n khác na. (N u b n cha nm vng ph n này thì có th tham kho thêm v s d'ng Flash trong CD c post box tài liu) nh dng v n b n theo HTML (HTML format) + nh d ng vn bn ki u HTML, bn phi cho phép dynamic text field ch#p nhn nh d ng HTML (click vào HTML icon  trên property panel) và sau ó b n có th dùng th4 HTML  nh d ng vn bn ca b n. Ví d' o n code này s t o vn bn sau: CODE myText = "This text is bold."; myText += "This text is italic."; myText += "This text is underlined."; myText += "This text is red."; myText += "This text is Arial Black."; myText += "This text is large."; myText += "This text is linked."; QUOTE This text is bold. This text is italic. This text is underlined. This text is red. This text is Arial Black. This text is large. This text is linked. Siêu liên k t (hyper link) trên có tác d'ng ging nh trong HTML nh khác 1 iu là không có g ch di Sau ây là nhng th4 HTML có th dùng trong Flash MX  : vi t m  : vi t nghiêng  : g ch di  : ki u ch  : c1 ch  : màu ch  : link  : + an vn  : Xung hàng i T!ng TextFormat Còn mt cách khác  nh d ng cho vn bn là dùng i tng TextFormat. + làm c iu này, b n c n phi t o ra 1 bi n t) i tng TextFormat. Sau ó b n có th nh giá tr cho các thuc tính ca nó. Ví d' b n mun ki u ch Arial Black, c1 26, và màu & thì dùng  an code sau: CODE myFormat = new TextFormat(); myFormat.font = "Arial Black"; myFormat.size = 36; myFormat.color = 0xFF0000; textInstance.setTextFormat(myFormat); B n có th dùng i tng TextFormat nh là stylesheet trong các file HTML, mt khi b n t o nó ra thì b n có th dùng nó  b#t c ch nào trong movie B n có th coi các  an code trên trong file m$u: 10formattext.fla Variable ngoài Flash B n có th l#y bi n t) ngoài trang HTML vào trong Flash  thay  i ni dung ca Flash hay dùng vào b#t c chuyn gì. Ví d' b n phi làm 30 cái banner b"ng Flash cho 30 trang web, thì b n có th ch làm 1 cái banner thôi, nhng thay .i ni dung tu, theo t)ng trang web. Mun nhp vn bn hay giá tr ca bi n nào t) HTML, b n ch c n thêm vài ch vào sau cái tên ca movie trong ph n và trong HTML.. +o n mã HTML sau ây nhp giá tr ca bi n txtName vào trong Flash HTML và trong th4 thì b n thêm ph n variable và giá tr vào sau tên file HTML src="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ái source file  xem chi ti t hn. B n có th làm nhiu giá tr mt lúc cng b"ng cách này 10banner.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 hp khi b n có nhiu bi n  nhp vào Flash, hay giá tr ca các bi n quá dài  gn vào th4 HTML. B n ch c n dùng lnh loadVariables()  làm c iu này. Ví d': CODE loadVariables("10external.txt", _root); B n có th coi thêm v cách dùng loadVariables()  bên box ActionScript [Bài Tp Mt ví d' n gin áp d'ng các iu mà b n v)a h c trong bài này là làm mt cái "news ticker" nh di ây: Dòng ch s ch y t) bên phi qua bên trái cho sut bn tin. B n có th tham kho source fla: 10ticker.fla và test nó  có khái nim thêm v "news ticker" 1. T o movie mi 2. T o dynamic text field, vi  cao ch v)a 1 hàng, và dài b"ng chiu ngang ca stage,  cho d nhn, 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à text 4. Ch n font, nên dùng ki u ch tng t nh Courier New, sao cho b ngang ca m.i ch b"ng nhau 5. Con text field r*i nh#n F8   i thành Movie Clip, và %t cho nó 1 cái tên nh th nào tu, b n 6. Sau ó thì gn o n script sau vào movie CODE onClipEvent(load) { // %t bn 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. "; firstChar = 0; // bt  u  ch cái  u tiên lineLength = 50; // s ch cái ti a trên news ticker // thêm các khong trng vào trc dòng tin for(var i=0;i<lineLength;i++) { tickerText = " " + tickerText; } } onClipEvent(enterFrame) { // phát bn tin text = tickerText.substr(firstChar,lineLength); // thêm ch cái kê ti p firstChar++; // phát l i bn tin sau m.i l n k t thúc if (firstChar > tickerText.length) { firstChar = 0; } } Trc tiên b n t o ra bi n tickerText  cha bn vn news ticker, bi n firstChar  cha giá tr ca ch cái  u tiên s th#y trong news ticker, và lineLenght là s ch cái có th xu#t hin mt lúc trên news ticker. Và t#t c các  u c cho vào trong b s lý d kin onLoad Trong onEnterFrame, Flash s l#y 50 ch cái  u tiên b& vào bi n text ( trong dynamic text field)  cho nó hi n th lên màn hình. Sau ó di chuy n sang ch cái th 2 b"ng câu firstChar++;, và sau cùng là ki m tra, n u bn tin ã c phát h t thì phát l i t)  u. 6. B n có th thay  i giá tr ca lineLenght và giá tr ca bn vn trong tickerText  hi u hn v 2 bi n này 7. Bây gi b n hãy th dùng loadVariable()  nhp bn 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 nhe Happy flashing Gi th 11: Làm vic vi các con s, Chng này r#t hay và b ích! Chúng ta ã nghiên cu v text và strings trong các chng trc. Bây gi chúng ta s nghiên cu v nhng con s. B n s phi 'ng  vi nhng con s trong Action Script trong nhiu trng hp, vì vy b n c n phi hi u làm sao  s d'ng chúng. Nhng phép toán (operator) và nhng hàm (function) v s Nh ng phép toán n gin Chúng ta cng ã h c qua các phép toán n gin r*i. Bây gi hãy xem l i nhé. D#u + và d#u - s thc hin phép toán cng và tr), d#u * thc hin phép nhân, d#u / thc hin phép chia. Ngoài ra, b n cng có th s d'ng nhng phép toán nh +=, -=, *=, /=  làm n gin cho code ca b n. L#y ví d' hai câu lnh di ây s thc hin cùng mt công vic là cng thêm 7 và bi n a CODE a = a + 7; a += 7; Nh ng phép so sánh Nhng phép toán so sánh nh ==  so sánh hai s xem có b"ng nhau không, > (ln hn), = (ln hn ho%c b"ng). Trong Action Script chúng ta có th so sánh mt s nguyên vi mt s thc. Ví d' nh 7.2 s ln hn 7. Math.abs +i tng Math cha mt tp hp các hàm x lý các con s. Hàm Math.abs s tr v giá tr tuyt i ca mt s. B n hãy th o n code này xem k t qu th nào nhé: CODE trace(Math.abs(-7)); Math.round N u b n có mt s thc, nhng b n l i mun hi n th cho ngi dùng xem di d ng s nguyên thay vì phi cho h xem các con s ph n thp phân, b n hãy s d'ng hàm Math.round. Th nhé: CODE trace(Math.round(7.2)); Math.ceil, Math.floor Hai hàm khác dùng  làm tròn s thc 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 xung. Th nhé: CODE trace(Math.ceil(7.2)); trace(Math.floor(8.3)); Math.min, Math.max Các b n có th s d'ng hai hàm này  tìm s ln hn và s nh& hn trong hai s. Ví d' hàm Math.min(4, 5); s tr v 4, Min.math(4, 5); s tr v 5 Math.pow +ây là hàm  l#y ly th)a, cng n gin thôi, tham s th nh#t là c s, tham s th hai là ly th)a. Ví d' b n mun l#y 4 lu5 th)a 3 thì vi t th này CODE Math.pow(4, 3); Math.sqrt+ây là hàm  tính cn, nhng mà mình xin nói trc luôn là ngoài hàm Math.sqrt, b n còn có th s d'ng hàm Math.pow vi ly th)a nh& hn 1  tính cn. Ví d' mun l#y cn 2 ca 4 thì có th s d'ng CODE Math.pow(4, .5); ho%c Math.sqrt(4); C hai cách trên u ra cùng mt k t qu là 2. Hàm s l!ng giác Nhng hàm ca object class mà các b n c bi t  trên có v4 nh r#t d h c. Nhng còn nhng hàm v lng giác nh sin, cosin thì “khó nut” hn nhiu. M%c dù b n có th b& qua nhng hàm này nhng nhng hàm lng giác này r#t hu ích và hay trong vic t o nhng ng d'ng trong Flash. Vy chúng ta hãy cùng tìm hi u cách nó làm vic nhé! Hàm sin và cosin s d'ng qua Math.sin và Math.cosin, bi u din mi quan h gia ng th0ng vi ng cong ca mt ng tròn. Hình di ây bi u din mt vòng tròn vi mt s i m c ánh d#u b"ng các ch. Hãy tng tng tâm ca vòng tròn  to  0,0; bán kính ca ng tròn b"ng 1. Vì th , i m trên cùng s có to  0,1 và i m tn cùng bên phi s có to  1,0 Bây gi b n hãy tng tng vòng tròn trên là mt ng th0ng. Bt  u t) i m “a” có to  1,0  n i m 0,-1 qua -1,0 r*i qua 0,1 và cui cùng tr v 1,0. Trong Flash, và cng nh trong các ngôn ng lp trình khác, chúng ta nh v mt vt b#t k, b"ng to  x, y ca chúng. Vì th , vic chuy n mt i m trên ng th0ng thành mt i m có to  x, y trên ng tròn r#t hu d'ng. +ó là nhng gì mà hàm sin và cosin thc hin. Ví d' nh chúng ta %t i m “a” là i m bt  u ca ng th0ng ca ng tròn, b n có s d'ng hàm sin và cosin ca 0  tính to  x, y ca 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 tr v giá tr 0. K t qu s tr v to  ca i m “a” 1,0 Vy i m “c” s n"m  âu trên ng tròn? N u du.i ng tròn ra s có  dài b"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 x ca h"ng s pi. Pi b"ng 3.14, b"ng mt na  dài ca ng tròn. + dài ca ng tròn là 6.28 thì mt ph n t  dài ng tròn là 1.57. +i m ó tng ng vi i m “c”. Hàm Math.cos(1.57) s tr v mt 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,y Vy thì nó có ích nh th nào? Gi s nh b n mun t o mt movieclip bay quanh màn hình trong mt vòng tròn. Làm sao  làm c iu ó? N u làm b"ng frame có th phi tn hàng trm 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 di ây, khi cng 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 vi giá tr ca radius  tng kích thc ca ng tròn. Giá tr ca centerX và centerY s c cng thêm cho các to  x, y, vì th tâm ng tròn bây gi không còn  0,0 na mà s  v trí 150,150 CODE onClipEvent(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 nhiu cách  chuy n  i t) chu.i sang s và ngc l i. Ví d' nh trng hp ngi dùng nhp mt s vào text field, b n s nhn giá tr ó và cng thêm mt. Hãy xem o n code sau ây, num là mt bi n giá tr text field CODE b = num + 1; N u num = 42, vy thì b s là 43, úng không? Xin tr li là sai, k t qu b là 421, n gin bi vì num là mt chu.i (string) ch không phi là mt s, vì th khi chúng ta thc hin phép cng num vi 1 có ngh(a là cng ký t “1” vào chu.i num ang có giá tr “42”. + làm cho Flash hi u num là mt s, b n có th s d'ng mt trong hai hàm sau ây  chuy n mt chu.i thành s. Hàm parseInt chuy n mt chu.i thành ki u s nguyên, hàm parseFloat chuy n mt chu.i thành ki u s thc. Ví d' hàm parseInt(“42”) s tr v giá tr là 42, n u chúng ta s d'ng parseInt(“42.9”) thì cng s nhn c giá tr là 42 bi 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 u s d'ng hàm parseFloat(“42.9”) b n s nhn c giá tr là 42.9, mun làm tròn các b n có th s d'ng hàm Math.round(parseFloat(“42.9”)). Hàm parseFloat cng s tr v mt mt s nguyên n u tham s truyn vào là mt chu.i s nguyên. Ví d' parseFloat(“42”) s cho ta s 42. Tr) trng hp b n mun tr v mt giá tr s nguyên, còn không b n nên s d'ng hàm parseFloat. Mt nét r#t %c bit và r#t hay ca hàm parseInt là có th chuy n mt chu.i thành mt s nhng thành nhiu d ng h s khác nhau. Hãy xem mt ví d' cho d hi u: CODE parseInt(“FF”, 16); Hàm này s tr v giá tr là 255, ý ngh(a ca nó là chuy n chu.i cha s FF là mt s hexa h s 16 thành mt s h nguyên h s 10. Ngc l i,  chuy n t) mt s sang mt chu.i, hãy s d'ng hàm toString. Hàm này s ho t ng khác vi hàm parse, bi vì nó ho t ng bên trong m.i bi n, g i hàm này sau d#u ch#m (.). Xem ví d' nhé: CODE a = 135; trace(a.toString() + 1); K t qu s là 1351. Chúng ta cng có th s d'ng hàm toString  chuy n mt s thành mt chu.i cha s di mt h s khác. Ví d' a.toString(16) s tr v k t qu là chu.i “ff” S ng#u nhiên T o s ng$u nhiên là mt ph n quan tr ng trong công vic thi t k game và mt s ho t hình. Bi vì n u không có sô ng$u nhiên thì nhng o n phim ca b n s ch y ging nhau, không còn gì thú v na! + 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 mt giá tr t) 0.0  n 1.0 nhng thng thì không tr v giá tr b"ng 1.0 Hãy xem ví d' di ây, b n s nhn c con s ng$u nhiên trong ca s OutPut CODE trace(Math.random()); K t qu tr v  i lo i ging nh 0.023268056102097, nhng m.i l n l i khác nhau. Mt ví d' khác là b n c n t o mt s ng$u nhiên t) 1  n 10, vic này r#t n gin, 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ên t) 0.0  n 10.0 CODE trace(Math.random() * 10); Nhng cái chúng ta c n là con s ng$u nhiên t) 1.0  n 10.0 ch không phi t) 0.0  n 10.0, vì th , hãy cng thêm 1 CODE trace(Math.random() * 10 + 1); Bây gi thì k t qu tr v là 1.0  n 11.0 nhng s không có k t qu 11.0. Hãy s d'ng hàm Math.floor  làm tròn xung. CODE trace(Math.floor(Math.random() * 10 + 1)); Tht ra thì con s ng$u nhiên trong máy tính cng cha tht s ng$u nhiên. Bi vì nó không tht s thay  i trong b vi x lý. Thay vào ó s có mt con s chu!n, mt con s nào ó không bi t trc c nh là gi ho%c phút ca h thng, con s này s c a và mt bi u thc r#t phc t p, r#t r#t phc t p mà chúng ta không th oán c. K t qu tr v cho chúng ta k t qu dng nh là ng$u nhiên. K t qu này s c a và mt hàm tính mt l n na là lu l i thành con s chu!n  tính ng$u nhiên cho l n ti p theo. Hãy ngh( v iu này, s ng$u nhiên trong i sng tht s cng không tht s ng$u nhiên. N u chúng ta gi mt m%t ca con xúc xc, th!y úng theo mt hng tht chính xác, chúng ta s có cùng mt k t qu +c r*i, bây gi hãy th t o mt s ng$u nhiên t) 3  n 7. Làm th nào ây? Ah, có mt th thut cho b n ây: CODE trace(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 trong ph m vi t) 50  n 100 thì sao CODE trace(Math.floor(Math.random() * 51 + 50); Là s 51 bi vì trong ph m vi t) 50  n 100 có 51 s, còn n u t) 51  n 100 s là CODE trace(Math.floor(Math.random() * 50 + 50); Mt cách  th xem ph m vi ca b n có úng nh ý ca mình không, ó là hãy th vi s nh& nh#t và s ln nh#t thay cho Math.random(). Giá tr nh& nh#t ca hàm Math.random() là 0, hãy th vi s 0 nhé CODE trace(0 * 51 + 50); Giá tr ln nh#t ca Math.random() s không chính xác b"ng 1.0 mà s là g n b"ng, vy chúng ta hãy th vi giá tr là 0.9999 CODE trace(.9999 * 51 + 50); Hãy th xem có úng không nhé! Di ây là mt ví d' na r#t thú v, movie clip ca b n s nhy  n nhng v trí b#t k, CODE onClipEvent(enterFrame) { this._x = Math.random()*550; this._y = Math.random()*400; } Luyn tp: To mt chng trình máy tính n gi n Hãy bt tay vào vic thi t k mt chng trình máy tính n gin nhé. - M mt movie mi trong Flash. Movie ca chúng ta s ging nh hình di ây Chúng ta s có 10 nút  nhp 10 s t) 0  n 9, các nút các phép toán, phím =, d#u ch#m thp phân, phím C  xóa màn hình. Mt text field %t  trên  hi n th nhng s ngi dùng b#m, text field này s liên k t vi bi n display. - Trong m.i movie clip ca m.i nút b#m, chèn o n code sau CODE on (release) { _parent.keyPressed(this._name); } Khi mt nút b#t k, c nh#n thì hàm keyPressed s c g i  level ngoài mà  ây s là level root. Hàm này s truyn tên ca movie clip. - Quay tr l i level root, m.i movie clip phi có mt tên riêng, không c trùng. +%t tên ca movie clip theo s ca nó, ví d' nút s 5 s có tên là 5, d#u ch#m thp phân có tên là “.”. D#u cng, d#u tr), d#u nhân, d#u chia, d#u b"ng, nút C l n lt %t tên là plus, minus, multiply, divide, equals, clear. - Ok, bây gi bt  u vi t code nhé! Code này s n"m  ngoài movie frame CODE // trc tiên, xoá màn hình c clearAll(); function clearAll() { display = "0"; // giá tr m%c nh là 0 memory = 0; // b nh operation = "none"; // cha có phép toán nào c newNum = true; // ánh d#u khi nào ã nhp xong mt s } Bi n display là mt chu.i (string), s liên k t vi text field hi n th ni dung ngi dùng b#m. Nó s bt  u vi giá tr b"ng 0, có ngh(a là khi ngi dùng mi bt máy lên thì s m%c nh là s 0 Bi n memory lu l i con s trc ó  thc hin phép tính. +iu này r#t c n thi t, ví d' b n b#m s 5, +, 7 thì s 5 nhp vào, khi b n b#m d#u cng, màn hình s c xóa và s 5 c lu vào memory, s 7 c nhp ti p và s thc hin phép tính 5 và 7. Phép toán ngi dùng ch n cng c n c lu vào b nh. Khi ngi dùng ã nh#n 5, +, 7 r*i, sau ó b#m d#u = ho%c mt phép toán khác thì chng trình s g i l i phép toán c ã c lu trong bi n operation  thc hin phép toán trc ca 5 vi 7. Bi n newNum nh là mt bi n c hiu  báo cho chng trình bi t khi nào s k t thúc mt phép toán. Ví d' khi ngi dùng b#m 5, +, 7 r*i sau ó b#m mt phép toán khác thì k t qu s c lu l i  tính toán ti p, lúc này phép toán cha k t thúc, newNum = false. Còn n u ngi dùng b#m d#u = thì màn hình s hin ra k t qu và k t thúc luôn phép toán  chuy n sang phép toán mi, newNum = true. - Ph n ti p theo là hàm keyPressed  x lý khi m.i nút c nh#n. Hàm keyPressed s s d'ng c#u trúc switch thay cho c#u trúc if, then, else. C hai cách u ho t ng tng t nhng cách vi t hi khác, b n hãy xem nhé: CODE // hàm này c g i bi nút nh#n function keyPressed(keyName) { // do something different for different keys switch (keyName) { case "clear" : // khi nh#n nút C clearAll(); break; case "plus" : // các phép toán cng, tr), nhân, chia operate(keyName); break; case "minus" : operate(keyName); break; case "multiply" : operate(keyName); break; case "divide" : operate(keyName); break; case "equals" : operate(keyName); break; default : // các s if (newNum) { // hi n th s mi trên màn hình display = keyName; newNum = false; if (display == "0") newNum = true; // s không bt  u vi s 0 } else { display += keyName; // ni thêm s vào màn hình } break; } } Khi ngi dùng nh#n nút C thì hàm clearAll() s c g i, tng t khi ngi dùng nh#n các phép toán thì hàm operate s c g i - Hàm operate s thc hin tính toán. Nó s tìm ra phép toán  gia con s trcó và con s hin thi, s d'ng hàm parseFloat  chuy n chu.i thành s.Operation có giá tr b"ng none khi nhp mt s mi sau khi thc hin xong phép toán và màn hình c xóa. CODE // thc hin phép toán trc function operate(keyName) { switch (operation) { case "none" : // s  u tiên memory = parseFloat(display); // lu l i s trc break; case "plus" : // thc hin phép toán memory += parseFloat(display); break; case "minus" : memory -= parseFloat(display); break; case "multiply" : memory *= parseFloat(display); break; case "divide" : memory /= parseFloat(display); break; } // equals operation is like a clear, but results are displayed if (keyName == "equals") { operation = "none"; } else { operation = keyName; // remember this operation for next time } display = memory.toString(); // display result newNum = true; // prepare for next number } Luyn tp: Làm nhng hành tinh bay quanh qu$ o Trong ví d' v lng giác trong ph n trc, b n ã bi t cách làm mt movie clip quanh quay mt vòng tròn. Bây gi hãy áp d'ng nhng ki n thc ó  làm mt movie 4 hành tinh xoay quang m%t tri, hành tinh th 3 s có mt v tinh. - T o mt movie mi trong Flash T o 6 movie clip là các vòng tròn, %t tên l n lt là sun, mercury, venus, earth, mars, and moo

Các file đính kèm theo tài liệu này:

  • pdf24_Gio_Hoc_Flash_2267_89039819.pdf