You are on page 1of 149

Gi th 01: Lm quen v i AS, Your First Look at AS AS l m t ngn ng l p trnh c xy d ng trong Flash. AS gi ng nh cc ngn ng khc nh Javascript, C++ v.v.

. nhng b n khng c n bi t cc ngn ng khc h c AS (n u c th cng d hn). B t u h c AS, th chng ta coi th AS l g, lm c nh ng g v c quan h g v i cc ch c nng khc c a Flash. Trong bi ny, b n s tm hi u coi AS ra i nh th no, xem cch vi t AS lm sao, tm hi u AS lm c nh ng g v sau sau cng l xc nh c ni lu tr AS trong Flash. i st ngha v ti n cho sau ny, mnh s khng d ch m t s t ng ra ti ng vi t nh script, movieclip v.v. Script l g? AS l ngn ng l p trnh, v i cc l nh sai khi n Flash movie lm vi c theo ng nh ng g mnh vi t (ch c mnh vi t sai ch computer khng lm sai ). Ph n nhi u th AS ch lm vi c trong mi tr ng c a Flash, tuy nhin AS cng c th g i l nh cho browser, h i u hnh v.v. Script c th ng n g n vi ch hay cng c th di c trm trang. Script c th vi t g p l i m t ch hay cng c th vi t ri rc kh p ni trong movie. Xu t x c a AS AS rt gi ng ngn ng C++, Java, javascript .v.v v c d a trn tiu chu n do ECMA (European Computer Manufactuers Association) l p ra g i l ECMAScript. Nhi u ng i hi u l m r ng AS d a trn Javascript, nhng th c ch t c 2 u d a trn ECMAScript. Lc u vi t script trong Flash r t n gi n v cho t i Flash 4 m i u c pht tri n nhng cng v n cn "th s" v i nh ng vng l p v cc i u ki n "if...else". Cho t i Flash 5 th dn Flash m i c th l p trnh v g n li n script v i cc y u t trong movie. . Sang t i Flash MX th AS tr thnh ngn ng l p trnh ton di n v i hn 300 cu l nh, hm .v.v Nh n bit AS AS n gi n l nh ng cu l nh c vi t b ng ti ng Anh (v l ny m mnh s khng d ch cc t ti ng Anh lin quan n AS, v m t ph n th mnh khng gi i thu t ng computer hay ti ng vi t cho l m) v cc php tnh v d u cu. V d sau: c

ActionScript on (press) { gotoAndPlay ("my frame"); }

B n c th gi i ngha o n m trn b ng cch tm hi u cc t chnh trong . Ch "press" g i rng ng i dng ang kch chu t vo m t ci g , (v trong tr ng h p ny l ci nt) 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 no trong movie v b t u chi t i m . AS c th lm nh ng g? Flash movie g m c cc scence (c nh), v m i c nh s c 1 timeline (th i gi n bi u???) v timeline s c cc frame (khung) b t u t s 1. Thng th ng th Flash s chi t frame 1 cho t i frame cu i c a scence v i t c c nh v d ng l i hay l pl it u tuy theo ng i lm Flash. M c ch chnh c a AS l thay i th t trong cch chi c a Flash. AS c th dng b t frame no, hay ch y ng c tr l i frame tr c hay nh y vi frame r i chi ti p. Nhng khng ch l nh ng g AS c th lm c. AS c th bi n film ho t hnh c a Flash thnh m t chng trnh ng d ng c s tng tc c a ng i dng. D i y l nh ng c b n m AS c th lm:

Ho t hnh: B n khng c n AS lm ho t hnh, nhng v i AS th b n c th t o nh ng ho t hnh ph c t p hn. V d , tri banh c th tng xung quanh mnh hnh m khng bao gi ng ng, v tun theo cc nh lu t v t l nh l c ht, l c ma st, l c ph n v.v N u khng c AS th b n c n ph i dng c hng ngn frame lm, cn v i AS th ch 1 frame cng Navigation (hng bi t d chlm 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 no, v cho php ng i dng c th chi b t c frame no .v.v Thu nh p thng tin t ng i dng (user input): b n c th dng AS h i ng i dng 1 c u h i, r i dng thng tn trong movie hay c th g i cho server hay lm nh ng g b n mu n. Thu nh p thng tn t cc ngu n khc: AS c th tng tc v i server v l y cc thng tin t server hay text file Tnh ton: AS c th lm b t c php tnh no m ton h c cho php Thay i hnh nh trong movie: AS c th thay i kch th c, mu s c, v tr c a b t c movie clip (MC) no trong movie flash c a b n. B n c th t o thm phin b n hay xo b i phin b n c a MC v i AS Phn tch mi tr ng c a my tnh: V i AS b n c th l y gi t h i u hnh hay a ch ang chi movie Flash . i u khi n m thanh trong flash movie: AS l cch t t nh t i u khi n m thanh trong Flash,AS c chi ch m, chi nhanh, ng ng, quay vng .v.v bt k m thanh no trong Flash.

Pht tri n cc kh nng c a AS i u quan tr ng nh t m AS c th lm cho b n l nh ng g cha ai ngh t i V i AS v tr t ng t ng v c sng t o c a b n th khng c g l khng th x y ra v i AS c. M c ch c a cc sch, v c a VNFX l h ng d n b n hi u bi t v Flash t

b n c th t dng n Vi t AS u

lm ra nh ng s n ph m tuy t v i m khng ai c.

Cu h i u tin nh ng ai tm hi u AS th ng h i l "Vi t AS vo u?". Flash c m t mi tr ng lm multimedia kh ph c t p. N u b n dng Flash r i hay c qua cc h ng d n i km v i Flash, th b n bi t cc y u t c b n nh timeline, key frame v.v. nu b n cha bi t th mnh khuyn b n nn tm hi u tr c r i tip t c y. trong m c Flash T ng Qu, VNFX c post link download 3 ci CD h ng d n c b n cho ng i cha bao gi dng Flash. Vi t AS time line

AS c th vi t vo key frame b t c timeline no. lm nh v y, b n ch n key frame trong timeline tr c r i b n m Action Panel ra (c th nh n F9) vit hay xem AS c vi t . Mnh khuyn b n nn dng Action Panel d i d ng Expert hn l Normal, v nh v y b n s h c c nhi u v l hn. Khi vi t AS vo key frame nh v y th AS key frame s ho t ng khi m Flash chi t i key frame . V d nh l nh AS stop() c t key frame 5 th Flash chi t i key frame 5 th s d ng l i cho t i khi c l nh khc. cch vi t ny g i l vi t vo time line M t trong nh ng l do vi t script vo time line l khi b n mu n dng function (hm), v function cho php chng ta ti s d ng o n m t nhi u ni, nhi u level khc. Vit AS nt

Cc ph n t c a Flash movie c g i l symbol (bi u t ng). th ng th symbol l cc hnh nh. V c 3 lo i symbol: button (nt), graphich (hnh nh), movie clips( o n phim). 3 lo i trn th AS khng th vi t li n v i graphic, cn button v movie clip th OK. Nt s khng c tc d ng g c n u nh khng km AS ln trn n. Mu n km AS vo nt th ch n nt trn stage (sn kh u: di n tch c a flash movie), r i sau m Action panel v vi t vo nh ta vi t vo key frame. AS vi t trn nt ch ho t Vi t AS MC ng khi chu t ho c bn phm tc ng ln nt m thi

MC khc v i graphic ch MC c t tn khi mang vo stage, MC th ng l hnh nh ng, v c th c AS km theo MC. vi t AS vo MC th cng tng t nh ta lm v i nt. AS km theo MC c th i u khi n MC hay l cc MC trong cng m t timeline hay cc timeline ngoi movie Bi t p

1. T o m t movie m i 2. t o 3 key frames 3. Dung Flash v m i hnh khc nhau cho m i frame 4. Ch y th movie (nh n Control + enter) 5. Sau tr l i timeline, vi t vo keyframe 2 o n m : "stop();" 6. Cho ch y th movie l n n a 7. V k ny b n ch th y Flash chi t i frame th 2 th ng ng, v b n thnh cng trong vi c vi t AS :

Gi th 02: S d ng Action panel, Using the Script Editing Window N u dn ho coi Timeline l nh th dn l p trnh v i AS coi Action Panel l ni c ng c a mnh, t i dn AS c th thay i, vi t t t c cc l nh. V v y r t quan tr ng l b n c th s d ng quen thu c Action Panel Flash MX s d ng cc panel gip b n c th l y cc thng tin v movie b n ang lm m t cch d dng. Khi b n ci t v chay Flash l n u tin, Flash s h i b n mu n s d ng Flash nh th no v Flash s x p t cc panel cho h p l. B n cng c th thay i cch x p t theo c a b n. Ni chung b n nn x p t cc panel c a b n lm sao cho thu n ti n cho b n nh t, v ci ny cng c n c kinh nghi m Mnh dng dual monitor, mnh close h t cc panel ch gi l i 2 ci chnh trn mn hnh, mnh ko ci action panel v property panel qua m t bn monitor, cn ci bn kia cho ci stage, n u c n m panel no th mnh dng phm t t m . S d ng Action panel c 2 cch: bnh th ng (normal) v chuyn d ng (expert). Khi m i ch y my l n u th Action panel c set d i d ng bnh th ng. d ng bnh th ng th b n khng c th nh tr c ti p cc cu l nh, m ph i ch n t cc menu bn tay tri c a panel. V i setup nh v y th b n khng bao gi ph m ph i l i khi vi t AS c . Mnh s b ph n h ng d n dng normal v mnh th y dng normal mode s khng bao gi ti n c, dng expert mode lc u hi m t nhng b o m l cc b n s h c c mau v nh lu hn S d ng Action panel v i expert mode th b n c nhi u t do hn, nhng t do ng ngha v i trch nhi m nn b n ph i c n th t khi vi t code. T normal mode chuy n sang expert mode th nh n phm t t CONTROL + SHIFT + E, chuy n ng c l i th dng CONTROL + SHIFT + N (nh kch chu t vo action panel tr c khi dng phm t t). B n c th i t Normal mode sang expert mode b t c lc no, nhng i ng c l i th ch c khi m code c a b n khng c l i. Action panel c popup menu (mi tn ch xu ng d i, n m gc ph i c a action panel) v trong c nhi u l nh r t t t cho b n khi b n dng Action panel, nh t l i v i Expert mode. B n c th tm v thay th b t c cu no, ch no trong script c a b n. Phm t t cho tm ki m l Control + F v cho thay th l Control + H, nh n F3 th Flash s ti p t c tm ch , cu b n mu n tm.

M t l nh n a l "Goto Line" gip b n tm c cu b n mu n tm. L nh "Check Syntax" s r sot script c a b n v tm nh ng l i c php. Lc m i t p vi t AS, th dng nn th ng xuyn dng Chech Syntax check l i trong sctipt. L nh ti p theo l "Auto Format" v "Auto Format Options" gip cho b n trnh by script c a b n cho d c hn. B n c th thay i mu s c, font ch v.v. cho script c a b n cho b n d c code hn b ng cch vo Edit > Preferences > ActionScript Editor. Cc ph n cn l i c a pop-up window cho php b n c xu t hay nh p AS d i d ng text file v in script ra gi y. Tuy g i l expert mode nhng th c ra dng cn d hn l normal mode. B i v d i expert mode thi Action panel ch ng khc g chng trnh "note pad" hay "text pad". B n ch vi c vi t nh ng g b n mu n vo . Khi dng d i expert mode, b n v n c th tham kh o cc cu l nh, cc c php c a AS ci khung bn tri c a Action Panel. V n u b n tn th m t s quy t t th b n s s c ch c nng "Code Hint" c a Action Panel, ch c nng ny t o nn nhng khung nh nh trong c nh ng cu l nh c a AS ng h p quy cho b n l a ch n. tr thnh m t "cao th " v AS th b n khng th no khng n m v ng v Action panel c. Sau y l bi th c hnh nho nh , gip b n lm quen v i Action panel d i expert mode 1. T o m t movie m i 2. Ch n key frame u tin (frame s 1) c a layer 1 (mnh khng d ch ch layer = l p v d trng v i class= l p) 3. M Action panel (c th dng phm t t hay vo trong ph n Window > Action panel 4. Chuy n sang expert mode (dng phm t t hy vo trong pop-up menu c a Action panel i) vi t AS 5. Vo ch 6. Vi t o n code sau: ActionScript trace ("I am expert"); Khi b n th movie th dng ch "I am expert" s c hi n ra trong Output panel, v mnh s c p n l nh trace() vo nh ng gi t i

Gi th 03: H c cch l p trnh, Learning to program L p trnh c th coi l khoa h c v ngh thu t. V v y l p trnh vin gi i c n c 2 i u ki n ki n th c v ngn ng m h dng v tnh sng t o, t khi no c tr ng h p ch c 1 cch l p trnh cho m t n l m. Trong qu trnh vi t AS, b n s t o ra cho ring mnh m t phong thi vi t code kh c trng. C th m i u b n s dng phong cch vi t code trong nh ng bi vi t ny, r i sau b n s t t chuy n sang phong cch c a ring b n Th ng th khi ni m v cc ngn ng l p trnh u gi ng nhau, v trong bi ny s bn v nh ng khi ni m l p trnh v lm sao p d ng n trong Flash Cch suy ngh c a computer Th t ra computer d t l m ch ng bi t suy ngh u, ch bi t lm vi c theo m nh l nh m t cch khng suy ngh. V v y computer khng bao gi l i m l i ng i vi t l nh sai khi n n. Cn AS ch l m t chu i l nh, ch th cho computer, hay ng ra l Flash ph i lm nh ng g trong mi tr ng runtime (runtime environment). Khi vi t AS th b n nn t coi mnh "ngu" nh computer, v c l i nh ng dng l nh AS v ngh t i k t qu c a vi c thi hnh l nh . Khi t t mnh vo v tr c a computer, b n s on c script c a b n s lm nh ng g trong mi 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 thnh di n vin tuy t v i trong vai computer th b n cng tr thnh m t l p trnh vin ti ba. L nh, hm, v php tnh L nh (command) l y u t cn b n c a AS ch th Flash lm m t hnh ng c th . L nh c thi hnh tuy t i trong cc tr ng h p kh thi. V d n u nh ta vi t gotoAndPlay(5) cho Flash t i frame 5 v chi, nhng n u trong movie khng c frame 5 th l nh khng th lm c. Hm (function, mnh s dng t function nhi u hn l hm) l ph n tnh ton cc php tnh v cho ra (return) m t k t qu . V d hm random() s cho ra m t con s ng u nhin no , hay hm sqrt() s cho ra gi tr bnh phng c a 1 s m hm nh n c truy n cho. L nh v hm u c th c truy n cho 1 hay nhi u thng s (parameter, mnh s dng t parameter thay v thng s ), v nh ng thng s gip cho hm v l nh c c th hn. V d gotoAndPlay(5) th 5 l thng s , n u nh khng c thng s ny th l nh "gotoAndPlay" s khng bi t r ph i ni Flash i u. cng nh hm sqrt() cng c n c thng s cho ra gi tr bnh phng c a s y. S khc bi t gi a hm v l nh chnh l cc php tnh. Php tnh th ng l nh ng d u +, -, *, / hay l php so snh <, ==. >. Hm c php tnh, l nh th khng

Bi n s Bi n s (parameter) c n thi t trong m i ngn ng l p trnh v n lu tr thng tin v m t ci g trong chng trnh. Bi n s g m c 2 ph n: tn v gi tr . i khi b n ch c n lu tr thng tin trong bi n s m t th i gian ng n, v d b n mu n Flash thi hnh 1 s l nh 10 l n th b n c n m s l n m Flash thi hnh l nh c th ra l nh cho Flash ngng ngay sau khi thi hnh xong l nh l n th 10. Nhng cng c lc b n c n ph i lu l i thng tin trong m t th i gian di hay trong su t qu trnh th i gian Flash chi. Tn c a bi n s th ng l m t nhm t , hay cng c th ch n gi n l 1 t , hay 1 ch ci. Thng th ng tn c a bi n s nn r rng d hi u v ni ln c tnh ch t c a thng tin m bi n s ang lu tr . V d n u b n mu n lu tr tn c a ng i dng trong bi n s th b n nn t tn bi n s l userName (mnh ngh t tn ti ng Anh d hi u hn, v ti ng vi t khng d u cng d b hi u l m), b n c th t tn bi n s l "n" nhng qu ng n, ng i c script c a b n s kh hi u, n u t l name th d trng v i cc bi n s hay t kho khc (_name l m t c tnh c a i t ng MovieClip) c. V cc l p trnh vin Khi vi t AS, b n c n lu vi t lm sao cho d hi u v d quy c tn bi n s theo quy t c sau: tn bi n s lun vi t th ng ch u tin, v vi t hoa ch ci u tin cho cc ch k ti p, v d userName, userLastName, userMotherMaidenName v.v. Lu r ng ch cc ch ci v s m i c dng u tn b ng ch ci. t tn cho bi n s , v lun b t

lu tr nhi u lo i thng tin, v ngay m i lo i thng tin cng C nhi u lo i bi n s c th c nhi u lo i khc nhau n a. Nh s (number) l m t lo i gi tr c a bi n s , v d i n cn c cc lo i khc nh s nguyn (integer), s ... khng nguyn (floating, double). B n cng c th dng bi n s ch a cc chu i (chu i g i t t cho chu i ch ci), chu i c th ch c 1 ch ci, nhi u ch ci hay l khng c g h t, t t c cc chu i sau y u h p l : "ablsdfjksl", "a", " ", "". Khi vi t m t chu i th c n dng d u ngo c kp ("") b t u v k t thc chu i. Trong cc ngn ng l p trnh khc nh Java, C++, hay ngay c ActionScript 2.0 trong Flash MX 2004 th b n ph i xac nh tr c lo i thng tin no b n s lu trong bi n s . Nhng v i ActionScript 1 (trong FlashMX) th b n khng c n lm vi c ny. V d bi n s userName lc u ch a 1 chu i, nhng sau l i ch a 1 s nguyn th cng v nh pl . Ngoi chu i v s , cn c nhi u lo i khc n a nhng chng ta s nh ng bi sau. c p t i vo

i u ki n Trong nh ng tr ng h p chng ta khng bi t nn ra l nh cho Flash ph i lm g cho thch h p v i t ng tnh hu ng th ta c th dng " i u ki n" ra l nh cho Flash.

V d n u nh b n ra l nh cho Flash khng cho ng i dng coi m t o n phim trong Flash n u nh user d i 18 tu i, n u user trn 18 tu i th hy chi o n phim y. Tr c tin, Flash s so snh s tu i c a user v i s 18, n u nh s tu i c a user tho mn i u ki n chng ta t ra th Flash s c 1 gi tr true t php so snh trn, v ng c l i s l false i u ki n s lun lun l ng (true) hay sai (false). M t gi tr ch c ng hay sai th c g i l boolean. Sau khi th c hi n php so snh v c c k t qu t php so snh trn, Flash s ch n m t trong 2 gi i php do chng ta a ra cho t ng tr ng h p. i khi chng ta c n c nhi u i u ki n hn ch l n gi n "true" hay "false", v d nh b n mu n Flash chi o n phim A cho ng i trn 18 tu i, d i 18 nhng trn 13 th chi o n phim B, v nh ng ai d i 13 th chi o n phim C. Vng l p Con ng i lm ra computer v l i khng mu n lm nhi u, m bn ci cho computer. Nh t l ph i lm i lm l i 1 vi c no th cng nhm chn. V v y vng l p (loop) l m t y u t quan tr ng trong cc ngn ng l p trnh. AS cng v y, b n c th dng vng l p trong script. Trong vng l p, " i u ki n" r t quan tr ng. M i vng l p c n c i m b t u v i m d ng v m t i u ki n bo hi u i m d ng c a vng l p. V d nh b n mu n cho vng l p ch y 10 l n th s c 1 bi n s dng m vng l p, b t u t 0, M i vng l p ch y th bi n s ny s tng thm 1. Khi t i 9 th vng l p s d ng l i. Sau y minh ho c a vng l p ny: 1. M t s l nh tr c vng l p 2. B t u vng l p, set bi n s counter = 0 3. Lm m t s l nh trong vng l p 4. Tng bi n s counter +=1 5. N u bi n s counter nh hn 9, tr l i b c th 3 6. Ra kh i vng l p, v ti p t c chng trnh. y chng ta b t d u bi n s counter = 0 v quy c thng th ng cc ngn ng l p trnh u b t u vng l p 0. M t i m ng lu c a vng l p l i u ki n c xt tr c khi th c hi n cc l nh trong vng l p. Trong vi tr ng h p, i u ki n s c xt sau khi th c hi n cc l nh trong vng l p. Chng ta cng c th ngng vng l p tr c i m d ng c a n, v i u ny s c c p t i vo bi k ti p Lm nh ng i u khng t ng L nh, hm, php tnh, bi n s , thng s , i u ki n, vng l p l nh ng ph n cn b n trong ngn ng l p trnh, v ci ny th ai cng bi t nhng lm sao ph i h p l i thnh m t chng trnh hon h o m i l ci kh. Chng trnh n gi n ch l m t t p h p l nh cho computer gi i quy t 1 v n no . V v y tr c khi vi t 1 chng trnh chng ta c n ph i xc nh "v n " c n ph i gi i quy t. V d th c t ngoi i, m b n nh b n ra ch mua g. Nhng ch

n gi n ni ra ch mua g th cha v bi t mua g s ng hay g lm r i. n u mua g s ng th mua lo i no v.v. l cha ni t i mua g ch no, gi c ra sao v.v. N u nh b n m ni r l ra ch b n thnh, mua 1 con g mi d u, n ng kho ng 2 kg, v i gi kho ng 10000 th th t l d dng cho b n ph i khng? Bi t c v n mua g r i th tm cch mua g. B n ph i "ln k ho ch", nn nh b n ch hay i taxi ra ch b n thnh. N u i taxi i hng no, tm s phone g i, v.v. cn nh b n ch i th nh tn no. R i nn m c qu n o no i ch . Ra n ch th ph i m c c lm sao, tr ti n m t hay ghi s n . B n th y khng, t m t chuy n mua g n gi n v y m c th t n c ngy tr i ln chng trnh Vi t AS, b n c n ph i lu t i t t c m i vi c d nh cch m y cho Flash c th lm ng theo nh b n trong m i tnh hu ng. Cc chng trnh c bug khng ph i v ng i vi t d m v cha ngh t i h t m i tnh hu ng thi. Tm l i, i u quan tr ng trong l p trnh l kh n ng phn tch m t v n chnh thnh nhi u v n nh cho t i khi khng cn nh hn n a, v sau xy d ng chng trnh t gi i quy y cc v n nh ln d n cho t i v n chnh. Vi t m hon ch nh B (bug) n gi n l l i c a chng trnh m b n t o ra. Bug c th ch l nh ng l i c php n gi n, hay l nh ng l i ph c t p do cch b n gi i quy t v n trong mi tr ng runtime. trnh c bug trong script c a b n th b n nn t n nhi u th gi vo giai o n phn tch, thi t k chng trnh cho script c a b n. Ki m tra cc o n code nhi u l n, v ng vai "computer" cho th t gi ng, ng suy ngh, m thi hnh cc l nh trong script c a b n. Vi t t ng o n code nh r i rp l i v i nhau (v v y m l p trnh 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 lng, v khng c chng trnh no do con ng i lm ra m khng c bug c . V v y b n ng c g ng vit code sao cho tuy t h o khng c l i. N u c bug th b n di t bug thi B n c th chu n b "chi n u" v i bug b ng cch vi t code sao cho d hi u v d c, vi t nhi u ch thch cho cc o n m. i khi di t bug (debug) r t n gi n nhng c khi cng r t kho m bi t bug u di t. Flash c km theo vi cng c gip b n debug d dng hn, chng ta s ni t i cc cng c ny trong bi t i.

Gi th 04: Vit code trong Flash, Writing code in Flash Khi b n vi t script, b n s dng t t c nh ng t kha, v k hi u v.v. V y tr c tin chng ta s phn tch m t o n script sau y. o n script ny g n vo 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); } } } Dng u tin xc nh nh ng o n code sau c kch ho t khi m user nh n vo nt. hm on(press) ch c th s d ng trong vo trong nt m thi. Ngoi ra b n c th dng on(release) n u nh b n mu n kch ho t o n m trn sau khi user nh n nt, v bung tay. D u ngo c mc {} u v cu i o n code, gi o n code vo lm m t, v u c kch ho t khi nh n nt. Cc b n lu th y o n code c vi t vo trong cho d nh n th y c o n code ny ph thu c vo on(press). Cc b n nn vi t li vo trong cho nh ng o n code ph thu c vo 1 l nh hay hm no . Dng th hai l p ra bi n s (mnh s vi t t t l var nhe) tn myVariable, v t gi tr b ng 7 cho n. tng t hng k ti p l p ra var tn l myOtherVariable v cho gi tr c a n l "Macrmedia". C 2 cu ny c k t thc b ng d u ch m ph y ; Dng th 4 chnh l vng l p (mnh s g i l loop cho ti n nhe) for (s nh c t i cc lo i loop pha d i) v cc i u ki n c a loop ny. N s l p 10 l n v i i u ki n b t u l i=0 v n s tng thm 1 cho m i l n l p cho t i khi n ln t i 9. Tng t nh on(press), for loop cng c o n code cho ring n, v c b c quanh b ng { } v o n code trong ch kch ho t khi m cc i u ki n c a for loop c th a mn. Dng th 5 l l nh trace(), l nh ny ch vi t thng tin ra output window trong lc b n lm vi c v i Flash, user s khng 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 php so snh myVariable + 3 ==5. N u m k t qu l ng th n s kch ho t l nh trace trong, v s vi t ra output window gi tr c a myOtherVariable V y l b n th y m t o n script hon ch nh b ng AS r i. Ti p theo chng ta s ni n vi ph n khc c a AS. Output window trn chng ta c nh c t i output window, m khng ni r l g. Output window l m t window trong software Flash, v ch xu t hi n khi m b n ch y th movie. N u Flash compile movie cho b n v pht hi n ra l i th Flash s vi t ra cc output window ny. Trong khi ch y th movie, th l nh trace() m i c th vi t cc thng tin ra output window. Output window r t quan tr ng trong vi t "di t b ", dng n chung v i trace b n c th quan st cc thng s , bi n s , cc i t ng, thu c tnh i t ng .v.v Trong lc h c AS, b n c th vi t m t an script ng n khng lm g c nh ng ch vi t thng tin ra output window, nh o n code trn.

Th c hnh: vi t thng tin ra output windown Cch t t nh t hi u r ch c nng c a output window l s d ng n. By gi mnh s vi t m t o n code ng n g i thi tin ra output window nhe. 1. T o m t file m i 2. Ch n frame u tin c a movie, m Action panel. Ch nh kch th c cho action panel l n vi t, v nh dng expert mode 3. Kch chu t vo ph n vi t script v vi t cu sau: trace("hello world"); 4. Ch y th movie (Control + Enter) 5. B n th y g F2) output window? (N u output window c a b n cha m th hy nh n

Gi ng nh action panel, output window c 1 ci pop-up menu nho nh trn gc ph i. B n c th dng n copy, xo hay save n i dung c a output window hay c th tm ki m ch , v.v. Ngoi ra, pop-up menu ny c ph n cho b n ch nh ch "di t b ", b n c th ch n khng c n output window in ra cc l i (none), hay ch in l i (error), hay ch in c nh bo (error) v cu i cng l in ra chi ti t cc l i hay c nh bo (verbose) Bi n s c c b v ton b trong gi th 3, chng ta c nh c n variable (bi n s ) dng lu tr thng tin. V s d ng variable trong AS r t d dng. B n ch c n n nh gi tr cho variable. V d : myVariable = 7. Chng ta t o variable c tn l myVariable v n nh 7 l gi tr cho n. (b n c th t tn cho variable l b t c g b n mun) By 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 hng ch sau: var1: 7 /var2: hello world V s 7 v "hello world" c ch a trong var1 v var2 s c in ra. Variable c 2 lo i, local v global. Global variable (bi n s ton b ) th b n c th truy c p gi tr c a n b t c ni no trong movie. T o global variable khng i h i m t b n ph i lm m t ci g c bi t c , b n c th dng n nh cch trn, v Flash t ng bi n n thnh global variable. Flash movie dng h th ng level, v timeline c a movie chnh l root leve (g c), cn cc movie clip cng chnh l m t Flash movie nh trong Flash movie l n. Cc hnh nh, script trong m t movie clip l 1 level th p hn root level.

Local variable (bi n s c c b ), khc v i global variable, local variable ch c tr truy c p trong cng m t o n code, hay trong cng m t timeline. Khi dng local variable th khi ra kh i timeline hay o n code th Flash s xo local variable ra kh i b nh . Mu n t o local variable th dng t kho var tr c tn c a local variable, v d : var myLocal = "This is local"; B n ch c n dng t kho var 1 l n thi, nh ng l n dng sau th ch c n dng tn c a local variable thi. V d o n code: ActionScript var myLocal = 9; myLocal = 11; trace(myLocal);

Php so snh v cc php tnh So snh 2 gi tr trong AS r t n gi n, dng cc k hi u ton h c nh <, >, = Khi n nh gi tr th dng d u =, v cho khc bi t th khi so snh dng ==. o n code sau xt coi gi tr c a a c b ng 7 khng, 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 dng l n = v i == th s b l i l i ny cho b n. B n c th dng == runtime ch Flash s khng c th tm c

so snh 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 trn th b n s c c "true" v "false" output window, v l n so snh th nh t th b ng nhau, nhng l n th hai th khng v ch H v h khc nhau. N u b n mu n th coi 2 gi tr c khc nhau khng th dng ky hi u != ActionScript var a = 7; trace(a != 9); trace(a != 7); Hm trace u tin s cho ra "true" v 7 khc 9, v ci th hai th s cho ra "false"

N u b n mu n th gi tr coi l n hn hay nh hn th dng > v < ActionScript var a = 7; trace(a < 8); trace(a > 6); trace(a < 1); o n code trn s cho ra "true", "true" v "false" trong output window v "a" qu th t nh hn 8 v l n 6, nhng khng nh hn 1. N u b n mu n th gi tr coi l n hn hay b ng nhau ho c l nh hn hay b ng nhau th dng k hi u >= v <= ActionScript var a = 7; trace(a <= 9); trace(a >= 5); trace(a >= 7); o n code trn s cho ra 3 k t qu "true" c . B n c th thay i gi tr c a variable v i cc php tnh n gi n nh c ng (+), tr (), nhn (*), chia (/). V d mu n thm 4 vo gi tr c a a th vi t a = a + 4. AS cng c cch vi t t t nh Java, C++ cho v d ny, a += 4 N u b n mu n thm 1 vo a th b n c th vi t nh 2 cch trn a = a +1 v a += 1 v cn cch th 3 a++ . D u ++ ch lm tng thm 1 cho gi tr thi. C 2 cch dng ++, 1 l sau variable nh cch trn, v 1 cch th tr c variable. By gi th o n code sau: ActionScript var a = 7; trace(a++); trace(a); output window b n s th y 7 r i m i t i 8. dng th 2, hm trace s cho ra gi tr c a a tr c r i m i tng gi tr c a a ln thm 1. By gi xem v d khc: ActionScript var a = 7; trace(++a); trace(a); output window b n s th y 8 v 8. dng th 2 c a v d ny, hm trace s tng gi tr c a a tr c r i m i cho ra gi tr c a a. Tng t nh ++, AS cng c cch vi t t t cho gim gi tr c a variable l d u -, -=, =- v --. Php tnh nhn v chia th ch c *, *=, /, /= thi. i u ki n Trong AS v cc ngn ng khc, if ... else chnh l cc t kho c a i u ki n. Ti ng

vi t c ngha l "n u ... n u khng". T kho if dng k t qu c a s so snh no i t i quy t nh kch ho t m t o n code. o n code sau s so snh gi tr c a variable a v i 7, n u ng th Flash s chi frame 10 ActionScript if (a == 7) { gotoAndPlay(10); } T kho if lun b t u cho 1 i u ki n v ti p theo s l s so snh. Lun t code so snh gi a ngo c n (). T t c cc code c kch ho t n u i u ki n c tho mn s trong u ngo c mc {}. 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 khng c th a mn. V d : ActionScript if (a == 7) { gotoAndPlay(10); } else { gotoAndPlay(15); } N u tr ng h p c n th a mn nhi u i u ki n th c th dng c php if .... else if ... else. B n c th c bao nhi u ci else if cng c. Ny gi ta chi ni t i i u ki n d a trn 1 s so snh, nh ng AS cng cho php dng so snh a h p (compound comparision). Trong i u ki n c a Flash ta c th dng nhi u so snh i t i m t k t qu chnh xc hn. V d n u nh a l n 10 v a ph i nh hn 15 th ra l nh cho Flash chi frame 10. ActionScript if ((a > 10) and (a < 15)) { gotoAndPlay(10); } T kho and (cn c th c vi t l &&) yu c u ph i tho mn i u ki n c a 2 php so snh. B n cng c th dng t kho or (cn c th c vi t l ||)n u nh ch c n tho mn 1 i u ki n trong 2 php so snh thi. ActionScript if ((a > 10) or (a < 15)) { gotoAndPlay(10); }

Vng l p C php c a vng l p (loop) th hi r c r i hn so v i c php c a i u kin if. nhng

n tng t nh C, C++, Java. G m c 3 lo i vng l p chnh l for loop, while loop v do-while loop for loop c coi l vng l p chnh v i t kho for v c php c a n nhn nh sau: ActionScript for(var i=0;i<10;i++) { trace(i); } N u b n cho ch y o n code trn th b n s c c t s 0 t i 9 output window. for loop tng gi tr c a variable i trong su t qu trnh th c hi n loop. i u ki n c a for loop c 3 ph n chnh, v c cch bi t b i d u ch m ph y ( . u tin l i u ki n b t u v i vi c t o local variable cho for loop var i=0. ph n ny for loop ch th c hi n c 1 l n duy nh t lc b t u. Ph n th hai l i u ki n chnh c a for loop i<10, s c th c hi n m i vng l p. N u i u ki n ny tho mn th m i ti p t c vng l p. V ph n cu i cng l php tnh cho s ti p n i c a for loop m i vng l p, y l i++ nn gi tr c a i s c tng sau m i vng l p tr c khi vng l p m i b t u. 3 ph n ny u c b vo trong ngo c n (). Cn nh ng code th c hi n trong m i vng l p th trong ngo c mc {}. By gi chng ta gi lm computer v ch y ci for loop ny. 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 hn 10 khng, n u nh hn 10 th vng l p th c hi n cc code trong {}, cn khng th t i b c th 5 3. hm trace vi t gi tr c a i output window 4. c ng 1 vo gi tr c a i, v tr v b c th 1 5. ra kh i for loop

T i b c th 5 th gi tr c a i s b ng 10 while loop v i t kho while c c php nhn tng t nh sau: ActionScript while (a > 0) { // code th c hi n trong while loop } n gi n hn for loop, while loop tng t nh i u ki n if n gi n, th c hi n cc code trong vng l p n u i u ki n c a while loop c tho mn, v v y b n d dng r i vo tr ng h p vng l p v h n, v d n n tnh tr ng treo my. Trong o n code trn, b n ph i lm th no cho co 1 lc a s nh hay b ng 0 cho vng l p ng ng l i. Gi ng nh while loop, do-while loop c c php nhn nh sau: ActionScript

do { // code th c hi n trong do-while loop } while (a > 0); Ch khc v i while loop l do-while loop th c hi n code trong vng l p tr c r i m i ki m tra i u ki n. (while loop ki m tra i u ki n r i m i ch y code trong vng l p) Mu n ph ra kh i qu trnh t hnh c a 3 lo i loop trn th dng l nh break v continue. L nh break s ph ra kh i loop hon ton trong khi l nh continue th ch ph ra kh i vng l p hi n t i v b t u vng l p m i. T o ra m t v d c th r t ph c t p, nn chng ta t m khoan bn t i 2 l nh ny cho t i cc bi sau. Hm Cho t i by gi cc script c a chng ta u c vi t vo frame u tin c a moive, cch ny ch t t cho nhng chng trnh n gi n, nhng n u m chng trnh tr nn ph c t p th y khng ph i l cch. Hm (function) s cho php chng ta c u t o v qu n l code d dng hn trong cc chng trnh ph c t p. D i y l m t function n gi n: ActionScript function myFunction(num) { var newNum = num + 3; return newNum; } Fuction b t u b ng t kho function, tn c a function c th l b t c ch g nh cch b n t tn cho variable, nhng lu cch t tn cho fuction lm sao ng i ta c tn c th bi t c ch c nng c a function. Theo sau tn c a function s l thng s (parameter, cho ng n mnh s g i thng s l param trong cc bi vi t ny) c trong ngo c n (). Function c th co 1 hay nhi u param hay khng c n param cng c. Param ch ng qua ch la variable c dng trong function, nhng variable ny c truy n t ngoi vo khi function c g i. o n code c function th c hi n s n m gi a ngo c mc {}. By gi chng ta phn tch o n code trn. Khi function myFunction c g i, th param num c truy n vo, sau function myFunction t o ra m t local variable tn 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 dng l nh return n nh gi tr c a newNum l k t qu c a myFunction. L nh return l l nh c bi t ch c dng trong function m thi. L nh ny s k t thc function. s dng function ny, dng n nh m t l nh hay hm c a AS, gi ng nh l trace() v y . y l v d : var a= myFunction(7);. Tr c tin t o m t local var r i sau n nh gi tr c a local var ny b ng k t qu c a myFunction v i param l 7, v cu i cng thi local var ny s b ng 10. M t trong u i m c a function l b n c th ti s d ng. D i y l hng code dng chung 1 fuction v cho 3 k t qu khc nhau ActionScript

trace(myFunction(7)); trace(myFunction(13)); trace(myFunction(2)); Khi ch y o n code ny th output windown s l 10, 16 v 5. V c th ti s d ng nn chng ta ch c n thay i code trong myFunction th t t c cc k t q a c c t g i function ny cng thay i theo lun. Dot Syntax M t i u b n s th y r t nhi u trong qu trnh h c AS l dot syntax (h ng bi t d ch sao by gi ) Dot syntax l phng php c dng trong l p trnh theo h ng i t ng (oob: object oriented programming). y l m t v d c a dot syntax. N u b n mu n l y cn bnh phng c a m t s , v trong Flash c s n function lm chuy n ny r i, v hm ny thu c v i t ng ton, tn l Math. V y mu n g i function ny th tr c tin b n ph i g i tn i t ng m fucntion ny tr c thu c, l Math, theo sau l d u ch m (dot), v r i t i tn c a function l sqrt. Cch vi t nh sau: ActionScript var a = Math.sqrt(4); M t cch dng dot syntax khc l t ng, nh l movie clip. ActionScript var a = myClip._x; var a = myClip.myVariable; truy c p c tnh hay variable c a m t i

c p n i t ng Math v MovieClip trong cc bi t i, cn by gi Chng ta s th quan tr ng l b n n m c khi ni m v dot syntax. Ch gi i M t trong c tnh c n c c a l p trnh vin l vi t code lm sao cho d c v d hi u. Nhng nhi u khi d khi vi t c c g ng cch m y th nh ng o n code v n kh hi u cho ng i xem, v v y m i c n nh ng l i ch gi i. Mu n ch gi i trong AS th ch c n dng k hi u// tr c cu ch gi i . N u ch gi i nhi u hn vi dng th c th dng 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

// add 2 to b b += 2;

Debugging Th ng th th i gian di t b t n g n 1/3 th i gian pht tri n chng trnh. N u b n n m v ng c "ngh thu t" di t b th b n s rt ng n c r t nhi u th i gian. C 3 cch di t b h u hi n l: phn tch, vi t message ra output window v dng AS debugger. V i cc lo i b n gi n th phn tch cc o n code s gip b n b t trng con b c n di t. Dng output window theo di cc i t ng, vng l p, i u ki n, v nh vo b n c th bi t c ch no trong code c v n , cu i cng l dng AS debugger c s n trong Flash. Debugger window cho php b n c th coi h t t t c moi thnh ph n trong movie c a b n, cho php b n dng AS b t ch khi no v ch no b n mu n. Tham kh o thm ph n tr gip c a Flash bi t cch dng debugger.

Gi th 05: i u khi n lu ng movie, Control the flow of the movie S d ng AScript l cch i u khi n movie n g n nh t, nhung l i hi u qu nh t. Chng ny b n s h c cch :

lm sao d ng Movie trn frame Sao nh y t frame ny n frame kia t o nt cho php 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 cu l nh stop: ActionScript stop();

Khi b n dng cu l nh ny , movie ch t m d ng frame m b n t cu l nh. Cc animation bn trong movieClip v cc file h a v n ti p t c ch y trn frame . Nhng 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 lnh n gi n l l nh play.. ta s bn n n sau. V d T i frame 1, b n hy th m t text box v vi t vo Ch A T i frame 2, b n hy th m t text box v vi t vo Ch B T i frame 3, b n hy th m t text box v vi t vo Ch C By gi b n hay t cu l nh stop(); vo Frame 2, b n se th y ch A xu t hi n r t

nhanh r i n ch B, nhng ch C s ko th y xu t hi n,, n gi n v cu l nh stop() d ng animation c a timeline t i Frame 2. Nh y t frame ny n frame kia

M t cu l nh c b n c a AS l cu l nh gotoAndPlay. Cu l nh ny gip b n c th nh y t frame ny n frame m b n mu n. B n c th s d ng s th t c a frame hay l tn c a frame

ActionScript gotoAndPlay(7); gotoAndPlay(20); gotoAndPlay("my frame label")

b n c th s d ng nhi u movies , hay cn g i l c nh(scene) . N u Cu l nh gotoAndPlay ch c m t tham s , th tham s l frame. Nhng n u c 2 tham s ,th tham s u ti n l tn c a scene, cn tham ss th 2 l s th t c a frame hay tn frame.

ActionScript gotoAndPlay("My Scene","My Frame");

Khi b n dng gotoandPlay,movies s nh y n frame m b n g i , v ti p t c ch y, nhng n u b n mu n n nh y n frame v d ng l i, b n co th s d ng gotoAndStop . Cu l nh ny dng y h t nh gotoAndPlay, v i l a ch n 1 tham s hay 2 tham s . Ngoi ra c thm 2 cu l nh cng h at and prevFrame hi u r hn v cc cu l nh ny, ta s T o nt (button) Nt l m t trong 3 bi u t ng (symbol) chnh trong Flash, 2 ci kia l movie cilps v hnh T o m t button C nhi u cch t o nt. M t trong nhng cch l ch n Insert, New Symbol t Menu. M t h p tho i s hi n ln v h i b n t tn v l a ch n bi u t ng c a b n l lo i Movie clip, button, hay h a. B n hy ch n Button. By gi trong c a s chnh c a Flash s thay i, timeline c a button s thay th timeline c a movie chnh. C 4 frames trong timeLine c a button. Chng c tn l Up, Over, Down, HIt. CHng th hi n 3 tr ng thi c a button, v vng h at ng c a button. ng gi ng gotoAndStop , l nextFrame

i ti p ph n sau...

N ub n tm t h a, ch ng h n l m t vng trn, trong frame u tin(UP) v ko c g trong 3 frame sau, tr ng thi Over v Down c a button s gi ng nh tr ng thi c a Up. Vng ho t ng c a button cng tng t nh v y. M t khc , b n c th t o cc hi u ng khc nhau cho button c a b n. V d n u b n i m u c a vng trn l mu xanh Frame OVER,c ngha l khi b n a chu t qua button, button s chuy n sang mu xanh. Khi b n t o xong 1 button, b n tr lai movie timeline chnh. V button c a b n s n sng trong th vi n c a FLash. B n ch vic b m F11, tm button c a b n v ko th n vo ni no b n c n trn c a s thi t k . T o script cho button t script cho button, u tin hy ch m m t button. Sau vo c a s Action b ng cch b m chu t ph i ln button v ch n Action t menu xu t hi n. Expert. B n c th ki m tra Hy Ch c ch n r ng c a s Action c t ch bng m t popup menu gc trn cng bn ph i c a c a s . y l m t o n m thng th ng cho button. B n c th sau ki m tra movie xem n h at ng th no. ActionScript on (release) { trace("You clicked the button!") } on : l m t keyword, c g i ra x l m t s ki n Release : L m t s ki n, khi ng i s d ng click vo button v nh chu t ra. o n m trace s c th c thi. Ngoi ra Release c th thay th b ng s ki n PRESS, s ki n ny ch khc Release ch khi ng i s d ng b m vo button, o n m trace s c th c thi m ko c n ph i th chu t ra. Trace : l in ra mn hnh dng ch YOU CLICKED THE BUTTON. Th c Hnh: T o m t Slide Show n gi n... C l ko ph i di n t nhi u v Slide Show, cc b n hy t ng t ng ging Power Point.. Khi chng ta b m chu t, cc slide s chuy n sang slide khc. 1. M Flash, ch n New 2. Trong Layer 1, t Frame 1 n Frame 4, b n hy t cc bi u t ng hay hnh nh, text khc nhau phn bi t c cc frame 3. Sau b n t o m t layer m i, hy t m t button ln layer ny.Ti p theo b n ch n t n trong c a s m v

Frame 4 c a layer 2, v b m F6. i u ny trong t t c cc Frame c a Layer 1.

m b o cho button c a b n s xu t hi n

By gi copy o n m sau vo button c a b n, ch nh l copy vo action c a button, ch ko ph i vo b t k frame no ActionScript on (release) { nextFrame(); } Cu i cng ch n Frame 1 Layer 1 action v chn o n code sau ActionScript stop(); Hy ch y th slide show c a b n = cch b m Ctrl Enter. 5) Xy d ng m t presentation n gi n: Presentation ny s d ng nguyn t c ging h t nh v d Slide show hay down load file FLA xem .. easy

trn, cc b n

Gi th 06: i u khi n movie clip, Controlling Movie Clips 6th Hour i u khi n movie clip B ns h c 1- ra l nh cho movie clip 2-T o playback cho animation 3-Tm hi u ch(target) c a movie clip 4-T p vi t code cho movie clip 5-T o movie clip c th ch y li l i.

1) Ra l nh cho movie clip : M t movie chnh c th r t n gi n. N ch c n 1 frame v m t movie clip. Nhng b n thn movie clip l i c th l m t animation di. Vi c ny d dng th c hi n m ko c n Actioncript. i u khi n c movie, b n ph i t tn cho movie clip. Ch r ng m t movies clip c 2 tn, m t tn s d ng cho timeline . M t tn s d ng cho actioncript. 2 tn ny c th t trng tn nhau ho c khc tn nhau. Lm sao t tn cho movie clip : Ch n insert -----> New Symbol (ho c b m Ctrl F8), t tn cho movies clip (nh l a ch n option movies clip, ch ko ph i l button hay graphic) Tn ny c s d ng cho timeline. vd: gear animation Th movie gear animation vo c a s thi t k .. PHa d i c a s properties, ban s

th y box instance name.. t tn cho movie tn ny c s d ng cho Action script , vd : gears v nh v y, khi b n l p trnh , tn s d ng l gears , ch ko ph i gear animation. b n c th s d ng d u ch m a ra cc lnh cho movie c a b n. v d ActionScript gears.stop(); gears.gotoAndStop(5); Nh r ng movie clip lun c level. N u o n m c t trn chnh movieclip, b n ko c n s d ng tn movies, ch c n gotoAndStop();. N u b n t c tn movie vo, Flash s tm movie c a b n t timeline chnh.. T c l s ph i qua 2 level. ---> ch m hn cht. 2)Animation Playback Controller Hy down load source code t trn ph n download v xem. V c b n, chng ta lm cc vi c sau: - T o m t Movie , t tn l gear animation - t instance name l gear(h ng d n trn) - Frame u tin c a time line chnh, chn code ActionScript gears.stop(); -T o cc button Advance, Previous, Play, Stop, and Rewind -Code cho cc button l n l t 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 m t movie Level c b n u tin c a Flash l time line chnh(Level 0). N u b n mu n ra l nh cho time line ny, b n dng code sau _root.gotoAndStop(); th m ch n u b n t code gotoAndStop();

time line chnh, b n ko c n _root. Ch c n

Gi s n u b n c m t movie trn time line, t c l b n c m t level su hn(level 1). N u b n t time line chnh, mu n goi movie gears , b n ph i dng cu l nh gears.gotoAndStop(7); _root["gears"].gotoAndStop(7); this["gears"].gotoAndStop(7); C 3 cch trn u gi ng nhau.. Tuy nhin this c ngha l level hi n hnh. V d trn, level hi n hnh c a this l level 0. Nhng n u code t trong movie, level hi n hnh s l level 1. B n ph i ch . Gi s b n c m t movie khc bn trong movie, t c l b n c level 2. N u b n mu n t level 1 g i n level 2, b n ph i dng _parent. Parent dng gi ng nh root, nhng khc ch , n c g i t level trn. Cn 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 gn bi n cho movie clips ActionScript var whichClipToUse = "gears"; this[whichClipToUse].stop();

Thu n l i c a v c s d ng this nhi u hn root ch , ko ph i lc no m i th cng x y ra time line chnh, i khi ta ch mu n n x y ra m t level nh t nh. B i v y this l cch t t nh t goi level c a m t movie. Tuy nhin trong nh ng trng h p n gi n, hay nh t l c t tn cho movies. 4) M cho movie clip

Chng ta bn v button l

trn, v y v c b n movie clip script cng gi ng button,

ActionScript onClipEvent (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 ny x y ra khi movie clip xu t hi n l n u tin trn mn hnh . N ch x y ra m t l n. Nh r ng ngay c khi time line chnh b ng, movie clip n m trn time line v n ti p t c ch y. S kin enterFrame x y ra lin t c bn trong movie clip m i khi n m t frame m i. S ki n ny s th c thi o n m m t cch lin t c cho n khi n b k t thc. ActionScript onClipEvent (enterFrame) { trace("This clip has entered a new frame."); }

by gi hy copy 2 o n code trn vo c a s action c a timeline chnh 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 dng 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 Clips nh v tr,

M t movie clip (MC) bao gi cng c cc thu c tnh, cho php b n xc phng to thu nh , quay, th m ch lm n bi n m t. Chng ny cc b n s bi t cch: -thay i v tr c a mc -xc inh v tr chu t -lm sao quay m t mc -lm sao phng to mc -lm sao movie invisible

1) V tr c a MC: M i th trong Flash u c v tr. V tr ny c o b ng PIXEL. Gc trn cng bn tri c a mn hnh l v tr (0,0) .N l v tr giao c a hng ngang v c t d c. N u b n s d ng m t movie m c nh, th gc d i bn ph i s l 550,400. C nghia l 550 pixel t bn tri sang v 400 pixel t bn trn xu ng. nhn hnh sau r hn.

2) V tr c a Mouse: Cng nh movie, mouse cng c th xc inh c t a .. CH thu t ng mouse y l ni n con tr (cursor), ch khng ph i con chu t b n ang c m trn tay.. ^^

C hai thu c tnh c b n c a con tr , l _xmouse v _ymouse. V y _xmouse v _ymouse l thu c tnh c a chnh i t ng m chng c gn. N u b n s d ng trn time line chnh, th chng l thu c tnh c a time line. N u b n s d ng chng trn movie clip, th n l thu c tnh c a movie clip. N u xmous y mouse l thu c tnh c a time line chnh, n s m c nh l gc tri trn cng. N u xmouse ymouse l thu cc tnh c a 1 movie clip, n s m c nh trung tm c a MC. H u h t cc tr ng h p thu c tnh lin quan _root._xmouse v _root._ymouse y l m t 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 cc c p s c in ra, chnh l t a x,y mouse .Hy d ch chuy n mouse ln gc tri trn, b n s th y v tr mouse l 0.0. ho c gc ph i d i, t a l 550 400. Ch : khi b n a chu t ra ngoi Flash window, t a chut xmouse y mouse khng thay i. N u b n di chuy n chu t th t nhanh t trung tm c a c a s ra ngoi c a s , cc gi tr c v n cho n khi b n quay tr l i c a s . V v y, b n ph i lun ln k ho c c n th n tr c khi dng xmouse, y mouse 3) Lm movie quay M t thu c tnh khac l thu c tnh _rotation Thu c tnh rotation ch p nh n gi tr l gc . M t vng trn chia ra 360 , mi n gi tr c thu c tnh rotation l -180 v 180. B n c th s d ng gi tr integer ho c floating point. Gi tr c a _rotation lun lun trong vng -180 v 180, v d 179, ho c -179. Nhng n u b n t n l 181, n s hi u thnh gc -179. v y quay m t movie, n gi n l t gi tr cho n, b n cng c th s d ng cc bi u ton ++, += thay i gi tr . Hy xem v d sau CODE myClip._rotation = 90; myClip._rotation++; _root["myClip"]._rotation = 45; this._rotation += 0.5; n movie chnh, b n nn dng cch

4) Co gin n h i m t MC: B n c th lm co gin, thay Scale thu c tnh THu c tnh i chi u di chi u r ng c a movie clip

lm vi c ny l _xscale cho chi u ngang v _yscale cho chi u d c.

Cc gi tr c gn cho x,y scale l ph n trm. C ngha gi tr 100 l 100 ph n trm , y l thu c tnh m c inh cho m t movie clip g c. B n c th s d ng cc s nh hn nh 50 lm movie co l i. Ho c c th s d ng s to hn, 200 gin movie ra. Th m c th dng cc gi tr m l t movie. v d 07mousesclae.fla ch a m t o n m m chgn ta s g p r t nhi u sau ny. N ki m tra t a c a mouse,. Sau xc inh t mouse n trung tm movie xa bao nhiu. R i n s d ng kho ng cch ,c chi u cao chi u r ng tnh 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 thu c tnh m i, _width v _height tr v chi u cao v chi u r ng c a movie clip b ng Pixel. CHng c lu gi trong onClipEvent (load) v khi ta c n l y l i gi tr g c c a movie. Thu c tnh _width, _height S khc nhau gi a scale v width,height scale s d ng gi tr ph n trm. Cn 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. D i y l m t 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 ny ng n g n hn trn. b i v n ko s d ng s kin onClipEvent(load) b i gi tr chi u di chi u cao c a movie g c ko c n lu tr . y l m t v d cho th y s d ng width v height ti n hn d ng xscale ,y scale. 5) Visibility M t thu c tnh khc c a MC l thu c tnh _visible , gi tr c a thu c tnh ny l gi tr boolean true , false. CODE myClip._visible = false; hy xem v d 07visible.fla r hn.

Gi s ta khng mu n movie bi n m t h n, m ch b m i, ta s d ng thu c tnh _alpha . Thu c tnh c gi tr t 0 n 100 CODE myClip._alpha = 50; Thu c tnh alpha l knh mu th 4, tn l alpha channel . 3 knh u tin l red ,green, blue t o ra 7 mu c u v ng. Khi b n nghe n h a 32 bit, c ngha l n 4 knh mu.. Cn 24 bit c ngha ch c 3 knh u tin. N u gi tr c a _visible l 0 th movie l trong su t hon tan v c th nhn th y t t c m i th pha sau movie. Nhn hnh sau xem cng 1 movieclip nhng v i 3 gi tr alpha khc nhau, 10, 50 v 100 (t tri sang)

Gi th 08: ch n, ko th movie clip, Moving and Changing Movie Clips 1. Selection

B n bi t cch h c sao t o m t button v cho php ng i s d ng click vo lm s ki n ho t ng. Tuy nhin y ta s h c cch click vo ch n l a m t i t ng trn mn hnh. T o m t ch n l a, c ngha l user click vo item , nhng khng c g x y ra. Nh v y, ng i dng c th l a ch n v thay i l a ch n. Chng ta s s d ng l a ch n nh b c u tin h c ko th movie. Button bn trong m t Movie method.

M t movie khng th ph n ng v i mouse click. Khng th s d ng cc s ki n nh on (release) hay (Press). v v y ta ph i tm cch nh l a n. l s d ng m t button bn trong movie. Button c th x l c mouse click, v mi n l n c l n bao trm m t movie. Hy xem v d 08buttoninmc.fla . Ta ch nhn th y m t movie clip trn mn hnh.nhng th c ch t bn trong c a movie clip l m t button. t o ra kh nng select, ta ph i t o nhi u frame.Frame u tin ch a m t button tn l offbutton. Button ny c m l

CODE on (release) { this.gotoAndStop(2); } b ng this, button s g i n movie clip m n n m trn y. Frame th 2 ch a nt tng t nhu frame 1 , tn l onbutton, nt ny c m u hi sng hn ng i dng nh n ra khi n c ch n. CODE on (release) { this.gotoAndStop(1); } cu i cng CODE stop(); t vo frame 1

By gi hy ch y

xem.

Phng th c hitTest C cch khc lm movie c th s l mouse click m khng c n button, l s d ng s ki n onClipEvent(mouseDown) ho c l onClipEvent(mouseUp)v d CODE onClipEvent (mouseUp) { this.gotoAndStop(2); } Hy ch y v d 08twomcs1.fla xem.B n s th y t i sao onClipEvent(mouseUp) khc v i on (Release) . N u b n click vo movie, c hai u ph n ng.B i v t t c movie clip nh n s ki n mouse up c g i n cho chng.

Quy t inh movie no c click. C m t cch click vo movie mnh mu n. l s d ng v tr chu t S a o n m thnh nh sau

xc

nh.

CODE onClipEvent (mouseUp) { if (this.hitTest(_root._xmouse, _root._ymouse)) { this.gotoAndStop(2); } } v y b ng cch rng bu c movie clip v i mouse location , ta c th click movie ta mu n. VI t m cho selection: Chng ta ph i cho php User click ln movies nhi u l n v thay i tr ng thi c a MC t b t sang t t, hay t t sang b t. o n m sau c th xc nh movie ang tr ng thi no v g i n n frame khc. VI c ny th c hi n b ng thu c tnh _currentFrame . Thu c tnh ny 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); } } } By gi b n th y cc cch t o s ch n l a movie. Cch th nh t ti n l i n u b n mu n dng c cc trang thi khc nh Over,up , down.. Cch th hai th khng c n nhi u bi u t ng trong th vi n. Enjoy.. 2) Ko m t movie clip By gi ta s h c ko m t movie. C 2 cch ko movie, cch th nh t l s d ng l nh . Cch ny r t d s d ng nhng n khng cho b n nhi u l a ch n trong vi c s a i v gim st movie. Cch Drag c b n: 2 cu l nh drag co b n l :startDrag v stopDrag. b n dng startDrag khi b n mu n movie c a b n i theo chu t, cn stopDrag khi b n mu n movie c a b n khng theo chu t n a. y l o n code c b n : CODE onClipEvent (mouseDown) { if (this.hitTest(_root._xmouse, _root._ymouse)) {

this.startDrag(); } } onClipEvent (mouseUp) { if (this.hitTest(_root._xmouse, _root._ymouse)) { this.stopDrag(); } }

S ki n onClipEvent nhn tng t nh ta lm trn. Chng s d ng hitTest nh n bi t movie no ang c click. V sau cu l nh startDrag v stopDrag c s d ng. Khi chu t c b m xu ng, cu l nh startDrag th c thi. V ng c l i, khi chu t th ra, stopDrag th c thi.

Hy xem movie, b n s th y v i cc cu l nh drag, b n c th ko cc movie m t cch c l p. Nhng ch r ng b n khng th ko 2 movie cng m t lc. Ch m t movie c ko t i m t th i i m. V v y b n nn c n cch drag ph c t p v linh ng hn lm ng d ng hay game. Note: startDrag c 5 thm s . Tham s th nh t l gi tr True(ho c False) quy t nh vi c trung tm c a movie clip c kha v i v tr chu t hay khng. Cc tham s cn l i l left, top, right, bottom. N u b n t chng, movie c a b n ch c th c ko theo cc rng bu c .

Ko nng cao By gi ta h c cch ko movie m ko dng cu l nh startDrag v stopDrag. V y lm th no?? 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 ny s t cho bi n global tn l dragging gi tr false. Khi bi n ny true, t c l bo hi u r ng movie c th c ko. Th hai, ngi dng click vo m t movie. C ngha l dragging = true . Th ba, qu trnh ko s ti p t c di n ra b i s ki n onClipEvent(enterFrame). S ki n ny ch n gi n gn _x v _y (thu c tnh c a movie clip) cho _root._xmouse v _root._ymouse(thu c tnh c a con tr ). Th 4, n u ngi dng th chu t , th bi n dragging c gn 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 ch a 2 MC. Ki m tra movie, nhng ch s d ng MC bn tri. y l MC lm theo o n code trn. Ch xem trung tm movie c kha v i v tr chu t nh th no. N lm movie nh y ngay l p t c n u b n click vo n. Thng th ng, khi b n mu n ko MC ln mn hnh, b n khng mu n n nh y t i lm kh p v tr chu t v i trung tm c a MC. Hy ko file xung quanh mn hnh.B n s th y khi b n click chu t vo b t k i m no trn movie, movie s l p t c lm kh p v tr click chu t v i trung tm movie. i u ny cng tng t v i cu l nh startDrag . trnh i u ny, chng ta ch c n thm m t o n code nh . Khi ngi s d ng b m chu t, chng ta s l y offset, y l kho ng cch t chu t cho n trung tm c a movie. Sau , thay th b ng vi c gn v tr chu t n trung tm movie, ta se thm vo offset cho MC lun lun xu t hi n offset b i cng m t gi tr khi ng i dng ko. T ng t ng , v d ngi dng click vo m t i m cch trung tm movie 5 pixel. Sau ta lun mu n kho ng cch 5 pixel c duy tr. i u ny lm cho ng i dng c th click vo b t c i m no ko movie. y l code cho movie 2(bn ph i) 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; } }

Hy xem movie 3) Ko v th

th y khc bi t gi a 2 o n code.

By gi ta bi t ko movie, v y ta s th n u.? V n l b n mu n theo di hnh ng c a ng i s d ng v xc inh ng i s dung t movie u. Basic Drop Zone Ch c nng hitTest c th c s d ng xc o n m sau, chgn ta s d ng l nh startDrag ta c th t p trung vo cc ch c nng m i. nh khi MC b ln nhau. Trong o n m ko th n gi n i, nh

Trong o n m sau, ch c nng hitTest c s d ng so snh MC c ko v i m t movie khc tn l dragZone trn m t lvl(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 khng c s d ng nh cc bi tr c, chng ta thay th v tr _x v _y b i m t movie khc. Lo i hitTest ny so snh v tr v vng c bao ph c a 2 movie clip. Trong tr ng h p ny, n c so snh v i _parent.dropZone. N u c 2 movie ln nhau, hitTest tr gi tr True. xc inh xem MC no ang t n t i, hnh ch nh t c a c 2 movie u c s d ng. i u ny c ngha l khi b n s d ng 2 hnh trng, nh trong v d , b n thn chnh cc vng trn khng c ch m vo mi n l cc hnh ch nh t c a 2 movie c dng. Hy xem hnh minh h a. T t c cc movie Dragme u n m trn DropZone.

C 2 cch s d ng hitTest. Th nh t l s d ng t a x,y. Chng ta c th s d ng movie clip nh v tr x,y, r i sau s d ng dropzone nh m t movie clip th nh t. CODE if (_parent.dropZone.hitTest(this._x,this._y)) {

V i o n code ny, thay th v d trn, movie clip s n m bn trong hnh ch nh t c a vng dropzone. Chng ta c th thm m t b c n a v i hittest. B ng cch thm tham s th 3 cho hitTest, chng ta c th dng hitTest xem hnh d ng chnh xc c a movie clip v xc inh v tr x,y. Bi n th 3 ny c n gn true n u b n mu n hnh vi ny. N u n false, n se hnh ng gi ng nh ch c nng hitTest bnh th ng. y l o n code CODE if (_parent.dropZone.hitTest(this._x,this._y,true)) {

By gi movie ko th c a ta h at ng t t hn. N u b n s d ng v d 08drop.fla, movie bn ph i s s d ng o n m gc, v n n m trn hnh ch nh t c a dropzone. Cc movie khc s d ng o n code ph c t p hitTest v chng c trung tm nm bn trong hnh d ng g c c a dropzone.

Gi th 09: L y thng tin t ng i dng, Getting input from the user Cho t i by gi , qua 8 gi lm quen v i AS, t t c cc tc ng c a b n ln trn flash u c lm qua chu t. Nhng ngoi chu t, b n c th dng bn phm n p thng tin vo Flash. Lm sao pht hi n khi ng i dng b m phm

C 3 cch pht hi n khi m t phm tn bn phm b nh n. 1 l dng nt, 2 l dng i t ng Key, v 3 l dng "listener" (ch c Flash MX v MX 2004) 1. Pht hi n qua nt: B n c th dng nt pht hi n khi ng i dng s d ng bn phm. B n chi c n dng l nh x l s ki n on cho o n code c a nt . V d o n code sau s kch ho t khi m ng i dng nh n phm "a". ActionScript on (keyPress "a"){ trace ("Key 'a' pressed"); } Trong movie m u 09keybutton.fla c m t nt n gi n n m trn mn hnh v vi v d trong . N u b n cho ch y th movie v nh n phm "a" th Output window s c vi t ra dng ch "Key 'a' pressed.". X l d ki n on(keyPress) nh l ph i phn bi t d ng ch (case-sensitive) nn n u b n ch code cho n nh n phm "a" th n s khng th nh n c phm "A". May m chng ta c th dng bao nhi u b x l d ki n cng c. N u b n mu n x l cc phm khc, nh cc phm mi tn, enter, thanh di (space bar) ... th b n ph i dng cc code dnh ring cho chng. V d b n mu n x l phm mi tn tri (left arrow key) th dng o n code sau: ActionScript on (keyPress "<Left>") { trace("Left pressed."); } V sau y l cc code dnh cho cc phm

c bi t:

<Right> <Left> <End> <PageUp>

<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 nt v nt c phm t t l "b". V y khi b n nh n nt hay l nh n phm "b" th code c a nt s c kch ho t. ActionScript on (keyPress "b", release) { trace("'b' pressed or button clicked."); } Cc v d trn u c trong movie m u 09keybutton.fla i t ng phm (key object)

2. Pht hi n qua

M c d nt r t h u ch trong vi c pht hi n khi ng i dng nh n phm, nhng nt l i khng th pht hi n c tr ng h p khi ng i dng nh n phm v khng nh t tay. V d n u b n lm m t game b ng Flash, v trong ng i chi cho th lm cho cc nhn v t trong game di chuy n lin t c n u nh h nh n phm mi tn v khng nht tay ln. i t ng Key l t p Cho nh ng tr ng h p nh v y, b n ph i dng i t ng Key. h p c a m t s hm (function) v h ng s (constant) c xy d ng s n trong Flash. B n c th dng cc hm v h ng s ny bit c cc phm ang b nh n hay khng. V d , n u mu n ki m tra coi phm mi tn tri c b ang nh n hay khng th dng o n code sau: ActionScript if (Key.isDown(Key.LEFT)) { trace("The left arrow is down"); } Hm Key.isDown s cho ra k t qu ng hay sai ph thu c vo thng s c ph i l phm ang b nh n hay khng. H ng s Key.LEFT t ng trng cho phm mi tn tri. v y khi mi tn tri b nh n th output window s cho ra hng ch "The left arrow is down". D i y l cc h ng s tng t nh Key.LEFT c p trn

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 mu n ki m tra xem n u nh ng phm bnh th ng ang b nh n th b n ph i dng Key.getCode l y m s c a phm dng trong hm Key.isDown. y l code m u khi b n mu n ki m tra phm "a" ActionScript if (Key.isDown(Key.getCode("a")) { trace("The left arrow is down"); } Cho 2 v d trn, b n c th coi source Fla 09keyobject.fla 3. Key Listener Key listener c dng nh n. quan st bn phm v thng bo cho Flash khi phm c

cch th 2 chng ta dng i t ng Key ki m tra coi phm c b nh n hay khng, nhng n khng th bi t chnh xc lc no th phm b nh n. N u m ng i dng nh n phm qu nhanh, tr c khi onClipEvent(enterFrame) k p kch ho t i t ng key ki m tra th Flash s khng bao gi bi t c ng i dng nh n phm. M t b t ti n n a khi dng cch th 2 l n u b n mu n ng i dng nh n phm nhi u l n th i t ng Key s khng phn bi t c l 1 l n nh n di hay l nhi u ci nh n th t nhanh. V v y Flash MX, MM cho chng ta thm m t l a ch n n a l Key listeners. b n c th dng "listener" (c th hi u n nh m t quan st vin) theo di s ki n c a bn phm v thng bo cho Flash ngay khi phm 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 ny ch vo s ki n c a bn phm. y l code cho t o listener ActionScript Key.addListener(_root);

L nh Key.addlistner t o listener cho i t ng trong thng s l _root. V ny s c thng bo v s ki n c a bn phm.

i t ng

Trong o n code trn, _root l i t ng c thng bo v s ki n c a bn phm. Nhng khi nh n c thng bo th _root ph i lm g? V v y chng ta c n ph i vi t code x l s ki n cho _root. V d o n code sau s c th c hi n khi _root nh n c thng bo v s ki n bn phm. ActionScript _root.onKeyUp = function() { trace(Key.getAscii()); } Khi ng i dng nh n phm, r i nh t tay ln th s t o ra s ki n onKeyUP, v s ki n ny c thng bo t i _root (b n c th thay th _root b ng b t k i t ng no) v sau th hm Key.getAscii() s cho ra k t qu l m s ASCII tng ng v i phm v a c nh n, v d A = 65, B = 66 .v.v B n c th xem ci fla m u 09keylistener.fla, trogn c o n code trn (lu l trong fla ny s khng c g h t ngoi o n code AS frame u tin) N u b n mu n bi t phm c nh t l g thay v ASCII code th b n c th dng String.fromCharCode() cho ra k t qu b n mu n tm. Thay dng trace(Key.getAscii()); bng trace(String.fromCharCode(Key.getAscii())); Th t ra ngoi 3 cch trn, cn m t cch n a l dng b x l s ki n onClipEven c a movie clip theo d i s ki n keyDown, keyUp, nhng cch ny khng cn c dng trong Flash MX n a, v v y b n ch c th cch ny trong cc Flash tr c MX thi. Bi T p: Dng phm di chuy n movie clip

1. T o m t file Flash m i 2. T o m t movie clip n gi n 3. G n o n code ny vo 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 trn ki m tra 4 phm mi tn v di chuy n movie clip theo h ng c a mi tn. B n hy th movie coi sao 4. Thay i o n code trn cho hon ch nh hn: t o 2 bi n [b]x, y[/b] c gi tr tng 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, mnh s ki m tra 4 phm mi tn v i u ch nh gi tr c a 2

bi n [b]x,y[/b] ch khng i u ch nh v tr c a movie clip, sau ph i h p v i bi n [b]speed[/b] tm 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 trn c 2 li i m. Th nh t, chng ta tm v tr m i c a movie clip tr c khi chng ta di chuy n movie clip t i , v nh v y chng ta c th ki m tra v tr m i c h p l khng (o d ng rt nhi u trong game), v th hai l r t ti n cho chng ta thay i t c di chuy n c a movie clip, ch c n thay i gi tr c a bi n speed Nh p vn b n Trong Flash, ng i dng c th nh p vn b n vo cc khung, v b n c th dng AS l y nh ng vn b n . cho ng i dng c th nh p vn b n, b n ph i t o khung input text v t o cho 1 varible tng ng v i ga tr trong khung input text . (n u b n no cha bi t t o input text th c th download 3 ci CD h ng d n bn box ti li u tham kh o thm) Cc ch c nng v thao tc lm vi c v i chu i k t (string Chng ta c r t nh iu thao tc v i chu i k t : 1. Ghp 2 chu i l i v i nhau: dng k hi u +. V d b n c variable tn l myVariable c gi tr l "Hello", v mu n ghp ch "world" vo sau th dng nh sau: myVariable = myVariable + "world" v k t qu c c s l "Hello world". B n cng c th ghp nhi u hn 2 chu i l i v i nhau b ng cch trn. 2. Substrings. Substring l m t chu i k t nh trong 1 chu i k t khc. V d "ell"

l substring c a "hello world" hay l "hello" hay l "elle" hay "hell". B n c th l y b t c substring no c a 1 string v i c php sau: String.substring(start, end));. String l i t ng chu i m b n mu n trch ra m t ph n, start l s th t c a k t b t u cho chu i b n mu n ly, v end l s th t b t u cho ph n b n khng mu n l y. Lu 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 hng ch "lo W" ActionScript var myString = "Hello World."; trace(myString.substring(3,7)); Ngoi ra cn 1 cch n a dng tng t nh cch trn nhng ch khc v thng s v c c php nh sau: String.substr(start, length);. thng s 1 cho s th t c a ch ci u tin v th hai cho chi u di c a chu i. o n code sau cng s c k t qu t ng t nh cch 1 ActionScript var myString = "Hello World."; trace(myString.charAt(6));

Cc hm c a

i t ng String i t ng String.

Sau y l m t s hm tiu bi u c a

1. indexOf: dng tm s th t c a m t k t hay m t chu i nh trong i t ng String. N u hm indexOf tm khng th y k t hay chu i nh th s cho ra k t qu -1. y l c php:myString.indexOf(substring,start)); substring l k t hay chu i mnh mu n tm, start l s th t mnh b t u tm trong i t ng 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 chng ta tm k t cu i cng i ng c ln t ik t u tin. ActionScript var myString = "Hello World."; //output: 2 trace(myString.indexOf("l",0)); //output: 9 trace(myString.lastIndexOf("l"));

3. toUpperCase/toLowerCase: dng ng c l i ActionScript var myString = "Hello World."; //output: HELLO WORLD trace(myString.toUpperCase()); //output: hello world trace(myString.toLowerCase());

i chu i t vi t th ng sang vi t hoa v

4. length: l

c tnh c a Sring dng

tnh chi u di c a chu i.

ActionScript var myString = "Hello World."; //output: 12 trace(myString.length);

Bi t p: 1. m file 09form-noscripts.fla 2. ki m tra tn c a variable c a m i input text field qua property panel 3. Thm o n m sau vo nt CLEAR ActionScript on (release) { clearForm(); } 4. thm o n m sau vo nt SUBMIT ActionScript on (release) { submitForm(); } 5. Thm o n code sau vo frame ActionScript function clearForm() { firstName = ""; middleInitial = ""; lastName = ""; address = ""; city = ""; state = ""; zip = ""; phone = ""; comments = ""; u tin c a movie

} 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 Vn B n, Creating and Controlling Text Dynamic Text B n cng c th hi n th vn b n b ng dynamic text field. Khc v i Input field m b n lm quen trong gi s 9, dynamic text field ch cho php AS thay i n i dung vn b n ch khng ph i l ng i dng. V n i dung, hnh th c c a vn b n c th thay i b t c lc no nn m i g i l dynamic text Tr c tin b n t o dynamic text b ng d ng c text trn thanh toolbar, nhng 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 vn b n trong dynamic text field v i m t variable b ng cch vi t tn c a variable vo trong khung Var trong propery panel. V d nh b n t variable myText vo trong khung Var th khi b n thay i gi tr c a myText th vn b n trong dynamic text field cng thay i gi ng nh gi tr c a bi n myText. Ngoi ra b n cn 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 vn b n qu di v cnn nhi u l a ch n khc n a. (N u b n cha n m v ng ph n ny th c th tham kh o thm v s d ng Flash trong CD c post box ti li u) nh d ng vn b n theo HTML (HTML format) nh d ng vn b n ki u HTML, b n ph i cho php dynamic text field ch p nh n nh d ng HTML (click vo HTML icon trn property panel) v sau b n c th nh d ng vn b n c a b n. V d o n code ny s t o vn b n dng th HTML sau: CODE myText = "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>";

myText += "This text is <FONT SIZE='24'>large</FONT>.<BR>"; myText += "This text is <A HREF='link.html'>linked</A>.<BR>";

QUOTE This 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. Siu lin k t (hyper link) trn c tc d ng gi ng nh trong HTML nh khc 1 i u l khng c g ch d i Sau y l nh ng th HTML c th dng trong Flash MX

<B></B>: vi t m <I></I>: vi t nghing <U></U>: g ch d i <FONT FACE='Arial Black'></FONT>: ki u ch <FONT SIZE='24'></FONT>: c ch <FONT COLOR='#XXXXXX></FONT>: mu ch <A HREF=''></A>: link <P></P>: an vn <BR>: Xu ng hng

i T ng TextFormat nh d ng cho vn b n l dng i t ng TextFormat. lm Cn m t cch khc c i u ny, 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 cc thu c tnh c a n. V d b n mu n ki u ch Arial Black, c 26, v mu th dng an code sau: CODE myFormat = new TextFormat(); myFormat.font = "Arial Black"; myFormat.size = 36; myFormat.color = 0xFF0000; textInstance.setTextFormat(myFormat); B n c th dng i t ng TextFormat nh l stylesheet trong cc file HTML, m t khi b n t o n ra th b n c th dng n b t c ch no trong movie B n c th coi cc an code trn trong file m u: 10formattext.fla Variable ngoi Flash

B n c th l y bi n t ngoi trang HTML vo trong Flash thay i n i dung c a Flash hay dng vo b t c chuy n g. V d b n ph i lm 30 ci banner b ng Flash cho 30 trang web, th b n c th ch lm 1 ci banner thi, nhng thay i n i dung

tu theo t ng trang web. Mu n nh p vn b n hay gi tr c a bi n no t HTML, b n ch c n thm vi ch vo sau ci tn 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 vo trong Flash HTML <PARAM NAME=movie VALUE="10banner.swf?txtName=Dominico Savio!"> v trong th <embed> th b n thm ph n variable v gi tr vo sau tn 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 ny b ng "Dominico Savio". B n c th xem trang 10banner.html, 10banner.fla trong ci source file xem chi ti t hn. B n c th lm nhi u gi tr m t lc cng b ng cch ny 10banner.swf?txtName=Dominico Savio!&gender=male" Ngoi l y bi n t HTML, b n cn c th l y bi n t cc text file. Cch ny thch h p khi b n c nhi u bi n nh p vo Flash, hay gi tr c a cc bi n qu di g n vo th HTML. B n ch c n dng l nh loadVariables() lm c i u ny. V d : CODE loadVariables("10external.txt", _root); B n c th coi thm v cch dng loadVariables() bn box ActionScript [Bi T p M t v d n gi n p d ng cc i u m b n v a h c trong bi ny l lm m t ci "news ticker" nh d i y:

Dng ch s ch y t bn ph i qua bn tri cho su t b n tin. B n c th tham kh o source fla: 10ticker.fla v test n c khi ni m thm v "news ticker" 1. T o movie m i 2. T o dynamic text field, v i cao ch v a 1 hng, v di b ng chi u ngang c a stage, cho d nh n, b n c th vi t vi ch trong , nh l "text goes here" 3. T o variable cho text field ny l text 4. Ch n font, nn dng ki u ch tng t nh Courier New, sao cho b ngang c a m i ch b ng nhau 5. Con text field r i nh n F8 no tu b n i thnh Movie Clip, v t cho n 1 ci tn nh th

6. Sau th g n o n script sau vo movie CODE onClipEvent(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. ";

firstChar = 0; // b t u ch ci u tin lineLength = 50; // s ch ci t i a trn news ticker // thm cc kho ng tr ng vo tr c dng tin for(var i=0;i<lineLength;i++) { tickerText = " " + tickerText; } } onClipEvent(enterFrame) { // pht b n tin text = tickerText.substr(firstChar,lineLength); // thm ch ci k ti p firstChar++; // pht l i b n tin sau m i l n k t thc if (firstChar > tickerText.length) { firstChar = 0; } } Tr c tin b n t o ra bi n tickerText ch a b n vn news ticker, bi n firstChar ch a gi tr c a ch ci u tin s th y trong news ticker, v lineLenght l s ch ci c th xu t hi n m t lc trn news ticker. V t t c cc u c cho vo trong b s l d ki n onLoad Trong onEnterFrame, Flash s l y 50 ch ci u tin b vo bi n text ( trong dynamic text field) cho n hi n th ln mn hnh. Sau di chuy n sang ch ci th 2 b ng cu firstChar++;, v sau cng l ki m tra, n u b n tin c pht h t th u. pht l i t 6. B n c th thay i gi tr c a lineLenght v gi tr c a b n vn trong tickerText hi u hn v 2 bi n ny 7. By gi b n hy th dng loadVariable() nh p b n tin t text file vo coi c c khng. N u khng th hy tr l i y h i mnh nhe Happy flashing

Gi th 11: Lm vi c v i cc con s , Chng ny r t hay v b ch! Chng ta nghin c u v text v strings trong cc chng tr c. By gi chng ta s nghin c u v nh ng con s . B n s ph i ng v i nh ng con s trong Action Script trong nhi u tr ng h p, v v y b n c n ph i hi u lm sao s d ng chng. Nh ng php ton (operator) v nh ng hm (function) v s Nh ng php ton n gi n Chng ta cng h c qua cc php ton n gi n r i. By gi hy xem l i nh. D u + v d u - s th c hi n php ton c ng v tr , d u * th c hi n php nhn, d u / th c hi n php chia. Ngoi ra, b n cng c th s d ng nh ng php ton nh +=, -=, *=, /= lm n gi n cho code c a b n. L y v d hai cu l nh d i y s th c hi n cng m t cng

vi c l c ng thm 7 v bi n a

CODE a = a + 7; a += 7;

Nh ng php so snh Nh ng php ton so snh nh == so snh hai s xem c b ng nhau khng, > (l n hn), < (nh hn), <= (nh hn ho c b ng), >= (l n hn ho c b ng). Trong Action Script chng ta c th so snh m t s nguyn v i m t s th c. V d nh 7.2 s l n hn 7. Math.abs i t ng Math ch a m t t p h p cc hm x l cc con s . Hm Math.abs s tr v gi tr tuy t i c a m t s . B n hy th o n code ny xem k t qu th no nh:

CODE trace(Math.abs(-7));

Math.round N u b n c m t s th c, nhng b n l i mu n hi n th cho ng i dng xem d i d ng s nguyn thay v ph i cho h xem cc con s ph n th p phn, b n hy s d ng hm Math.round. Th nh:

CODE trace(Math.round(7.2));

Math.ceil, Math.floor Hai hm khc dng lm trn s th c thnh s nguyn l Math.ceil v Math.floor. Hm Math.ceil s lm trn s ln v Math.floor s lm trn s xu ng. Th nh:

CODE trace(Math.ceil(7.2)); trace(Math.floor(8.3));

Math.min, Math.max Cc b n c th s d ng hai hm ny tm s l n hn v s nh hn trong hai s . V d hm Math.min(4, 5); s tr v 4, Min.math(4, 5); s tr v 5 Math.pow y l hm l y ly th a, cng n gi n thi, tham s th nh t l c s , tham s th hai l ly th a. V d b n mu n l y 4 lu th a 3 th vi t th ny

CODE Math.pow(4, 3); Math.sqrt y l hm tnh cn, nhng m mnh xin ni tr c lun l ngoi hm Math.sqrt, b n cn c th s d ng hm Math.pow v i ly th a nh hn 1 tnh cn. V d mu n l y cn 2 c a 4 th c th s d ng

CODE Math.pow(4, .5); ho c Math.sqrt(4);

C hai cch trn

u ra cng m t k t qu l 2.

Hm s l ng gic Nh ng hm c a object class m cc b n c bi t trn c v nh r t d h c. Nhng cn nh ng hm v l ng gic nh sin, cosin th kh nu t hn nhi u. M c d b n c th b qua nh ng hm ny nhng nh ng hm l ng gic ny r t h u ch v hay trong vi c t o nh ng ng d ng trong Flash. V y chng ta hy cng tm hi u cch n lm vi c nh! Hm 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 trn. Hnh d i y bi u di n m t vng trn v i m t s i m c nh d u b ng cc ch . 0,0; bn knh c a ng trn b ng 1. V Hy t ng t ng tm c a vng trn to th , i m trn cng s c to 0,1 v i m t n cng bn ph i s c to 1,0

By gi b n hy t ng t ng vng trn trn l m t ng th ng. B t

ut

i m a

c to 1,0 n i m 0,-1 qua -1,0 r i qua 0,1 v cu i cng tr v 1,0. Trong Flash, v cng nh trong cc ngn ng l p trnh khc, chng ta nh v m t v t b t k b ng to x, y c a chng. V th , vi c chuy n m t i m trn ng th ng thnh m t i m c to x, y trn ng trn r t h u d ng. l nh ng g m hm sin v cosin th c hi n. V d nh chng ta t i m a l i m b t u c a ng th ng c a ng trn, b n c s d ng hm sin v cosin c a 0 tnh to x, y c a i m a trn ng trn. T t nhin, 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 c a i m a 1,0 V y i m c s n m u trn ng trn? N u du i ng trn ra s c di b ng 6.28 l n bn knh, do bn knh b ng 1 nn di s b ng 6.28. y l xu t x c a h ng s pi. Pi b ng 3.14, b ng m t n a di c a ng trn. di c a ng trn l 6.28 th m t ph n t di ng trn l 1.57. i m tng ng v i i m c. Hm Math.cos(1.57) s tr v m t gi tr r t nh , g n b ng 0. Hm Math.sin(1.57) s tr v gi tr g n b ng -1. Ch g n b ng ch khng b ng v h ng s pi khng chnh xc b ng 3.14, ch l g n b ng thi. B n c th s d ng cch ny chuy n cc i m trn ng trn thnh i m c to x,y V y th n c ch nh th no? Gi s nh b n mu n t o m t movieclip bay quanh mn hnh trong m t vng trn. Lm sao lm c i u ? N u lm b ng frame c th ph i t n hng trm frame . Ho c cch khc l c th dng hm Math.cos v Math.sin tnh chuy n sang to x,y quanh vng trn. Trong o n code d i y, khi c ng thm n, movie clip s chuy n ng d c theo ng trn. Hm Math.cos s tnh ra gi tr x v hm Math.sin s tnh ra gi tr y, chng s c nhn thm v i gi tr c a radius tng kch th c c a ng trn. Gi tr c a centerX v centerY s c c ng thm cho cc to x, y, v th tm ng trn by gi khng cn 0,0 n a 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 nhi u cch chuy n i t chu i sang s v ng c l i. V d nh tr ng h p ng i dng nh p m t s vo text field, b n s nh n gi tr v c ng thm m t. Hy xem o n code sau y, num l m t bi n gi tr text field CODE

b = num + 1; u num = 42, v y th b s l 43, ng khng? Xin tr l i l sai, k t qu b l 421, n n b i v num l m t chu i (string) ch khng ph i l m t s , v th khi chng ta c hi n php c ng num v i 1 c ngha l c ng k t 1 vo chu i num ang c gi 42. lm cho Flash hi u num l m t s , b n c th s d ng m t trong hai hm sau y chuy n m t chu i thnh s . Hm parseInt chuy n m t chu i thnh ki u s nguyn, hm parseFloat chuy n m t chu i thnh ki u s th c. V d hm parseInt(42) s tr v gi tr l 42, n u chng ta s d ng parseInt(42.9) th cng s nh n c gi tr l 42 b i v hm parseInt khng lm trn s , n ch l y ph n nguyn m thi. Cn n u s d ng hm parseFloat(42.9) b n s nh n c gi tr l 42.9, mu n lm trn cc b n c th s d ng hm Math.round(parseFloat(42.9)). Hm parseFloat cng s tr v m t m t s nguyn n u tham s truy n vo l m t chu i s nguyn. V d parseFloat(42) s cho ta s 42. Tr tr ng h p b n mu n tr v m t gi tr s nguyn, cn khng b n nn s d ng hm parseFloat. M t nt r t c bi t v r t hay c a hm parseInt l c th chuy n m t chu i thnh m t s nhng thnh nhi u d ng h s khc nhau. Hy xem m t v d cho d hi u: CODE parseInt(FF, 16);

N gi th tr

Hm ny s tr v gi tr l 255, ngha c a n l chuy n chu i ch a s FF l m t s hexa h s 16 thnh m t s h nguyn h s 10. Ng c l i, chuy n t m t s sang m t chu i, hy s d ng hm toString. Hm ny s ho t ng khc v i hm parse, b i v n ho t ng bn trong m i bi n, g i hm ny sau d u ch m (.). Xem v d nh: CODE a = 135; trace(a.toString() + 1);

K t qu s l 1351. Chng ta cng c th s d ng hm toString chuy n m t s thnh m t chu i ch a s d i m t h s khc. V d a.toString(16) s tr v k t qu l chu i ff S ng u nhin T o s ng u nhin l m t ph n quan tr ng trong cng vi c thi t k game v m t s ho t hnh. B i v n u khng c s ng u nhin th nh ng o n phim c a b n s ch y gi ng nhau, khng cn g th v n a! t o s ng u nhin, b n c th s d ng hm Math.random(). Hm ny s tr v m t gi tr t 0.0 n 1.0 nhng th ng th khng tr v gi tr b ng 1.0 Hy xem v d d i y, b n s nh n c con s ng u nhin trong c a s OutPut CODE

trace(Math.random());

K t qu tr v i lo i gi ng nh 0.023268056102097, nhng m i l n l i khc nhau. M t v d khc l b n c n t o m t s ng u nhin t 1 n 10, vi c ny r t n gi n, ch c n nhn thm s ng u nhin cho 10. o n code sau s cho ta con s ng u nhin t 0.0 n 10.0 CODE trace(Math.random() * 10);

Nhng ci chng ta c n l con s ng u nhin t 1.0 n 10.0, v th , hy c ng thm 1 CODE trace(Math.random() * 10 + 1);

n 10.0 ch khng ph i t 0.0

By gi th k t qu tr v l 1.0 n 11.0 nhng s khng c k t qu 11.0. Hy s d ng hm Math.floor lm trn xu ng. CODE trace(Math.floor(Math.random() * 10 + 1));

Th t ra th con s ng u nhin trong my tnh cng cha th t s ng u nhin. B i v n khng th t s thay i trong b vi x l. Thay vo s c m t con s chu n, m t con s no khng bi t tr c c nh l gi ho c pht c a h th ng, con s ny s c a v m t bi u th c r t ph c t p, r t r t ph c t p m chng ta khng th on c. K t qu tr v cho chng ta k t qu d ng nh l ng u nhin. K t qu ny s c a v m t hm tnh m t l n n a l lu l i thnh con s chu n tnh ng u nhin cho l n ti p theo. Hy ngh v i u ny, s ng u nhin trong i s ng th t s cng khng th t s ng u nhin. N u chng ta gi m t m t c a con xc x c, th y ng theo m t h ng th t chnh xc, chng ta s c cng m t k t qu c r i, by gi hy th t o m t s ng u nhin t 3 n 7. Lm th no y? Ah, c m t th thu t 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 nguyn 3, 4, 5, 6, v 7. Th cn trong ph m vi t 50 n 100 th sao CODE trace(Math.floor(Math.random() * 51 + 50);

L s 51 b i v trong ph m vi t 50

n 100 c 51 s , cn n u t 51

n 100 s l

CODE trace(Math.floor(Math.random() * 50 + 50);

M t cch th xem ph m vi c a b n c ng nh c a mnh khng, l hy th v i s nh nh t v s l n nh t thay cho Math.random(). Gi tr nh nh t c a hm Math.random() l 0, hy th v i s 0 nh CODE trace(0 * 51 + 50);

Gi tr l n nh t c a Math.random() s khng chnh xc b ng 1.0 m s l g n b ng, v y chng ta hy th v i gi tr l 0.9999 CODE trace(.9999 * 51 + 50);

Hy th xem c ng khng nh! D i y l m t v d n a r t th v , movie clip c a b n s nh y k CODE onClipEvent(enterFrame) { this._x = Math.random()*550; this._y = Math.random()*400; }

n nh ng v tr b t

Luy n t p: T o m t chng trnh my tnh n gi n Hy b t tay vo vi c thi t k m t chng trnh my tnh n gi n nh. - M m t movie m i trong Flash. Movie c a chng ta s gi ng nh hnh d i y Chng ta s c 10 nt nh p 10 s t 0 n 9, cc nt cc php ton, phm =, d u ch m th p phn, phm C xa mn hnh. M t text field t trn hi n th nh ng s ng i dng b m, text field ny s lin k t v i bi n display. - Trong m i movie clip c a m i nt b m, chn o n code sau CODE on (release) { _parent.keyPressed(this._name); }

Khi m t nt b t k c nh n th hm keyPressed s c g i level ngoi m y s l level root. Hm ny s truy n tn c a movie clip. - Quay tr l i level root, m i movie clip ph i c m t tn ring, khng c trng. t tn c a movie clip theo s c a n, v d nt s 5 s c tn l 5, d u ch m th p phn c tn l .. D u c ng, d u tr , d u nhn, d u chia, d u b ng, nt C l n l t t tn l plus, minus, multiply, divide, equals, clear. - Ok, by gi b t u vi t code nh! Code ny s n m ngoi movie frame CODE // tr c tin, xo mn hnh c clearAll(); function clearAll() { display = "0"; // gi tr m c nh l 0 memory = 0; // b nh operation = "none"; // cha c php ton no c newNum = true; // nh d u khi no nh p xong m t s }

Bi n display l m t chu i (string), s lin k t v i text field hi n th n i dung ng i dng b m. N s b t u v i gi tr b ng 0, c ngha l khi ng i dng m i b t my ln th s m c nh l s 0 Bi n memory lu l i con s tr c th c hi n php tnh. i u ny r t c n thi t, v d b n b m s 5, +, 7 th s 5 nh p vo, khi b n b m d u c ng, mn hnh s c xa v s 5 c lu vo memory, s 7 c nh p ti p v s th c hi n php tnh 5 v 7. Php ton ng i dng ch n cng c n c lu vo b nh . Khi ng i dng nh n 5, +, 7 r i, sau b m d u = ho c m t php ton khc th chng trnh s g i l i php ton c c lu trong bi n operation th c hi n php ton tr c c a 5 v i 7. Bi n newNum nh l m t bi n c hi u bo cho chng trnh bi t khi no s k t thc m t php ton. V d khi ng i dng b m 5, +, 7 r i sau b m m t php ton khc th k t qu s c lu l i tnh ton ti p, lc ny php ton cha k t thc, newNum = false. Cn n u ng i dng b m d u = th mn hnh s hi n ra k t qu v k t thc lun php ton chuy n sang php ton m i, newNum = true. - Ph n ti p theo l hm keyPressed x l khi m i nt c nh n. Hm keyPressed s s d ng c u trc switch thay cho c u trc if, then, else. C hai cch u ho t ng tng t nhng cch vi t hi khc, b n hy xem nh: CODE // hm ny c g i b i nt nh n function keyPressed(keyName) { // do something different for different keys switch (keyName) { case "clear" : // khi nh n nt C clearAll(); break; case "plus" : // cc php ton c ng, tr , nhn, 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 : // cc s if (newNum) { // hi n th s m i trn mn hnh display = keyName; newNum = false; if (display == "0") newNum = true; // s khng b t } else { display += keyName; // n i thm s vo mn hnh } break; } } Khi ng i dng nh n nt C th hm clearAll() s c g i, tng t khi ng i dng nh n cc php ton th hm operate s c g i - Hm operate s th c hi n tnh ton. N s tm ra php ton gi a con s tr c v con s hi n th i, s d ng hm parseFloat chuy n chu i thnh s .Operation c gi tr b ng none khi nh p m t s m i sau khi th c hi n xong php ton v mn hnh c xa. CODE // th c hi n php ton tr c function operate(keyName) { switch (operation) { case "none" : // s u tin memory = parseFloat(display); // lu l i s tr c break; case "plus" : // th c hi n php ton memory += parseFloat(display); break; case "minus" : memory -= parseFloat(display); break; case "multiply" : memory *= parseFloat(display);

uv is 0

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 }

Luy n t p: Lm nh ng hnh tinh bay quanh qu

Trong v d v l ng gic trong ph n tr c, b n bi t cch lm m t movie clip quanh quay m t vng trn. By gi hy p d ng nh ng ki n th c lm m t movie 4 hnh tinh xoay quang m t tr i, hnh tinh th 3 s c m t v tinh. - T o m t movie m i trong Flash T o 6 movie clip l cc vng trn, t tn l n l t l sun, mercury, venus, earth, mars, and moon, v t instance name c a chng gi ng v y lun. Hy lm cho kch th c c a chng ta khc nhau m t cht nh! - t movie clip sun (m t tr i) vo gi a mn hnh. Cc hnh tinh khc s quay quanh m t tr i. V tr c a cc movie clip cc hnh tinh khc khng quan tr ng, v chng ta s i u khi n v tr c a chng b ng Action Script - t o n code sau vo movie clip mercurcy: CODE onClipEvent(load) { speed = .4; radius = 40; orbit = 0; } onClipEvent(enterFrame) { orbit += speed; this._x = Math.cos(orbit) * radius + _root.sun._x; this._y = Math.sin(orbit) * radius + _root.sun._y; }

Trong event load s thi t l p t c quay c a hnh tinh, kho ng cch gi a hnh tinh v i m t tr i. Bi n speed i u khi n t c quay c a hnh tinh, c ngha l s vng quay trong m t frame. N u speed = 6.28 th hnh tinh s quay c m t vng trong

ng m t frame, v n u speed = .4 nh trong o n code sau th hnh tinh s quay m t vng qu o m t 15.7 frame (6.28/.4). Trong m i l n event enterFrame x y ra th orbit (qu o) s c c ng thm v i speed hi n th i, v hnh tinh di chuy n n v tr m i. To x, y c a cc hnh tinh s c hi u ch nh theo v tr c a m t tr i, v v y tm qu o c a cc hnh tinh chnh l m t tr i. - Ch y th movie. Lc ny, cc hnh tinh v n ng yn, ch c mercurcy l di chuy n. N u qu o b nghing th b n ph i xem l i xem m t tr i c n m ng gi a qu o hay khng. - t o n code tng t vo cc movie clip venus, earth, and mars movie clips, nhng m b n hy thay i gi tr c a hai bi n speed v radius lm cho hnh tinh xa ho c g n m t tr i hn. G i cho cc b n nh, speed c a cc hnh tinh mercury, venus, earth, and mars l .4, .2, .1, v .05, radius cho cc hnh tinh l 40, 90, 150, v 210. - Ch y th l i movie. By gi th c b n hnh tinh chuy n ng, ch cn moon l cha chuy n ng v cha c vi t code i u khi n. - By gi hy vi t code cho moon, moon s c speed nhanh hn v radius nh hn, v moon s quay quanh earth thay v quay quanh sun CODE onClipEvent(load) { speed = .5; radius = 15; orbit = 0; } onClipEvent(enterFrame) { orbit += speed; this._x = Math.cos(orbit) * radius + _root.earth._x; this._y = Math.sin(orbit) * radius + _root.earth._y; }

- By gi hy ch y th movie c a b n m t l n n a. By gi t t c cc hnh tinh u quay r i, nhng cn m t v n . Earth khng chnh xc n m gi a qu oc a moon, v sao th ? B i v moon s quay tr c earth, v moon n m m t layer trn layer c a earth. Chng ta c n ph i lm cho earth quay tr c r i m i n moon. lm nh v y, ch n movie clip moon, r i ch n Modify -> Arrange -> Send to Back. Luy n t p: Lm tuy t ri y l m t v d r t h u ch cho vi c t o s ng u nhin. B n c th khng c n ph i dng Action Script nhng lc b n ph i lm hng trm movie clip bng tuy t, m i ci chuy n ng theo m t ng. B ng cch s d ng Action Script v s ng u nhin, b n c th lm cho cc bng tuy t ri v i t c v h ng ri ng u nhin. B t tay vo lm nh! - T o m t movie m i trong Flash - T o m t movie clip m i, t tn l Snowflake v t tn instance c a n l snowflake - t o n code sau vo movie clip Snowflake. o n code ny s kh i t o nh ng gi

tr ban u nh v tr c a cc bng tuy t, t c bng tuy t. CODE onClipEvent(load) { this._x = Math.random()*550; // 0 to 550 this._y = Math.random()*400; // 0 to 400 speed = Math.random()*3+3; // 3 to 6 drift = Math.random()*2-1; // -1 to 1 rotate = Math.random()*6-3; // -3 to 3 } onClipEvent(enterFrame) { this._y += speed; this._x += drift; this._rotation += rotate; // a nh ng bng tuy t ln u if (this._y > 400) this._y = 0; // ki m tra hai bin if (this._x < 0) this._x = 550; if (this._x > 550) this._x = 0; }

ri, t c

b th i ngang,

xoay c a

Khi event enterFrame x y ra th bng tuy t s c i u khi n ri xu ng b i speed v b d t theo h ng ngang b i drift. Bng tuy t cng s b xoay theo gi tr c a rotate. Ti p theo l s ki m tra xem n u bng tuy t ri xu ng t r i th s cho n ri l i, n u bng tuy t b d t qua bn ph i th n s c a quay l i v bn tri - Ch y th movie c a b n. Cc bng tuy t s ri t do. Hy click vo cu i movie xem sao, nh ng bng tuy t d i s c ri l i. c r i, by gi hy lm cho bng tuy t nhi u nhi u m t t b ng o n code sau, t vo timeline chnh nh! CODE // t o 50 bng tuy t for(var i=0;i<50;i++) { snowflake.duplicateMovieClip("snowflake"+i,i); } Hm duplicateMovieClip ho t ng cng gi ng nh hm attachMovie a movie clip vo trong lc ang ch y. i m khc bi t l hm duplicateMovieClip s chn t m t Movie clip c s n, s d ng l i t t c hnh nh v code, nhng b n ph i ch c ch n r ng m i movie clip ph i c m t tn ring v m t level ring

Gi th 12:

i t ng v M ng, Objects and Arrays

Cho n by gi , m i bi n u ch a d li u ring l , m i bi n ch a m t d li u. i v i nh ng chng trnh nh v n gi n th khng c g ni, nhng n khi b n c n s d ng th t nhi u bi n. Cng c nh ng lc b n g p kh khn khi nh n ra r ng b n c n lu r t r t nhi u d li u, nh ng bi n bnh th ng mu n lm th khng ph i d . ActionScript cung c p cho ta hai th lu nh ng lo i nhi u d li u. M t l Custom Object ( i t ng), v i Custom Object b n c th nhm nh ng d li u ring l l i v i nhau. Cch khc l Array (M ng), m t trong nh ng ph n c b n c a cc ngn ng l p trnh cao c p. Trong gi th 12 ny, chng ta s h c: - Cch t o Custom Object - Cch s d ng nh ng i t ng ActionScript c d ng s n - Tm hi u v Array (M ng) - Lm ch chuy n ng - T o nh ng v t th ch y theo con tr chu t trn mn hnh T o Custom Object Ch c h n cc b n quen thu c v i nh ng tn nh x v y i u khi n v tr trn movie clip. C bao gi b n c m th y nhm chn v i nh ng ch x, y hay mu n thay th n b ng nh ng ch khc nh positionX, positionY hay b t c g b n thch khng? Vi c qu n gi n, ch c n t o bi n c a b n r i gn gi tr cho bi n c a b n thi . Nhng d sao th cng ch l nh ng bi n ring l thi, ch v i m t ci tn khc . Trong ph n ny, chng ti khng mu n ch cho cc b n lm nh ng i u nh v y m s ni v cch t o m t custom variable Object. V d , b n c th lu bi n x, y nh sau:

CODE pos = {x:10, y:20};

B ng cch s d ng hai d u ngo c nh n, b n t o ra m t object. B n c th truy c p d li u b ng cch:

CODE trace(pos.x);

B n c th s d ng n nh b t c nh ng bi n no khc. Hy t ng t ng n m t c u trc ph c t p hn nhi u nh m t record trong m t c s d li u. V d nh ta c m t custom object tn record, v trong n s c nh ng property nh l name, address, phone B n c th t o object t ng b c m t, t o thm property. Xem v d ny nh:

CODE record = new Object(); record.name = "Gary"; record.age = 32; record.state = "Colorado"; trace(record.name);

Cng v i m c ch lm cho d li u d t ch c hn, custom object cng gi ng nh nh ng i t ng d ng s n. Hai v d v nh ng i t ng d ng s n l Color v i t ng Date. i t ng Color C th dng ActionScript i mu c a m t movie clip b ng cch s d ng cu l nh setRGB. l cch d nh t nhng n s khng th c hi n c i v i instance c a movie clip. Thay vo , chng ta s chuy n n i t ng Color c a movie clip. Th c hi n cch b ng hm new Color(), sau th c th s d ng cu l nh setRGB thay i mu. D i y l m t v d , s d ng setRGB t i t ng Color c a movie clip tl i mu cho movie clip sang mu 0xFF0000 (mu )

CODE circleColor = new Color("circle"); circleColor.setRGB(0xFF0000);

Chng ta cng c th l y mu c a m t movie clip. S d ng hm getRGB() l y mu c a movie, nhng nh s d ng hm toString(16) chuy n thnh gi tr hexa.

CODE circleColor = new Color("circle"); trace(circleColor.getRGB(0xFF0000).toString(16));

M t cch khc t mu cho movie clip b ng cch t o m t transform ng v i 8 m c nh trong hnh d i y

i t ng color

u tin, t o m t i t ng custom variable. R i t o cc property ra, ga, ba, aa, rb, gb, bb, ab. Cc k t u tin r, g, b, a l i di n cho t red, green, blue v alpha. Cn k t th hai a v b l i di n cho 2 c t bn tri v bn ph i Thay v s d ng setRGB th chng ta s s d ng setTransform nh trong v d d i y:

CODE circleColor = new Color("circle"); myObject = new Object(); myObject = {ra:100, rb:255, ga:0, gb:0, ba:0, bb: 0, aa: 100, ab: 0}; circleColor.setTransform(myObject);

i t ng Date M t i t ng d ng s n khc l i t ng Date. i t ng ny cng c th c xem nh l m t bi n bnh th ng, n i di n cho m t th i i m c a th i gian. i t ng Date c chia ra 7 ph n: nm (year), thng (month), ngy (date), gi (hour), pht (minute), giy (second) v ph n trm giy (milisecond). B n c th t o m t i t ng Date m i b ng cch cung c p cho n 7 thng tin trn

CODE myDate = new Date(2002,3,29,10,30,15,500);

Hy th s d ng cu l nh trace ki m tra n i dung c a myDate xem no. C ph i b n nh n c k t qu ny khng? CODE Mon Apr 29 10:30:15 GMT

R t d hi u, ng khng no? Nhng m cn m t v n : thng l Apr trong khi chng ta truy n tham s vo cho thng l 3, v y ph i l March ch !? i t ng Date c a Flash cng ho t ng tng t nh i t ng Date c a cc ngn ng l p trnh khc. Thng c quy nh t 0 n 11, r t c bi t, b i ngy th c quy nh t 1 n 31 . Nhng d sao th b n cng ph i lm quen i B n cng c th l y nh ng thnh ph n t i t ng Date. V d d i y s l y nm.

CODE myDate.getYear()

B n c th l y gi hi n t i b ng cch n gi n l t o m t Gi hi n t i s c a vo i t ng. V d : CODE myDate = new Date(); trace(myDate);

i t ng Date r ng

Ch : Flash s l y gi c a ng h h th ng trong my b n. V th my tnh c a b n ch y sai th gi l y ra s sai M ng (Array)

ng h trong

M ng l m t ph n r t quan tr ng trong l p trnh. B n s g p m ng trong h u h t cc ngn ng l p trnh b i v n l m t cng c r t c n thi t cho nh ng ngn ng l p trnh ph c t p. M ng (Array) l m t dy d li u. Trong th cc d li u s c cng m t ki u d li u v i nhau, nh l cng l tn c a movie clip ho c u cng l v tr c a movie clip T o m ng D i y l m t v d v m t m ng. S d ng d u ngo c vung v nh ng d u ph y

t o m ng:

CODE myArray = [36,23,63,71,25];

M ng myArray c ch a 5 ph n t l s nguyn. Mu n l y gi tr c a m t ph n t trong m ng th s d ng nh sau:

CODE trace(myArray[0]);

Ph n t u tin trong m ng lun lun c nh s 0. V v y, nh v d trn c 5 ph n t th ph n t th 0 ch a gi tr 36 v ph n t th 4 mang gi tr 25. M t cch khc t o m ng l s d ng new Array()

CODE myArray = new Array();

Mu n thm m t ph n t vo cu i m ng, s d ng cu l nh push. V d d i y s t o ra m t m ng gi ng m ng v d trn:

CODE myArray = new Array(); myArray.push(36); myArray.push(23); myArray.push(63); myArray.push(71); myArray.push(25);

Nh ng thao tc trn m ng ki m tra xem m ng c bao nhiu ph n t th b n c th s d ng thu c tnh length

CODE myArray = [36,23,63,71,25]; trace(myArray.length);

Cn n u mu n l y ph n t cu i cng c a m ng v b ph n t ny ra kh i m ng th s d ng cu l nh pop

CODE myArray = [36,23,63,71,25]; trace(myArray); a = myArray.pop(); trace(a); trace(myArray);

o n code v d trn s trace 5 ph n t c a m ng myArray. Sau , l y ph n t cu i cng c a m ng t c l 25 a vo bi n a, ng th i b ph n t 25 ra kh i m ng. Cu i cng trace cc ph n t c a m ng myArray, lc ny ch cn 4 ph n t . S d ng k t h p push v pop t o m t h th ng vo sau ra tr c (last in first out), th ng g i l stack. Hy t ng t ng n m t ch ng sch, chng ta cu n sch u tin xu ng, r i ch ng ln cu n sch th 2, cu n th 3, cu n th 4 Khi mu n l y sch ra th ph i l y cu n trn cng tr c, t c l ch ng ln cu i cng. Ng c l i v i pop l shift. N s b ra ph n t u tin trong m ng. o n code d i y s lm gi ng nh o n trn nhng s khng b ph n t 25 m s b ph n t 36:

CODE myArray = [36,23,63,71,25]; trace(myArray); a = myArray.shift(); trace(a); trace(myArray);

Ng c l i v i shift l unshift. N s chn thm m t ph n t vo u m ng. N u b n mu n l y ra ch m t ph n c a m ng th c th s d ng hm slice. is truy n vo s l v tr u tin v v tr cu i cng c a ph n c n l y ra trong m ng.

CODE myArray = [36,23,63,71,25] trace(myArray.slice(1,3));

o n code trn s tr v 23, 63 v n khng k ph n t th 3. N u khng c i s th 2 th n s l y n cu i m ng. M t hm khc n a l hm splice. Hm ny s thay th m t s ph n t trong m ng b ng nh ng ph n t khc. S d ng hm ny, i s u tin l v tr c a ph n t trong

m ng, i s th hai l s ph n t mu n xa k t ph n t trong i s u tin. Truy n i s th 2 l s 0 n u khng mu n xa ph n t no c . Nh ng ph n t ti p theo l danh sch nh ng ph n t mu n chn vo m ng. Ni v y cng hi kh hi u nh , v y hy xt v d ny nh. V d ny s xa ph n t 23 v 63 v chn vo ph n t 17.

CODE myArray = [36,23,63,71,25]; myArray.splice(1,2,17); trace(myArray);

S p x p trong m ng Chng ta c th s p x p m t m ng b ng cu l nh sort. V d d i y s cho ta m t m ng c s p x p theo th t s : CODE myArray = [36,23,63,71,25]; myArray.sort(); trace(myArray);

Cn v d ny s s p x p theo th t ch :

CODE myArray = ["Gary","Will","Jay","Brian"]; myArray.sort(); trace(myArray);

Cu l nh reverse

o v tr s p x p c a m ng. V d :

CODE myArray = ["Gary","Will","Jay","Brian"]; myArray.reverse(); trace(myArray);

Mu n s p x p m ng theo v tr gi m d n th s d ng sort r i s d ng reverse. S d ng cu l nh concat n i hai m ng l i v i nhau. N s khng lm thay m ng c, m n s t o ra m t m ng m i.

i cc

CODE myArray = [36,23,63,71,25] otherArray = [58,97,16]; newArray = myArray.concat(otherArray); trace(newArray);

Chuy n

i gi a chu i v m ng

Chng ta c th s d ng cu l nh join i t m t m ng thnh chu i. Cu l nh ny c n m t i s duy nh t l k t ngn cch gi a cc ph n t c a m ng trong chu i. N u b n khng truy n tham s ny vo th k t m c nh l d u ph y. V d d i y tr v 36:23:63:71:25.

CODE myArray = [36,23,63,71,25] myString = myArray.join(":"); trace(myString);

Cu l nh join t c s d ng v n khng c n thi t l m, nhng hm split l i r t h u d ng. N s chuy n i t m t chu i sang m ng. V d nh n s chuy n m t chu i 36,23,63,71,25 thnh m t m ng trong v d d i y:

CODE myString = "36,23,63,71,25"; myArray = myString.split(","); trace(myArray);

Hy ngh n chuy n chng ta c m t cu ni c lu trong m t chu i mu n chuy n sang m ng, m i ph n t trong m ng s ch a m t ch . Xem v d d i y nh:

CODE myString = "This is a test"; myArray = myString.split(" "); trace(myArray);

Lm ch chuy n

ng

Trong v d ny, chng ta s l y t ng ch trong m t cu di v hi n th vo textfield. - T o movie Flash m i - T o m t text field dynamic, cho font ch to, kho ng 64. Cho text field n m gi a mn hnh v canh gi a cho text field. t variable = text. - V m t shape r i ch n Insert -> Convert to Movie Clip. t tn cho instance ny l Actions r i ko n ra ngoi vng hi n th . - Chn o n code sau vo movie clip . u tin s s d ng hm split tch t ng ch c a cu vo trong m ng. Sau s khai bo thm 3 bi n n a. Bi n wordNum s lu m t con s l s th t c a ch s hi n th . Bi n frameDelay s lu s frame m i ch hi n ra. Bi n frameCount s m s frame m m t ch i qua. CODE onClipEvent(load) { // get the words wordList = ("Imagination is more important than knowledge").split(" "); // set up variables wordNum = 0; frameDelay = 6; frameCount = frameDelay; // prime for first word } onClipEvent(enterFrame) { // time for new word if (frameCount == frameDelay) { _root.text = wordList[wordNum]; // display word wordNum++; // next word if (wordNum >= wordList.length) wordNum = 0; frameCount = 0; } frameCount++; }

- No, by gi th xong r i, hy ch y th xem no

Gi th 13: S d ng Rollovers, Rollovers T o hnh dng con tr theo thch Vi c thay con tr m c nh b ng m t con tr theo thch c a mnh r t n gi n, ch c n s d ng hm Mouse.hide() v t m t movie clip c a mnh vo v tr c a con tr l xong. Con tr c th l b t c hnh dng g cng c, nh l hnh mi tn, hnh bn tay hay m t movie clip. Hnh d i y l m t v d c a m t movie clip c dng lm con tr . Ch l m t hnh mi tn n gi n nhng b n ph i ch r ng d u c ng chnh gi a movie clip ph i n m ngay u c a mi tn.

N u b n mu n s d ng l i con tr m c nh th ch c n g i Mouse.show() M t i u c n lu n a l ph i ch c r ng movie clip lm con tr c a chng ta ph i trn t t c cc movie clip khc. Chng ta c th ch n Modify -> Arrage ->Bring To Front a movie clip ln u nhng ch l trn cc movie clip trong layer m thi. Cho d b n c movie clip c a mnh ln layer trn cng th cng c th b che khu t b i nh ng movie clip c load vo b ng duplicateMovie v attachMovie. V v y, chng ta s s d ng swapDepths() a movie clip ny ln trn cng. Cu l nh swapDepths() s a movieclip ln m t level m i, level c th l m t s nguyn 0, 1, 2 9999. V th chng ta s s d ng l nh Cursor.swapDepths(9999); a movieclip c a chng ta ln trn cng. Luy n t p: T o con tr tnh - T o m t movie m i - T o m t movie clip m i thay th cho con tr - Quay tr l i movie u tin, v chng ta s thay th con tr b ng cch CODE onClipEvent(load) { // hide the real cursor Mouse.hide(); // bring this movie clip to the front this.swapDepths(99999); }

- Ti p theo chng ta s g n v tr c a movie clip vo v tr c a con tr CODE

onClipEvent(enterFrame) { // follow the mouse this._x = _root._xmouse; this._y = _root._ymouse; }

- Sau cng, chng ta s ph c h i l i con tr c khi k t thc movie CODE onClipEvent(unload) { // show the real cursor again Mouse.show(); }

- Cu i cng l vi c ch y th movie c a mnh Luy n t p: T o con tr ng

- Chng ta c th s d ng l i movie tr c - T o m t button m i trong root. Hy th lm cho button c s thay i trong over v down chng ta c th th y c s khc bi t. - Chng ta s thay i m t t trong movie clip lm con tr . T o m t frame th hai, v thm vi nt nh hnh v

t tn hai frame l normal v over button t cu l nh stop(); vo frame u tin c a movie clip

- Ko th m t button vo root - t tn movie clip lm con tr l cursor - Thm o n code sau vo button CODE on (rollOver) { cursor.gotoAndStop("over button"); } on (rollOut) { cursor.gotoAndStop("normal"); }

- By gi hy ch y th xem no , hy th click vo button xem sao. Xem k t qu b n lm c gi ng hnh ny khng nh!

Rollovers M t k thu t thng d ng hi n th nh ng thng tin di l s d ng Rollovers a ra nh ng thng tin thay v s d ng m t button ng i dng click vo th s sang m t trang khc. t ng c a k thu t ny l khi ng i dng a chu t l t nh ng vng no . M i vng s hi n th cho ng i dng xem m t thng tin g trn mn hnh. Trong v d sau, s c 9 vng nh th , m i vng s l m t tn c a m t hnh tinh ( bn tri). Khi chng ta a tr chu t qua nh ng vng th bn ph i s xu t hi n thng tin v hnh tinh . Khi a tr chu t ra ngoi th thng tin cng bi n m t.

Chng ta c th s d ng AS Rollovers s d ng button

lm Rollovers b ng nhi u cch

Chng ta s s d ng hai event c a button l on(rollOver) v on(rollOut)

vi t code

x l vi c hi n th thng tin. Hy xem v d d i y: CODE on (rollOver) { information.gotoAndStop("information 1"); } on (rollOut) { information.gotoAndStop("none"); }

Rollovers s d ng movie clip Flash khng c hm onClipEvent(mouseOver), v th chng ta s s d ng m t hm khc. Hm hitTest s cho chng ta bi t r ng con tr chu t c ang trn movie clip hay khng. V chng ta c th lm nh sau CODE onClipEvent (enterFrame) { if (this.hitTest(_root._xmouse,_root._ymouse, true)) { _root.information.gotoAndStop("information 1"); } else { _root.information.gotoAndStop("none"); } }

Nhng lm nh v y v n cn m t v n n a. B i v movie clip c a chng ta s v n ti p t c ch y t frame ny sang frame khc, chng ta g i hm gotoAndStop() d ng l i. Hy t ng t ng chng ta c nhi u rollovers. Ci u tin s a movie clip information v frame none, m t khc th rollovers khc l i a movie clip information v m t ni khc. i u ny s lm x y ra xung t. V v y, chng ta s lm nh sau. Chng ta s ghi nh l i r ng con tr chu t c ang trn movie clip hay khng. N u c, n s thi hnh l nh khi con tr chu t ra ngoi movie clip. Cn n u khng, n s thi hnh l nh khi con tr chu t i vo movie clip. lm i u ny, chng ta s s d ng bi n over, ph thu c vo v tr c a con tr chu t m n s mang gi tr true ho c false. i v i m i frame, chng ta s s d ng hm hitTest ki m tra v tr c a con tr chu t. N u v tr con tr i l p v i over th s x y ra s thay i. Chng ta hy xem o n code sau: CODE onClipEvent (load) { over = false; }

onClipEvent (enterFrame) { // ki m tra xem li u con tr chu t c ang di chuy n qua movie clip khng testOver = (this.hitTest(_root._xmouse,_root._ymouse, true)); if (testOver and !over) { _root.information.gotoAndStop("information 1"); over = true; }else if (!testOver and over) { _root.information.gotoAndStop("none"); over = false; } }

Rollovers s d ng frame y, chng ta s bn v m t Nh ni trn, c r t nhi u cch lm rollovers. cch khc. Thay v s d ng movie clip cho m i thng tin c n hi n th , chng ta s s d ng timeline chnh lu thng tin. Frame u tin s l frame none, v cc frame ti p theo s ch a cc thng tin. Chng ta hy xem hnh bn d i

V d trn s d ng button cho cc hotspot, v chng ta hy lu r ng cc button s xu t hi n trong t t c cc frame, nhng thng tin c n hi n th th ch xu t hi n m t vi frame. By gi cng vi c vi t code c a chng ta g n gi ng nh lm rollovers b ng button. Nhng chng ta khng c n ph i g i hm gotoAndStop t movie clip information. CODE on (rollOver) { gotoAndStop("information 1"); } on (rollOut) {

gotoAndStop("none"); }

L i th c a vi c s d ng cch ny l chng ta c th thay i nh ng thng tin trong cc frame r t d dng, chng ta khng ph i m x vo t ng movie clip. N u b n quen s d ng nhi u frame th y l m t cch t t cho b n Lu r ng c ba cch trn u cho m t k t qu nh nhau, khng c s khc bi t. y, chng ti ch mu n trnh by cho cc b n th y nh ng cch lm khc nhau m thi! Luy n t p: Hi n th thng tin No, by gi cc b n hy th s d ng nh ng hi u bi t c a mnh v cch thay i con tr v rollovers lm m t chng trnh xem no! Chng trnh ny s hi n th nh ng thng tin v cc hnh tinh. Chng ta s c 9 hotspot, m i hotspot l m t hnh tinh, m i hotspot s hi n th m t h p thng tin khi a tr chu t ngang qua. M i hotspot l m t button, v th ng i dng c th click vo di chuy n n m t frame khc xem nh ng thng tin v hnh tinh .

- u tin, hy t o m t movie m i trong Flash. Movie ny s c 10 frame, t frame 2 cho n frame 10 s ch a thng tin c a cc hnh tinh. t tn frame 1 l none v tr ng vng hi n th thng tin. t 10 button bn tri, m i ci cho m t hnh tinh. M t movie clip summary s xu t hi n hi n th thng tin v n t t v cc hnh tinh khi a tr chu t ngang qua. Movie clip ny cng s ch a 10 frame: 1 frame tr ng v 9 frame ch a thng tin c a 9 hnh

tinh. Chng ta cng ph i ch vi c s d ng layer cng r t quan tr ng, trong v d ny th chng ta s s d ng 3 layer v movie clip summary s c t layer trn cng - t l nh stop(); vo frame u tin, v cng t trong frame u tin c a movie clip summary - No, hy vi t code nh! CODE on (rollOver) { summary.gotoAndStop("mercury"); } on (rollOut) { summary.gotoAndStop("none"); } - Nh ng button trn s a ng i dng n nh ng frame khc nhau tin v hnh tinh, chng ta l i vi t code cho cc button CODE on (release) { gotoAndStop("mercury"); }

xem thng

Lu r ng chng ta c hai frame tn mercury, m t frame timeline chnh v m t trong movie clip summary - T o m t movie clip thay th con tr chu t, v vi t code nh sau CODE onClipEvent(load) { Mouse.hide(); this.swapDepths(99999); } onClipEvent(enterFrame) { this._x = _root._xmouse; this._y = _root._ymouse; } onClipEvent(unload) { Mouse.show(); }

- Ti p theo chng ta s lm cho con tr chu t thay i khi a con tr ngang qua cc button. Hy thm o n code sau vo ph n code c a button CODE on (rollOver) { summary.gotoAndStop("mercury"); cursor.gotoAndStop("over button"); } on (rollOut) { summary.gotoAndStop("none"); cursor.gotoAndStop("normal"); } on (release) { gotoAndStop("mercury"); }

By gi th movie c a b n xong. B n hy ch y th xem sao

Gi th 14: Thnh ph n Scroll, Scrolling M c d scrollbar r t quen thu c trong cc ng d ng Mac, Windows, cc trnh duy t web nhng m y ai hi u c n ho t ng nh th no. L do n gi n l do y l m t trong nh ng thnh ph n tr c quan, r t d xy d ng m khng c n ph i vi t code nhi u. M i ng i s d ng n nhng khng suy ngh nhi u v n. K t qu l khi nh ng nh pht tri n s d ng Flash t o ra nh ng scrollbar c a ring h th g p kh khn. V v y, chng ta hy cng nhau tm hi u 4 thnh ph n c b n c a m t scrollbar v hy tm hi u scrollbar l g. Hnh d i y cho chng ta th y nh ng thnh ph n c b n c a m t scrollbar l: mi tn ln, mi tn xu ng, thanh tr t v khay tr t.

Thanh tr t (Slider)

Thanh tr t ph c v nhi u m c ch. u tin, thanh tr t s tr t trn khay tr t cho chng ta th y v tr c a kh i vn b n chng ta ang xem. N u thanh tr t trn cng th chng ta ang xem dng u tin c a vn b n, cn n u thanh tr t cu i th chng ta ang xem dng cu i cng. Nh ni, thanh tr t s c k p ch t v tr t trn khay tr t. Khi chng ta ko thanh tr t tr t trn khay tr t th kh i vn b n s c c p nh t v tr thch h p. M i y, scrollbar c thm m t c tnh m i. Thay v kch th c c a thanh tr t s b g n s n v i m t gi tr th kch th c ny s c thay i ty vo di vn b n. V th , v tr u tin c a thanh tr t s ng v i dng u tin c a vn b n v v tr cu i cng s ng v i dng cu i cng. V d m t textbox c scrollbar hi n th c 10 dng c a m t vn b n c 100 dng th chi u cao thanh tr t s l 10% so v i khay tr t. Nhng chng ta s khng bn v n ny y. Khay tr t (Bar) Khay tr t c ch c nng chnh l ch a thanh tr t v cho thanh tr t tr t trn n. Chi u di c a khay tr t ph thu c vo di c a vn b n. Khay tr t cn c m t ch c nng n a l khi ta click vo khay tr t th kh i vn b n s di chuy n m t trang. Khi click vo ph n trn c a thanh tr t th kh i vn b n s di chuy n n trang tr c, cn n u click vo ph n d i thanh tr t th kh i vn b n s di chuy n n trang sau. Cc mi tn Mi tn ln v xu ng l hai thnh ph n n gi n nh t c a scrollbar, n ch c ch c nng cho ng i dng di chuy n kh i vn b n t ng dng m t. Nh ng thu c tnh chung Scrollbar c m t s thu c tnh chung m chng ta c n ph i xem xt. u tin, cc thnh ph n c a scrollbar ch ho t ng khi chng ta click vo, v s ti p t c ho t ng cho n khi chng ta th nt chu t ra. L y v d : n u ng i dng click vo mi tn xu ng di chuy n m t kh i vn b n th kh i vn b n s di chuy n t ng dng m t cho n khi chng ta th nt chu t ra. M t v n n a l v tr thanh tr t ph i c c p nh t lin t c khi nh ng thnh ph n khc c kch ho t. Scroll m t vn b n u tin, chng ta m khung Properties ra t tn l i cho text field. Nh trong hnh d i y, chng ta s t tn cho text field l scrollText

Sau , chng ta c th vi t code cho n l y d li u vo. Nhng tr c h t c n t cho text field c a chng ta m t scroll. Khi ch n vo text field r i th b n c th thay i kch th c c a text field b ng cch ko hnh vung gc d i bn ph i c a text field. Cn n u khng t kch

th c th text field s v a hi u th n i dung bn trong. Thay v i u ch nh b ng hnh vung mu tr ng th lc , chi u cao c a text field s c t i u ch nh theo kch th c n i dung bn trong, c ngha l n u vn b n bn trong text field c nhi u dng th chng ta khng th lm cho text field ch hi n m t vi dng scroll. Mu n l xu t hi n scroll th chng ta hy gi phm Shift v click vo hnh vung tr ng tr thnh hnh vung en, lc ny chng ta c th i u ch nh kch th c text field theo mu n. Nh v y l chng ta kch ho t scroll cho text field. Cn m t s thu c tnh khc lien quan n scroll nh Thu c tnh scroll s cho chng ta bi t dng no trong vn b n s xu t hi n u tin. VD nh scroll = 1 th dng u tin s c hi n th u tin, n u scroll = 2 th dng th hai s hi n th v lc ny th dng 1 s khng th y c. Thu c tnh maxscroll cho chng ta bi t gi tr l n nh t c a scroll Thu c tnh scroll v bottomscroll cho chng ta bi t chnh xc dng vn b n no trn u v dng no cu i scroll vn b n ln hay xu ng b n c n ph i tng ho c gi m gi tr c a scroll. Th l xong! Luy n t p: Thi t k m t chng trnh scroll vn b n n gi n Bi t p ny th t ra r t d . Trong v d d i y, chng ta s xy d ng m t chng trnh v i m t text field dynamic ch a vn b n v hai button nh hnh d i y

- Tm m t o n vn b n no dn vo text field (tm o n no di di t ) - By gi hy t o m t movie m i trong Flash - S d ng cng c Text Tool t o m t text field - M ph n Properties ra v t tn cho text field c a chng ta l scrollText. t thu c tnh Mutiline v Show Border Around Text - Dn o n vn b n m b n chu n b vo text field - T o hai button gi ng nh hai hnh v trn. M t button i u khi n i ln, m t i xu ng. - Nh p o n code sau cho button i ln: CODE on (press) {

scrollText.scroll--; }

- V nh p o n code ny cho button i xu ng: CODE on (press) { scrollText.scroll++; }

- Ok, by gi b n hy ch y th movie c a mnh xem sao. B n hy th click vo button scroll vn b n

Gi th 15: Cc thnh ph n nh p li u Cc b n c th t o c nhi u thnh ph n nh p li u b ng Action Script, ch c h n cc b n g p cc thnh ph n ny trong cc th HTML. Trong chng ny, cc b n s h c cch lm checkbox, radiobutton b ng Action Script. B n cng s h c c cch lm sao chuy n t thnh ph n ny sang thnh ph n khc trong form b ng cch nh n nt TAB, v lm sao h n ch n i dung ng i dng nh p vo Cc n i dung trong chng ny: - Cch t o checkbox - Cch t o radiobutton - S d ng TAB chuy n t thnh ph n ny sang thnh ph n khc - H n ch n i dung nh p li u T o Checkbox Trong Hour 8, cc b n bi t cch t o m t selectable movie clip. CheckBox cng l m t Selectable movie clip gi ng v i cc checkbox chu n s d ng trong cc h i u hnh Mac v Windows. t o ra m t Checkbox b n c n 2 button v 1 movie clip. Button u tin th hi n tr ng thi Off c a Checkbox, c ngha l khi checkbox cha c ch n. M t button th hi n tr ng thi On, c ngha l cng checkbox nhng c ch n. Hnh d i y l 3 checkbox lm v d .

Check box u tin ang c ch n, ci th 2 cha c ch n, ci th 3 th ng i dng ang chu n b ch n. Cc b n c bi t cch no cho 3 thnh ph n c a checkbox ho t ng chung nh v y c khng? R t n gi n, button Off s c a vo m t movie clip ring t frame u tin, b m F6 t o frame k ti p v t button On vo frame th 2. t tn

frame 1 l Off, frame 2 l On. Ti p theo, cho m t cu l nh stop(); vo frame 1 dng movie clip l i ngay . Trong m i button s c m t o n code g i m t hm ngoi time line c a movie clip c ch a 2 button x l khi m i nt c nh n. CODE on (release) { pressButton(); }

Ngoi ra, trong frame Off (frame 1) s cn ch a m t o n code n a ngoi cu l nh stop(); CODE state = false; function pressButton() { state = !state; if (state) { gotoAndStop("on"); } else { gotoAndStop("off"); } }

Bi n state ki m tra tr ng thi c a checkbox. Khi click m t button th hm i l i tr ng thi c a state, c ngha l lc u pressButton s c g i. Trong , s l false (cha ch n), sau khi click s thnh true ( ch n). Ti p theo, hm pressButton a ng i dng n frame thch h p. N u state = s ki m tra gi tr c a bi n state true th s nh y n frame On, cn n u state = false th s nh y n frame Off. T o RadioButton Vi c t o m t Radiobutton s ph c t p hn m t cht so v i checkbox. Cc Radiobutton s c gom vo m t nhm c quan h v i nhau. Checkbox c s d ng trong nh ng tr ng h p ch n l a khng c tnh lo i tr , c ngha l ng i dng c th ch n nhi u checkbox. Ng c l i, Radiobutton c s d ng trong nh ng tr ng h p c tnh lo i tr , c ngha l trong m t nhm Radiobutton th ch c m t checkbox c ch n t i m t th i i m, khng c chuy n 2 Radiobutton u c ch n. N u b n ch n m t RadioButton, khi b n ch n qua m t Radiobutton khc th ch n l a c s t ng m t i, chuy n qua Radiobutton m i. Hnh d i y l m t nhm Radiobutton

RadioButton

u tin ang c ch n, nhng ng i dng ang chu n b ch n

RadioButton th 2, n u ng i dng ch n RadioButton 2 ho c b t k ci no khc th RadioButton u tin s t ng m t ch n l a. M t RadioButton n gi n cng tng t nh m t Checkbox, m t movie clip c 2 frame ch a 2 button bi u hi n 2 tr ng thi c a RadioButton. Frame u tin ch a m t vng trn r ng, frame th 2 ch m t vng trn v i d u ch m trn gi a. i m khc nhau gi a Checkbox v RadioButton chnh l code c a chng. Code c a RadioButton s ph c t p hn code c a CheckBox. Ph n u code c a Radiobutton s c vi t frame u tin. N c vi t ngoi, khng n m trong hm no c , i u ny c ngha l o n code ny s ch y khi load movie clip. CODE stop(); // ki m tra c ph i l RadioButton u tin trong nhm hay khng if (_parent.radioButtons == undefined) { // t o m t array RadioButton _parent.radioButtons = new Array(); // RadioButton u tin m c nh c ch n gotoAndStop("on"); state = true; } else { // cc RadioButton khc khng c ch n state = false; } // chn array RadioButton ra ngoi level ngoi _parent.radioButtons.push(this); Khi ng i dng click vo button, th hm turnOn s c g i. i u u tin l hm turnOn s duy t qua t t c cc RadioButton (cc movie clip), g i hm turnOff cho t ng RadioButton. Ni n gi n c ngha l khi click vo m t RadioButton th tr c tin t t c cc RadioButton trong nhm u quay v tr ng thi Off, sau s chuy n tr ng thi c a RadioButton c ch n thnh On. CODE function turnOn() { // chuy n t t c thnh OFF for(var i=0;i<_parent.radioButtons.length;i++) { _parent.radioButtons[i].turnOff(); } // chuy n RadioButtond c ch n thnh ON gotoAndStop("on"); state = true; }

Ti p theo l o n code cho hm turnOff() CODE function turnOff() { gotoAndStop("off"); state = false; } Ti p theo l xy d ng hm getValue() ki m tra xem RadioButton no ang c ch n. Hm ny s c m t movie khc g i. Hm ny r t n gi n, n s duy t qua t t c cc RadioButton trong array RadioButton xem ci no ang c ch n. CODE function getValue() { // duy t t t c cc RadioButton for(var i=0;i<_parent.radioButtons.length;i++) { // tm RadioButton no ang c ch n if (_parent.radioButtons[i].state) { return(_parent.radioButtons[i]._name); } } // n u khng c ci no c ch n th tr v m t chu i r ng return ""; }

Luy n t p: Chng trnh tr c nghi m By gi hy cng nhau p d ng nh ng th h c c v CheckBox v RadioButton lm m t chng trnh tr c nghi m n gi n nh. M i frame s ch a m t cu h i ring. V d frame u tin s ch a cu h i nh hnh d i y, v c nh ng cu tr l i d i

B t u nh - T o m t movie m i trong Flash - T o Checkbox nh c h c r i . - R i sau ko t o 5 b n c a movie clip checkbox vo, t tn l: Flash, Director, Fireworks, Freehand, and Dreamweaver. - T o cc cu tr l i v m t static text k bn Checkbox nh hnh trn. - T o m t button Next chuy n n cu h i ti p theo. - Chn o n code sau vo frame u tin CODE results = new Array(); stop();

o n code trn c nhi m v t o m t m ng results lu k t qu c a cc cu tr l i, ng th i cng dng movie t i y. - Khi nh n nt Next th s chuy n sang cu h i ti p theo v lu cu tr l i hi n th i vo m ng results CODE on (release) { if (Flash.state) results.push("Flash"); if (Director.state) results.push("Director"); if (Fireworks.state) results.push("Fireworks"); if (Freehand.state) results.push("Freehand"); if (Dreamweaver.state) results.push("Dreamweaver"); nextFrame(); }

- Ti p theo, trong frame th hai s l cu h i th hai. V cu h i th hai ch cho ch n m t l a ch n nn chng ta s s d ng RadioButton nh hnh d i y

- T o RadioButton nh ph n tr c r i a vo movie 3 ci tn: Windows, Macintosh, and Linux - Chn n i dung cu tr l i vo lun nh hnh trn - Copy nt Next vo frame 2 nhng chng ta s thay o n code b ng m t o n code khc. CODE on (release) { results.push(Windows.getValue()); nextFrame(); } o n code trn s d ng hm getValue ki m tra xem RadioButton no ang c ch n - Ok, n y th b n t lm ti p nh ng cu h i ti p theo nh, tng t nh v y thi. Nhng m hy nh l tn cc thnh ph n ph i khc nhau nh. Cc b n cng c th s d ng hm trace a k t qu nh ng cu tr l i ra c a s Output xem. - Trong Hour 18, cc b n s h c v cch a d li u ln server, khi cc b n c th c i ti n chng trnh ny a cu tr l i ln server ki m tra. S d ng Tab chuy n t thnh ph n ny sang thnh ph n khc

Nh ng ng i s d ng Flash 5 lun than phi n v vi c khng th s d ng tab chuy n i gi a cc thnh ph n nh v y. Cng vi c chuy n i b ng cch nh n phm Tab ny c g i l Tab Order, chng ta th ng th y vi c ny trong h u h t cc chng trnh chuyn nghi p, v d nh trong m t trnh duy t web, i u ny s mang l i nhi u thu n ti n cho ng i s d ng, n s chuy n n thnh ph n logic ti p theo trong chng trnh. Tuy nhin, s l a ch n thnh ph n logic ti p theo c a Flash khng ph i lc no cng ng. V th , Flash ch c th ch a v tr c a thnh ph n m thi. L y v d nh trong hnh bn d i, Flash s hi u r ng thnh ph n ti p theo thnh ph n u tin s l ci d i n ch khng ph i l ci k bn.

May m n l chng ta c th t l i Tab order cho cc thnh ph n b ng cch t l i thu c tnh tabIndex. N u chng ta c 4 text field nh hnh trn: text1, text2, text3, text4 th chng ta c th s d ng o n code sau: CODE text1.tabIndex = 1; text2.tabIndex = 2; text3.tabIndex = 3; text4.tabIndex = 4;

i u ch khi s d ng tabIndex l ph i ch n label c a cc textfield v trnh s d ng l i m t s nhi u l n, i u ny s lm cho Flash b l n l n. M t i u n a l cho d l m c nh c a Flash hay l b n s d ng tabIndex th Flash ng t focus cho thnh ph n u tin, v th , b n ph i t lm i u cng khng t ny. lm c nh v y, b n s d ng m t l nh trong i t ng Selection bo cho Flash bi t thnh ph n m c nh c t focus CODE Selection.setFocus(text1); B n c th s d ng l nh Selection.setFocus b t c lc no cng c chuy n n m t thnh ph n mong mu n. Vi c ny s r t quan tr ng, b n s t con tr vo textfield thay v b t ng i dng ph i click vo textfield tr c khi g. B n c th s d ng Selection.getFocus ki m tra xem thnh ph n no ang c focus. o n code d i y s l m t v d . Khi ng i dng chuy n focus sang m t thnh ph n khc th b n s bi t ng i dng chuy n n u. CODE Selection.addListener(this); this.onSetFocus = function(oldFocus, newFocus) { trace(oldFocus+","+newFocus); }

H n ch nh p li u Khi ng i dng nh p d li u vo m t textfield, cng c lc b n mu n h n ch vi c nh p li u . V d trong nm sinh, b n ch mu n ng i dng nh p s vo, khng c n ph i nh p ch . B n c th h n ch nh ng k t c php nh p vo textfield b ng cch t gi tr c a thu c tnh restrict c a textfield . N u khng t gi tr th textfield c th nh n t t c cc k t . Nhng n u thu c tnh restrict c a textfield l m t chu i k t th ch c nh ng k t trong chu i m i c ch p nh n. D i y

l m t v d v h n ch nh p li u, ng i dng ch c th nh p s m thi CODE text1.restrict = "01234567890";

Cn d i y l m t v d n a n u nh p li u l email CODE text2.restrict = "abcdefghijklmnopqrstuvwxyz0123456789@.-_"; M t i u ch l c cc k t in hoa v in th ng u c ch p nh n trong text2 B n cng c th h n ch s k t c php nh p vo m t textfield. Ci ny b n cng c th khng c n ph i dng AS, c th t thu c tnh tr c ti p trong khung Properties CODE text1.restrict = "01234567890"; text1.maxChars = 4;

Luy n t p: Ki m tra d li u nh p By gi chng ta s lm m t chng trnh g m m t form nh p li u, yu c u nh p vo tn, nm sinh, email. V chng ta s ki m tra cc thng tin nh p vo ny Tn ng i dng t nh t ph i c 3 k t . Nm sinh ph i c 4 s v l nh ng nm trong kho ng 100 nm tr c n nay. Cn email t nh t ph i c 7 k t v c d ng a@b.c, a, b c th l tu nhng c ph i c t nh t l 3 k t v b t bu c ph i c k hi u @. l nh ng yu c u c b n. No, b t u nh! - T o m t movie m i - T o 3 textfield cho cc n i dung nu trn, t tn l userName, userYear, v userEmail. t cc variable tng ng l userNameText, userYearText, and userEmailText. B n cng c n ph i t o m t dynamic textfield lin k t v i variable feedback. T o m t nt Submit. Movie c a b n s gi ng nh hnh d i ny nh

- t o n code sau vo frame ch nh p li u CODE stop();

u tin

d ng l i v thi t l p cc thu c tnh

h n

// h n ch chi u di t i a c a tn l 64 k t

userName.maxChars = 64; // nm sinh ph i c 4 s userYear.restrict = "01234567890"; userYear.maxChars = 4; // h n ch d li u email userEmail.restrict = "abcdefghijklmnopqrstuvwxyz0123456789@.-_"; userEmail.maxChars = 128;

- Ti p theo l

t con tr vo text field userName lc movie m i b t

CODE Selection.setFocus(userName);

ki m tra khi no ng i dng nh p li u xong, chng ta s thm m t listener b t event nh o n code d i y CODE Selection.addListener(this);

N s bo cho chng ta bi t khi no x y ra event onSetFocus - Ti p theo t gi tr c a bi n ignoreSetFocus l False, chng ta s s d ng ny sau CODE ignoreSetFocus = false;

n bi n

- Ti p theo chng ta vi t hm onSetFocus

b t event.

CODE this.onSetFocus = function(oldFocus, newFocus) { // this is a focus reset, so ignore if (ignoreSetFocus) { ignoreSetFocus = false; return(0); } // use the appropriate check function if (oldFocus == userName) { ret = checkUserName(); } else if (oldFocus == userYear) { ret = checkUserYear(); } else if (oldFocus == userEmail) { ret = checkUserEmail(); }

if (!ret) { // ignore this focus change and go back ignoreSetFocus = true; Selection.setFocus(oldFocus); } } Hm ny s nh n hai i s . i s th nh t l textfield tr c khi chuy n focus v s th hai l textfield sau khi chuy n focus. Hm checkUserName s ki m tra tn ng i dng CODE // tn ph i c t nh t 3 k t function checkUserName() { if (userNameText.length < 3) { feedback = "B n ph i nh p t nh t 3 k t " return(false); } // quay tr l i feedback feedback = ""; return(true); }

Hm checkUserYear s ki m tra nm nh p vo CODE // nm ph i t kho ng 100 nm n nay function checkUserYear() { // l y nm today = new Date(); thisYear = 1900+today.getYear(); // ki m tra nh p if (parseInt(userYearText) == Math.NaN) { feedback = "B n ph i nh p nm sinh."; return(false); // n u nm sinh qu s m (khng th t) } else if (parseInt(userYearText) < thisYear-100) { feedback = "B n ph i nh p ng nm sinh, t 100 nm tr c return(false); // n u nm sinh l trong tng lai :) } else if (parseInt(userYearText) > thisYear) { feedback = "B n ph i nh p ng nm sinh"; return(false); }

n nay";

// quay tr l i feedback = ""; return(true); }

Ti p theo l hm chechUserEmail

ki m tra email

CODE // ki m tra email function checkUserEmail() { if (userEmailText.length < 7) { feedback = "Email qu ng n"; return(false); } else if (userEmailText.indexOf("@") == -1) { feedback = "Thi u k t @"; return(false); } else if (userEmailText.indexOf(".") == -1) { feedback = "Thi u d u ch m (.)"; return(false); } else if (userEmailText.indexOf("@") > userEmailText.indexOf(".")) { feedback = "@ v d u ch m khng ng"; return(false); } else if (userEmailText.lastIndexOf(".") > userEmailText.length-3) { feedback = "Domain khng h p l " return(false); } // quay tr l i feedback = ""; return(true); }

- Th l ki m tra d li u xong. By gi chng ta s d ng cc hm ny ki m tra d li u nh p vo v xu t ra k t qu . Hm sau s ki m tra t ng nh p li u, n u m t trong nh ng trn sai th s tr v k t qu false, cn ng h t s l true CODE function checkAll() { if (!checkUserName()) { return(false); } else if (!checkUserYear()) { return(false); } else if (!checkUserEmail()) { return(false); } return(true);

- By gi chng ta vi t code cho nt Submit. Khi nh n nt Submit th s g i hm CheckAll v a sang frame ti p theo v i l i cm n. CODE on (release) { if (checkAll()) { nextFrame(); } }

Gi th 16: Menu v button

ng

Menu h th ng r t quen thu c v i cc chng trnh my tnh hi n nay. H i u hnh c a chng ta v ngay c Flash u c m t h th ng menu trn u. Menu l a ra nhi u l a ch n cho ng i dng m l i t t n di n tch mn m t cch t t hnh. Trong gi th 16 ny, chng ta s h c v : - Cch lm m t menu n gi n - S d ng menu trong movie - T o m t menu x xu ng khi chng ta click vo m t nt - Cch t o button ng - S d ng button ng trong movie Cch lm m t menu n gi n Nh ng b n m i lm quen v i AS th ng mu n bi t cch t o menu. Th t ra t o m t menu r t n gi n, chng ta t ng bi t qua r i, ho c c th cc b n khng . Cch th c ho t ng c a n l c m t button, v khi ng i dng a con tr qua button th m t lo t nh ng button khc s xu t hi n l n l t bn d i button t o thnh m t dy menu. Hnh d i y l m t v d

Khi chng ta a con tr ngang qua nt About Us th m t lo t nh ng button khc s xu t hi n nh hnh bn ph i. Nh v y, chng ta c n c 2 frame trong movie clip lm menu. Frame th nh t s ch ch a button About Us, frame th hai s ch a button About Us v 3 button cn l i. frame th nh t, khi ng i dng a con tr ngang qua button About Us th s nh y sang frame th 2 v d ng l i frame 2 cho n khi ng i dng a con tr chu t ra ngoi, khi th s tr v frame 1. N u , cc b n s th y cch ny gi ng nh chng ta c h c Gi th 13 v RollOver. Chng ta s dng hm hitTest ki m tra xem v tr c a con tr chu t c n m trong button khng. D i y l o n code x l vi c ny. Chng ta cng xem nh! CODE

onClipEvent(load) { previouslyOver = false; } onClipEvent(enterFrame) { // ki m tra v tr con tr currentlyOver = this.hitTest(_root._xmouse,_root._ymouse,true); // ki m tra s thay i if (!previouslyOver and currentlyOver) { previouslyOver = true; this.gotoAndStop("on"); } else if (previouslyOver and !currentlyOver) { previouslyOver = false; this.gotoAndStop("off"); } } Hy ch , n u b n s d ng AS qu n l nh ng thnh ph n khc c t chung trong frame, hy ch c r ng b n ph i a menu ln trn cng b ng cch s d ng hm swapDepths Luy n t p: Lm m t menu No, chng ta b t tay vo lm th m t menu n gi n nh! Menu chnh c a chng ta s c 3 ph n: About Us, Products v Store, m i menu l i ch a nhi u menu con. - Vi c u tin l t o m t movie m i trong Flash - T o m t button n gi n thi, button ny khng nn c ch , v nh ch a ch tr ng chng ta a ch vo sau - T o movie clip m i, t tn l About Us Menu. T o hai layer, m t l Label v m t l Buttons - Trong layer Buttons, ko button v a t o vo. t dng ch About Us ln trn - Layer Label s tr i ra trn 2 frame. Nhng 2 frame trong layer Buttons s khc nhau, frame u t tn l off, frame 2 t tn l on. - Trong frame th hai c a layer Buttons, ko thm 3 button n a vo v t o n i dung cho chng l History, Clients, v Partners. Nh t cu l nh stop() vo frame u tin. Movie clip c a chng ta by gi s gi ng nh hnh bn d i

Quay tr l i level root, ko movie clip About Us Menu t Library vo, aboutUsMenu, v chn o n code sau: CODE onClipEvent(load) { previouslyOver = FALSE; } onClipEvent(enterFrame) { currentlyOver = this.hitTest(_root._xmouse,_root._ymouse,true); if (!previouslyOver and currentlyOver) { previouslyOver = true; this.gotoAndStop("on"); } else if (previouslyOver and !currentlyOver) { previouslyOver = false; this.gotoAndStop("off"); } }

t tn l

- By gi hy ch y th movie c a b n xem no. a con tr vo button About Us xem i u g x y ra! - Ph n vi c cn l i l c a b n . Lm tng t cho cc menu cn l i! T o m t menu x xu ng khi chng ta click vo m t nt C nhi u cch lm menu x xu ng, v cng c nhi u cch menu ho t ng. Chng ta bi t m t cch trong v d ph n tr c, khi ng i dng a con tr ngang qua m t button th m t lo t button khc s xu t hi n d c bn d i t o thnh m t menu, n gi n ch b ng 2 frame. Menu x xu ng s ho t ng theo m t cch khc: khi ng i dng click vo m t

button, m t lo t menu s xu t hi n nhng ng i dng ph i gi a chu t v ko con tr ch n cc menu con, mu n ch n menu no th th chu t t i menu . Chng ta hy nghin c u m x menu x xu ng ny nh! Chng ta cng s t o 2 frame nh bi tr c, frame u ch a button l tiu c a menu, frame hai ch a cc button x p d c xu ng thnh m t h th ng menu khi tiu c a menu c click. Tuy nhin cch vi t code s khc i! y l code cho button lm tiu cho menu CODE on (press) { expandMenu(); } on (release, releaseOutside) { collapseMenu(); }

Khi ng i dng click vo button th n s g i hm expandMenu(), khi ng i dng th chu t ra th n s g i hm collapseMenu() Ngoi ra th chng ta cn s d ng cc event on(dragOver) v on(dragOut), hai event ny cng gi ng v i on(rollOver) v on(rollOut) nhng m ph i gi chu t trong khi di chuy n CODE on (dragOver) { rollOverMenu(); } on (dragOut) { rollOutMenu(); }

Button tiu g i 4 hm expandMenu(), collapseMenu(), rollOverMenu(), rollOutMenu(), by gi chng ta s vi t cc hm ny, t chng trn frame nh! Hm expandMenu() s t gi tr cho bi n expanded l true v nh y sang frame th hai CODE function expandMenu() { expanded = true; gotoAndStop("on"); }

Hm collapseMenu() s lm ng c l i CODE function collapseMenu() { expanded = false;

gotoAndStop("off"); }

Hm rollOverMenu s ki m tra bi n expanded v s di chuy n n frame thch h p n u expanded = true. C ngha l khi ng i dng click chu t vo button tiu th menu s x xu ng v ng i dng ph i gi chu t trong lc di chuy n ch n, n u th chu t ra th menu s thu l i. CODE function rollOverMenu() { if (expanded) { gotoAndStop("on"); } } function rollOutMenu() { if (expanded) { gotoAndStop("off"); } }

Chng ta s vi t code ti p cho cc menu x xu ng. Chng u l cc button, v chng ta s vi t event on(release) cho chng b t s ki n khi ng i ng i th chu t trn button , c ngha l ng i dng ch n menu . Khi , n g i hm collapseMenu() r i th c hi n cng vi c c a mnh, y n gi n ch g i hm trace. Chng ta cng vi t event on(dragOver) v on(dragOut) cho cc button ny gi menu l i khi ng i dng gi chu t v ko qua cc button cng nh s thu menu l i khi ng i dng th chu t ra ho c ko ra ngoi. CODE on (release) { collapseMenu(); trace("History Button Pressed"); } on (dragOut) { rollOutMenu(); }

i u cu i cng c n ph i lm l ph i thay i thu c tnh cho cc button. Trong ph n khung properties c a button, chuy n Track as Button thnh Track as Menu Item. i u ny s lm cho button nh n c s ki n release thay v s nh n press tr c. Cn c r t nhi u cch lm menu, n ph thu c vo m c ch s d ng c a b n v kh nng s d ng AS c a m i ng i Button ng

M t cch khc cng tng t lm menu x xu ng l s d ng button ng. Chng ta c th lm m t menu x xu ng m khng c n ph i lm cch button tr c, chng ta , th v nh . s c t sinh ra b ng AS i u u tin c n ph i lm l t o m t button m u. Ti p theo, t button vo trong m t movie clip, movie clip ny s c hai thnh ph n, m t l button v hai l dynamic text trn button, dynamic text s c lin k t v i bi n buttonLabel. Trong c a s Library, click chu t ph i ln tn movie clip v ch n Linkage. Nh ch n m c Export for Actionscript v t tn cho n l buttonMovieClip. c r i, by gi chng ta c m t button m u, ti p theo chng ta s s d ng AS s d ng button ny. Vi c ny cng r t n gi n, chng ta s d ng l nh attachMovie t o m t instance c a movie clip v t l i gi tr cho dynamic text trong movie clip, v t l i v tr c a n b ng cch t cch thu c tnh _x, _y. CODE function createButton(buttonLabel, x, y) { this.attachMovie("buttonMovieClip","button"+buttonLevels,buttonLevels); bmc = this["button"+buttonLevels]; bmc.buttonLabel = buttonLabel; bmc._x = x; bmc._y = y; buttonLevels++; return(bmc); } c r i, hy th movie c a b n xem no B n c th t o ra hng lo t button ng b ng cch g i m t lo t hm createButton, ho c chng ta s lu cc tn button vo m t m ng r i dng vng l p for g i hm createButton. Nhng c m t v n c n gi i quy t l lm th no x l ring cho t ng button. N u vi t code ngay trong button th cc button s nh nhau. V y lm cch no lm cho cc button c th x l nh ng cng vi c khc nhau? Button s g i nh ng hm t ngoi root, nh v y th m i button c th g i m t hm khc nhau, i u ny cng c ngha l chng s th c hi n nh ng vi c khc nhau Luy n t p: S d ng button ng t o menu

- T o m t movie m i trong Flash - T o button m u nh trong ph n tr c,

t o n code sau vo button

CODE on (rollOver) { _parent.buttonRolloverAction(thisAction,buttonLabel); } on (release) { _parent.buttonClickAction(thisAction,buttonLabel); }

i u ny c ngha l khi button s g i hm buttonRollOverAction khi a chu t qua, v g i hm buttonClickAction khi click chu t. Hai i s c a n s gip bo button no c click - D i y l hm createButton t o button ng, nhng l n ny chng ta s t o m t lo t button t m t m ng lu s n CODE function createButton(buttonLabel, x, y, buttonAction) { this.attachMovie("buttonMovieClip","button"+buttonLevels,buttonLevels); bmc = this["button"+buttonLevels]; bmc.buttonLabel = buttonLabel; bmc._x = x; bmc._y = y; bmc.thisAction = buttonAction; buttonLevels++; return(bmc); } // T o m t lo t button t m ng function createButtonList(buttonList, x, y, direction) { for (var i=0;i<buttonList.length;i++) { ret = createButton(buttonList[i].label,x,y, buttonList[i].action); buttons[i].mc = ret; if (direction == "down") { y += 20; } else if (direction == "across") { x += 100; } } }

- Cn y l cch t o m ng

t o button

CODE mainButtonList = new Array(); mainButtonList.push({label:"About Us", action:"aboutUsButtonList"}); mainButtonList.push({label:"Products", action:"productsButtonList"}); mainButtonList.push({label:"Store",action:"storeButtonList"});

- Cng vi c ti p theo l g i hm createButtonList CODE buttonLevels = 1; createButtonList(mainButtonList,100,100,"across");

t o button

- N u b n th ch y movie lc no th chng ta s th y 3 button c t o nhng m s cha lm g khi a chu t ngang qua hay click vo. By gi chng ta s vi t hm buttonRollOverAction x l CODE function buttonRolloverAction(thisAction,thisLabel) { if (thisAction == "aboutUsButtonList") { deleteAllButtonLists(); createButtonList(aboutUsButtonList,100,120,"down"); } else if (thisAction == "productsButtonList") { deleteAllButtonLists(); createButtonList(productsButtonList,200,120,"down"); } else if (thisAction == "storeButtonList") { deleteAllButtonLists(); createButtonList(storeButtonList,300,120,"down"); } }

- Hm buttonRollOverAction g i hm createButtonLists v i cc m t trong 3 m ng c nh ngha d i y CODE aboutUsButtonList = new Array(); aboutUsButtonList.push({label:"History", action:"goto"}); aboutUsButtonList.push({label:"Clients", action:"goto"}); aboutUsButtonList.push({label:"Partners", action:"goto"}); productsButtonList = new Array(); productsButtonList.push({label:"Widgets", action:"goto"}); productsButtonList.push({label:"Toys", action:"goto"}); productsButtonList.push({label:"Power Tools", action:"goto"}); storeButtonList = new Array(); storeButtonList.push({label:"Order Online", action:"goto"}); storeButtonList.push({label:"Find a Store", action:"goto"}); storeButtonList.push({label:"Request Catalog", action:"goto"}); storeButtonList.push({label:"Track Shipment", action:"goto"}); storeButtonList.push({label:"Return Item", action:"goto"});

i s khc nhau l

- Hm deleteAllButtonLists s lm bi n m t cc button c t o, c ngha l t t c cc menu trong 3 m ng v a t o s bi n m t v s ch xu t hi n m t m ng t i m t th i i m m thi. Hy t ng t ng ci menu c a chng ta trong Flash, khi a con tr n menu File th menu File x xu ng, nhng khi a sang Edit th menu File s thu l i v menu Edit x xu ng Tr c , chng ta ph i c o n code sau ch t ng menu n cc m ng menu con CODE

allButtonLists = new Array(); allButtonLists = [aboutUsButtonList,productsButtonList,storeButtonList];

Ti p theo chng ta s vi t hm deleteButtonList v deleteAllButtonLists CODE function deleteButtonList(buttons) { for (var i=0;i<buttons.length;i++) { buttons[i].mc.removeMovieClip(); } } function deleteAllButtonLists() { for(var i=0;i<allButtonLists.length;i++) { deleteButtonList(allButtonLists[i]); } }

By gi hy ch y th movie c a chng ta nh. B n th y sao? Tuy t v i ph i khng no

Gi th 17: Lin k t v lin l c v i trnh duy t, Browser Navigation and Communication Khi thi t k Flash, b n c 2 s la ch n, c th nhng vo m t trang web ho c lm m t application c th t ch y ring. N u b n nhng vo m t trang web th movie c a b n c th lin l c v i trnh duy t bo cho trnh duy t c n ph i lm g. Trong gi th 17, cc b n s h c c: - Cch load m t trang web - Tm hi u cch lin l c v i JavaScript - M m t c a s trnh duy t m i t movie - S d ng JavaScript g i thng i p n movie - Lu thng tin ng i dng vo JavaScript cookies - T o movie s d ng JavaScript - Nh ng cu l nh c bi t cho nh ng application t ch y Load m t trang web Ngy nay th Flash c s d ng r t nhi u trong cc website. N c s d ng lm trang ch ho c l t o nh ng thanh lin k t (navigation bar) Cng c lc, chng ta c n load m t trang web m i t movie Flash. Cch n gi n B n c th load m t trang web m i b ng cch s d ng cu l nh getURL. N ho t ng gi ng nh th <a href> c a HTML. D i y l m t v d khi nh n m t button th s load m t trang web m i thay th cho trang hi n t i:

CODE on (release) { getURL("anotherpage.html"); }

v d trn th trang anotherpage.html s c load. B n c th thay b ng m t URL hon ch nh (nh l http://www.yahoo.com) lin k t n m t website khc ho c ng d n tng i lin k t n nh ng trang trong cng m t website. Khng c n s d ng AS, chng ta cng c th t o c lin k t nh v y b ng cch t thu c tnh hypertext links c a TextField, ci ny th t ra gi ng h t nh l th <a href> c a HTML Cch nng cao Cch ny b n cng s d ng hm getURL v i m t cch khc xc nh ni s load trang web ln l trong frame no ho c l trong window no. Nh chng ta bi t th m i frame v m i window u c tn, chng ta s truy n tn ny vo i s th 2 c a hm getURL. Trong v d d i y, trang web c a b n s c nhi u frame, trong c frame tn l Main, trang web m i s c load trong frame Main ny CODE on (release) { getURL("summary.html","Main"); }

B n cng c th s d ng o n code trn load trang web vo window tn Main. Ngoi ra, b n cn c th s d ng nh ng i s c bi t truy n vo thay cho tn: - _blank : m m t window m i v load trang web vo window - _parent : load trang web vo frame cha c a frame hi n t i - _top : load trang web vo window c, khng k ang frame no m s thay th t t c cc frame trong window N u b n mu n thay i nh ng thi t l p c a window nh kch th c th b n ph i s d ng JavaScript. Chng ta s ni v v n ny sau Luy n t p: Lm thanh lin k t (navigation bar) By gi th b n kh nng lm m t thanh lin k t b ng Flash s d ng AS, nhng b n c n ph i c thm nh ng ki n th c khc v HTML. Thanh lin k t c a chng ta s t frame bn tri c a trnh duy t, frame bn ph i s ch a n i dung. Movie lm b ng Flash s ch a m t s button lin k t sang cc trang web khc. - u tin chng ta s t o m t trang HTML ch a 2 frame, trang ny tn l

navigation.html CODE <HTML><HEAD> <TITLE>Flash Navigation Example</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> <FRAMESET cols="120,*"> <FRAME name="navigation" src="navbar.html" scrolling="no"> <FRAME name="content" src="content1.html" scrolling="auto"> </FRAMESET> </BODY> </HTML>

- Trang HTML trn ch t o ra 2 frame, trong m i frame s ch a m t trang HTML khc. By gi chng ta s t o 2 trang HTML . Chng ta cha c n ph i lm trang HTML cho frame bn tri, v n s c t o ra khi chng ta publish movie thnh HTML. Cn trang HTML trong frame bn ph i s c nhi u thay i. By gi hy t o 3 trang HTML n gi n tn content1.html, content2.html, content3.html ch a 3 dng ch n gi n. CODE <HTML><HEAD> <TITLE>Content 1</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> Content 1 </BODY> </HTML>

- By gi l cng vi c lm v i Flash. T o m t movie m i r ng 100px, cao 400px. T o 3 button v vi t code cho cc nt lin k t n 3 trang content1.html, content2.html, content3.html tng t nh sau: CODE on (release) { getURL("content1.html","content"); }

- Lu movie l i v i tn navbar.fla - Publish movie ra thnh file html - Ti p theo l a t t c cc file vo m t th m c. Cc file s l: navigation.html, content1.html, content2.html, content3.html, navbar.html, and navbar.swf. - Hy m trang navigation.html th xem nh

ActionScript v JavaScript N u b n quen s d ng JavaScript r i th b n s r t vui khi bi t r ng JavaScript c th lin l c c v i ActionScript. Tuy nhin, cch ny khng ho t ng t t i v i t t c cc lo i trnh duy t. Vi c lin l c ny c xy d ng trn 2 cng ngh . M t l cng ngh LiveConnect c xy d ng trong nh ng phin b n trnh duy t Netscape tr c phin b n 6.0. Cng ngh th hai l ActiveX dng lin l c gi a Flash v Internet Explorer. Nhng n u b n ang thi t k cho ng i dng s d ng trnh duy t c a Windows th cch ny s r t t t. G i thng i p n JavaScript G i thng i p t ActionScript n JavaScript th ch c n vi t code trong ActionScript nhng n cng s thay i n i dung trang HTML c a b n . N u b n t o file Flash b ng cch ch n FSCommand trong Publish settings, b n s t o c m t file HTML c s a ch a y nh n thng i p. Cng vi c c a b n ch l thay th nh ng ch c nh d u Your code here b ng ph n JavaScript c a b n. hi u r hn cch n lm vi c nh th no th chng ta hy cng nhau m x file html m Flash t o ra nh u tin, hy ch n th OBJECT/EMBED, trong s c m t s ph n ch p nh n s lin l c. Tham s ID trong th OBJECT s gi ng v i tham s NAME trong th EMBED. Hai tham s ny s t tn cho movie c a chng ta trong trang web JavaScript c th g i n. Ngoi ra cn c m t tham s khc trong th EMBED, l tham s swLiveConnect cho php nh ng phin b n Netscape tr c phin b n 6.0 c th lin l c v i Flash b ng cng ngh LiveConnect.

CODE <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/ [ic:cc]flash/swflash.cab#version=5,0,0,0" ID=flashmovie WIDTH=120 HEIGHT=120> <PARAM NAME=movie VALUE="17astojs.swf"> <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#FFFFFF> <EMBED src="17astojs.swf" quality=high bgcolor=#FFFFFF WIDTH=120 HEIGHT=120 swLiveConnect=true NAME=flashmovie TYPE="application/x-shockwave-flash" PLUGINSPAGE="http: //www.macromedia.com/shockwave/download/ index.cgi?P1_Prod_Version=ShockwaveFlash"></ EMBED> </OBJECT>

Tr c o n code c a th OBJECT/EMBED s c m t o n script. Ph n u tin l m t hm JavaScript v i tn c a movie ID trong th OBJECT v n i ti p v i _DoFSCommand. Nh v d trn th tn hm c a chng ta s l

flashmovie_DoFSCommand. Trong hm ny th chng ta s truy n d li u l i cho movie. Khng may l Netscape . Internet Explorer v Internet Explorer nhn nh n movie c a chng ta khc nhau nhn movie v i tn truy n vo tham s ID (flashmovie), cn Netscape nhn movie v i tn l document.flashmovie. Hy xem o n code d i y xem nh:

CODE <script LANGUAGE=JavaScript> function flashmovie_DoFSCommand(command, args) { if (navigator.appName.indexOf("Microsoft") != -1) { var flashmovieObj = flashmovie; } else { var flashmovieObj = document.flashmovie; } alert(command); alert(args); }

Trong Internet Explorer, Flash khng ch c th lin l c v i JavaScript m cn c th li n l c v i VBScript. o n code d i y c vi t b ng JavaScript thay cho o n JavaScript trn:

CODE if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 && navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows 3.1") == -1) { document.write('<script LANGUAGE=VBScript\> \n'); document.write('on error resume next \n'); document.write('Sub flashmovie_FSCommand(ByVal command, ByVal args)\n'); document.write('call flashmovie_DoFSCommand(command, args)\n'); document.write('end sub\n'); document.write('</SCRIPT\> \n'); } </SCRIPT>

V y cn ph n ActionScript ph i lm sao y. Xin tr l i l ch c n m t dng duy nh t m thi

CODE fscommand ("alert", "This is alert 1.");

Nh n thng i p t JavaScript Nh n thng i p t JavaScript th c v d hn. Nhng b n ph i nh r ng t tham s ID trong th OBJECT v tham s NAME trong th EMBED, nh t gi ng tn nh. V cng nh t swLiveConnect=true trong th EMBED. By gi th s n sng truy n thng i p t JavaScript cho movie r i. Hy xem v d ny nh, trong v d ny th chng ta s s d ng hm gotoFrame di chuy n movie sang frame th hai.

CODE <FORM NAME="flashControlForm"> <INPUT NAME="gotoFrame1" TYPE=Button VALUE="Frame 1" onClick="window.document.flashmovie.GotoFrame(1);"> </FORM>

Ch c ch c n y cc b n ang t h i t i sao di chuy n sang frame th hai m l i s d ng gotoFrame(1), ng khng no? B i v h m c a chng ta b t u t s 0 (zero-based). V v y, frame 1 s l 0, frame 2 s l 1, frame 3 s l 2 C hn 24 cu l nh trong Flash movie. Tuy nhin chng ta khng c n ph i dnh nhi u th i gian tm hi u b i v nh ni trn th cch lin l c ny khng ph i ho t ng t t i v i t t c cc lo i trnh duy t. B n c th s d ng hm GetVariable v SetVariable i u khi n nh ng bi n trong timeline c a movie. Cu l nh Zoom dng ko dn movie. Hai hm isPlaying v percentLoaded dng ki m tra movie no ang ho t ng. Play dng play m t movie khi n ang ng ng. Luy n t p: M window m i C l y l m t yu c u r t th ng g p i v i nh ng ng i s d ng Flash. B n c th lm c i u ny b ng cch s d ng hm getURL ho c JavaScript. Tuy nhin, s d ng JavaScript s c r t nhi u c i m m i v hay hn, b n c th t l i nh ng thu c tnh c a window. No, cng lm th nh: - T o m t movie m i. - t vo movie m t button. - Chn o n code sau cho button v a t o

CODE on (release) { fscommand ("newwindow", "content.html"); }

- Trong ph n Publish Settings, ch n

publish ra file HTML cng v i Flash movie.

Trong ph n HTML, nh ch n vo m c Flash with FSCommand - Publish movie c a b n. - M file HTML m Flash v a t o b ng m t trnh so n th o no cng c, nh NotePad ch ng h n. Hy tm ph n chn JavaScript, v chn o n code sau vo:

CODE if (command == "newwindow") { window.open(args,"","width=320,height=240,location=no,toolbar=no, menubar=no"); }

- T o thm m t file HTML n gi n n a v t tn l content.html - M file HTML c a b n ra trong m t trnh duy t v nh l trnh duy t ph i h tr JavaScript nha. Khi nh n vo button th m t c a s m i s xu t hi n, khng c toolbar, kch th c 320x240. - V y cn i v i nh ng trnh duy t khng h tr JavaScript th sao? n gi n thi, s d ng getURL . i u quan tr ng l c n ph i cho Flash bi t lc no s d ng Flash, lc no s d ng JavaScript. Quay tr l i file HTML m Flash t o, chn o n code JavaScript sau vo cu i o n code ta chn vo lc tr c

CODE function initComm() { window.document.newWindowMovie.SetVariable("jsCommOK","OK"); }

o n code trn s th t gi tr cho bi n jsCommOK l OK. N u trnh duy t c h tr JavaScript th jsCommOK s mang gi tr OK cn n u khng th bi n jsCommOK v n l undefined. ch y hm initComm u tin th b n s a l i ph n BODY c a trang HTML nh sau:

CODE <BODY bgcolor="#FFFFFF" onLoad="initComm();">

i u ny c ngha l hm initComm s c g i ngay sau khi trang ny load xong. - By gi hy quay tr l i file Flash c a b n, s a o n script c a button thnh:

CODE

on (release) { if (jsCommOK == "OK") { fscommand ("newwindow", "content.html"); } else { getURL ("content.html", "_blank"); } }

Luy n t p: T o m t SlideShow c i u khi n b i JavaScript Trong ph n ny, chng ta s cng nhau lm m t file Flash khng c ActionScript m s c i u khi n b ng JavaScript. - T o m t movie Flash m i v i 3 frame ho c nhi u hn. N i dung c a m i frame th khng quan tr ng, b n mu n g trong cng c nhng m t l i khuyn l m i frame nn khc nhau chng ta theo di s thay i - t cu l nh stop() vo frame u tin - Publish ra file HTML - M file HTML ra trong trnh so n th o vn b n - Truy n tham s ID trong th OBJECT v NAME trong th EMBED, c hai s mang gi tr l slideshow - Nh t swLiveConnect=true trong th EMBED - T o 2 button trong file HTML b ng o n code sau:

CODE <FORM NAME="flashControlForm"> <INPUT NAME="next" TYPE=Button VALUE="Next" onClick="nextFrame();"> <INPUT NAME="prev" TYPE=Button VALUE="Previous" onClick="prevFrame();"> </FORM>

- M i button s g i m t hm. C hai hm s s d ng TcurrentFame(/)bi t ang frame th m y, r i s d ng gotoFrame di chuy n t i ho c lui.

CODE <script LANGUAGE="JavaScript"> function nextFrame() { var frameNum = window.document.slideshow.TCurrentFrame("/"); window.document.slideshow.GotoFrame(frameNum+1); } function prevFrame() { var frameNum = window.document.slideshow.TCurrentFrame("/"); window.document.slideshow.GotoFrame(frameNum-1); }

</SCRIPT>

Cng vi c ti p theo b n cn nh khng: CH Y TH

i no

Gi th 18: G i thng tin cho my ch , Sending Information to the Server Cho n t n by gi , nh ng movie chng ta lm c h u h t l ch ch y m t mnh (stand alone). C ngha l n ch ch y m t my khch (client-side) khng c s lin l c v i my ch (Server). Nn nh r ng Flash cng c th g i tr thng tin cho Server gi ng nh form c a HTML. V y th trong gi th 18 ny, chng ta s tm hi u v v n ny. Trong gi th 18, chng ta s h c: - Tm hi u v i t ng LoadVars - T o m t chng trnh server-side n gi n - S d ng Flash g i d li u v cho Server i t ng LoadVars R t may m n l chng ta c Flash MX, b i v trong nh ng phin b n Flash tr c y, mu n lm i u ny th chng ta ph i lm nh ng movie clip r t kh khn. iv i Flash MX, chng ta c th s d ng i t ng LoadVars. i t ng LoadVars bao g m m t t p h p cc cu l nh v nh ng bi n c bi t g i d li u cho Server gi ng nh post form trong HTML. Chng ta c th t o i t ng gi ng nh t o nh ng i t ng khc. Hy xem gi th 12 nh! L y d li u D i y l m t v d . Thay v s d ng new Object() b ng new LoadVars. Sau th i t ng LoadVars m i s c t o. CODE myVars = new LoadVars();

V i i t ng LoadVars, chng ta c th lm c 2 vi c, l g i v l y d li u. l y d li u, chng ta s d ng cu l nh load. Ci chng ta c n y l m t ng d n n ni ch a d li u:

CODE myVars.load("myURL.txt");

V d trn ho t ng gi ng nh cu l nh LoadVariables trong gi th 10. Tuy nhin, cu l nh LoadVariables ch l y v thay th d li u trong cng m t level v i cu l nh ny m thi. Hy t ng t ng, chng ta c m t file ch a d li u nh sau:

CODE name=George&ID=47

G i d li u V i i t ng LoadVars, chng ta cng c th g i d li u i ln Server. Tr c h t, chng ta a d li u vo i t ng LoadVars, r i sau s d ng cu l nh send g i d li u i.

CODE myVars = new LoadVars(); myVars.name = "George"; myVars.ID = 47; myVars.send("serverprogram.cgi", "_self");

o n code trn s t o m t i t ng LoadVars m i tn l myVars, r i a hai thu c tnh vo i t ng myVars. Sau , g i d li u i ln Server, chnh xc l n chng trnh CGI tn l echo.cgi. Cu l nh send cng ho t ng tng t nh trong form c a HTML. _self l Target, chng ta c th thay th b ng cc gi tr khc nh c bi t. Nhng cn m t cu l nh n a l sendAndLoad. Cu l nh ny c ghp cu l nh send v load. C ngha l i t ng LoadVars s g i d li u ln Server, sau s l y gi tr tr v .

CODE mySendVars = new LoadVars(); myLoadVars = new LoadVars(); mySendVars.name = "George"; mySendVars.ID = 47; mySendVars.sendAndLoad("serverprogram.cgi", myLoadVars);

Tr ng thi l y d li u Hy nh l cu l nh send v load s khng l y d li u ngay t c th. C th ph i i trong m t th i gian ng n ho c di. V v y, chng ta s c nhu c u theo di tr ng thi

l y d li u. Chng ta khng th s d ng d li u ngay l p t c sau cu l nh load ho c sendAndLoad, m c n ph i ki m tra xem l y d li u xong cha. Cch n gi n nh t l dng m t movie clip l p i l p l i ki m tra. Cng c th s d ng getBytesLoaded v getBytesTotal v i nh ng d li u l n. D i y l v d ki m tra vi c l y d li u:

CODE myLoadVars.onLoad = function(success) { if (success) { gotoAndStop("load done"); } else { gotoAndStop("load problem"); } }

Nh trong o n code trn th i s success s nh n m t trong hai gi tr true ho c false cho bi t vi c nh n d li u xong hay cha

Gi th 19: Dng XML v i Flash Cng ngy XML cng tr nn thng d ng trong cc ng d ng tin h c, v ngay c trong Flash, v y trong gi ny mnh s h c cc i u sau:

XML cn b n i t ng XML trong Flash Phn tch v x l XML theo phung pho

quy (recursive)

XML Cn b n XML ch n gi n l m t vn b n ch a d li u. XML tng t nh HTML, cng dng cc th . Tuy nhin, XML khc HTML l cc th HTML c n nh tr c cho cc ch c nng khc nhau, cn XML th khng. V i XML, b n c th t t o cho mnh cc th theo b n ring c a b n. ph h p cho m c ch

C th t o m t XML file v i 1 trnh bin t p vn b n (nh Notepad, Textpad ...) n gi n hay l cc software chuyn vi t v XML (XMLSpy, Epic ...) V i Flash MX, b n c th d dng truy c p c d li u tr trong XML, v t ng XML c a Flash s t ng phn tch vn b n XML ny. i

Trong VNFX c r t nhi u bi vi t v XML (v d nh bi gi i thi u XML c a FlashLee) cc b n c th tham kh o thm

i t ng XML i t ng XML trong Flash g m c nhi u hm v c tnh dng gip b n l y v phn tch d ki n trong XML file m t cch d dng. B c u tin khi dng i t ng XML l t o m t phin b n XML tr c: CODE myXML = new XML()

Phn tch v s l vn b n thnh XML Sau khi t o phin b n XML trn, hi n gi phin b n ny v n cha c g c , tuy nhin b n c th nhanh chng t o ra m t ti li u XML b ng cch dng l nh parseXML. L nh ny s nh p m t chu i vn b n, v phn tch v x l n thnh 1 ti li u XML. CODE myXML = new XML(); myXML.parseXML("<user><name>Gary</name><ID>47</ID></user>"); Hay b n c th vi t tr c ti p nh sau CODE myXML = new XML("<user><name>Gary</name><ID>47</ID></user>"); N u m chu i c nh p vo khng th t o thnh XML hon ch nh th b n c th dng c tnh status ki m tra. CODE myXML = new XML("<user><name>Gary</name><ID>47</user>"); trace(myXML.status); Output window s cho ra -9 khi ch y o n code trn. -9 c ngha l thi u th ng (end tag), v mnh thi u th </ID>. N u output window cho ra -10 th b n thi u th m (start tag), v 0 c ngha l m i vi c hon ch nh L y d li u t i t ng XML l y nt (node)

C nhi u hm lm vi c ny. V d , b n c th dng firstChild u tin c a i t ng XML:

CODE myXML = new XML("<user><name>Gary</name><ID>47</ID></user>"); trace(myXML.firstChild); Output window s cho ra <user><name>Gary</name><ID>47</ID></user>. V y chnh l nt u tin c a i t ng XML. N u chng ta i xu vo 1 l n n a v i firstChild

CODE myXML = new XML("<user><name>Gary</name><ID>47</ID></user>"); trace(myXML.firstChild.firstChild); K ny output window s cho ra <name>Gary</name>, v ph n t name l nt u tin c a user Ngoi cch trn ra, cn 1 cch n a l dng childNodes, l ma tr n c a c a cc nt. Cng m t v d trn nhng c th dng nh sau v i chidlNodes CODE myXML = new XML("<user><name>Gary</name><ID>47</ID></user>"); trace(myXML.childNodes[0].childNodes[0]); D i nt name, chng ta cn m t nt n a d i nt name, v c th dng cch trn l y nt : CODE myXML = new XML("<user><name>Gary</name><ID>47</ID></user>"); trace(myXML.childNodes[0].childNodes[0].childNodes[0]); v output window s cho ra ch Gary. y l nt vn b n (text node) c a nt name. Nhn th t ng y l t n cng r i, khng th xu ng su hn c n a, v y l nt cu i cng, nhng n u b n mu n l y gi tr c a n nh l chu i vn b n th b n c th i thm 1 b c n a nh sau: CODE myXML = new XML("<user><name>Gary</name><ID>47</ID></user>"); trace(myXML.childNodes[0].childNodes[0].childNodes[0].nodeValue);

N u b n mu n l y ci ID

trong nt th 2 th thay

i nh sau:

CODE myXML = new XML("<user><name>Gary</name><ID>47</ID></user>"); trace(myXML.childNodes[0].childNodes[1].childNodes[0].nodeValue);

* gi i thch thm v o n code trn, n u b n ch dng childNodes th k t qu s l 1 i t ng, cn n u b n dng nodeValue th s ra chu i. B n c th th b ng o n code mnh vi t d i y CODE myXML = new XML("<user><name>Gary</name><ID>47</ID></user>"); myVar1 = myXML.childNodes[0].childNodes[0].childNodes[0]; myVar2 = myXML.childNodes[0].childNodes[0].childNodes[0].nodeValue; trace ("myVar1: " +typeof(myVar1)); trace ("myVar2: " +typeof(myVar2)); v output window s cho b n th y r, ci no law i t ng v ci no l chu i.

T t o XML t "tay tr ng" Khng bi t d ch cu ny sao cho ng ngha v i "Creating XML from Scratch". nh d ch nh trn v y. Cc cch t o XML trn u t 1 chu i vn b n, nhng n u nh b n khng c 1 chu i vn b n no tr c th sao? B n c th dng createElement t o ra cc nt m i v dng createTextNode t o ra cc text node. Tuy nhin 2 l nh trn ch t o ra nt ch khng thm vo trong XML, v y b n ph i thm n vo b ng l nh appendChild. minh ho , chng ta s t o m t XML tng t nh trn nhng v i cc l nh v a c p. CODE myXML = new XML(); newElement = myXML.createElement("user"); myXML.appendChild(newElement); newElement = myXML.createElement("name"); myXML.childNodes[0].appendChild(newElement); newText = myXML.createTextNode("Gary"); myXML.childNodes[0].childNodes[0].appendChild(newText); newElement = myXML.createElement("ID"); myXML.childNodes[0].appendChild(newElement); newText = myXML.createTextNode("47"); myXML.childNodes[0].childNodes[1].appendChild(newText); N u b n mu n thay i gi tr c a text node, th b n ch c n dng nodeValue

CODE myXML.childNodes[0].childNodes[1].childNodes[0].nodeValue = 53;

Thu c tnh Cc thnh ph n c a XML c th c thu c tnh (attribute). Trong y mnh g p r c r i v cch d ch attribute v property, c 2 ch ny ti ng vi t u d ch l thu c tnh, c tnh ... m ti ng anh th khc th t r c r i v y mnh xin c dng ti ng Anh nhe. Attribute g m c t kho v gi tr c a t kho , v dng nh r m t thnh ph n hn. V d , o n XML d i dy v i attribute type lm r ngha c a thnh ph n name hn, ("alias" l b danh) CODE <user> <name type="alias">Gary</name> <ID>47</ID> </user>

N u b n mu n a o n code trn vo trong XML object th ph i kp) thnh d u ' (ngo c n) CODE trace(myXML.childNodes[0].childNodes[0].attributes.type); Cn m t cch n a cng cho ra k t qu nh trn l dng [] CODE trace(myXML.childNodes[0].childNodes[0].attributes["type"]); V b n c th thay

i d u " (ngo c

i gi tr c a attribute, hay thm attribute m i nh sau:

CODE myXML.childNodes[0].childNodes[0].attributes["type"] = "real"; V i cu trn, n u attribute type cha c th n s ct o

(trong sch cc o n code trn tc gi vi t l n gi a type v alias, n u b n so snh gi a sch v bi ny th s th y s khc bi t, v c th cc source file cng s khng chnh xc, v y cc b n c n ki m tra l i) Khc v i node, attribute khng th truy c p b ng ma tr n (array) nn b n khng th dng cc l nh nh length hay dng [] v i index number. Nhng b n c th dng vng l p for ... in truy c p t ng attribute c a node. CODE myXML = new XML("<user><name type='alias' validity='verified'>Gary</name> <ID>47</user>"); for(attr in myXML.childNodes[0].childNodes[0].attributes) { trace(attr+": "+myXML.childNodes[0].childNodes[0].attributes[attr]); } output window s cho ra: alias v verified Thm vi AS v XML B n cng c n bi t thm m t s i u v i t ng XML. Nh t l i m sau, b t c m t ph n no c a i t ng XML cng c th l m t i t ng XML ring bi t. V d b n c th l y ci node u tin c a i t ng XML v quy thnh m t bi n CODE myXML = new XML("<user><name>Gary</name><ID>47</user>"); thisUser = myXML.childNodes[0]; thisUserName = thisUser.childNodes[0]; thisUserNameText = thisUserName.childNodes[0].nodeValue; thisUserID = thisUser.childNodes[1]; thisUserIDText = thisUserID.childNodes[0].nodeValue;

B n c th bi t c s node trong trong m t node khc b ng thu c tnh length c a childNodes. V d , user node c 2 node trong, v y b n c th bi t c b ng v i o n code sau: CODE myXML = new XML("<user><name>Gary</name><ID>47</user>"); trace(myXML.childNodes[0].childNodes.length); Ngoi vi c c t h tm c gi tr c a m t node vn b n b ng nodeValue, b n c th b t c tn c a thnh ph n (hay th ) v i nodeName. V d b n c th l y c tn c a thnh ph n (th ) u tin c a user l name nh sau: CODE myXML = new XML("<user><name>Gary</name><ID>47</user>"); trace(myXML.childNodes[0].childNodes[0].nodeName); B n c th bi t c m t node l thnh ph n c a XML hay l m t node vn b n (text node) b ng v i thu c tnh nodeType. N u nodeType l 1 th c l 1 thnh ph n c a XML v c th c nhi u thnh ph n trong node , n u l 3 th node chnh l node vn b n. Gi th 20 : Printing Khng ph c t p nh trnh duy t ho c Server Cominucation, in n l m t cch m FLash truy n d li u ra ngoi. Kh nng in n c a FLash l r t h u ch v n cho php chng ta xy d ng nh ng vn b n m ng i s d ng c th in ra n i dung t file flash c a b n. y th ng l l a ch n t t hn d a vo hm in n c a trnh duy t . Trong gi th 20 ny chng ta s : - H c cch thi t l p movie c a b n cho vi c in n - H c cch s d ng cc l nh in - T o ra m t bi u m u c th in c I> Thi t l p cho movie c kh nng in: 1-B n c n lm m t vi vi c v i movie tr c khi c th s d ng c cc l nh in c a Action Script. Th t khng may,nh ng l nh in ny khng c linh ho t l m. N u s d ng chng m khng c s chu n b , Flash s in ra ton b n i dung c a movie, t ng frame m t. V th ng l i u m b n khng mu n. C khi b n ch mu n in duy nh t frame hi n t i, ho c m t frame b t k trong m t movie ring, ho c m t o n g m nhi u frame. Nhng hi m khi b n mu n in h t ton b . 2 - t tn cho frame B n s ch nh nh ng frame c in b ng k hi u "#p" . N u k hi u khng c t ln frame no th Flash s in ra ton b movie c a b n. Ng c l i, n u b n t t hai k hi u tr ln trong movie c a b n th flash s in ra t t c nh ng frame . Hnh 1 cho ta th y timeline v i hai frame c t k hi u in. Ch r ng, t t c nh ng frame c cha k hi u in ny s c t m t layer ring. Theo cch , b n c th t c nhi u k hi u trn nhi u frame. V n cng thu n ti n hn khi b n khng mu n s d ng k hi u "#p" nh m t label th t cho keyframe.

*Ch : Khi b n t t hai k hi u in tr ln, khi test movie, Flash s xu t hi n l i c nh bo : "WARNING : Duplicate layer.." l i u r i ro c th x y ra, nhng cng s khng nh h ng n movie c a b n tr phi b n s d ng label "#p" trong cu l nh "gotoAndStop" ho c nh ng l nh tng t .... 3- Ln k ho ch in B n c n ph i suy ngh v ln k ho ch cho movie c a b n khi mu n movie c kh nng in. V khng th ch in m t frame hi n t i nn b n c n t o ra nh ng frame c kh nng in. Ch r ng m i th t n t i trn movie c a b n s c in ra. N bao g m c nt Print ( khi nh n vo s th c hi n l nh in), n u trong movie c t n t i. V v y chng ta c n ph i c m t frame ch a nt Print, v m t frame khc tng t nhng khng c nt Print cng nh cc y u t khgn c n thi t khc. Frame th hai ny s c d t nhn l "#p" B n c th b tr b ng cch s d ng timeline chnh. V d b n c m t menu v m t nt Prin trn hai layer ring bi t, m c n c trong n i dung c a bi u m u in. Nh ng layer ny n u b n khng mu n in ra th khng c n ko chng sang frame c nhn "#p" hai hnh sau th hi n i u ny. Hnh th nh t,l frame m ng i dng s th y xu t hi n trn trang web. N ch a n i dung. nt Print v menu

Ng c l i, trong hnh hai l n i dung m ng i duy t web khng th y c, t nh t l trn mn hnh. Frame ny c t tn l "#p" b n c th th y trn timeline.Layer Buttons khng s d ng keyframe gi ng nh frame 1. Ngoi vi c ch n nt Print khng oc in ra, c th thm vo frame ny m t s thng tin s c in ra nh a ch , ...

By gi b n bi t lm th no AS c n thi t

chu n b cho m t bi u m u in, by gi cng h c

C hai l nh in chnh c s d ng. Chng c m t khc bi t r t nh , nhng v cn b n l ho t ng gi ng nhau. 1- Print L nh th nh t l QUOTE Print L nh ny bao g m hai tham s . Tham s th nh t l i t ng in. Thng l timeline chnh, ho c "_root". B n cng c th s d ng "this". Tuy nhin, n u b n khng mu n in nh ng frame trong movie, b n c th s d ng tham chi u t i movie . Tham s th hai l m t trong ba tu ch n sau : QUOTE bframe

II> Cc cu l nh

QUOTE bmovie

QUOTE bmax Cc tham s ny gip FLash c th co dn vn b n in theo c a ng i s d ng. Flash c th co dn vn b n in t i kch th c c a trang gi y m khng bp mo vn b n. V d n u frame c in c kch th c 550x400, th chi u ngang s c phng to t i kch th c 550px chi u d c c th s c scale theo t l . Khi s d ng tu ch n "bframe", t ng frame s t scale l p y kch th c c a trang . N u frame th nh t c n i dung v i kch th c l 550x400 nhng frame th hai ch ch a n i dung c kch th c 275x200, khi frame th hai s t ng scale g p i kch th c ban u. khi s d ng tu ch n "bmax", Flash s ki m tra ton b cc frame c in xc nh xem frame no c kch th c l n nh t. Cc frame cn l i s scale d a trn kch th c c a frame l n nh t, tnh theo t l . i u ny ta nn cc frame c kch th c t l v i nhau V d , frame l n nh t c kch th c 550x400, v n l p y trang in. Frame khc ch c kch th c 275x200, n ch chi m m t n a trang in. Tu ch n cu i cng l "bmovie", tr ng h p ny b n c n ph i lm thmm m t vi c nh n a, l t o ra frame m i c cha m t khung. Khung ny s xc nh kch th c l n nh t c in ra i v i vn b n (b ng kch th oc c a khung). B n ph i t tn frame ny v i k hi u "#b". V flash s s d ng kch th c c a khung scale ton b cc frame cn l i. N u c m t ph n vn b n ny n mg ngoi khung in chng s khng c in ra. Sau y l v d v l nh "Print" : QUOTE on(release) { print(this,"bframe"); } Nh b n th y, tu ch n c coi nh m t chu i v c

t trong d u ""

2-PrintAsBitmap Cu l nh ny lm vi c tng t nh l nh Print v i hai tham s tng t . i u khc bi t l l nh Print s g i cc i t ng ho v font ch t i my in. Sau , my in s xy d ng l i cc vector v n i dung in ra. Ng c l i, PrintAsBitmap s chuy n ton b n i dung thnh m t nh bitmap l n v g i t i my in. i m thu n l i nh t c a PrintAsBimap l trong su t c a vn b n cng c in ra. N u b n c m t i t ng ho bn trong su t, ch c c u i m ch n b n s c n n ch c nng in ny, ng th i n cng ho t ng t t v i nhi u lo i my in hn. L nh in chnh l vn b n c in ra c tnh th m m cao, ng cong smooth hn v ch r rng hn khi c in ra. N cng nhanh hn khi in qua m ng.

Nguyn tc chung nh t l s d ng l nh PrintAsBitmap khi b n th t s ch c ch n k t qu s gi ng nh n i dung hi n th trn mn hnh. S dung Print khi vn b n khng c n chnh xc cao ho c khi b n xy d ng movie i u khi n mi tr ng nh m ng n i b . Ch : N u b n se d ng movie qua internet, l nh in ch lm vi c khi t t c cc frame trong movie c load xu ng.

Thao tc : T o bi u m u in
M t i u m ng i dng ght nh t trn m t website l m t bi u m u m chng ta ph i in ra, i n vo, r i g i i . Chng ta ang s d ng my tnh, t nhin l i ph i i ki m ci bt trn bn vi t ? V v y t i sao chng ta khng t o ra bi u m u cho php i n thng tin vo, sau c in ra v i y n i dung c nh p vo. Chng ta s lm v d n gi n ny, v s th y chng thu n ti n hn r t nhi u so v i m t bit m u html yu c u ng i s d ng in ra ton b n i dung c a site. B n hon ton c th i khi n nh ng g s c in ra, v v y nh ng th linh tinh trn trang web c th c b qua v nh ng y u t m i nh email address c th c thm vo. 1- T o m t movie m i 2- T o ra cc tr ng nh p d li u (v d tn, tu i, hnh) sau t tn layer ny l CONTENT

a ch , gi i tnh, email...) (xem

3- t tiu cho tr ng ln pha trn nh p li u 4-T o thanh tiu cho Form. Ch ,hai lo i tiu bi t . 5-T o nt Print v t trong layer tn l Buttons 6-CHn o n m sau cho button : QUOTE on (release){ print (this, "bmax"); }

ny s

hai layer ring

7- Thm Frame th hai cho movie, ko Title Bar v Content sang frame 2 T o blank keyframe cho layer Buttons v Titles, v chng s c n i dung khc trong frame th hai 8- Trong frame th hai c a layer Title, t m t tiu khc. V d , n u frame th nh t l "Fill out that application" th frame th hai ch c n l Appilcation

9- Sau , bi u m u s n sng th y tiu m i trong hnh..

i n vo. Tiu

c s bi n m t, b n c th nhn

10- Thm m t layer m i tn l Signature. t m t keyframe frame th hai c a layer ny. Thm ng ngn cch v a ch trong frame ny. N u lm ng th frame 1 c a layer ny s khng c g, n i dung ch t n t i frame 2 11- Thm layers tn Frame Labels . t trong hai keyframe. Keyframe th 2, chng ta t k hi u "#p" . Keyframe th nh t chn code QUOTE stop();

Test movie c a b n. B n hy i n vo bi u m u , v n nt Print. Frame th hai s c in ra v i tiu "Application", ch k, v a ch ... Tm t t

in c cc frame trong m t movie b n c n ph i t label cho chng l "#p". B n c th t tn cho m t ho c nhi u frame trong cng m t movie. M i th trong frame "#p" s c in ra. B n c th trang tr tu thch i v i bi u m u c in ra, tr nh ng y u t nh menu. B n c th s d ng l nh "Print" in cc frame s d ng vector shape g i t i my in. Tuy nhin, n u c n in nh ng i t ng ho bn trong su t ho c ch c ch n r ng t t c nh ng bi u m u in ra gi ng nhau, b n c th s d ng l nh PrintAsBitmap

Gi th 21: S d ng component, Using component ActionScript cho cc Component i km Flash C 7 component g n li n km theo chng trnh Flash: CheckBox, ComboBox, ListBox, PushButton, RadioButton, ScrollBar, ScrollPane. thm m t component vo movie c a b n, b n c th click p ln component trong b ng Component, ho c nh n v ko m t component vo stage. PushButton Click v ko component PushButton vo stage s t o m t instance (th hi n) m i c a component PushButton trn mn stage. Khi b n thm m t s ph n t Library vo trong movie. R t may l cc ph n t ny c c t trong cc folder r t g n trong Library (th vi n), v th chng cng khng nh h ng m y n cng vi c c a b n. Component PushButton trn stage trng r t n gi n: ch l m t khung v i t "PushButton" gi a. B n nh b t tnh nng Live Preview (xem tr c) c a Flash b ng cch ch n Control-->Enable Live Preview. Sau khi PushButton trn stage, b n c th click ch n n v m b ng Properties i tn. Hai thng s c th thi t t cho component PushButton l Label (nhn): ta i thnh Press Me ! v Click Handler (qu n l s ki n nh n nt): y l tn c a hm c g i khi nt c click. Hm ny ph i n m trong cng Timeline v i nt; v th n u nt t level g c (root level), hm ph i trn Timeline chnh. Ta thi t t Click Handler thnh buttonPressed (nt c nh n). Ngoi ra b n t cho component m t instance name (tn minh h a) l testButton (ki m tra nt). By gi t t c cng vi c ph i lm l vi t hm buttonPressed. D i y l m t v d n gi n. Hm ny ch g i m t vi dng text ra c a s Output: ActionScript function buttonPressed(buttonInstance) { if (buttonInstance == testButton) { trace("Test Button Pushed."); } else {

trace(buttonInstance._name); } }

M i hm qu n l nt s chuy n m t tham s : m t tham chi u n nt g i hm. V th b n c th ki m tra instance ny c ph i c tn l testButton hay khng. Hm v d trn s chuy n thng bo "Test Button Pushed" n u nt c nh n l testButton, v in ra tn minh h a c a nt n u nt b nh n khng ph i l testButton. B n c th xem v d m u ny trong movie 21pushbutton.fla. CheckBoxes Component CheckBox (h p ki m) tng t nh ci m chng ta t o em d ch sau nh).

gi 15 (anh

t o m t CheckBox component, click p vo n trong b ng Components, ho c click v ko n ln trn stage. t o m t instance th hai, m folder Flash UI Components trong th vi n Library v ko component CheckBox ln trn stage. Trong v d movie 21checkboxes.fla, ti t o 3 h p ki m (CheckBoxes). N u b n ch n m t component trong chng v m b ng Properties, b n s th y n c nhi u thng s hn so v i component PushButton. B sung vo cc thng s Label v Change Handler, gi y b n c c Initial Value (gi tr ban u) v Label Placement (s p x p nhn). Thng s Initial Value l true ho c false, ty thu c vo vi c b n mu n h p ki m ban u c nh d u hay khng. Thng s Label Placement cho php b n s p x p cc nhn bn ph i ho c tri (right ho c left) so v i ki m. Right l s p x p m c nh. N u b n chuy n thnh left, dng ch ghi nhn c a h p ki m s xu t hi n bn tri c a . Trong movie m u, ti t tn cho 3 instance CheckBox l option1, option2, v option3. Ti cng t nhn (label: ph n text bn c nh ki m) l Option One, Option Two, v Option Three. Thng s Change Handler c a m i instance c i thnh changeOptions. Ti t hm changeOptions trong timeline chnh. Hm ny s c th c thi khi no m t trong cc h p ki m CheckBox c click vo. N s g i tn v tr ng thi m i c a CheckBox ra c a s Output. ActionScript function changeOptions(checkBoxInstance) { trace(checkBoxInstance._name+": "+checkBoxInstance.getValue()); }

Trong 21checkboxes.fla, ti cng thm vo m t component PushButton. Nt ny c t tn l doneButton v s g i hm buttonPressed. Hm ny s l p i l p l i v i t t c cc CheckBox v g i tr ng thi c a chng ( c nh d u hay cha) ra c a s

Output. ActionScript function buttonPressed(buttonInstance) { if (buttonInstance == doneButton) { trace("Option One: "+option1.getValue()); trace("Option Two: "+option2.getValue()); trace("Option Three: "+option3.getValue()); } }

Thay v g i cc k t qu ra c a s Output, h u h t b n s mu n s d ng chng trong cc d ng khc. V d , b n c th t chng trong m t i t ng LoadVars chng c th g i t i m t server. RadioButtons RadioButtons gi ng nh CheckBoxes, ngo i tr vi c chng c s p x p thnh cc nhm. T i m t th i i m, b n ch c th ch n m t nt RadioButton trong m t nhm. File m u 21radiobuttons.fla c ba component RadioButtons. N u b n ch n m t trong nh ng nt v m b ng cc thu c tnh (Properties panel) cho nt, b n s nhn th y component ny c nhi u thng s hn so v i cc component CheckBox hay PushButton. Thm vo cc thng s b n th y trong component CheckBox l hai thng s Group Name (tn nhm) v Data (d li u). Thng s Group Name xc nh xem RadioButton thu c v nhm no. Trong movie m u, c ba RadioButtons u thi t t thng s ny l firstGroup. N u c m t nhm nt th hai v i m t tn khc, th hai nhm ny c xem l c l p v i nhau khi quy t nh RadioButton no c b t. Thng s Data l ty ch n v b n c th s d ng trong cc o n m c a mnh. B n c th truy c p (access) n b i hm getData(). B n c th lu tr cc l nh m o n m c a b n th c thi khi nt radio c ch n. Trong movie m u, ba RadioButtons c t tn l choice1, choice2, v choice3. Nhn c a ba nt ny l Choice One, Choice Two, v Choice Three. Vi c xc nh xem ng i dng ch n nt radio no s c th c hi n khi PushButton trong movie c click. Sau PushButton s ch y o n script ny quy t nh xem l a ch n no c thi t l p. o n script s l p i l p l i v i c ba nt tm ki m m t nt tr v true t hm getState(). i u ny ngha l nt RadioButton c b t. ActionScript function buttonPressed(buttonInstance) { if (buttonInstance == doneButton) { var choice = "none";

for(i=1;i<=3;i++) { if (this["choice"+i].getState()) { choice = this["choice"+i]._name; } } trace("Choice: "+choice); } }

ListBox M t ListBox (h p danh sch) l m t phng php n gi n cho php ng i dng l a ch n m t ho c nhi u ty ch n. M t ListBox c th t nh m t thi t l p c a CheckBoxes ho c RadioButtons. N c bi t h u ch khi b n c nhi u l a ch n nhng kho ng tr ng trn mn hnh c h n. M t khung danh sch trong nh m t tr ng text cu n--trn th c t l nh v y. M i dng tng ng v i m t l a ch n ring bi t c a ng i s d ng. N u c nhi u l a ch n hn vng m khung danh sch c th hi n th th ng i dng c th cu n ln v cu n xu ng xem h t cc m c trong danh sch. Khi b n t o m t instance m i c a component ListBox, b n ph i thi t t thng s Select Multiple (l a ch n nhi u dng) c a n. N u tham s ny l true, ng i dng c th dng cc phm Shift, Command, ho c Ctrl l a ch n nhi u hn m t dng. N u l false, m i l n b n ch c th ch n c m t dng. Thm vo , b n ph i thi t t thng s Labels (nhn). Tuy nhin, y khng ph i l m t gi tr n m l m t m ng cc gi tr . Flash c m t giao di n c bi t (special interface) cho vi c nh p cc gi tr ny. Khi b n click trn tham s Labels trong b ng Properties, b n s b t g p m t h p tho i cho php b n nh p vo m t m ng cc m c (item) cho cc thng s khc. B n cng c m t tham s Data (d li u) t o m t m ng d li u. Thng s Data ny, gi ng nh thng s data dng v i cc nt radio, cho php o n m c a b n l y thng tin b sung v cc l a ch n m ng i dng ch n. Tuy nhin, thng s ny khng b t bu c ph i c. Trong movie m u 21listbox.fla, ti t m t component ListBox v i ba l a ch n trn mn hnh. Chng c thi t t l c th ch n nhi u dng. Khi ng i dng click ln trn m t dng, hm listBoxChange s c g i. i u ny c xc nh b i thng s Change Handler c a n. Hm ny cho b n bi t dng no (l a ch n no) v a c ch n: ActionScript function listBoxChange(listBoxInstance) { trace(listBoxInstance.getValue()); }

Trong movie m u ny cng c m t component PushButton. Khi n c click, n s th c thi hm ny. N s d ng hm getSelectedItems() l y m t m ng cc l a ch n (choices) ch n trong list box. M i m c ch n trong m ng l m t i t ng v i m t thu c tnh label v data. V chng ta khng s d ng cc thu c tnh data c a h p danh sch (list box), nn thay vo chng ta s l y cc nhn (label). ActionScript function buttonPressed(buttonInstance) { if (buttonInstance == doneButton) { items = myListBox.getSelectedItems(); for(var i=0;i<items.length;i++) { trace(items[i].label); } } }

B n cng c th thm ho c b t cc dng t list box b ng cch s d ng ActionScript. V d , addItem s thm m t l a ch n b sung vo list box. ActionScript myListBox.addItem("Choice Four");

B n c th dng addItemAt, removeItemAt, v replaceItemAt ActionScript.

thay

i list box b i

ComboBox M t combo box gi ng nh m t menu ko xu ng (pull-downl menu) cng c th g vo m t gi tr .

ng i dng

May thay, b n cng c th t t ty ch n hi u ch nh gi tr . Khi combo box nh m t lm i u ny l Editable (c th hi u menu pull-down bnh th ng. Thng s ch nh) trong h p tho i Properties. B sung cho tham s , b n cng c th cung c p cc m ng ch a nhn (Labels) v d li u (Data). M t thng s khc c a combo box l Row Count (s dng). Cc combo box c th nh nh cc list box. Khi ng i dng click vo, chng s tr i r ng thnh m t danh sch cc l a ch n. N u s l a ch n v t qu gi tr Row Count, m t thanh cu n s xu t hi n bn ph i cho php ng i dng cu n ln xu ng l a ch n. C b n m t combo box c th c 3 tr ng thi. Khi khng ho t ng n thu nh thnh m t dng. Khi click vo n, combo box s tr i r ng thnh danh sch tu ch n, n u s l a ch n l n hn s dng c th hi n th th xu t hi n thm thanh cu n. Khi m t ng i dng ch n m t l a ch n m i trong combo box, b qu n l Click Handler s c g i. D i y l m t hm n gi n cho b n bi t nhn c a combo box

ch n: ActionScript function comboBoxChange(comboBoxInstance) { trace(comboBoxInstance.getValue()); }

B n cng c th dng getSelectedIndex()

l y ch m c (tnh t 0) c a m c ch n.

Movie m u 21combobox.fla l m t v d v component ComboBox. ScrollPane Hai component ti p theo khc h n so v i 5 component trn. Chng khng dng cho php ng i dng l a ch n, nhng dng hi n th l ng thng tin l n trong cc kho ng nh (cu n m l ). Component ScrollPane ( cu n) g m c m t thanh cu n d c, cu n ngang v m t vng hi n th hnh ch nh t. Thng s chnh c a component ny l Scroll Content (cu n n i dung). y l tn lin k t (Linkage name) cho m t movie clip. Khi b n ch y movie, movie clip c copy t Library v t vo vng hi n th c a cu n. Sau cc thanh cu n s cho php ng i dng nhn th y cc ph n khc nhau c a movie clip. B n c th xem v d trong file 21scrollpane.fla. N u b n thi t t thng s Drag Content l true, ng i dng cng c th click vo trong vng hi n th v ko hnh trong ch y. Cc thanh cu n cng thay i khi b n ko n i dung trong cu n (chnh l ci movie clip hi n th trong ). M c d component ScrollPane khng i h i b t k ActionScript no lm vi c, nhng c r t nhi u hm m b n c th dng xc nh xem ph n no c a movie clip ang c xem ho c thay i chi u r ng (width) v chi u cao (height) c a . B n cng c th dng b ng Properties thay i chi u r ng v chi u cao c a cu n. Khi b n lm vi c , cu n trng b mo m trong Flash, nhng no star where, n s ngon lnh ngay khi b n ch y movie. M t l nh ActionScript r t h u ch l loadScrollContent . L nh ny s d ng m t ch URL v hi n th m t movie clip ngoi vo trong cu n. ActionScript myScrollPane.loadScrollContent("myMovieClipFile.swf"); c dng nh m t trnh duy t hnh nh. a

cu n c th ScrollBar

Component cu i cng l ScrollBar. Component ny thm cc thanh cu n vo tr ng text. B n c th dng component ny m khng c n dng b t k code ActionScript no. Ch vi c ko v th m t component ScrollBar vo m t tr ng text (text field), t n s thm vo tr ng text. Component ScrollBar c t thu c tnh Actionscript c th s d ng c. V d , b n c th s d ng getScrollPosition() l y v tr cu n hi n t i v setScrollPosition() thay i n. Th c hnh v i Components By gi chng ta s ph i h p 5 component khc nhau t o m t form nh p d li u: CheckBox, RadioButton, ComboBox, ListBox, v PushButton components. T o m t Flash movie m i. T o ba component CheckBox. t tn cho chng l checkbox1, checkbox2, v checkbox3. Nhn c a chng l: Macintosh, Windows, Linux. T o ba component RadioButton. t tn cho chng l radiobutton1, radiobutton2, v radiobutton3. Nhn c a chng l n l t l ... nh trn T o m t ComboBox component. t tn cho n l combobox. Thm m t vi nhn (label) vo ng i dng c th ch n l a. T o m t ListBox component t tn l listbox. Thm bao nhiu nhn vo tu b n. ng lo l ng v th t c a chng v chng ta s s p x p l i sau. Thi t t thng s ListBox Multiple Selections thnh false. Dng b ng Properties t o cho khung danh sch (list box) r ng 200 v cao 200 pixel. Thm m t PushButton component. Click Handler l buttonPressed. t cho n nhn l Done v thng s i u khi n

Thm dng sau vo trong frame script. N s s p x p l i nhn c a cc m c trong component ListBox. ActionScript listbox.sortItemsBy("label","Asc");

L nh sortItemsBy lm vi c r t t t v i component ComboBox. B n c th dng "label" ho c "data" cho thng s u tin. i u ty thu c vo nhn (label) hay cc tr ng d li u (data) s c s d ng s p x p. Thng s th hai c th l "Asc" (s p x p theo th t tng d n) ho c "Desc" (gi m d n). Component PushButton s g i hm buttonPressed. Chng ta s t o hm ny theo t ng o n nh x l t ng ph n c a form. Hm b t u b ng vi c t o m t m ng m i. Sau n ki m tra t ng check box xem hm getValue() c a n c ph i l true khng. N u l true, nhn c a check box s

c thm vo m ng . Khi vng l p k t thc, m ng own ch a b t k l a ch n no m ng i dng lm v i cc check box. ActionScript function buttonPressed(buttonInstance) { if (buttonInstance == doneButton) { // su t p m ng c a cc CheckBoxes ch n own = new Array(); for(var i=1;i<=3;i++) { if (this["checkbox"+i].getValue()) { own.push(this["checkbox"+i].getLabel()); } } trace("Computers Owned: "+own);

o n m ti p theo ki m tra t t c cc component RadioButton v ghi nh xem component no c b t ( c ch n): ActionScript // xc nh RadioButton no l a ch n favorite = "none"; for(var i=1;i<=3;i++) { if (this["radiobutton"+i].getState()) { favorite = this["radiobutton"+i].getLabel(); } } trace("Favorite: "+favorite); Component n gi n nh t l combo box. o n m ny ch n: ActionScript // l y gi tr c a ComboBox ComboBox nextPurchase = comboBox.getValue(); trace("Next Purchase: "+nextPurchase); n gi n tr v gi tr c a

check (ki m) nhi u l a ch n c a list box, b n c n l p t u n cu i m ng tr v b i getSelectedItems(). Sau b n c n xem xt thu c tnh label c a m i m c ch n (item). o n m sau s lm i u v xy d ng m t m ng ch a cc nhn l a ch n: ActionScript

// su t p cc l a ch n c a ListBox uses = new Array(); items = listbox.getSelectedItems(); for(var i=0;i<items.length;i++) { uses.push(items[i].label); } trace("Uses: "+uses); } }

N u th c s hi n t i b n ang lm i u ny, nn s d ng cc trc hn l s d ng l nh trace. Cho v d , b n c th t o m t sau g i thng tin n my ch .

i t ng c tnh c u i t ng LoadVars

Thay i ki u dng (Style) c a m t Component Cc component c a Flash v n trng r t p. Nhng n u t t c cc nh pht tri n Flash u b t u s d ng chng, th t t c cc Flash movie c a chng ta trng s na n nhau. May thay, b n c th tu ch nh cc component theo nhi u cch khc nhau. B n c th d dng t o cc giao di n ring (custom skin) cho chng. D i y l ba cch ty ch nh component b ng cch s d ng ActionScript. Global Customization (tu bi n chung) S d ng i t ng globalStyleFormat, b n c th ty ch nh giao di n cho t t c cc component trong m t l n. y l m t v d thay i mu ch c a t t c cc text trong t t c cc component thnh mu xanh da tr i (blue): ActionScript globalStyleFormat.textColor = 0x0000FF; globalStyleFormat.applyChanges();

L nh applyChanges ch p nh n s thay i. Ngoi ra, b n c th thi t tnh khc. D i y l m t s thay i chi ti t: ActionScript globalStyleFormat.textColor = 0x0000FF; globalStyleFormat.textFont = "Arial"; globalStyleFormat.textSize = 18; globalStyleFormat.textBold = true; globalStyleFormat.applyChanges();

t nhi u thu c

B n c th thay i thnh nhi u gi tr nh font ch ng h n. S m c thay i trong ki u dng c a cc component qu di c th li t k h t y. B n c th thay i

mu s c v ki u dng c a cc d u ki m trong CheckBoxes, cc hnh trn trong nh ng RadioButton, nh ng mi tn trong cc thanh cu n ScrollBars, mu n n, mu s c c a vng t sng (highlight colors), mu s c cc m c ch n, v.v... Hy xem trong chng trnh Flash c a b n bi t y thng tin v danh sch ny. Grouped Customization (ty ch nh theo nhm) M c d i t ng globalStyleFormat c s d ng b i t t c cc component trn stage, b n v n c th t o cho cc i t ng c a b n ki u dng (style) ring bi t ch dng trong m t vi component m b n ch nh. B n th c hi n i u b ng cch t o m t i t ng FStyleFormat. Khi b n lm i u ny, i t ng m i c a b n s c cc thu c tnh gi ng nh i t ng globalStyleFormat. V d , b n c th t o m t i t ng ki u dng (style object) v thi t n thnh ti nh d i y: ActionScript myStyle = new FStyleFormat(); myStyle.textColor = 0xFF00FF; Cc y u t khc c a style khng c thi t t chnh xc trong i t ng style ny. V th b n c th p d ng style ny cho m t component, m di n m o c a style khng thay i. p d ng ki u dng style ny vo m t component, hy s d ng l nh addListener: myStyle.addListener(radiobutton1); B n ngh c v k qu c khi s d ng v i addListener, ng l nh v y. Hy hi u r ng: b n bo cho component ti p nh n (listen) i t ng style. Single Component Customization (ty ch nh component ring l ) B n cng c th thi t t m t cch chnh xc m t trong nh ng thu c tnh c a style. Tuy nhin, b n khng th lm i u b ng cch s d ng c php ch m (dot) g n v p nh b n mong mu n. Thay v th , b n c n ph i dng l nh setStyleProperty. L nh ny s t thu c tnh style d i d ng m t chu i tham s u tin v gi tr m b n mu n thi t t cho n tham s th hai. ActionScript checkbox1.setStyleProperty("textColor",0xFF0000); t mu s c c a

B ng cch s d ng ba phng php thi t t style cho cc component, b n c th ty ch nh cc component theo nh mong mu n.

Gi th 22: i u khi n m thanh v i ActionScript C hai cch b n c th cho m thanh vo o n phim Flash c a mnh. Cch th nh t l t n vo ngay timeline. Vi c ny khng c n ph i s d ng m. Cch th hai l s d ng ActionScript chi nh ng o n nh c c lu tr trong Library. Tm hi u cch truy xu t m thanh v i ActionScript: Vi c k t n i v chi nh c: i u u tin m b n c n tr c khi chi m t o n nh c v i ActionScript l k t n i n n. B n hy "Import" file nh c vo Library, b m ph i chu t ch n "Linkage", r i nh d u vo cc ph n export. B n cng c th t m t ci tn "Identifier" khc cho o n nh c thay v tn file nh c. V d , n u b n "import" file nh c "mysound.wav", n s xu t hi n trong Library v i ci tn mysound.wav. Khi b n ch n Linkage, v nh d u export, n s c t tn "Identifier" ngay l "mysound.wav", nhng b n c th s a thnh b t k tn gi b n mu n(vd: nhac1). chnh l ci tn m b n s s d ng trong ActionScript. chi m t o n nh c b ng ActionScript, b n ph i lm t nh t ba b c: u tin l t o m t i t ng "Sound" : ActionScript mySound = new Sound(); Th hai, b n c n g n o n nh c trong th vi n vo i t ng "Sound" ny: mySound.attachSound("mySound.wav") //mySound.wav l tn b n t trong ph n "Identifier" Cu i cng, b n hy ra l nh cho i t ng "Sound" c a b n chi o n nh c: ActionScript mySound.start(); V y l m t o n n gi n

t vo trong m t Button

chi o n nh c t Library:

ActionScript on (release) { mySound = new Sound(); mySound.attachSound("poof.wav"); mySound.start(); } B n c th tham kh o m t v d n gi n trong file "22playsound.fla" km theo quy n sch ny. B n cng c th xem qua m t phng php hi ph c t p m t t trong file "22playsoundfunction.fla". Trong file Flash ny, c m t function tn l "playsound" c t timeline chnh. "function" ny bao g m t t c cc m m b n c n chi m t o n nh c n gi n.

ActionScript function playSound(soundName,balance) { var mySound = new Sound(); mySound.attachSound(soundName); mySound.start(); } V i vi c s d ng function ny, b n n gi n ha o n ActionScript nn b n s ch c n s d ng ng m t dng l nh chi nh c. y l o n m t trong m t Button s d ng function ny: ActionScript on (release) { playSound("poof.wav"); }

Cu l nh "start" Cu l nh "start" trong v d trn c th c s d ng b ng nhi u cch. B n c th thm hai tham s n a vo n thay i cch m o n nh c s c chi. Tham s th nh t b n c th thm c g i l "offset". N gip b n c th chi b n u. V d , dng l nh nh c t b t k v tr no b n mu n ch khng ph i chi l i t ny s b t u chi t v tr th 1000 miligiy c a o n nh c(1 giy sau khi b t): ActionScript mySound.start(1000);

Tham s th hai c a cu l nh "start" l s l n l p l i c a o n nh c. V d , n u b n mu n b t u b n nh c t i v tr sau 1 giy v l p ba l n, cu l nh s nh sau: ActionScript mySound.start(1000,3);

B t

u b n nh c t i v tr t

u v l p ba l n:

ActionScript mySound.start(0,3); Cu l nh i i v i "start" l "stop". Khi b n ang chi m t o n nh c, b n c th a ra cu l nh "stop" b t c khi ny ng ng h n o n nh c. B n ph i thm vo tham s l tn (Identifier) c a o n nh c. N u khng, l nh "stop" s ng ng t t c cc o n nh c ang chi.

ActionScript mySound.stop("poof.wav");

i u ch nh m l ng B n c th s a i o n tr c v khi ang chi b ng m t s cu l nh. Cc cu l nh ny cn c th i u ch nh m l ng c a o n nh c, trong t t c loa hay ch t ng ci. L nh "setVolume" l cch i u ch nh n gi n nh t, b n ch c n cho m t tham s t 0 n 100 l b n c th v n to, nh m t o n nh c: ActionScript mySound.setVolume(50);

Trong file "22playsoundvolume.fla" bao g m m t nt Play v b n nt khc i u ch nh m l ng l n t l 0, 10, 50 v cu i cng l 100. Nt Play s chi m t o n nh c 100 l n nn b n c th th i u ch nh m l ng trong lc ang chi nh c. Ch l vi c b n i u ch nh m thanh c a m t o n nh c s khng lin quan n cc o n nh c khc. V v y b n c th i u ch nh cc m thanh khc nhau nh nh c n n v cc ti ng ng. i t ng "Sound" i t ng "Sound" c hai thu c tnh m b n nn bi t n. Th nh t l "duration" l di c a o n nh c tnh b ng miligiy. Th hai l "position" l v tr m o n nh c ang chi, cng tnh b ng miligiy. V d , n u m t o n nh c c thu c tnh "duration" b ng 3000, c ngha l n di 3 giy. N u thu c tnh "position" b ng 1500 th o n nh c ang chi chnh gi a. Trong file "22tracksound.fla" th hi n cch dng "position" v "duration" th hi n c a o n nh c. Sau khi b t u, m t v ch en s ch y d n d n theo v tr c a o n nh c.

ActionScript onClipEvent(enterFrame) { // tnh xem chi c bao nhiu c a o n nh c (gi tr t 0.0 percentPlayed = thisSound.position/thisSound.duration; // l y di c a thanh barWidth = _root.bar._width; // t v tr c a d u v ch _root.mark._x = _root.bar._x + barWidth*percentPlayed; }

n 1.0)

Khi o n nh c k t thc: B n c th s d ng thu c tnh "position" v "duration" ki m tra m t o n nh c h t hay cha, khi hai gi tr ny s b ng nhau. Tuy nhin n u o n nh c c l p nhi u l n th hai gi tr ny s b ng nhau m i khi cu i o n nh c. M t cch t t hn ki m tra khi no o n nh c k t thc l dng "onSoundComplete". y l m t function s c th c thi khi o n nh c k t thc h n. ActionScript mySound = new Sound(); mySound.attachSound("mySound.aif"); mySound.onSoundComplete = function () { trace("sound done!"); } mySound.start();

i u ch nh

cn b ng:

B n c th i u ch nh m l ng c a loa ny to hn loa khc thng qua l nh "setPan". i u ny gi ng nh gin my stereo. B n c th t gi tr t -100 n 100. N u b n l -100, t t c m thanh s c pht ra bn loa tri, cn 100 s l loa ph i. ActionScript mySound.setPan(-100);

B n c th tham kh o file "22monopan.fla". Khi b n b m no nt "Play" bn tri, loa tri s pht ra, b m nt "Play" bn ph i, loa ph i s pht ra.

Gi th 23: Qu n l streaming cho movie, Managing Movie Streaming Trong gi 23 chng ta s ti n hnh nh ng b c sau:

Tm hi u, gim st movie khi load Lm 1 loader n gi n Lm 1 loader ph c t p hn v i loading bar Load cc media movie bn ngoi vo flash (sound, image)

Chng ta b t u v i b c 1 nh : Cc Movie Flash u c tnh ch t stream. i u ny c ngha l frame u tin c a movie s b t u ngay khi n c n p xu ng, ko ph thu c vo vi c ci frame cu i cng c load xong hay cha. B n c th ko mu n vi c ny x y ra. V d nh movie c a b n l 1 o n animation

ng n, b n c th ko mu n n b t u cho n khi movie c load hon ton t web. C vi cch b t movie i cho n khi loading xong. Cch thng d ng nh t l ta t o 1 loader frame. l frame u tin c a movie. N s quan st tnh ch t c a movie v xc nh xem khi nao th movie k t thc vi c loading. bi t c c bao nhi u frame c load xu ng b n s d ng tnh ch t _framesLoaded, cn bi t t ng s Frame c a movie b n s d ng tnh ch t: _framesTotal. B n c th s d ng i u ny trong 1 s tr ng h p n gi n. V d b n t frame u tin l nh stop(); ta t o 1 button cho php ng i s d ng ti p tc. Khi ng i s d ng click vo btn b n c th dng 1 o n script tng t nh sau xc nh xem ph i lm g ti p theo: CODE on (release) { if (_root._framesLoaded == _root._totalFrames) { play(); } else { textDisplay = "Wait a few seconds and press again."; } } N u nh movie cha c load h t th text field m ta lin k t qua var textDisplay s thng bo cho user. B n cng c th s d ng k thu t ny trong 1 ph n c a 1 movie di. V d btn c th n m Frame 50 v ch ng i s d ng ti p t c khi m 50 frames ti p theo s n sng. Ta dng o n code sau th c hi n:

CODE onClipEvent(load) { _root.textDisplay = "Waiting for the next sequence to load."; _root.stop(); } onClipEvent(enterFrame) { if (_root._framesLoaded >= 100) { _root.play(); } }

y l ph n u c b n c a 1 loader script. Tuy nhin c cc cch khc chnh xc hn gim st vi c loading hn l tnh s frames. B n c th s d ng getBytesLoaded and getBytesTotal tnh t ng s file v s file load. y l o n script t vo trong 1 mc frame u tin c a movie. frame u tin b n ch t thm l nh stop();

CODE onClipEvent(enterFrame) { if (_root.getBytesLoaded() == _root.getBytesTotal()) { _root.play(); } } m i l n enterFrame i u ki n s c ki m tra v khi th a mn t c movie c load hon ton th movie s c play ti p t c Chng ta ti p t c ti n hnh lm 1 loader n gi n tr c khi n v t qua frame 1 : cho ton b movie c load

1.M 1 file m i. 2. frame u ta t o 1 keyframe 3.T o thm 1 kf m i frame 2 c th test ci loader 1 cch r rng th frame 2 nn ch a 1 movie t i thi u l 100 K. Cch t t nh t tng dung l ng l ta import 1 video. 4.Tr l i frame 1, chng ta mu n c 1 movie ch cho n khi ton b movie c load tr c khi tip t c sang frame 2 ---> cho 1 l nh stop(); vo frame 1 ny. Ta t o 1 shape n gi n v convert n sang mc v t ng c n sang 1 gc mn hnh m ng i xem ko nhn th y (chu i r ng). Ta cho o n script sau vo:

CODE onClipEvent(enterFrame) { bytesLoaded = _root.getBytesLoaded(); bytesTotal = _root.getBytesTotal() percentLoaded = Math.round(100*bytesLoaded/bytesTotal); _root.displayText = "Loading: "+percentLoaded+"%"; if (bytesLoaded == bytesTotal) { _root.play(); } }

o n script s ki m tra getBytesLoaded xem li u movie k t thc vi c loading cha. y ta tnh s ph n trm load (percentLoaded) v cho hi n th con s ny qua bi n displayText root level B n ng qun t o 1 dynamic text field v t var cho n l displayText nhe. S r t kh ki m tra khi b n test ci movie ny v i Flash player trn my v movie c a b n ch y nhanh qu, ko k p nhn ci loader. B i v y nn publish n ln 1 trang web ri test . Ho c b n c th gi thi t l p 1 cai modem 56 K No by gi goto website v test b n s th y qu trnh loading c hi n s ph n trm text field. Khi t n 100% movie s ti p t c play. B n c th ki m tra movie c a b n v i file: 23simpleloader.fla 3. cho ci loader c a chng ta thm p, chng ta ti n hnh b c 3 lm 1 loader

ph c t p hn c thm 1 ci progess bar n a nh cc b c lm nh sau: 1.B t u 1 movie m i

2.V 1 hnh ch nh t r ng v i border 3.Ch n ton b ci hnh ch nh t ny v convert to mc. 4.Click 2 ci vo mc m i ny edit n t chng vo 1 mc b ng cch ch n insert v

5.Tch ring ph n fill v border c a ci hnh ch nh t ra lm 2 layer 6.Copy ci fill c a hnh ch nh t v t o 1 layer m i paste n vo. Layer ny nn n m tr c v layer c ch a hnh ch nh t c th n m sau n. 7.Ch n hnh ch nh t m i ny(cai fill) v ch n cho n mu t i hn. t v tr kh p v i ci border, pha trn hnh ch nht c 8.By gi ta convert n sang mc v t instance name l barFill Double click vo mc m i ny v ta ch nh reg. point cho n l gc t n cng bn tri.

Tr l i movie chnh, ta t o thm 1 layer m i. V t 1 dynamic text . t var cho n l displaytext, b n nh ch n font ch p d p v mu cng p p 1 cht nh movie c a timeline chnh ta t o n code sau vo mc chnh c a chng ta:

CODE onClipEvent(load) { // initialize variables bytesLoaded = 0; bytesTotal = _root.getBytesTotal(); }

o n code enterFrame ph i lm nhi u vi c nh t. N c nhi m v theo di s bytesLoaded v bytesTotal lin t c m i Frame. Bi n percentLoaded c gi tr t 0 n 100. V n c s d ng chnh thay i _xscale c a thanh Bar. B n cn nh l ta m c nh i m reg. point c a thanh Bar ny gc bn tri ko? Chnh v v y m thanh bar s di ra theo gi tr c a bi n percentLoaded sang pha bn ph i Khi m s bytesLoaded = s bytesTotal th display text s hi n thng bo: "Loading Complete" v chuy n movie sang frame ti p theo.

CODE onClipEvent(enterFrame) { // if there is more to load

if (bytesLoaded < bytesTotal) { // get current amount loaded bytesLoaded = _root.getBytesLoaded(); // calculate percentage percentLoaded = Math.round(100*bytesLoaded/bytesTotal); // if there is still more if (bytesLoaded < bytesTotal) { // display text displayText = "Loading: "+percentLoaded+"%"; // set scale of bar barFill._xscale = percentLoaded; // no more left } else { // display complete displayText = "Loading Complete."; // fill out bar barFill._xscale = 100; // go to next frame _root.nextFrame(); } } }

Ko bi t h ng d n nh trn cc b n hnh dung ra cch lm cha nh . N u cc b n cha hi u th cbt s post thm hnh minh h a vo Timeline c a chng ta tt nh t nn phn ra nh sau nha: -Timeline chnh s g m c 3 layer. Layer th nh t s ch a ci loader bar mc m chng ta t o. N s ko di trong 2 frames. -Layer th 2 s g m c 2 keyframes fr1 v fr2. kf 1 l l nh stop(); Layer th 2 ta s cho 1 button. Ng i s d ng s click vo button xem ti p ph n cn l i c a movie. Trong btn cho o n code sau: CODE on (release) { play(); } -Layer th 3 b t u t frame th 3 s ch a ci movie c n load c a b n

Cc b n c th xem thm

file : 23complexLoader.fla

C nh ng lc b n c n t o cc movie l n c cc media th ta ko c n ph i t o 1 movie y nh ng file media trong m c th load cc file media c s n ny t bn ngoi. Nh v y b n c th xy d ng 1 trnh di n l n b ng cch s d ng nh ng file bn ngoi. lm c i u ny chng ta s tm hi u cc b c sau: Th ch movie hi n th i Cch n gi n lm i u ny l b n chia c t movie ny ra thnh cc ph n ring. Khi 1 movie k t thc ta c th chuy n n 1 movie khc. T t c nh ng g b n c n l dng l nh loadMovie V d , b n c 1 frame cu i 1 movie di. Khi ng i xem n , h c th click vo 1 button v xem 1 movie khc. o n code n gi n nh sau: CODE on (release) { loadMovie("animation2.swf"); }

Ho c l b n c th cho ng i s d ng l a ch n animation m h mu n xem ti p. cu i movie s c 2 buttons ch a cc movie khc nhau. Vi c t o lin k t gi a cc movie l r t quan tr ng sao cho khi user c th tr l i movie c ban u. B n c th xem v d file 23movie1.fla bi t thm lm th no trnh by tc ph m c a b n v i cc files c s n. Loading a Movie Clip V i l nh loadMovie b n c th thay th ch c a 1 mc b ng 1 mc khc. V d th ch c a myMovieClip b ng file otherMovie.swf b n ch c n lm: CODE myMovieClip.loadMovie("otherMovie.swf); thay

Khi s d ng loadMovie b n c th dng getBytesTotal and getBytesLoaded functions thng bo cho ng i dng b ng text ho c b ng progess bar m chng ta lm trn qu trnh load. N u mu n preload m t movie clip s n sng lc c n hi n th , chng ta s t o m t movie tr ng, khng c g trong ngo i tr m t cu l nh stop(). Sau chng ta load mc vo mc tr ng ny (ko hi n th trn stage). Khi load hon ton th movie c a chng ta s n sng frame u tin. Movie file ny s n m s n sng trong browser cache c a user. By gi khi n o n c s d ng mc ny th l nh loadMovie s lm vi c. Lc s nhanh hn v file c download hon ton v r i. Sau s d ng l nh gotoAndPlay(2) qua frame 1.

Loading a JPEG myMovieClip.loadMovie("picture.jpg");

Flash MX cng cho php ta kh nng load 1 file JPEG ngoi vo. Cch lm tng t nh cch chng ta load movie trn, ch c n thay movie b ng a ch c a file JPEG l ok: CODE myMovieClip.loadMovie("picture.jpg");

i a ch

mc myMovieClip by gi c thay th ch b ng 1 mc c ch a bitmap image ny. B n c th ki m tra v xem v d file 23loadipeg.fla

Loading a Sound C 2 cch play 1 sound t 1 file bn ngoi. C 2 u s d ng sound object v l nh loadSound. Cc sound file ny c n d ng ph bi n l mp3. Sau y l 1 v d cho cch th 1, chi 1 event sound. y ton b sound s c load vo b nh tr c v sau c chi n u nh c l nh start(); CODE on (release) { mySound = new sound(); mySound.loadSound("mysound.mp3",false); mySound.start(); } Flash s ghi nh l l nh start c a ra th m ch khi sound m i ch b t download. Khi sound c load xong th n s c play ngay l p t c CODE on (release) { mySound = new sound(); mySound.loadSound("mysound.mp3",true); } Cch th 2 l ta s d ng true param th 2. Gi tr true ny s b o v i flash l 1 stream sound. Ngay khi sound c load ph n no th s b t u chi ngay trong lc ph n cn l i v n ti p t c c load. N u ng i dng c k t n i m ng t t th s nghe c ton b sound khi load. Ghi ch l b n ko c n ph i s d ng l nh start v i 1 streaming sound. Tuy nhin b n

c n ph i ch khi s l file MP3. V d n u b n s d ng file nh c mp3 v i 128 Kbps hay 160 Kbps th ng dng nghe th n s l 1 file qu l n c th stream vi internet, c bi t n u ng i s d ng dng modem. 32 Kpsb hay t hn s thch h p hn khi ta s d ng stream. Chng ta t ng k t l i nhe: Streaming l 1 cch r t t t gip chng ta s d ng d dng hn v i 1 movie l n. Ta c th s d ng AS ki m tra 1 qu trnh loading. B n c th gi movie frame th nh t v ch n ti p t c khi ton b movie c load. B n cng c th thng bo cho ng i dng qu trnh loading b ng text thng bo s % ho c 1 b ng 1 progess bar ch ng h n. B n c th chia movie ra thnh cch file ring v s d ng loadMovie ny t i file khc nh ng i s d ng mu n. nh y t file

Cc file bn ngoi c th c load vo b ng cc cch khc nhau. Ngoi movie b n c th load 1 file nh, file nh c n a. M t s cu h i v tr l i sau c th gip b n n m r bi hn: Cu 1: ta c th load 1 mc, v y c th unload chng ko?? -Tr l i: c, b ng l nh unloadMovie Cu 2: bnh th ng th flash c n bao lu load tr c khi n start??

-Tr l i: ngay frame u tin. B i v y b n c n s d ng l nh stop n u nh mu n n i tr c khi ti p t c. Cu 3: 2 cch xc nh khi 1 movie c load hon ton??

-Tr l i: cch 1 dng getBytesLoaded == getBytesTotal function cch 2 dng _frameLoaded property v _totalFrames property. Ngoi ra b n c th xem thm cc bi vi t sau: Cch t o 1 preloader n gi n http://www.vnfx.com/ipb/index.php?showtopic=2325 Cch t ng qut t o 1 loader p: http://www.vnfx.com/ipb/index.php?showtopic=2921 Ngoi ra v loadMovie, loadSound cng c r t nhi u bi. B n ch u kh search ha

Gi th 24: V v i AS, Hour 24. Drawing with ActionScript y l h cu i cng, cng l gi r t th v , hy v ng cc b n c m th y dzui dz khi v b ng AS . CBT ko c kinh nghi m d ch bi, v i l i nhn vo m y bi text dy c

ch l t i m t t i mi nn nhi u ch d ch lung tung, theo thch b i v y c ch no di n t t i ngha, ko ng th cc b n c th ng th n gp , ng thng ti c . Trong gi ny chng ta s h c cch:

V ng th ng v ng cong T mu 1 vng ng i s d ng v v i chu t t cc hnh v trong 1 movie clip m i T o cc text fields

1a.Drawing lines - v 1 ng th ng, vi c u tin c n lm l dy nh th no n, ri c mu g v alpha. CODE lineStyle(thickness, color, alpha); Mu (color): gi tr c a ra d i d ng s th p l c phn hexa, v d : 0x000000 l mu en, 0xffffff: tr ng , chng ta c th nhn vo b ng color mixer bi t thm trong su t(alpha): min = 0; max=100; dy (thickness): dy nh nh t l 0, cn l n nh t l bao nhiu th cbt ko bi t . V i dy 1 ci line c dy l 1 pixel, cn n u ta cho gi tr l 0 (hairline) th n v n c dy l 1 pixel . Tuy nhin chng khc nhau ch : v i hairline n u nh dy c a n v n ko thay i. Cc b n th o n chng ta thay i scale c a n th code sau, v thay i gi tr dy nh: CODE lineStyle(0,0x000000,100); moveTo(20,50); lineTo(200,200); _xscale=300; _yscale=300; nh ngha cc gi tr c a lineStyle, n

Nhn o n code trn ta th y xu t hi n l nh: CODE moveTo(20,50) v 1 ng th ng ta c n xc v i 2 gi tr x v y ---> moveTo l i m u, i m nh 2 i m: u v cu i. M i i m l i c xc inh cu trn ta t bt t i x=20; y=50. c

t bt. Nh v y

----> lineTo l i m ti p n. Ta c x= 200; y=200. Nh v y chng ta v ng th ng n i t i m (20,50) n (200,200).

Ch : 1. n u nh cc b n ko nu i m moveTo th n t m c nh l i m (0,0) 2. n u nh cc b n v thm cc line ti p theo v i lineTo th i m t bt c m c nh l i m cu i cng c a line tr c. v 500 ng lung tung trn mn hnh ta c o n code n gi n sau:

V d

CODE // set line style lineStyle(2,0x000000,100); // draw 500 lines for(var i=0;i<500;i++) { // pick random start point x1 = Math.random()*550; y1 = Math.random()*400; // pick random end point x2 = Math.random()*550; y2 = Math.random()*400; // move to start point moveTo(x1,y1); // draw to end point lineTo(x2,y2); }

By gi cc b n th play tr ny xem sao, th thay c a n

alpha, color or thickness

M i ng i th copy and paste o n code sau xem hi n ra g no

CODE // set line style lineStyle(2,0x999999,100); for(var x=-400;x<550;x+=10) { // draw diagonal strip from left to right moveTo(x,0); lineTo(x+400,400); // draw opposite strip moveTo(550-x,0); lineTo(550-x-400,400); }

1b.Drawing Curves Tng t khi b n bi t cch v line r i th v curveTo ko c g l kh. N ch c thm 1 cht gi tr thi. Ta c o n code:

CODE lineStyle(3,0x000000,100); moveTo(150,200); curveTo(275,275,400,200); Nh bi t moveTo l i m b t u, anker1 ha. curveTo(control_x, control_y, anker2_x, anker2_y); Control_point l ti p tuy n c a 2 i m anker v i ng cong anker2 l i m cu i cng c a curve. Cc b n c th c thm 1 s bi vi t trong di n n v ng cong bezier thm . Chng ta play ti p v i o n code sau:

hi u r

CODE lineStyle( 1, 0x0000FF, 100 ); moveTo(200,200); curveTo(250,200,300,200); curveTo(300,250,300,300); curveTo(250,300,200,300); curveTo(200,250,200,200);

Olala, t i sao chng ko hi n ra cc curve m l i l 1 hnh vung. Nguyn nhn l do chng ta cho cc gi tr control point gi a 2 i m kia Hy th thay i 1 cht xem chng ta c g no: CODE var bend = 42; moveTo(200,200); curveTo(250,200-bend,300,200); curveTo(300+bend,250,300,300); curveTo(250,300+bend,200,300); curveTo(200-bend,250,200,200); s d ng bi n bend thay i control point ta c 1 hnh trong hi mo ri ph n ny plz c thm cc topic trong box AS

.V

2. Drawing Filled Areas Tr c h t c th t mu cho 1 vng ta c n ph i v 1 hnh khp kn ha. Sau dng l nh beginFill v : CODE beginFill(color of fill, alpha of fill)

V d

o n code sau:

CODE lineStyle( 3, 0x000000, 100 ); beginFill( 0xFF0000 ); moveTo(175,100); lineTo(375,100); lineTo(375,300); lineTo(175,300); lineTo(175,100); endFill(); N u nh 1 vng c c t b i line l n th 2 th ch n s ko c mu n a. D a vo ta c th t o nn 1 s hnh th v . B n th copy o n code sau xem n hi n ra ci g no v ch no c t mu, ch no ko : CODE lineStyle(3,0x000000,100 ); beginFill(0xFF0000); moveTo(250,50); lineTo(308,230); lineTo(155,120); lineTo(345,120); lineTo(192,230); lineTo(250,50); endFill();

C cch khc t t hn v 1 star, n cho php chng ta qui B n th xem file fla 24betterstar.fla xem sao Pause

nh cc gi tr ban

u.

3.V v i chu t Ph n ti p theo trong sch ny c o n code user v v i chu t, thnh th t m ni, n u b n c o n code c a DS post bn ph n Flash hack th b n s th y n khc nhau 1 tr i 1 v c nh th no http://www.vnfx.com/ipb/index.php?showtopic=3007 N u b n c o n code c a DS th ng nn c ti p o n code h ng d n trong

cu n sch ny lm g. CBt th y l ko c n thi t ph i d ch ch ny nhng trt ri nn tn tr ng quy n sch, cbt d ch cho y v y 1.T o 1 shape n gi n, convert to mc. 2.Copy o n code sau vo mc (cbt phn tch km)

CODE onClipEvent (load) { // cho cc gi tr cho ki u line _root.lineStyle(0, 0x000000, 100); } //khi chu t c dz xu ng th b t onClipEvent(mouseDown) { // ok to draw draw = true; // xc nh i m start v startX = _root._xmouse; startY = _root._ymouse; _root.moveTo(startX,startY); } //khi th chu t ra th ko v n a onClipEvent(mouseUp) { // don't draw anymore draw = false; } //b t u onClipEvent (enterFrame) { if (draw) { //l y v tr hi n t i c a chu t newX = _root._xmouse; newY = _root._ymouse; //n u nh v tr khc v i v tr ban u if ((newX != startX) or (newY != startY)) { //v 1 line t i v tr m i _root.lineTo(newX,newY); // reset location for new time startX = newX; startY = newY; } } } uv

Ph n ny ch c v y 4.T o 1 movie clip ring cho cc hnh v Nh ng g chng ta lm trn ch l v 1 cch n gi n trn stage, n c b t l i l c th b b t k mc no che khu t. ko th di chuy n. Khi chng ta t nh ng ci ny vo trong 1 mc th thu n ti n hn r t nhi u. ta c th thay i _x, _y, rotation, alpha, scale .... t o 1 new mc ta dng l nh : CODE my_mc.createEmptyMovieClip("tn c a new mc", level c a n)

V d : CODE this.createEmptyMovieClip("myMovieClip",1); myMoveClip.lineStyle(0,0x000000,100); myMoveClip.moveTo(100,100); myMovieClip.lineTo(200,200); Nh v y b n c 1 mc m i tn l myMovieClip, level 1, c ch a cc hnh v trn. N u b n mu n vi t nhanh hn th c th vi t l i nh sau: CODE this.createEmptyMovieClip("myMovieClip",1); with(mymovieClip){ lineStyle(0,0x000000,100); moveTo(100,100); lineTo(200,200); }

L nh createEmptyMovieClip ny cn c r t nhi u tc d ng khc nh ta c th attach thm movie vo hay l sao chp (duplicateMovieClip) Ri bi gi b n hy th t o 1 mc m i i no C 1 bi h ng d n v bng tuy t kh p trong cu n sch, tuy nhin code c chia nh thnh cc function kh di dng v m t cng. trong khi trong di n n c a chng ta c nhi u o n code v lm tuy t hay hn r t nhi u: bi th tr i lm tuy t c a DS trong box h ng d n th c hnh. c b t h p v i ch ny l bi dng 100% b ng AS c a Raider (tm trong m c l c), trong c o n code r t hay. B i v y cbt s ko d ch v o n code trong sch ny n a.

bi t thm chi ti t xin xem file fla 24snowflakes.fla 5.Textfield y l ph n cu i cng, chng ta s h c cch t o 1 text field v sau l lm 1 effect flying words. T o Text t o 1 text chng ta c n t o 1 text (text field) v i l nh : CODE createTextField("text_name", level , v tr _x, vi tr _y, chi u r ng,chi u di); Sau l text hi n ln trong text field : CODE text_name.text = "N i dung text";

V d

o n code sau, mnh phn tch trong luon cho nhanh:

CODE //t o 1 ch tn my..., level 0, _x=0, _y=170, width=550, height=60 createTextField("myTextField",0,0,170,550,60); //text myTextField.text = "Welcome to VNFX"; // gi tr true l s d ng font chng ta add trong th vi n, false l ta s d ng font m c nh myTextField.embedFonts = true; //m c nh cc tnh ch t c a text myTextFormat = new TextFormat(); //lo i ch , c , mu, v tr myTextFormat.font = "Arial"; myTextFormat.size = 48; myTextFormat.color = 0x330000; myTextFormat.align = "center"; //lin k t nh ng tnh ch t ny v i text c a chng ta myTextField.setTextFormat(myTextFormat);

Ch khi s d ng embedFont ta c n ph i ch n 1 font trong th vi n click vo gc ph i trn cng c a th vi n, ch n font m b n mu n, sau click chu t ph i, linkage,

export, IDname N u b n mu n t o 1 Input text th c n ph i cho type c a textField l input, sau c th set thm cc variable my c th nh n info t user Cn r t nhi u cc tnh ch t trong textField v textFormat class, cc b n nn help trang tr cho textField c a mnh c thm

L thuy t ch c v y, no by gi chng ta s lm effect flying words CBT ko dm nh n xt nhi u v o n code v cch lm trong cu n sch ny, tuy nhin n c chia nh thnh cc function gy r c r i, di dng cho ng i c, l i cn ph i t o thm mc trn stage, c ch h n ch n a... Thi th c a ra v y CODE function createText(n,text) { // create a new movie clip this.createEmptyMovieClip("text"+n,n); mc = this["text"+n]; // set the text format myFormat = new TextFormat(); myFormat.font = "Arial"; myFormat.color = 0x000000; myFormat.size = 24; myFormat.align = "center"; // create a new text field mc.createTextField("myTextField",1,-100,-20,200,40); mc.myTextField.text = text.toUpperCase(); mc.myTextField.embedFonts = true; mc.myTextField.setTextFormat(myFormat); // return reference to this movie clip return(mc); } function createAllText(textList) { // loop through array of text for(var i=0;i<textList.length;i++) { // create movie clip with this text mc = createText(i,textList[i]); // set random location mc._x = Math.random()*450+50; mc._y = Math.random()*350+25; // set scale to nothing

mc._xscale = 0; mc._yscale = 0; // set scale variable to negative amount mc.scale = 0-i*100; } } function init() { // create array of text var words = "Love,Peace,Destiny,Llamas,Fate,History,Cheese,Rainbows,Tiny Rocks"; var textList = words.split(","); // create all text movie clips createAllText(textList); // remember how many there are numWords = textList.length; } function moveText() { // loop through words for(var i=0;i<numWords;i++) { // increase the scale of this movie clip mc = this["text"+i]; mc.scale += 10; // hide movie clip when scale is too big if (mc.scale > 300) { mc._visible = false; // set scale of movie clip to scale when it is a positive number } else if (mc.scale > 0) { mc._xscale = mc.scale; mc._yscale = mc.scale; } } } init(); stop();

Sau b n t o 1 mc trn stage v nht o n code sau vo: CODE onClipEvent(enterFrame) { _parent.moveText(); }

Cu i cng vo th vi n, trong menu c a th vi n ta ch n font ru linkage, ri export v i tn Arial. effect ny ko c g khc l ta t o 1 array ch a cc text, sau cc text hi n ra t t v d n d n phng to ln, n 1 kch th c no th bi n m t. cc text hi n ra t t ta ch c n m c nh scale ban u c a text l ko, sau dng thm 1 var n a. D n d n phng to ln th ta thay i scale thi. Th y o n code trn di dng qu nn cbt vi t l i cho n n gi n b t nh sau CODE function a(){ wordArr=new Array("vnfx","flash","actionscript"); //ta t o 3 mc ch a 3 text field for(var n=0;n<wordArr.length;n++){ _root.createEmptyMovieClip("text"+n,n) mc=_root["text"+n]; myFormat=new TextFormat(); myFormat.font="Arial"; myFormat.color = 0x000000; myFormat.size = 24; myFormat.align = "center"; mc.createTextField("myTextField",1,-100,-20,200,40); mc.myTextField.text = wordArr[n]; mc.myTextField.embedFonts = true; mc.myTextField.setTextFormat(myFormat); //m c nh cc gi tr ban mc._x=Math.random()*450+50; mc._y=Math.random()*350+25; mc._xscale=mc._yscale=0; //bi n t o s xu t hin t t mc.scale=0-n*100; u

mc.onEnterFrame=function(){ this.scale+=10; if (this.scale > 300) { removeMovieClip(this); } else if (this.scale > 0) { this._xscale=this._yscale = this.scale; } } } } a();

//cho l p l i sau 5 s setInterval(a, 5000);

K t thc r i c th c m c ki n co g cc b n c gp ha

You might also like