Gi th 01: Làm quen v i AS, Your First Look at AS AS là m t ngôn ng l p trình ư c xây d ng trong Flash.

AS gi ng như các ngôn ng khác như Javascript, C++ v.v. nhưng b n không c n bi t các ngôn ng khác h c AS (n u có thì càng d hơn). B t âu h c AS, thì chúng ta coi th AS là gì, làm ư c nh ng gì và có quan h gì v i các ch c năng khác c a Flash. Trong bài này, b n s tìm hi u coi AS ra i như th nào, xem cách vi t AS làm sao, tìm hi u AS làm ư c nh ng gì và sau sau cùng là xác nh ư c nơi lưu tr AS trong Flash. i sát nghĩa và ti n cho sau này, mình s không d ch m t s t ng ra ti ng vi t như script, movieclip v.v. Script là gì? AS là ngôn ng l p trình, v i các l nh sai khi n Flash movie làm vi c theo úng nh ng gì mình vi t (ch có mình vi t sai ch computer không làm sai ). Ph n nhi u thì AS ch làm vi c trong môi trư ng c a Flash, tuy nhiên AS cũng có th g i l nh cho browser, h i u hành v.v. Script có th ng n g n vài ch hay cũng có th dài c trăm trang. Script có th vi t g p l i m t ch hay cũng có th vi t rãi rác kh p nơi trong movie. Xu t x c a AS AS rât gi ng ngôn ng C++, Java, javascript .v.v và ư c d a trên tiêu chu n do ECMA (European Computer Manufactuers Association) l p ra g i là ECMAScript. Nhi u ngư i hi u l m r ng AS d a trên Javascript, nhưng th c ch t c 2 u d a trên ECMAScript. Lúc u vi t script trong Flash r t ơn gi n và cho t i Flash 4 m i u c phát tri n nhưng cũng v n còn "thô sơ" v i nh ng vòng l p và các i u ki n "if...else". Cho t i Flash 5 thì dân Flash m i có th l p trình và g n li n script v i các y u t trong movie. . Sang t i Flash MX thì AS ã tr thành ngôn ng l p trình toàn di n v i hơn 300 câu l nh, hàm .v.v Nh n biêt AS AS ơn gi n là nh ng câu l nh ư c vi t b ng ti ng Anh (vì l này mà mình s không d ch các tư ti ng Anh liên quan n AS, và m t ph n thì mình không gi i thu t ng computer hay ti ng vi t cho l m) và các phép tính và d u câu. Ví d sau: ư c

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

B n có th gi i nghĩa o n mã trên b ng cách tìm hi u các t chính trong ó. Ch "press" g i ý răng ngư i dùng ang kích chu t vào m t cái gì ó, (và trong trư ng h p này là cái nút) Ch k ti p "gotoAndPlay" do 4 ch "go to and play" g p l i, g i ý r ng AS ra l nh cho Flash t im t i m nào ó trong movie và b t u chơi t i m ó. AS có th làm nh ng gì? Flash movie g m có các scence (c nh), và m i c nh s có 1 timeline (th i gi n bi u???) và timeline s có các frame (khung) b t u t s 1. Thông thư ng thì Flash s chơi t frame 1 cho t i frame cu i c a scence v i t c c nh và d ng l i hay l pl it u tuy theo ngư i làm Flash. M c ích chính c a AS là thay i th t trong cách chơi c a Flash. AS có th dùng b t frame nào, hay ch y ngư c tr l i frame trư c hay nh y vài frame r i chơi ti p. Nhưng ó không ch là nh ng gì AS có th làm ư c. AS có th bi n film ho t hình c a Flash thành m t chương trình ng d ng có s tương tác c a ngư i dùng. Dư i ây là nh ng cơ b n mà AS có th làm:

• • •

• •

Ho t hình: B n không c n AS làm ho t hình, nhưng v i AS thì b n có th t o nh ng ho t hình ph c t p hơn. Ví d , trái banh có th tưng xung quanh mành hình mà không bao gi ng ng, và tuân theo các nh lu t v t lý như l c hút, l c ma sát, l c ph n v.v N u không có AS thì b n c n ph i dùng c hàng ngàn frame làm, còn v i AS thì ch 1 frame cũng Navigation (hông bi t d chlàm sao cho hay ): thay vì movie ch chơi t ng frame 1 theo th t thì b n có th d ng movie b t c frame nào, và cho phép ngư i dùng có th chơi b t c frame nào .v.v Thu nh p thông tin t ngư i dùng (user input): b n có th dùng AS h i ngư i dùng 1 c u h i, r i dùng thông tìn ó trong movie hay có th g i cho server hay làm nh ng gì b n mu n. Thu nh p thông tìn t các ngu n khác: AS có th tương tác v i server và l y các thông tin t server hay text file Tính toán: AS có th làm b t c phép tính nào mà toán h c cho phép Thay i hình nh trong movie: AS có th thay i kích thư c, màu s c, v trí c a b t c movie clip (MC) nào trong movie flash c a b n. B n có th t o thêm phiên b n hay xoá b i phiên b n c a MC v i AS Phân tích môi trư ng c a máy tính: V i AS b n có th l y gi t h i u hành hay a ch ang chơi movie Flash ó. i u khi n âm thanh trong flash movie: AS là cách t t nh t i u khi n âm thanh trong Flash,AS có chơi ch m, chơi nhanh, ng ng, quay vòng .v.v bât kỳ âm thanh nào trong Flash.

Phát tri n các kh năng c a AS i u quan tr ng nh t mà AS có th làm cho b n là nh ng gì chưa ai nghĩ t i V i AS và trí tư ng tư ng và óc sáng t o c a b n thì không có gì là không th x y ra v i AS ư c. M c ích c a các sách, và c a VNFX là hư ng d n b n hi u bi t v Flash t ó

b n có th t dùng nó Vi t AS âu

làm ra nh ng s n ph m tuy t v i mà không ai có.

Câu h i u tiên nh ng ai tìm hi u AS thư ng h i là "Vi t AS vào âu?". Flash có m t môi trư ng làm multimedia khá ph c t p. N u b n ã dùng Flash r i hay ã c qua các hư ng d n i kèm v i Flash, thì b n ã bi t các y u t cơ b n như timeline, key frame v.v. nêu b n chưa bi t thì mình khuyên b n nên tìm hi u trư c r i tiêp t c ây. Ơ trong m c Flash T ng Quá, VNFX có post link download 3 cái CD hư ng d n cơ b n cho ngư i chưa bao gi dùng Flash. Vi t AS time line

AS có th vi t vào key frame b t c timeline nào. làm 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) viêt hay xem AS ã ư c vi t ó. Mình khuyên b n nên dùng Action Panel dư i d ng Expert hơn là Normal, vì như v y b n s h c ư c nhi u và l hơn. Khi vi t AS vào key frame như v y thì AS key frame ó s ho t ng khi mà Flash chơi t i key frame ó. Ví d như l nh AS stop() ư c t key frame 5 thì Flash chơi t i key frame 5 thì s d ng l i cho t i khi có l nh khác. cách vi t này g i là vi t vào time line M t trong nh ng lý do vi t script vào time line là khi b n mu n dùng function (hàm), vì function cho phép chúng ta tái s d ng o n mã ó t nhi u nơi, nhi u level khác. Viêt AS nút

Các ph n t c a Flash movie ư c g i là symbol (bi u tư ng). thư ng thì symbol là các hình nh. Và có 3 lo i symbol: button (nút), graphich (hình nh), movie clips( o n phim). 3 lo i trên thì AS không th vi t li n v i graphic, còn button và movie clip thì OK. Nút s không có tác d ng gì c n u như không kèm AS lên trên nó. Mu n kèm AS vào nút thì ch n nút trên stage (sân kh u: di n tích c a flash movie), r i sau ó m Action panel và vi t vào ó như ta vi t vào key frame. AS vi t trên nút ch ho t Vi t AS MC ng khi chu t ho c bàn phím tác ng lên nút mà thôi

MC khác v i graphic ch MC ư c t tên khi mang vào stage, MC thư ng là hình ành ng, và có th có AS kèm theo MC. vi t AS vào MC thì cũng tương t như ta làm v i nút. AS kèm theo MC có th i u khi n MC ó hay là các MC trong cùng m t timeline hay các timeline ngoài movie Bài t p

còn cái bên kia cho cái stage. câu b n mu n tìm. Using the Script Editing Window N u dân ho coi Timeline là nhà thì dân l p trình v i AS coi Action Panel là nơi cư ng c a mình. Flash s h i b n mu n s d ng Flash như th nào và Flash s x p t các panel cho h p lý. Dung Flash v m i hình khác nhau cho m i frame 4. S d ng Action panel có 2 cách: bình thư ng (normal) và chuyên d ng (expert). ch nào trong script c a b n. và cái này cũng c n có kinh nghi m ó Mình dùng dual monitor. nh n F3 thì Flash s ti p t c tìm ch . mình close h t các panel ch gi l i 2 cái chính trên màn hình. d ng bình thư ng thì b n không có th ánh tr c ti p các câu l nh. B n có th tìm và thay th b t c câu nào." 6. n m góc ph i c a action panel) và trong ó có nhi u l nh r t t t cho b n khi b n dùng Action panel.1. Phím t t cho tìm ki m là Control + F và cho thay th là Control + H. và b n ã thành công trong vi c vi t AS : Gi th 02: S d ng Action panel. vi t vào keyframe 2 o n mã : "stop(). T normal mode chuy n sang expert mode thì nh n phím t t CONTROL + SHIFT + E. Khi m i ch y máy l n u thì Action panel ư c set dư i d ng bình thư ng. nhưng t do ng nghĩa v i trách nhi m nên b n ph i c n th t khi vi t code. Ch y th movie (nh n Control + enter) 5. mà ph i ch n t các menu bên tay trái c a panel. T o m t movie m i 2. nh t là i v i Expert mode. Cho ch y th movie l n n a 7. B n có th i t Normal mode sang expert mode b t c lúc nào. . Nói chung b n nên x p t các panel c a b n làm sao cho thu n ti n cho b n nh t. B n cũng có th thay i cách x p t theo ý c a b n. nhưng i ngư c l i thì ch ư c khi mà code c a b n không có l i. Sau ó tr l i timeline. Và kỳ này b n ch th y Flash chơi t i frame th 2 thì ng ng. t o 3 key frames 3. t i ó dân AS có th thay i. Action panel có popup menu (mũi tên ch xu ng dư i. Mình s b ph n hư ng d n dùng normal vì mình th y dùng normal mode s không bao gi ti n ư c. dùng expert mode lúc u hơi m t nhưng b o m là các b n s h c ư c mau và nh lâu hơn S d ng Action panel v i expert mode thì b n có nhi u t do hơn. Vì v y r t quan tr ng là b n có th s d ng quen thu c Action Panel Flash MX s d ng các panel giúp b n có th l y các thông tin v movie b n ang làm m t cách d dàng. mình kéo cái action panel và property panel qua m t bên monitor. chuy n ngư c l i thì dùng CONTROL + SHIFT + N (nh kích chu t vào action panel trư c khi dùng phím t t). vi t t t c các l nh. n u c n m panel nào thì mình dùng phím t t m . Khi b n cài t và chay Flash l n u tiên. V i setup như v y thì b n không bao gi ph m ph i l i khi vi t AS c .

T o m t movie m i 2.M t l nh n a là "Goto Line" giúp b n tìm ư c câu b n mu n tìm. L nh ti p theo là "Auto Format" và "Auto Format Options" giúp cho b n trình bày script c a b n cho d c hơn. Lúc m i t p vi t AS. Và n u b n tôn th m t s quy t t thì b n s s ư c ch c năng "Code Hint" c a Action Panel. Ch n key frame u tiên (frame s 1) c a layer 1 (mình không d ch ch layer = l p vì d trùng v i class= l p) 3. Tuy g i là expert mode nhưng th c ra dùng còn d hơn là normal mode. Các ph n còn l i c a pop-up window cho phép b n ư c xu t hay nh p AS dư i d ng text file và in script ra gi y. B i vì dư i expert mode thi Action panel ch ng khác gì chương trình "note pad" hay "text pad". Khi dùng dư i expert mode. Vào ch 6. và mình s c p n l nh trace() vào nh ng gi t i . giúp b n làm quen v i Action panel dư i expert mode 1. b n v n có th tham kh o các câu l nh.v. font ch v. Sau ây là bài th c hành nho nh . Khi b n th movie thì dòng ch "I am expert" s ư c hi n ra trong Output panel. B n ch vi c vi t nh ng gì b n mu n vào ó. tr thành m t "cao th " v AS thì b n không th nào không n m v ng v Action panel ư c. thì dùng nên thư ng xuyên dùng Chech Syntax check l i trong sctipt. cho script c a b n cho b n d c code hơn b ng cách vào Edit > Preferences > ActionScript Editor. ch c năng này t o nên nhưng khung nh nh trong ó có nh ng câu l nh c a AS úng h p quy cho b n l a ch n. Vi t o n code sau: ActionScript trace ("I am expert"). L nh "Check Syntax" s rà soát script c a b n và tìm nh ng l i cú pháp. B n có th thay i màu s c. M Action panel (có th dùng phím t t hay vào trong ph n Window > Action panel 4. các cú pháp c a AS cái khung bên trái c a Action Panel. Chuy n sang expert mode (dùng phím t t hày vào trong pop-up menu c a Action panel i) vi t AS 5.

b n s t o ra cho riêng mình m t phong thái vi t code khá c trưng. cũng như hàm sqrt() cũng c n có thông s cho ra giá tr bình phương c a s y. nhưng n u trong movie không có frame 5 thì l nh không th làm ư c. Ví d hàm random() s cho ra m t con s ng u nhiên nào ó. ch bi t làm vi c theo m nh l nh m t cách không suy nghĩ. Ví d gotoAndPlay(5) thì 5 là thông s . L nh. và trong bài này s bàn v nh ng khái ni m l p trình và làm sao áp d ng nó trong Flash Cách suy nghĩ c a computer Th t ra computer d t l m ch ng bi t suy nghĩ âu. Learning to program L p trình có th coi là khoa h c và ngh thu t. b n s oán ư c script c a b n s làm nh ng gì trong môi trư ng runtime. Vì v y computer không bao gi l i mà l i ngư i vi t l nh sai khi n nó. Có th m i u b n s dùng phong cách vi t code trong nh ng bài vi t này. Khi t t mình vào v trí c a computer. và phép tính L nh (command) là y u t căn b n c a AS ch th Flash làm m t hành ng c th . ít khi nào có trư ng h p ch có 1 cách l p trình cho m t án l m. Trong quá trình vi t AS. n u như không có thông s này thì l nh "gotoAndPlay" s không bi t rõ ph i nói Flash i âu. mình s dùng t function nhi u hơn là hàm) là ph n tính toán các phép tính và cho ra (return) m t k t qu . S khác bi t gi a hàm và l nh chính là các phép tính. hàm. >.Gi th 03: H c cách l p trình. và nh ng thông s ó giúp cho hàm và l nh ư c c th hơn. ==. Hàm có phép tính. Còn AS ch là m t chu i l nh. và b n có th th y ra nh ng l i mà b n vô ý m c ph i. Ví d n u như ta vi t gotoAndPlay(5) cho Flash t i frame 5 và chơi. l nh thì không . Hàm (function. hay úng ra là Flash ph i làm nh ng gì trong môi trư ng runtime (runtime environment). hay hàm sqrt() s cho ra giá tr bình phương c a 1 s mà hàm nh n ư c truy n cho. -. *. ch th cho computer. Vì v y l p trình viên gi i c n có 2 i u ki n ki n th c v ngôn ng mà h dùng và tính sáng t o. / hay là phép so sánh <. Phép tính thư ng là nh ng d u +. r i sau ó b n s t t chuy n sang phong cách c a riêng b n Thư ng thì khái ni m v các ngôn ng l p trình u gi ng nhau. Khi vi t AS thì b n nên t coi mình "ngu" như computer. mình s dùng t parameter thay vì thông s ). và c l i nh ng dòng l nh AS và nghĩ t i k t qu c a vi c thi hành l nh ó. L nh ư c thi hành tuy t i trong các trư ng h p kh thi. Khi mà b n tr thành di n viên tuy t v i trong vai computer thì b n cũng tr thành m t l p trình viên tài ba. L nh và hàm u có th ư c truy n cho 1 hay nhi u thông s (parameter.

Lưu ý r ng ch các ch cái và s m i ư c dùng âu tên b ng ch cái. b n c n lưu ý vi t làm sao cho d hi u và d quy ư c tên bi n s theo quy t c sau: tên bi n s luôn vi t thư ng ch u tiên. ví d b n mu n Flash thi hành 1 s l nh 10 l n thì b n c n m s l n mà Flash ã thi hành l nh có th ra l nh cho Flash ngưng ngay sau khi thi hành xong l nh l n th 10. Khi vi t m t chu i thì c n dùng d u ngo c kép ("") b t u và k t thúc chu i. còn có nhi u lo i khác n a nhưng chúng ta s nh ng bài sau. hay 1 ch cái. hay ngay c ActionScript 2. "".Bi n s Bi n s (parameter) c n thi t trong m i ngôn ng l p trình vì nó lưu tr thông tin v m t cái gì ó trong chương trình.. t tên cho bi n s . s .. Tên c a bi n s thư ng là m t nhóm t . và dư i nó còn có các lo i khác như s nguyên (integer). Bi n s g m có 2 ph n: tên và giá tr . Ví d n u b n mu n lưu tr tên c a ngư i dùng trong bi n s thì b n nên t tên bi n s ó là userName (mình nghĩ t tên ti ng Anh d hi u hơn. vì ti ng vi t không d u cũng d b hi u l m). Nhưng cũng có lúc b n c n ph i lưu l i thông tin trong m t th i gian dài hay trong su t quá trình th i gian Flash chơi. chu i có th ch có 1 ch cái. " ". double). "a". b n có th t tên bi n s ó là "n" nhưng quá ng n. Thông thư ng tên c a bi n s nên rõ ràng d hi u và nói lên ư c tính ch t c a thông tin mà bi n s ang lưu tr . Nhưng v i ActionScript 1 (trong FlashMX) thì b n không c n làm vi c này. Như s (number) là m t lo i giá tr c a bi n s . n u t là name thì d trùng v i các bi n s hay t khoá khác (_name là m t c tính c a i tư ng MovieClip) c. Ngoài chu i và s . không nguyên (floating. userLastName. C++. ngư i c script c a b n s khó hi u.0 trong Flash MX 2004 thì b n ph i xac nh trư c lo i thông tin nào b n s lưu trong bi n s . userMotherMaidenName v. Ví d bi n s userName lúc u ch a 1 chu i. . ôi khi b n ch c n lưu tr thông tin trong bi n s m t th i gian ng n. và ngay m i lo i thông tin cũng Có nhi u lo i bi n s có th có nhi u lo i khác nhau n a. Trong các ngôn ng l p trình khác như Java. t t c các chu i sau ây u h p l : "ablsdfjksl". và luôn b t lưu tr nhi u lo i thông tin.v. Và các l p trình viên Khi vi t AS. hay cũng có th ch ơn gi n là 1 t . nhưng sau ó l i ch a 1 s nguyên thì cũng v nh pl . B n cũng có th dùng bi n s ch a các chu i (chu i g i t t cho chu i ch cái). ví d userName. và vi t hoa ch cái u tiên cho các ch k ti p. c p t i vào i u ki n Trong nh ng trư ng h p chúng ta không bi t nên ra l nh cho Flash ph i làm gì cho thích h p v i t ng tình hu ng thì ta có th dùng " i u ki n" ra l nh cho Flash. nhi u ch cái hay là không có gì h t.

b n có th dùng vòng l p trong script. m b n nh b n ra ch mua gà. ví d như b n mu n Flash chơi o n phim A cho ng ơi trên 18 tu i. Nh t là ph i làm i làm l i 1 vi c nào ó thì càng nhàm chán. Nhưng ch . AS cũng v y. tr l i bư c th 3 6. set bi n s counter = 0 3. N u bi n s counter nh hơn 9. và ti p t c chương trình. Trong vòng l p. và cái này thì ai cũng bi t nhưng làm sao ph i h p l i thành m t chương trình hoàn h o m i là cái khó. Ra kh i vòng l p. Vì v y vòng l p (loop) là m t y u t quan tr ng trong các ngôn ng l p trình. Ví d như b n mu n cho vòng l p ch y 10 l n thì s có 1 bi n s dùng m vòng l p. M t giá tr ch có úng hay sai thì ư c g i là boolean.Ví d n u như b n ra l nh cho Flash không cho ngư i dùng coi m t o n phim trong Flash n u như user dư i 18 tu i. Tăng bi n s counter +=1 5. M t i m áng lưu ý c a vòng l p là i u ki n ư c xét trư c khi th c hi n các l nh trong vòng l p. Sau khi th c hi n phép so sánh và có ư c k t qu t phép so sánh trên. Khi t i 9 thì vòng l p s d ng l i. Chương trình ơn gi n ch là m t t p h p l nh cho computer gi i quy t 1 v n nào ó. b t u t 0. n u user trên 18 tu i thì hãy chơi o n phim y. hàm. mà bán cái cho computer. Flash s ch n m t trong 2 gi i pháp do chúng ta ưa ra cho t ng trư ng h p. Ví d th c t ngoài i. phép tính. i u ki n. Flash s so sánh s tu i c a user v i s 18. và ngư c l i s là false i u ki n s luôn luôn là úng (true) hay sai (false). và nh ng ai dư i 13 thì chơi o n phim C. ôi khi chúng ta c n có nhi u i u ki n hơn ch là ơn gi n "true" hay "false". M t s l nh tr ơc vòng l p 2. i u ki n s ư c xét sau khi th c hi n các l nh trong vòng l p. M i vòng l p c n có i m b t u và i m d ng và m t i u ki n báo hi u i m d ng c a vòng l p. ây chúng ta b t d u bi n s counter = 0 vì quy ư c thông thư ng các ngôn ng l p trình u b t u vòng l p 0. Trư c tiên. M i vòng l p ch y thì bi n s này s tăng thêm 1. B t u vòng l p. Làm m t s l nh trong vòng l p 4. vòng l p là nh ng ph n căn b n trong ngôn ng l p trình. Trong vài trư ng h p. bi n s . dư i 18 nhưng trên 13 thì chơi o n phim B. Chúng ta cũng có th ngưng vòng l p trư c i m d ng c a nó. Sau ây minh ho c a vòng l p này: 1. Vì v y trư c khi vi t 1 chương trình chúng ta c n ph i xác nh "v n " c n ph i gi i quy t. Vòng l p Con ngư i làm ra computer vì lư i không mu n làm nhi u. " i u ki n" r t quan tr ng. và i u này s ư c c p t i vào bài k ti p Làm nh ng i u không tư ng L nh. n u như s tu i c a user tho mãn i u ki n chúng ta t ra thì Flash s có 1 giá tr true t phép so sánh trên. thông s .

b n s dùng t t c nh ng t khóa. còn nh b n ch i thì nh tên nào. Bug có th ch là nh ng l i cú pháp ơn gi n. giá c ra sao v. var myOtherVariable = "Macromedia". v. Gi th 04: Viêt code trong Flash. N u i taxi i hãng nào. ActionScript on (press) { var myVariable = 7. tìm s phone g i. Vi t t ng o n code nh r i ráp l i v i nhau (vì v y mà l p trình theo hư ng i tư ng ư c s d ng nhi u nh t) N u script c a b n có bug thì ng th mà n n lòng. Writing code in Flash Khi b n vi t script. mua 1 con gà mái d u. vi t nhi u chú thích cho các o n mã. chúng ta s nói t i các công c này trong bài t i. vì không có chương trình nào do con ngư i làm ra mà không có bug c . n ng kho ng 2 kg.v.v. Các chương trình có bug không ph i vì ngư i vi t d mà vì chưa nghĩ t i h t m i tình hu ng thôi. v i giá kho ng 10000 thì th t là d dàng cho b n ph i không? Bi t ư c v n mua gà r i thì tìm cách mua gà. ôi khi di t bug (debug) r t ơn gi n nhưng có khi cũng r t kho mà bi t bug âu di t. n u mua gà s ng thì mua lo i nào v. t m t chuy n mua gà ơn gi n v y mà có th t n c ngày tr i lên chương trình Vi t AS. ó là chưa nói t i mua gà ch nào. B n ph i "lên k ho ch". N u có bug thì b n di t bug thôi B n có th chu n b "chi n u" v i bug b ng cách vi t code sao cho d hi u và d c. thi t k chương trình cho script c a b n. nên nh b n ch hay i taxi ra ch b n thành. hay là nh ng l i ph c t p do cách b n gi i quy t v n trong môi trư ng runtime. và sau ó xây d ng chương trình t gi i quy y các v n nh lên d n cho t i v n chính.v. tránh có bug trong script c a b n thì b n nên t n nhi u thì gi vào giai o n phân tích.ơn gi n nói ra ch mua gà thì chưa vì bi t mua gà s ng hay gà làm r i. o n script này g n vào 1 button. Ki m tra các o n code nhi u l n. Vì v y b n ng c g ng viêt code sao cho tuy t h o không có l i. N u như b n m nói rõ là ra ch b n thành. tr ti n m t hay ghi s n . Ra n ch thì ph i m c c làm sao. Vi t mã hoàn ch nh B (bug) ơn gi n là l i c a chương trình mà b n t o ra. V y trư c tiên chúng ta s phân tích m t o n script sau ây. i u quan tr ng trong l p trình là kh n ng phân tích m t v n chính thành nhi u v n nh cho t i khi không còn nh hơn n a. Tóm l i. và óng vai "computer" cho th t gi ng. và ký hi u v. Flash có kèm theo vài công c giúp b n debug d dàng hơn.v. . ng suy nghĩ. b n c n ph i lưu ý t i t t c m i vi c dù nh cách m y cho Flash có th làm úng theo như ý b n trong m i tình hu ng. R i nên m c qu n áo nào i ch . mà thi hành các l nh trong script c a b n. B n th y không.

Tương t như on(press). for loop cũng có o n code cho riêng nó. l nh này ch vi t thông tin ra output window trong lúc b n làm vi c v i Flash. và ơc b c quanh b ng { } và o n code trong ó ch kích ho t khi mà các i u ki n c a for loop ư c th a mãn.v Trong lúc h c AS. Output window trên chúng ta có nh c t i output window. bi n s . user s không th y ư c.for (var i=0. thì l nh trace() m i có th vi t các thông tin ra output window. N u mà k t qu là úng thì nó s kích ho t l nh trace trong. Các b n lưu ý th y o n code ư c vi t vào trong cho d nh n th y c o n code này ph thu c vào on(press). Trong khi ch y th movie. C 2 câu này ư c k t thúc b ng d u ch m ph y . Các b n nên vi t lùi vào trong cho nh ng o n code ph thu c vào 1 l nh hay hàm nào ó. như o n code trên. if (myVariable + 3 == 5) { trace(myOtherVariable). Ti p theo chúng ta s nói n vài ph n khác c a AS.v. và u ư c kích ho t khi nh n nút. và nó s ki m tra k t qu c a phép so sánh myVariable + 3 ==5. mà không nói rõ là gì. Output window r t quan tr ng trong vi t "di t b ". Dòng th 5 là l nh trace(). và s vi t ra output window giá tr c a myOtherVariable V y là b n ã th y m t o n script hoàn ch nh b ng AS r i. i<10. i++) { trace(i). và t giá tr b ng 7 cho nó. Output window là m t window trong software Flash. Nó s l p 10 l n v i i u ki n b t u là i=0 và nó s tăng thêm 1 cho m i l n l p cho t i khi nó lên t i 9. và buông tay. dùng nó chung v i trace b n có th quan sát các thông s . D u ngo c móc {} u và cu i o n code. và ch xu t hi n khi mà b n ch y th movie. tương t hàng k ti p l p ra var tên là myOtherVariable và cho giá tr c a nó là "Macrmedia". b n có th vi t m t an script ng n không làm gì c nh ng ch vi t thông tin ra output window. Dòng th hai l p ra bi n s (mình s vi t t t là var nhe) tên myVariable. } } } Dòng u tiên xác nh nh ng o n code sau ó ư c kích ho t khi mà user nh n vào nút. gói o n code ó vào làm m t. K ti p là i u ki n. N u Flash compile movie cho b n và phát hi n ra l i thì Flash s vi t ra các output window này. Ngoài ra b n có th dùng on(release) n u như b n mu n kích ho t o n mã trên sau khi user nh n nút. thu c tính i tư ng . . if là t khoá trong Flash. hàm on(press) ch có th s d ng trong vào trong nút mà thôi. Dòng th 4 chính là vòng l p (mình s g i là loop cho ti n nhe) for (s nh c t i các lo i loop phía dư i) và các i u ki n c a loop này. các i tư ng.

output window có 1 cái pop-up menu nho nh trên góc ph i. và Flash t ng bi n nó thành global variable. 4. chúng ta có nh c n variable (bi n s ) dùng lưu tr thông tin. var2= "hello world". Các hình nh.Th c hành: vi t thông tin ra output windown Cách t t nh t hi u rõ ch c năng c a output window là s d ng nó. B n ch c n n nh giá tr cho variable. (b n có th t tên cho variable là b t c gì b n muôn) Bây gi b n có th th vi t o n code sau: ActionScript var1= 7. Kích chu t vào ph n vi t script và vi t câu sau: trace("hello world"). 1. B n th y gì F2) output window? (N u output window c a b n chưa m thì hãy nh n Gi ng như action panel. T o global variable không òi h i m t b n ph i làm m t cái gì c bi t c . Variable có 2 lo i. b n có th dùng nó như cách trên. Global variable (bi n s toàn b ) thì b n có th truy c p giá tr c a nó b t c nơi nào trong movie. Ch nh kích thư c cho action panel l n vi t. Ví d : myVariable = 7. b n có th ch n không c n output window in ra các l i (none). hay ch in c nh báo (error) và cu i cùng là in ra chi ti t các l i hay c nh báo (verbose) Bi n s c c b và toàn b trong gi th 3. trace ("var1: " + var1+ " /var2: " + var2). Ch n frame u tiên c a movie. B n có th dùng nó copy. . xoá hay save n i dung c a output window hay có th tìm ki m ch . Bây gi mình s vi t m t o n code ng n g i thôi tin ra output window nhe. Ngoài ra. còn các movie clip cũng chính là m t Flash movie nh trong Flash movie l n.v. Và s d ng variable trong AS r t d dàng. và timeline c a movie chính là root leve (g c). hay ch in l i (error). Khi b n ch y th movie thì output window s có hàng ch sau: var1: 7 /var2: hello world Vì s 7 và "hello world" ư c ch a trong var1 và var2 s ư c in ra. pop-up menu này có ph n cho b n ch nh ch "di t b ". script trong m t movie clip là 1 level th p hơn root level. v. và nh dùng expert mode 3. m Action panel. Flash movie dùng h th ng level. Chúng ta t o variable có tên là myVariable và n nh 7 là giá tr cho nó. local và global. T o m t file m i 2. Ch y th movie (Control + Enter) 5.

khác v i global variable. trace(myLocal). Khi dùng local variable thì khi ra kh i timeline hay o n code ó thì Flash s xoá local variable ra kh i b nh . trace(a != 7).Local variable (bi n s c c b ). B n có th dùng == runtime ch Flash s không có th tìm ư c so sánh 2 chu i m u t : ActionScript var myString = "Hello World. Mu n t o local variable thì dùng t khoá var trư c tên c a local variable. Khi b n test o n code trên thì b n s có ư c "true" và "false" output window. o n code sau xét coi giá tr c a a có b ng 7 không.". nhưng l n th hai thì không vì ch H và h khác nhau. dùng các ký hi u toán h c như <. và in k t qu ra output window. N u b n mu n th coi 2 giá tr có khác nhau không thì dùng ky hi u != ActionScript var a = 7. Phép so sánh và các phép tính So sánh 2 giá tr trong AS r t ơn gi n. Và khi test o n code sau. >. và cho khác bi t thì khi so sánh dùng ==. vì l n so sánh th nh t thì b ng nhau. trace(myString == "Hello World. nh ng l n dùng sau ó thì ch c n dùng tên c a local variable thôi. B n ch c n dùng t khoá var 1 l n thôi. N u b n dùng l n = v i == thì s b l i l i này cho b n. Hàm trace u tiên s cho ra "true" vì 7 khác 9. = Khi n nh giá tr thì dùng d u =. trace(a != 9). b n s th y true output window ActionScript var a = 7. trace(myString == "hello world."). Ví d o n code: ActionScript var myLocal = 9. hay trong cùng m t timeline. local variable ch có tr truy c p trong cùng m t o n code. trace(a == 7). ví d : var myLocal = "This is local"."). myLocal = 11. và cái th hai thì s cho ra "false" .

dòng th 2. o n code trên s cho ra "true". Ti ng . trace(a < 8). trace(a++). AS cũng có cách vi t t t như Java.N u b n mu n th giá tr coi l n hơn hay nh hơn thì dùng > và < ActionScript var a = 7. trace(a). trace(a <= 9). chia (/). trace(a >= 7). output window b n s th y 7 r i m i t i 8. "true" và "false" trong output window vì "a" qu th t nh hơn 8 và l n 6. 1 là sau variable như cách trên. else chính là các t khoá c a i u ki n. -=. N u b n mu n th giá tr coi l n hơn hay b ng nhau ho c là nh hơn hay b ng nhau thì dùng ký hi u >= và <= ActionScript var a = 7. trace(a). Ví d mu n thêm 4 vào giá tr c a a thì vi t a = a + 4. Phép tính nhân và chia thì ch có *. trace(a > 6). Bây gi xem ví d khác: ActionScript var a = 7.và --. dòng th 2 c a ví d này. o n code trên s cho ra 3 k t qu "true" c . Tương t như ++. nhưng không nh hơn 1. C++ cho vì d này. trace(++a). Có 2 cách dùng ++. /. hàm trace s cho ra giá tr c a a trư c r i m i tăng giá tr c a a lên thêm 1. và 1 cách thì trư c variable. *=. a += 4 N u b n mu n thêm 1 vào a thì b n có th vi t như 2 cách trên a = a +1 và a += 1 và còn cách th 3 a++ . Bây gi thư o n code sau: ActionScript var a = 7. /= thôi. i u ki n Trong AS và các ngôn ng khác. output window b n s th y 8 và 8. D u ++ ch làm tăng thêm 1 cho giá tr ó thôi. AS cũng có cách vi t t t cho giãm giá tr c a variable là d u -.. B n có th thay i giá tr c a variable v i các phép tính ơn gi n như c ng (+). hàm trace s tăng giá tr c a a trư c r i m i cho ra giá tr c a a. tr (). if .. trace(a < 1). nhân (*). trace(a >= 5). =.

else... else if ... } T khoá if luôn b t u cho 1 i u ki n và ti p theo s là s so sánh. T khoá if dùng k t qu c a s so sánh nào ó i t i quy t nh kích ho t m t o n code. Ví d n u như a l n 10 và a ph i nh hơn 15 thì ra l nh cho Flash chơi frame 10. B n cũng có th dùng t khoá or (còn có th ư c vi t là ||)n u như ch c n tho mãn 1 i u ki n trong 2 phép so sánh thôi. nh ng AS cũng cho phép dùng so sánh a h p (compound comparision). T t c các code ư c kích ho t n u i u ki n ư c tho mãn s trong âu ngo c móc {}. n u úng thì Flash s chơi frame 10 ActionScript if (a == 7) { gotoAndPlay(10). } T khoá and (còn có th ư c vi t là &&) yêu c u ph i tho mãn i u ki n c a 2 phép so sánh. B n có th có bao nhi u cái else if cũng ư c. o n code sau s so sánh giá tr c a variable a v i 7.. } else { gotoAndPlay(15).vi t có nghĩa là "n u . n u không". T khoá else b sung cho if trong trư ng h p b n mu n th c hi n m t o n code n u i u ki n c a if không ư c th a mãn. nhưng . Ví d : ActionScript if (a == 7) { gotoAndPlay(10). Trong i u ki n c a Flash ta có th dùng nhi u so sánh i t i m t k t qu chính xác hơn. } N u trư ng h p c n th a mãn nhi u i u ki n thì có th dùng cú pháp if .. ActionScript if ((a > 10) or (a < 15)) { gotoAndPlay(10). Luôn t code so sánh gi a ngo c ơn ().. } Vòng l p Cú pháp c a vòng l p (loop) thì hơi r c r i hơn so v i cú pháp c a i u kiên if. Nãy gi ta chi nói t i i u ki n d a trên 1 s so sánh. ActionScript if ((a > 10) and (a < 15)) { gotoAndPlay(10).

và d n n tình tr ng treo máy. for loop tăng giá tr c a variable i trong su t quá trình th c hi n loop. Bây gi chúng ta gi làm computer và ch y cái for loop này. Java. G m có 3 lo i vòng l p chính là for loop.i++) { trace(i). th c hi n các code trong vòng l p n u i u ki n c a while loop ư c thoã mãn. C++. Gi ng như while loop. ph n này for loop ch th c hi n có 1 l n duy nh t lúc b t âu. Còn nh ng code th c hi n trong m i vòng l p thì trong ngo c móc {}.nó tương t như C. Ki m tra giá tr c a i có nh hơn 10 không. while loop tương t như i u ki n if ơn gi n. } N u b n cho ch y o n code trên thì b n s có ư c t s 0 t i 9 output window. while loop và do-while loop for loop ư c coi là vòng l p chính v i t khoá for và cú pháp c a nó nhìn như sau: ActionScript for(var i=0. Ph n th hai là i u ki n chính c a for loop i<10. vì v y b n d dàng r i vào trư ng h p vòng l p vô h n. và ư c cách bi t b i d u ch m ph y ( . 3 ph n này u ư c b vào trong ngo c ơn (). còn không thì t i bư c th 5 3. ây là i++ nên giá tr c a i s ư c tăng sau m i vòng l p trư c khi vòng l p m i b t u. u tiên là i u ki n b t u v i vi c t o local variable cho for loop var i=0. Và ph n cu i cùng là phép tính cho s ti p n i c a for loop m i vòng l p. ra kh i for loop T i bư c th 5 thì giá tr c a i s b ng 10 while loop v i t khoá while có cú pháp nhìn tương t như sau: ActionScript while (a > 0) { // code th c hi n trong while loop } ơn gi n hơn for loop. c ng 1 vào giá tr c a i. s ư c th c hi n m i vòng l p. 1.i<10. Trong o n code trên. N u i u ki n này tho mãn thì m i ti p t c vòng l p. n u nh hơn 10 thì vòng l p th c hi n các code trong {}. b n ph i làm th nào cho co 1 lúc a s nh hay b ng 0 cho vòng l p ng ng l i. i u ki n c a for loop có 3 ph n chính. hàm trace vi t giá tr c a i output window 4. do-while loop có cú pháp nhìn như sau: ActionScript . T o local variable và n nh giá tr cho nó b ng 0 2. và tr v bư c th 1 5.

Sau ó myFunction dùng l nh return n nh giá tr c a newNum là k t qu c a myFunction. và n nh giá tr c a newNum b ng giá tr c a param num c ng v i 3. M t trong ưu i m c a function là b n có th tái s d ng. ây là ví d : var a= myFunction(7). cách này ch t t cho nhưng chương trình ơn gi n. Theo sau tên c a function s là thông s (parameter. và cu i cùng thi local var này s b ng 10. o n code ư c function th c hi n s n m gi a ngo c móc {}. Hàm (function) s cho phép chúng ta c u t o và qu n lý code d dàng hơn trong các chương trình ph c t p. sau ó function myFunction t o ra m t local variable tên là newNum. Function có th co 1 hay nhi u param hay không c n param cũng ư c.. Hàm Cho t i bây gi các script c a chúng ta u ư c vi t vào frame u tiên c a moive. tên c a function có th là b t c ch gì như cách b n t tên cho variable. dùng nó như m t l nh hay hàm c a AS. L nh break s phá ra kh i loop hoàn toàn trong khi l nh continue thì ch phá ra kh i vòng l p hi n t i và b t u vòng l p m i. nhưng variable này ư c truy n t ngoài vào khi function ư c g i. gi ng như là trace() v y ó. Param ch ng qua ch la variable ư c dùng trong function. return newNum.do { // code th c hi n trong do-while loop } while (a > 0). Trư c tiên t o m t local var r i sau n nh giá tr c a local var này b ng k t qu c a myFunction v i param là 7. cho ng n mình s g i thông s là param trong các bài vi t này) ư c trong ngo c ơn (). L nh này s k t thúc function. Dư i ây là hàng code dùng chung 1 fuction và cho 3 k t qu khác nhau ActionScript . s dùng function này. Dư i ây là m t function ơn gi n: ActionScript function myFunction(num) { var newNum = num + 3. } Fuction b t u b ng t khoá function. Bây gi chúng ta phân tích o n code trên. nhưng n u mà chương trình tr nên ph c t p thì ây không ph i là cách. Ch khác v i while loop là do-while loop th c hi n code trong vòng l p trư c r i m i ki m tra i u ki n. L nh return là l nh c bi t ch ư c dùng trong function mà thôi. nhưng lưu ý cách t tên cho fuction làm sao ngư i ta c tên có th bi t ư c ch c năng c a function. (while loop ki m tra i u ki n r i m i ch y code trong vòng l p) Mu n phá ra kh i quá trình t hành c a 3 lo i loop trên thì dùng l nh break và continue. T o ra m t ví d c th r t ph c t p. Khi function myFunction ư c g i. nên chúng ta t m khoan bàn t i 2 l nh này cho t i các bài sau. thì param num ư c truy n vào.

Mu n chú gi i trong AS thì ch c n dùng ký hi u// trư c câu chú gi i ó. ActionScript /* chú gi i: c ng 2 cho a c ng 2 cho b */ a += 2. M t cách dùng dot syntax khác là tư ng. ây là m t ví d c a dot syntax. truy c p c tính hay variable c a m t i c p n i tư ng Math và MovieClip trong các bài t i. ó là Math. chú gi i . theo sau ó là d u ch m (dot). Dot Syntax M t i u b n s th y r t nhi u trong quá trình h c AS là dot syntax (h ng bi t d ch sao bây gi ) Dot syntax là phương pháp ư c dùng trong l p trình theo hư ng i tư ng (oob: object oriented programming). Ví có th tái s d ng nên chúng ta ch c n thay i code trong myFunction thì t t c các k t q a có ư c t g i function này cũng thay i theo luôn. ActionScript var a = myClip. và r i t i tên c a function ó là sqrt.. vì v y m i c n nh ng l i chú gi i. Khi ch y o n code này thì output windown s là 10. Nhưng nhi u khi dù khi vi t có c g ng cách m y thì nh ng o n code ó v n khó hi u cho ngư i xem. Cách vi t như sau: ActionScript var a = Math. 16 và 5.trace(myFunction(7)).. V y mu n g i function này thì trư c tiên b n ph i g i tên i tư ng mà fucntion này tr c thu c. N u b n mu n l y căn bình phương c a m t s . var a = myClip. và trong Flash ã có s n function làm chuy n này r i. và hàm này thu c v i tư ng toán. còn bây gi Chúng ta s thì quan tr ng là b n n m ư c khái ni m v dot syntax.. N u chú gi i nhi u hơn vài dòng thì có th dùng ki u sau/* ..sqrt(4). Chú gi i M t trong c tính c n có c a l p trình viên là vi t code làm sao cho d c và d hi u. // add 2 a ..*/. như là movie clip.. trace(myFunction(2)).myVariable.. trace(myFunction(13))._x. tên là Math.

Debugging Thư ng thì th i gian di t b t n g n 1/3 th i gian phát tri n chương trình. movie ch t m d ng frame mà b n t câu l nh. ta s bàn n nó sau. i u ki n. cho animation c a timeline ti p t c ch y. Control the flow of the movie S d ng AScript là cách i u khi n movie ơn g n nh t. N u b n n m v ng ư c "nghê thu t" di t b thì b n s rút ng n ư c r t nhi u th i gian. Gi th 05: i u khi n lu ng movie.. b n se th y ch A xu t hi n r t . nhung l i hi u qu nh t.// add 2 to b b += 2. vào Frame 2. Ví d T i frame 1. b n hãy th m t text box và vi t vào ó Ch B T i frame 3. Dùng output window theo dõi các i tư ng. V i các lo i b ơn gi n thì phân tích các o n code s giúp b n b t trúng con b c n di t. cho phép b n dùng AS b t ch khi nào và ch nào b n mu n. Nhưng animation c a time line s b d ng. vòng l p. ta s d ng m t lênh ơn gi n ó là l nh play. và nh vào ó b n có th bi t ư c ch nào trong code có v n . b n hãy th m t text box và vi t vào ó Ch C Bây gi b n hay t câu l nh stop(). vi t message ra output window và dùng AS debugger. Khi b n dùng câu l nh này . Các animation bên trong movieClip và các file h a v n ti p t c ch y trên frame ó. Tham kh o thêm ph n tr giúp c a Flash bi t cách dùng debugger. b n hãy th m t text box và vi t vào ó Ch A T i frame 2. Debugger window cho phép b n có th coi h t t t c moi thành ph n trong movie c a b n. D ng movie ây là câu l nh stop: ActionScript stop(). cu i cùng là dùng AS debugger có s n trong Flash.. Có 3 cách di t b h u hi n là: phân tích. Chương này b n s h c cách : • • • • • làm sao d ng Movie trên frame Sao nh y t frame này n frame kia t o nút cho phép i u khi n movie t o m t slide show ơn gi n t o m t bi u di n y .

b n co th s d ng gotoAndStop . hay h a. M t h p tho i s hi n lên và h i b n t tên và l a ch n bi u tư ng c a b n là lo i Movie clip. Nh y t frame này n frame kia M t câu l nh cơ b n c a AS là câu l nh gotoAndPlay. CHúng th hi n 3 tr ng thái c a button. B n có th sư d ng s th t c a frame hay là tên c a frame ActionScript gotoAndPlay(7). Down.movies s nh y n frame mà b n g i .. gotoAndPlay("my frame label") b n có th s d ng nhi u movies . thì tham s ó là frame. Bây gi trong c a s chính c a Flash s thay i. ActionScript gotoAndPlay("My Scene".. Câu l nh này giúp b n có th nh y t frame này n frame mà b n mu n.. ng gi ng gotoAndStop . ơn gi n vì câu l nh stop() ã d ng animation c a timeline t i Frame 2. button. v i l a ch n 1 tham s hay 2 tham s . New Symbol t Menu. Khi b n dùng gotoandPlay. Câu l nh này dùng y h t như gotoAndPlay. ta s T o nút (button) Nút là m t trong 3 bi u tư ng (symbol) chính trong Flash. B n hãy ch n Button. gotoAndPlay(20). Chúng có tên là Up. 2 cái kia là movie cilps và hình T o m t button Có nhi u cách t o nút.thì tham s u ti n là tên c a scene. ó là nextFrame i ti p ph n sau. còn tham ss th 2 là s th t c a frame hay tên frame. Over. nhưng n u b n mu n nó nh y n frame và d ng l i. N u Câu l nh gotoAndPlay ch có m t tham s . M t trong nhưng cách ó là ch n Insert. . và ti p t c ch y. timeline c a button s thay th timeline c a movie chính. Ngoài ra có thêm 2 câu l nh cũng h at and prevFrame hi u rõ hơn v các câu l nh này. và vùng h at ng c a button. nhưng ch C s ko th y xu t hi n.nhanh r i n ch B. Có 4 frames trong timeLine c a button. hay còn g i là c nh(scene) . HIt. Nhưng n u có 2 tham s ."My Frame").

Có l ko ph i di n t nhi u v Slide Show. Trong Layer 1. ch ng h n là m t vòng tròn. VÍ d n u b n i m u c a vòng tròn là màu xanh Frame OVER. ActionScript on (release) { trace("You clicked the button!") } on : là m t keyword. u tiên hãy ch m m t button. 1.N ub n tm t h a.có nghĩa là khi b n ưa chu t qua button. b n tr lai movie timeline chính.. các b n hãy tư ng tư ng giông Power Point. Ngoài ra Release có th thay th b ng s ki n PRESS. B n ch viêc b m F11. M Flash. Khi b n t o xong 1 button. Trace : là in ra màn hình dòng ch YOU CLICKED THE BUTTON.Ti p theo b n ch n t nó trong c a s mã và . ch n New 2. VÙng ho t ng c a button cũng tương t như v y. trong frame u tiên(UP) và ko có gì trong 3 frame sau. b n có th t o các hi u ng khác nhau cho button c a b n. Khi chúng ta b m chu t. o n mã trace s ư c th c thi. s ki n này ch khác Release ch khi ngư i s d ng b m vào button. khi ngư i s d ng click vào button và nh chu t ra. Expert. Sau ó vào c a s Action b ng cách b m chu t ph i lên button và ch n Action t menu xu t hi n. b n hãy ăt các bi u tư ng hay hình nh. t Frame 1 n Frame 4. tìm button c a b n và kéo th nó vào nơi nào b n c n trên c a s thi t k .. T o script cho button t script cho button. Và button c a b n ã s n sàng trong thư vi n c a FLash. B n có th ki m tra Hãy Ch c ch n r ng c a s Action ã ư c t ch băng m t popup menu góc trên cùng bên ph i c a c a s . các slide s chuy n sang slide khác. button s chuy n sang màu xanh.. ây là m t o n mã thông thư ng cho button. tr ng thái Over và Down c a button s gi ng như tr ng thái c a Up. text khác nhau phân bi t ư c các frame 3. ư c g i ra x lí m t s ki n Release : Là m t s ki n. M t khác . Sau ó b n t o m t layer m i. hãy t m t button lên layer này. o n mã trace s ươc th c thi mà ko c n ph i th chu t ra. B n có th sau ó ki m tra movie xem nó h at ng th nào. Th c Hành: T o m t Slide Show ơn gi n.

ra l nh cho movie clip 2-T o playback cho animation 3-TÌm 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 lùi l i. ch ko ph i vào b t kì frame nào ActionScript on (release) { nextFrame().Frame 4 c a layer 2. Nhưng b n thân movie clip l i có th là m t animation dài. PHía dư i c a s properties. m b o cho button c a b n s xu t hi n Bây gi copy o n mã sau vào button c a b n. t tên cho movies clip (nh l a ch n option movies clip. Vi c này d dàng th c hi n mà ko c n Actioncript. 1) Ra l nh cho movie clip : M t movie chính có th r t ơn gi n.. vd: gear animation Th movie gear animation vào c a s thi t k . các b n Gi th 06: i u khi n movie clip. M t tên s d ng cho actioncript. Làm sao t tên cho movie clip : Ch n insert -----> New Symbol (ho c b m Ctrl F8). } Cu i cùng ch n Frame 1 Layer 1 action và chèn o n code sau ActionScript stop(). ch ko ph i là button hay graphic) Tên này ư c s d ng cho timeline. Chú ý r ng m t movies clip có 2 tên. 2 tên này có th t trùng tên nhau ho c khác tên nhau.. chú ý nh là copy vào action c a button. b n ph i t tên cho movie clip. m t tên s d ng cho timeline . Controlling Movie Clips 6th Hour i u khi n movie clip B ns h c 1. 5) Xây d ng m t presentation ơn gi n: Presentation này s d ng nguyên t c giông h t như ví d Slide show hay down load file FLA xem . ban s . Hãy ch y th slide show c a b n = cách b m Ctrl Enter. i u khi n ư c movie. NÓ ch c n 1 frame và m t movie clip. i u này trong t t c các Frame c a Layer 1. và b m F6. easy trên.

ch c n gotoAndStop(). Flash s tìm movie c a b n t timeline chính. chúng ta làm các vi c sau: . Nh r ng movie clip luôn có level. -T o các button Advance. tên s d ng là gears . 2)Animation Playback Controller Hãy down load source code t trên ph n download và xem. b n có th s d ng d u ch m ưa ra các lênh cho movie c a b n. } Play ActionScript on (release) { gears. } Stop ActionScript on (release) { .gotoAndStop(5).. ---> ch m hơn chút.th y box instance name.Frame u tiên c a time line chính.T o m t Movie . chèn code ActionScript gears. V cơ b n. ch ko ph i gear animation.play(). Stop. } Previous ActionScript on (release) { gears.prevFrame(). khi b n l p trình . and Rewind -Code cho các button l n lư t là Advance ActionScript on (release) { gears.stop(). vd : gears và như v y. Play.nextFrame(). N u b n t c tên movie vào. Previous. N u o n mã ư c t trên chính movieclip. T c là s ph i qua 2 level. b n ko c n s d ng tên movies. t tên là gear animation ..stop().t instance name là gear(hư ng d n trên) . ví d ActionScript gears. gears. t tên cho movie tên này ư c s d ng cho Action script ..

Nhưng n u code t trong movie. 4) Mã cho movie clip . } 3) Target m t movie Level cơ b n u tiên c a Flash là time line chính(Level 0).stop(). _root["gears"]. Ch c n Gi s n u b n có m t movie trên time line. t c là b n có level 2. b n ko c n _root. nó ư c g i t level trên. time line chính.gotoAndStop(7). this là b n có th gán bi n cho movie clips ActionScript var whichClipToUse = "gears".gotoAndStop(7). mu n goi movie gears . nhưng khác ch . N u b n t time line chính. Thu n l i c a v c s d ng this nhi u hơn root ch . Tuy nhiên this có nghĩa là level hi n hành. b n ph i dùng câu l nh gears.. } Rewind ActionScript on (release) { gears. Parent dùng gi ng như root. Thu n l i t vi c s d ng root. th m chí n u b n t code gotoAndStop(). Tuy nhiên trong nh ng trương h p ơn gi n. level hi n hành c a this là level 0. hay nh t là c t tên cho movies. b n ph i dùng _parent. b n dùng code sau _root. C 3 cách trên u gi ng nhau. ôi khi ta ch mu n nó x y ra m t level nh t nh.gotoAndStop (1).gears. this[whichClipToUse].gotoAndStop(). Còn root ư c g i t level 0 (t c là level g c). t c là b n có m t level sâu hơn(level 1). this["gears"]. N u b n mu n t level 1 g i n level 2.stop(). B i v y this là cách t t nh t goi level c a m t movie. VÍ d trên. N u b n mu n ra l nh cho time line này. Gi s b n có m t movie khác bên trong movie. B n ph i chú ý.gotoAndStop(7). ko ph i lúc nào m i th cũng x y ra time line chính. level hi n hành s là level 1.

b n s th y ActionScript This clip has been loaded This clip has entered a new frame This clip has entered a new frame This clip has entered a new frame This clip has entered a new frame dòng ch s ti p t c hi n ra cho n khi b n t t movie.Chúng ta ã bàn v button ó là trên. S ki n này s th c thi o n mã m t cách liên t c cho n khi nó b k t thúc. quay."). NÓ ch x y ra m t l n. } bây gi hãy copy 2 o n code trên vào c a s action c a timeline chính và run . Nh r ng ngay c khi time line chính b ng. ActionScript onClipEvent (load) { trace("This clip has been loaded. ActionScript onClipEvent (enterFrame) { trace("This clip has entered a new frame. v y v cơ b n movie clip script cũng gi ng button. cho phép b n xác phóng to thu nh . Gi th 07: d ch chuy n và thay i movie. Chương này các b n s bi t cách: -thay i v trí c a mc -xác inh v trí chu t -làm sao quay m t mc -làm sao phóng to mc -làm sao movie invisible .").. } onClipEvent : key word g i s ki n (gi ng on c a button) load : s ki n này x y ra khi movie clip xu t hi n l n u tiên trên màn hình . Moving and Changing Movie Clips nh v trí. M t movie clip (MC) bao gi cũng có các thu c tính. th m chí làm nó bi n m t. movie clip n m trên time line v n ti p t c ch y. S kiên enterFrame x y ra liên t c bên trong movie clip m i khi n m t frame m i.

thì góc dư i bên ph i s là 550.1) V trí c a MC: M i th trong Flash u có v trí. Có nghia là 550 pixel t bên trái sang và 400 pixel t bên trên xu ng. CHú ý thu t ng mouse ây là nói n con tr (cursor).0) . ^^ . N u b n s d ng m t movie m c nh.. mouse cũng có th xác inh ư c t a .Nó là v trí giao c a hàng ngang và c t d c.400. 2) V trí c a Mouse: Cũng như movie. V trí này ư c o b ng PIXEL. Góc trên cùng bên trái c a màn hình là v trí (0. nhìn hình sau rõ hơn.. ch không ph i con chu t b n ang c m trên tay.

trace(""). thì nó là thu c tính c a movie clip. b n s th y các c p s ư c in ra. Nhưng n u b n t nó là 181._rotation += 0. ho c góc ph i dư i._rotation = 45. nó s hi u thành góc -179. nó s m c nh trung tâm c a MC. myClip. t a chuôt xmouse y mouse không thay i. các giá tr cũ v n ó cho n khi b n quay tr l i c a s . ví d 179. Giá tr c a _rotation luôn luôn trong vòng -180 và 180. M t vòng tròn chia ra 360 . N u b n s d ng trên time line chính.0.Hãy d ch chuy n mouse lên góc trái trên. B n có th s d ng giá tr integer ho c floating point. ó chính là t a x. mi n giá tr c thu c tính rotation là -180 và 180. V y _xmouse và _ymouse là thu c tính c a chính i tư ng mà chúng ư c gán. N u xmous y mouse là thu c tính c a time line chính. H u h t các trư ng h p thu c tính liên quan _root. nó s m c nh là góc trái trên cùng.y mouse ._rotation++._rotation = 90. b n cũng có th s d ng các bi u toán ++. ho c -179._xmouse và _root. this.Có hai thu c tính cơ b n c a con tr . } Khi b n ch y movie. N u xmouse ymouse là thu cc tính c a 1 movie clip. ơn gi n là t giá tr cho nó. y mouse 3) Làm movie quay M t thu c tính khac ó là thu c tính _rotation Thu c tính rotation ch p nh n giá tr là góc . thì chúng là thu c tính c a time line. trace(_root. VÌ v y. b n ph i luôn lên k ho c c n th n trư c khi dùng xmouse. b n s th y ó v trí mouse là 0. n movie chính._xmouse)._ymouse ây là m t o n code ví du CODE onClipEvent (enterFrame) { trace(_root. N u b n s d ng chúng trên movie clip. v y quay m t movie.5. N u b n di chuy n chu t th t nhanh t trung tâm c a c a s ra ngoài c a s . Hãy xem ví d sau CODE myClip. Chú ý: khi b n ưa chu t ra ngoài Flash window. b n nên dùng cách . _root["myClip"]. t a là 550 400. += thay i giá tr ._ymouse). ó là _xmouse và _ymouse.

CODE onClipEvent (load) { // get the original width and height of the mc origWidth = this. Nó ki m tra t a c a mouse._x.._ymouse-this. Thu c tính _width. Movie có th có giá tr sau: width 75. // calculate the percentage of scale sx = 100*dx/(origWidth/2)._height. // set the scale of the mc this. CODE . _width và _height tr v chi u cao và chi u r ng c a movie clip b ng Pixel. ây là thu c tính m c inh cho m t movie clip g c. R i nó s d ng kho ng cách ._width. yscale.c chi u cao chi u r ng tính ph n trăm t l cho movie clip. _height S khác nhau gi a scale và width. Sau ó xác inh t mouse n trung tâm movie xa bao nhiêu.fla ch a m t o n mã mà chúgn ta s g p r t nhi u sau này. } Chú ý ây ta s d ng 2 thu c tính m i._yscale = sy. height 45. } onClipEvent (enterFrame) { // get the distance from the center of the mc to the mouse dx = _root.4) Co giãn àn h i m t MC: B n có th làm co giãn._xscale = sx. Ho c có th s d ng s to hơn. CHúng ư c lưu giú trong onClipEvent (load) vì khi ta c n l y l i giá tr g c c a movie. sy = 100*dy/(origHeight/2). 200 giãn movie ra. Các giá tr ư c gán cho x. Dư i ây là m t ví d s d ng width height th y th cho xscale._y._xmouse-this.y scale là ph n trăm. nhưng scale cho c xscale and yscale là 100 ph n trăm. origHeight = this. thay Scale thu c tính THu c tính i chi u dài chi u r ng c a movie clip làm vi c này là _xscale cho chi u ngang và _yscale cho chi u d c. B n có th s d ng các s nh hơn như 50 làm movie co l i.height í scale s d ng giá tr ph n trăm. dy = _root. Có nghĩa giá tr 100 là 100 ph n trăm . Còn width height s d ng pixel . this. ví d 07mousesclae. Th m có th dùng các giá tr âm l t movie.

hãy xem ví d 07visible._height = dy*2. // set the scale of the mc this. } b n có th th y code này ng n g n hơn ơ trên. tên là alpha channel . kéo th movie clip. CODE myClip._ymouse-this.onClipEvent (enterFrame) { // get the distance from the center of the mc to the mouse dx = _root. giá tr c a thu c tính này là giá tr boolean true . Còn 24 bit có nghĩa ch c 3 kênh u tiên. ây là m t ví d cho th y s d ng width và height ti n hơn d ng xscale .green. 3 kênh u tiên là red ._y. Thu c tính có giá tr t 0 n 100 CODE myClip. có nghĩa là nó 4 kênh màu. mà ch b m i. blue t o ra 7 màu c u v ng. Thu c tính alpha là kênh màu th 4. N u giá tr c a _visible là 0 thì movie là trong su t hoàn tòan và có th nhìn th y t t c m i th phía sau movie. 10. Gi s ta không mu n movie bi n m t h n. b i vì nó ko s d ng s kiên onClipEvent(load) b i gái tr chi u dài chi u cao c a movie g c ko c n lưu tr . dy = _root._visible = false. Selection ._width = dx*2. this._x.. 50 và 100 (t trái sang) Gi th 08: ch n.y scale. ta s d ng thu c tính _alpha .fla rõ hơn._xmouse-this. false. Nhìn hình sau xem cùng 1 movieclip nhưng v i 3 giá tr alpha khác nhau._alpha = 50. Moving and Changing Movie Clips 1. 5) Visibility M t thu c tính khác c a MC là thu c tính _visible . Khi b n nghe n h a 32 bit.

c hai u ph n ng. ta ph i t o nhi u frame. t vào frame 1 Bây gi hãy ch y xem. Ta ch nhìn th y m t movie clip trên màn hình. Tuy nhiên ây ta s h c cách click vào ch n l a m t i tư ng trên màn hình. Frame th 2 ch a nút tương t nhu frame 1 . tên là onbutton.nhưng th c ch t bên trong c a movie clip là m t button. } b ng this. Chúng ta s s d ng l a ch n như bư c u tiên h c kéo th movie. CODE on (release) { this. T o m t ch n l a. N u b n click vào movie. } cu i cùng CODE stop(). và mi n là nó có l n bao trùm m t movie. button s g i n movie clip mà nó n m trên y. Phương th c hitTest Có cách khác làm movie có th s lý mouse click mà không c n button. Như v y. } Hãy ch y ví d 08twomcs1. t o ra kh năng select. M t movie không th ph n ng v i mouse click. nhưng không có gì x y ra. Hãy xem ví d 08buttoninmc.gotoAndStop(2). . Button bên trong m t Movie method.fla xem.gotoAndStop(1).B i vì t t c movie clip nh n s ki n mouse up ư c g i n cho chúng.B n s th y t i sao onClipEvent(mouseUp) khác v i on (Release) . nút này có m u hơi sáng hơn ngư i dùng nh n ra khi nó ư c ch n.B n ã bi t cách h c sao t o m t button và cho phép ngư i s d ng click vào làm s ki n ho t ng. ó là s d ng s ki n onClipEvent(mouseDown) ho c là onClipEvent(mouseUp)ví d CODE onClipEvent (mouseUp) { this.fla .Frame u tiên ch a m t button tên là offbutton. có nghĩa là user click vào item . ó là s d ng m t button bên trong movie.gotoAndStop(2). Không th s d ng các s ki n như on (release) hay (Press). Button có th x lý ư c mouse click. ngư i dùng có th l a ch n và thay i l a ch n. Button này có mã là CODE on (release) { this. vì v y ta ph i tìm cách ánh l a nó.

giá tr 2 khi nó frame th 2. Có 2 cách kéo movie.up .Quy t inh movie nào ư c click.gotoAndStop(1). } else { this.gotoAndStop(2). 2) Kéo m t movie clip Bây gi ta s h c kéo m t movie. b n dùng startDrag khi b n mu n movie c a b n i theo chu t. _root._currentFrame == 1) { this. Cách này r t d s d ng nhưng nó không cho b n nhi u l a ch n trong vi c s a i và giám sát movie. Có m t cách click vào movie mình mu n. _root._xmouse.hitTest(_root. _root. Cách th hai thì không c n nhi u bi u tư ng trong thư vi n. còn stopDrag khi b n mu n movie c a b n không theo chu t n a. ó là s d ng v trí chu t S a o n mã thành như sau xác nh.hitTest(_root. ta có th click movie ta mu n._xmouse. ây là o n code cơ b n : CODE onClipEvent (mouseDown) { if (this._ymouse)) { ._ymouse)) { this. Cách Drag cơ b n: 2 câu l nh drag co b n là :startDrag và stopDrag. Enjoy. cách th nh t là s d ng l nh . } } v y b ng cách ràng bu c movie clip v i mouse location ._ymouse)) { if (this. Cách thư nh t ti n l i n u b n mu n dùng c các trang thái khác như Over..gotoAndStop(2). VI t mã cho selection: Chúng ta ph i cho phép User click lên movies nhi u l n và thay i tr ng thái c a MC t b t sang t t. CODE onClipEvent (mouseUp) { if (this. Thu c tính này s c giá tr 1 kh nó frame th nh t. } } } Bây gi b n ã th y các cách t o s ch n l a movie._xmouse.hitTest(_root. o n mã sau có th xác nh movie ang tr ng thái nào và g i nó n frame khác. hay t t sang b t. CODE onClipEvent (mouseUp) { if (this.. down. VI c này th c hi n b ng thu c tính _currentFrame .

Tham s th nh t là giá tr True(ho c False) quy t nh vi c trung tâm c a movie clip có khóa v i v trí chu t hay không. } . bottom. t c là báo hi u r ng movie có th ư c kéo. Sau ây là o n code y CODE onClipEvent (load) { // start out not dragging dragging = false._ymouse)) { this. khi chu t th ra. Hãy xem movie. s ki n này s t cho bi n global tên là dragging giá tr false.startDrag().stopDrag(). câu l nh startDrag th c thi. thì bi n dragging ư c gán false. Khi chu t ư c b m xu ng. movie c a b n ch có th ư c kéo theo các ràng bu c ó.hitTest(_root. b n có th kéo các movie m t cách c l p. Th ba. n u ngưòi dùng th chu t . quá trình kéo s ti p t c di n ra b i s ki n onClipEvent(enterFrame). stopDrag th c thi. Và sau ó câu l nh startDrag và stopDrag ư c s d ng. Ch m t movie ư c kéo t i m t th i i m. V y làm th nào?? B n c n có 4 ph n mã sau trong movie c a b n: Th nh t là s ki n onClipEvent(load). top. Note: startDrag có 5 thám s ._xmouse và _root._xmouse. Và ngư c l i. S ki n này ch ơn gi n gán _x và _y (thu c tính c a movie clip) cho _root. Nhưng chú ý r ng b n không th kéo 2 movie cùng m t lúc. Có nghĩa là dragging = true . } } onClipEvent (mouseUp) { if (this. Khi bi n này true. right. Chúng s d ng hitTest nh n bi t movie nào ang ư c click. b n s th y v i các câu l nh drag. Các tham s còn l i là left.this. Th 4. Kéo nâng cao Bây gi ta h c cách kéo movie mà ko dùng câu l nh startDrag và stopDrag._ymouse(thu c tính c a con tr ). ngưòi dùng click vào m t movie. N u b n t chúng. } } S ki n onClipEvent nhìn tương t như ta ã làm trên. Vì v y b n nên c n cách drag ph c t p và linh ng hơn làm ng d ng hay game. Th hai. _root.

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, nhưng ch s d ng MC bên trái. ây là MC làm theo o n code trên. Chú ý xem trung tâm movie ơc khóa v i v trí chu t như th nào. Nó làm movie nh y ngay l p t c n u b n click vào nó. Thông thư ng, khi b n mu n kéo MC ó lên màn hình, b n không mu n nó nh y t i làm kh p v trí chu t v i trung tâm c a MC. Hãy kéo file xung quanh màn hình.B n s th y khi b n click chu t vào b t kì i m nào trên movie, movie s l p t c làm kh p v trí click chu t v i trung tâm movie. i u này cũng tương t v i câu l nh startDrag . tránh i u này, chúng ta ch c n thêm m t o n code nh . Khi ngưòi s d ng b m chu t, chúng ta s l y offset, ây là kho ng cách t chu t cho n trung tâm c a movie. Sau ó, thay th b ng vi c gán v trí chu t n trung tâm movie, ta se thêm vào offset cho MC luôn luôn xu t hi n offset b i cùng m t giá tr khi ngư i dùng kéo. Tư ng tư ng , ví d ngưòi dùng click vào m t i m cách trung tâm movie 5 pixel. Sau ó ta luôn mu n kho ng cách 5 pixel ó ư c duy trì. i u này làm cho ngư i dùng có th click vào b t c i m nào kéo movie. ây là code cho movie 2(bên 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; } }

Hãy xem movie 3) Kéo và th

th y khác bi t gi a 2 o n code.

Bây gi ta ã bi t kéo movie, v y ta s th nó âu.? V n là b n mu n theo dõi hành ng c a ngư i s d ng và xác inh ngư i s dung t movie âu. Basic Drop Zone Ch c năng hitTest có th ư c s d ng xác o n mã sau, chúgn ta s d ng l nh startDrag ta có th t p trung vào các ch c năng m i. nh khi MC b è lên nhau. Trong o n mã kéo th ơn gi n i, nh

ó

Trong o n mã sau, ch c năng hitTest ư c s d ng so sánh MC ư c kéo v i m t movie khác tên là dragZone trên m t lêvl(root level) CODE onClipEvent (mouseDown) { if (this.hitTest(_root._xmouse, _root._ymouse)) {

this.startDrag(); } } onClipEvent (mouseUp) { if (this.hitTest(_root._xmouse, _root._ymouse)) { this.stopDrag(); // see if this mc is inside the dropZone mc if (this.hitTest(_parent.dropZone)) { trace("Dropped in zone"); } else { trace("Dropped outside zone"); } } }

Chú ý hitTest không ư c s d ng như các bài trư c, chúng ta thay th v trí _x và _y b i m t movie khác. Lo i hitTest này so sánh v trí và vùng ư c bao ph c a 2 movie clip. Trong trư ng h p này, nó ư c so sánh v i _parent.dropZone. N u có 2 movie è lên nhau, hitTest tr giá tr True. xác inh xem MC nào ang t n t i, hình ch nh t c a c 2 movie u ư c s d ng. i u này có nghĩa là khi b n s d ng 2 hình tròng, như trong ví d , b n thân chính các vòng tròn ó không ư c ch m vào mi n là các hình ch nh t c a 2 movie ư c dùng. Hãy xem hình minh h a. T t c các movie Dragme u n m è trên DropZone.

Có 2 cách s d ng hitTest. Th nh t là s d ng t a x,y. Chúng ta có th s d 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 này, thay th ví d trên, movie clip s n m bên trong hình ch nh t c a vùng dropzone. Chúng ta có th thêm m t bư c n a v i hittest. B ng cách thêm tham s th 3 cho hitTest, chúng ta có th dùng hitTest xem hình d ng chính xác c a movie clip và xác inh v trí x,y. Bi n th 3 này c n gán true n u b n mu n hành vi này. N u nó false, nó se hành ng gi ng như ch c năng hitTest bình thư ng. ây là o n code CODE if (_parent.dropZone.hitTest(this._x,this._y,true)) {

qua 8 gi làm quen v i AS. thì b n ph i dùng các code dành riêng cho chúng. Ví d o n code sau s kích ho t khi mà ngư i dùng nh n phím "a".Bây gi movie kéo th c a ta h at ng t t hơn. } Trong movie m u 09keybutton. Gi th 09: L y thông tin t ngư i dùng. 2 là dùng i tư ng Key. Vì d b n mu n x lý phím mũi tên trái (left arrow key) thì dùng o n code sau: ActionScript on (keyPress "<Left>") { trace("Left pressed. và nó n m è trên hình ch nh t c a dropzone.fla. Làm sao phát hi n khi ngư i dùng b m phím Có 3 cách phát hi n khi m t phím tên bàn phím b nh n. thanh dài (space bar) . Các movie khác s d ng o n code ph c t p hitTest và chúng có trung tâm nàm bên trong hình d ng g c c a dropzone. t t c các tác ng c a b n lên trên flash u ư c làm qua chu t. 1 là dùng nút. b n có th dùng bàn phím n p thông tin vào Flash. X lý d ki n on(keyPress) nh là ph i phân bi t d ng ch (case-sensitive) nên n u b n ch code cho nó nh n phím "a" thì nó s không th nh n ư c phím "A".". } Và sau ây là các code dành cho các phím • • • • c bi t: <Right> <Left> <End> <PageUp> . và 3 là dùng "listener" (ch có Flash MX và MX 2004) 1. như các phím mũi tên. Phát hi n qua nút: B n có th dùng nút phát hi n khi ngư i dùng s d ng bàn phím.."). May mà chúng ta có th dùng bao nhi u b x lý d ki n cũng ư c.. Nhưng ngoài chu t. ActionScript on (keyPress "a"){ trace ("Key 'a' pressed"). N u b n s d ng ví d 08drop.fla có m t nút ơn gi n n m trên màn hình và vài ví d trong ó. movie bên ph i s s d ng o n mã gôc. Getting input from the user Cho t i bây gi . N u b n mu n x lý các phím khác. B n chi c n dùng l nh x lý s ki n on cho o n code c a nút . enter. N u b n cho ch y th movie và nh n phím "a" thì Output window s có vi t ra dòng ch "Key 'a' pressed.

release) { trace("'b' pressed or button clicked. h p c a m t s hàm (function) và h ng s (constant) ư c xây d ng s n trong Flash. V y khi b n nh n nút ó hay là nh n phím "b" thì code c a nút ó s ư c kích ho t. Ví d b n có m t nút và nút ó có phím t t là "b".").LEFT tư ng trưng cho phím mũi tên trái.LEFT)) { trace("The left arrow is down"). } Các ví d trên u có trong movie m u 09keybutton. } Hàm Key. Ví d .LEFT c p trên • • • Key. Phát hi n qua M c dù nút r t h u ích trong vi c phát hi n khi ngư i dùng nh n phím. nhưng nút l i không th phát hi n ư c trư ng h p khi ngư i dùng nh n phím và không nh t tay. Ví d n u b n làm m t game b ng Flash.• • • • • • • • • • • <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. i tư ng Key là t p Cho nh ng trư ng h p như v y.isDown s cho ra k t qu úng hay sai ph thu c vào thông s có ph i là phím ang b nh n hay không.BACKSPACE Key. ActionScript on (keyPress "b". Dư i ây là các h ng s tương t như Key. v y khi mũi tên trái b nh n thì output window s cho ra hàng ch "The left arrow is down".ENTER Key.isDown(Key.fla i tư ng phím (key object) 2. b n ph i dùng i tư ng Key. và trong ó ngư i chơi cho th làm cho các nhân v t trong game di chuy n liên t c n u như h nh n phím mũi tên và không nhât tay lên. B n có th dùng các hàm và h ng s này biêt ư c các phím ang b nh n hay không. n u mu n ki m tra coi phím mũi tên trái có b ang nh n hay không thì dùng o n code sau: ActionScript if (Key.PGDN . H ng s Key.

UP N u b n mu n ki m tra xem n u nh ng phím bình thư ng ang b nh n thì b n ph i dùng Key. B n ph i ra l nh cho listener này chú ý vào s ki n c a bàn phím.LEFT Key.END Key.getCode l y mã s c a phím ó dùng trong hàm Key. .SPACE Key. nhưng nó không th bi t chính xác lúc nào thì phím b nh n. b n có th coi source Fla 09keyobject.HOME K ey.INSERT Key. Key Listener Key listener ư c dùng nh n.RIGHT Key.ESCAPE Key.SHIFT Key. b n có th dùng "listener" (có th hi u nó như m t quan sát viên) theo dõi s ki n c a bàn phím và thông báo cho Flash ngay khi phím ư c nh n. MM cho chúng ta thêm m t l a ch n n a là Key listeners.PGUP Key.isDown.isDown(Key.CAPSLOCK Key.DELETEKEY Key. } Cho 2 ví d trên. N u mà ngư i dùng nh n phím quá nhanh. Listener có 2 ph n.• • • • • • • • • • • • • • • Key.fla 3. Ví v y Flash MX. trư c khi onClipEvent(enterFrame) k p kích ho t i tư ng key ki m tra thì Flash s không bao gi bi t ư c ngư i dùng ã nh n phím.getCode("a")) { trace("The left arrow is down"). quan sát bàn phím và thông báo cho Flash khi phím ư c cách th 2 chúng ta dùng i tư ng Key ki m tra coi phím có b nh n hay không.addListener(_root). ây là code cho t o listener ActionScript Key.CONTROL Key. ây là code m u khi b n mu n ki m tra phím "a" ActionScript if (Key. Ph n u là ph n t o listener. M t b t ti n n a khi dùng cách th 2 là n u b n mu n ngư i dùng nh n phím nhi u l n thì i tư ng Key s không phân bi t ư c ó là 1 l n nh n dài hay là nhi u cái nh n th t nhanh.TAB Key.DOWN Key.

B = 66 .addlistner t o listener cho i tư ng trong thông s là _root. còn m t cách n a là dùng b x lý s ki n onClipEven c a movie clip theo d i s ki n keyDown. Nhưng khi nh n ư c thông báo thì _root ph i làm gì? Vì v y chúng ta c n ph i vi t code x lý s ki n cho _root.v. y[/b] có giá tr tương ương v i v trí ban u c a movie clip. mình s ki m tra 4 phím mũi tên và i u ch nh giá tr c a 2 . T o m t file Flash m i 2. } Khi ngư i dùng nh n phím.onKeyUp = function() { trace(Key.getAscii()).getAscii() s cho ra k t qu là mã s ASCII tương ng v i phím v a ư c nh n.L nh Key. Thay dòng trace(Key. _root là i tư ng ư c thông báo v s ki n c a bàn phím._y += 5. Và này s ư c thông báo v s ki n c a bàn phím.getAscii()). trogn ó có o n code trên (lưu ý là trong fla này s không có gì h t ngoài o n code AS frame u tiên) N u b n mu n bi t phím ư c nh t là gì thay vì ASCII code thì b n có th dùng String. nhưng cách này không còn ư c dùng trong Flash MX n a. }[/b] o n code trên ki m tra 4 phím mũi tên và di chuy n movie clip theo hư ng c a mũi tên. Th t ra ngoài 3 cách trên.DOWN)) this. r i nh t tay lên thì s t o ra s ki n onKeyUP. ActionScript _root.LEFT)) this.v B n có th xem cái fla m u 09keylistener._y -= 5.UP)) this. if (Key.fromCharCode(Key. T o m t movie clip ơn gi n 3.getAscii()))._x -= 5. vì v y b n ch có th cách này trong các Flash trư c MX thôi. và l p giá tr cho bi n [b]speed[/b] b ng 5.isDown(Key. if (Key. và s ki n này ư c thông báo t i _root (b n có th thay th _root b ng b t kỳ i tư ng nào) và sau ó thì hàm Key.isDown(Key. Thay i o n code trên cho hoàn ch nh hơn: t o 2 bi n [b]x. G n o n code này vào movie clip ó ActionScript onClipEvent(enterFrame) { if (Key. i tư ng Trong o n code trên. Ví d o n code sau s ư c th c hi n khi _root nh n ư c thông báo v s ki n bàn phím._x += 5. ví d A = 65. B n hãy th movie coi sao 4.fla.fromCharCode() cho ra k t qu b n mu n tìm.isDown(Key.isDown(Key. if (Key. Bài T p: Dùng phím di chuy n movie clip 1. keyUp. M i frame c a movie.RIGHT)) this. băng trace(String.

DOWN)) { y += speed. Substrings.isDown(Key. B n cũng có th ghép nhi u hơn 2 chu i l i v i nhau b ng cách trên. và như v y chúng ta có th ki m tra v trí m i có h p lý không (áo d ng rât nhi u trong game). và mu n ghép ch "world" vào sau ó thì dùng như sau: myVariable = myVariable + "world" và k t qu có ư c s là "Hello world"._y = y.isDown(Key. Th nh t. chúng ta tìm v trí m i c a movie clip trư c khi chúng ta di chuy n movie clip t i ó. r i m i di chuy n movie clip t i ó: [code]onClipEvent(load) { x = this.y[/b] ch không i u ch nh v trí c a movie clip. ch c n thay i giá tr c a bi n speed Nh p văn b n Trong Flash. 2. và b n có th dùng AS l y nh ng văn b n ó. } o n code trên có 2 lơi i m._x.UP)) { y -= speed. (n u b n nào chưa bi t t o input text thì có th download 3 cái CD hư ng d n ơ bên box tài li u tham kh o thêm) Các ch c năng và thao tác làm vi c v i chu i ký t (string Chúng ta có r t nh iu thao tác v i chu i ký t : 1. } if (Key._y. Substring là m t chu i ký t nh trong 1 chu i ký t khác. Ví d "ell" .isDown(Key.bi n [b]x. b n ph i t o khung input text và t o cho 1 varible tương ng v i gía tr trong khung input text ó. } if (Key. this._x = x. } onClipEvent(enterFrame) { if (Key.LEFT)) { x -= speed. } this. speed = 5. cho ngư i dùng có th nh p văn b n. và th hai là r t ti n cho chúng ta thay i t c di chuy n c a movie clip. Ví d b n có variable tên là myVariable có giá tr là "Hello".isDown(Key. Ghép 2 chu i l i v i nhau: dùng ký hi u +.RIGHT)) { x += speed. y = this. ngư i dùng có th nh p văn b n vào các khung. } if (Key. sau ó ph i h p v i bi n [b]speed[/b] tìm v trí m i cho movie clip.

. ây là cú pháp:myString. B n có th l y b t c substring nào c a 1 string v i cú pháp sau: String. //output: 6 trace(myString. ActionScript var myString = "Hello World. output window s cho ra hàng ch "lo W" ActionScript var myString = "Hello World.substring(3.là substring c a "hello world" hay là "hello" hay là "elle" hay "hell". //output: 2 trace(myString.indexOf("l". trace(myString.". Ngoài ra còn 1 cách n a dùng tương t như cách trên nhưng ch khác v thông s và có cú pháp như sau: String. Ví d v i o n code sau. //output: 2 trace(myString.indexOf("W".indexOf(substring. start là s th t mình b t u tìm trong i tư ng String. N u hàm indexOf tìm không th y ký t hay chu i nh thì s cho ra k t qu -1.indexOf("llo". Các hàm c a i tư ng String i tư ng String.substring(start. Sau ây là m t s hàm tiêu bi u c a 1.0)).0)). 2. và end là s th t b t âu cho ph n b n không mu n l y.".substr(start.0)). Ví d : ActionScript var myString = "Hello World.lastIndexOf("l")). start là s th t c a ký t b t u cho chu i b n mu n lây. Lưu ý r ng ký t u tiê s có s th t là 0. substring là ký t hay chu i mình mu n tìm. length).".7)). o n code sau cũng s có k t qu tư ng t như cách 1 ActionScript var myString = "Hello World.charAt(6)). lastIndexOf: tương t như indexOf nhưng chúng ta tìm ký t cu i cùng i ngư c lên t iký t u tiên.. thông s 1 cho s th t c a ch cái u tiên và th hai cho chi u dài c a chu i. end)).. trace(myString. String là i tư ng chu i mà b n mu n trích ra m t ph n. //output: 9 trace(myString.start)). indexOf: dùng tìm s th t c a m t ký t hay m t chu i nh trong i tư ng String.".

ActionScript var myString = "Hello World. i chu i t vi t thư ng sang vi t hoa và 4. Thêm o n mã sau vào nút CLEAR ActionScript on (release) { clearForm(). comments = "". //output: HELLO WORLD trace(myString. phone = "". ki m tra tên c a variable c a m i input text field qua property panel 3. zip = "". m file 09form-noscripts. u tiên c a movie . Thêm o n code sau vào frame ActionScript function clearForm() { firstName = "". thêm o n mã sau vào nút SUBMIT ActionScript on (release) { submitForm(). //output: hello world trace(myString. lastName = "". } 5. //output: 12 trace(myString. middleInitial = "". } 4.".".length). state = "".toUpperCase()). toUpperCase/toLowerCase: dùng ngư c l i ActionScript var myString = "Hello World. length: là c tính c a Sring dùng tính chi u dài c a chu i.3.toLowerCase()). Bài t p: 1. address = "".fla 2. city = "".

"+lastName). or "Multiline No Wrap" x lý trư ng h p n i dung c a văn b n quá dài và cònn nhi u l a ch n khác n a.<BR>". . myText += "This text is <U>underlined</U>. myText += "This text is <FONT FACE='Arial Black'>Arial Black</FONT>. Vì n i dung. (N u b n chưa n m v ng ph n này thì có th tham kh o thêm v s d ng Flash trong CD ư c post box tài li u) nh d ng văn b n theo HTML (HTML format) nh d ng văn b n ki u HTML. myText += "This text is <I>italic</I>. dynamic text field ch cho phép AS thay i n i dung văn b n ch không ph i là ngư i dùng. nhưng thay vì ch n "Input Text" trong property panel. Creating and Controlling Text Dynamic Text B n cũng có th hi n th văn b n b ng dynamic text field.} function submitForm() { if (middleInitial. Ví d như b n t variable myText vào trong khung Var thì khi b n thay i giá tr c a myText thì văn b n trong dynamic text field cũng thay i gi ng như giá tr c a bi n myText.length == 1) { trace("Name: "+firstName+" "+middleInitial+". "Multiline". } } R i b n test movie. Ví d o n code này s t o văn b n dùng th HTML sau: CODE myText = "This text is <B>bold</B>.<BR>". Khác v i Input field mà b n làm quen trong gi s 9. hình th c c a văn b n có th thay i b t c lúc nào nên m i g i là dynamic text Trư c tiên b n t o dynamic text b ng d ng c text trên thanh toolbar.<BR>". myText += "This text is <FONT COLOR='#FF0000'>red</FONT>. } else { trace("Name: "+firstName+" "+lastName).<BR>". Gi th 10: T o Và i u Khi n Văn B n. b n ph i cho phép dynamic text field ch p nh n nh d ng HTML (click vào HTML icon trên property panel) và sau ó b n có th nh d ng văn b n c a b n.<BR>". b n ch n "Dynamic Text" Bư c k ti p là n i n i dung c a văn b n trong dynamic text field v i m t variable b ng cách vi t tên c a variable ó vào trong khung Var trong propery panel. Ngoài ra b n còn có th thay i m t s l a ch n cho dynamic text field như "Single".

html'>linked</A>. c 26.font = "Arial Black". myText += "This text is <A HREF='link.<br> This text is <U>underlined</U>. làm Còn m t cách khác ư c i u này. Sau ó b n có th nh giá tr cho các thu c tính c a nó. myFormat.fla Variable ngoài Flash B n có th l y bi n t ngoài trang HTML vào trong Flash thay i n i dung c a Flash hay dùng vào b t c chuy n gì.<br> This text is <FONT SIZE='24'>large</FONT>.color = 0xFF0000.<br> This text is <I>italic</I>.<BR>". nhưng thay i n i dung . textInstance.<br> This text is <FONT COLOR='#FF0000'>red</FONT>.size = 36.setTextFormat(myFormat). QUOTE This text is <B>bold</B>. B n có th dùng i tư ng TextFormat như là stylesheet trong các file HTML. myFormat. Ví d b n ph i làm 30 cái banner b ng Flash cho 30 trang web.myText += "This text is <FONT SIZE='24'>large</FONT>. m t khi b n t o nó ra thì b n có th dùng nó b t c ch nào trong movie B n có th coi các an code trên trong file m u: 10formattext. thì b n có th ch làm 1 cái banner thôi.<br> This text is linked. Ví d b n mu n ki u ch Arial Black. và màu thì dùng an code sau: CODE myFormat = new TextFormat().<BR>". Siêu liên k t (hyper link) trên có tác d ng gi ng như trong HTML như khác 1 i u là không có g ch dư i Sau ây là nh ng th HTML có th dùng trong Flash MX • • • • • • • • • <B></B>: vi t m <I></I>: vi t nghiêng <U></U>: g ch dư i <FONT FACE='Arial Black'></FONT>: ki u ch <FONT SIZE='24'></FONT>: c ch <FONT COLOR='#XXXXXX></FONT>: màu ch <A HREF=''></A>: link <P></P>: an văn <BR>: Xu ng hàng i Tư ng TextFormat nh d ng cho văn b n là dùng i tư ng TextFormat. b n c n ph i t o ra 1 bi n t i tư ng TextFormat.<br> This text is <FONT FACE='Arial Black'>Arial Black</FONT>. myFormat.

tuỳ theo t ng trang web. 10banner. ". T o variable cho text field này là text 4. Ch n font. Ví d : CODE loadVariables("10external. B n có th làm nhi u giá tr m t lúc cũng b ng cách này 10banner. ". tickerText += "The first manned flight to Mars prepares to leave Earth orbit. . Cách này thích h p khi b n có nhi u bi n nh p vào Flash. Sau ó thì g n o n script sau vào movie CODE onClipEvent(load) { // t b n tin tickerText = "News Alert: ". B n có th coi thêm v cách dùng loadVariables() bên box ActionScript [Bài T p M t ví d ơn gi n áp d ng các i u mà b n v a h c trong bài này là làm m t cái "news ticker" như dư i ây: Dòng ch s ch y t bên ph i qua bên trái cho su t b n tin. và dài b ng chi u ngang c a stage.fla trong cái source file xem chi ti t hơn. nên dùng ki u ch tương t như Courier New. và t cho nó 1 cái tên như th 6. hay giá tr c a các bi n quá dài g n vào th HTML.swf?txtName=Dominico Savio!"> Khi movie load thì nó s t t o variable "txtname" và t giá tr cho bi n này b ng "Dominico Savio". _root).. b n có th vi t vài chư trong ó. tickerText += "Your favorite sports team wins championship. tickerText += "Stock prices shoot up sharply with good earnings reports. B n có th xem trang 10banner. T o dynamic text field.swf?txtName=Dominico Savio!"> và trong th <embed> thì b n thêm ph n variable và giá tr vào sau tên file HTML src="10banner. như là "text goes here" 3. tickerText += "Scientists find cure for major diseases.swf?txtName=Dominico Savio!&gender=male" Ngoài l y bi n t HTML.fla và test nó có khái ni m thêm v "news ticker" 1. cho d nh n. o n mã HTML sau ây nh p giá tr c a bi n txtName vào trong Flash HTML <PARAM NAME=movie VALUE="10banner. v i cao ch v a 1 hàng. Con text field r i nh n F8 nào tuỳ b n i thành Movie Clip. sao cho b ngang c a m i chư b ng nhau 5.html. T o movie m i 2. b n ch c n thêm vài ch vào sau cái tên c a movie trong ph n <object> và <embed> trong HTML. B n ch c n dùng l nh loadVariables() làm ư c i u này. ".txt". B n có th tham kh o source fla: 10ticker. Mu n nh p văn b n hay giá tr c a bi n nào t HTML. b n còn có th l y bi n t các text file. ".

// thêm ch cái kê ti p firstChar++. Chương này r t hay và b ích! Chúng ta ã nghiên c u v text và strings trong các chương trư c. và lineLenght là s ch cái có th xu t hi n m t lúc trên news ticker.i<lineLength. phát l i t 6. } } Trư c tiên b n t o ra bi n tickerText ch a b n văn news ticker. Bây gi chúng ta s nghiên c u v nh ng con s .firstChar = 0. và sau cùng là ki m tra.s th c hi n phép toán c ng và tr . Flash s l y 50 ch cái u tiên b vào bi n text ( trong dynamic text field) cho nó hi n th lên màn hình. // s ch cái t i a trên news ticker // thêm các kho ng tr ng vào trư c dòng tin for(var i=0. // phát l i b n tin sau m i l n k t thúc if (firstChar > tickerText. N u không thì hãy tr l i ây h i mình nhe Happy flashing Gi th 11: Làm vi c v i các con s .substr(firstChar. Bây gi hãy xem l i nhé. Sau ó di chuy n sang ch cái th 2 b ng câu firstChar++. // b t u ch cái u tiên lineLength = 50.i++) { tickerText = " " + tickerText. vì v y b n c n ph i hi u làm sao s d ng chúng. -=.length) { firstChar = 0. d u * th c hi n phép nhân. d u / th c hi n phép chia. b n cũng có th s d ng nh ng phép toán như +=. L y ví d hai câu l nh dư i ây s th c hi n cùng m t công . Và t t c các u ư c cho vào trong b s lý d ki n onLoad Trong onEnterFrame. B n s ph i ng v i nh ng con s trong Action Script trong nhi u trư ng h p. B n có th thay i giá tr c a lineLenght và giá tr c a b n văn trong tickerText hi u hơn v 2 bi n này 7. Ngoài ra.. *=. n u b n tin ã ư c phát h t thì u. Nh ng phép toán (operator) và nh ng hàm (function) v s Nh ng phép toán ơn gi n Chúng ta cũng ã h c qua các phép toán ơn gi n r i. bi n firstChar ch a giá tr c a ch cái u tiên s th y trong news ticker. /= làm ơn gi n cho code c a b n. D u + và d u . Bây gi b n hãy th dùng loadVariable() nh p b n tin t text file vào coi có ư c không. } } onClipEvent(enterFrame) { // phát b n tin text = tickerText.lineLength).

Nh ng phép so sánh Nh ng phép toán so sánh như == so sánh hai s xem có b ng nhau không.min.pow ây là hàm l y lũy th a. nhưng b n l i mu n hi n th cho ngư i dùng xem dư i d ng s nguyên thay vì ph i cho h xem các con s ph n th p phân. 5).min(4. tham s th nh t là cơ s . cũng ơn gi n thôi.floor s làm tròn s xu ng.vi c là c ng thêm 7 và bi n a CODE a = a + 7. Min.math(4. Hàm Math.2)).ceil và Math.abs i tư ng Math ch a m t t p h p các hàm x lý các con s .2)).round(7.ceil(7. Math. Th nhé: CODE trace(Math. <= (nh hơn ho c b ng). >= (l n hơn ho c b ng). tham s th hai là lũy th a. > (l n hơn). trace(Math. s tr v 5 Math. Hàm Math.round. s tr v 4. 5).floor(8.floor.ceil. Th nhé: CODE trace(Math. B n hãy th o n code này xem k t qu th nào nhé: CODE trace(Math. < (nh hơn). Ví d hàm Math. Math.ceil s làm tròn s lên và Math.3)).round N u b n có m t s th c. Math. Trong Action Script chúng ta có th so sánh m t s nguyên v i m t s th c. Math.2 s l n hơn 7. Math.max Các b n có th s d ng hai hàm này tìm s l n hơn và s nh hơn trong hai s . Ví d như 7. Math.floor Hai hàm khác dùng làm tròn s th c thành s nguyên là Math. a += 7. b n hãy s d ng hàm Math.abs(-7)). Ví d b n mu n l y 4 lu th a 3 thì vi t th này .abs s tr v giá tr tuy t i c a m t s .

CODE Math.pow(4, 3); Math.sqrt ây là hàm tính căn, nhưng mà mình xin nói tr ơc luôn là ngoài hàm Math.sqrt, b n còn có th s d ng hàm Math.pow v i lũy th a nh hơn 1 tính căn. Ví d mu n l y căn 2 c a 4 thì có th s d ng

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

C hai cách trên

u ra cùng m t k t qu là 2.

Hàm s lư ng giác Nh ng hàm c a object class mà các b n ư c bi t trên có v như r t d h c. Nhưng còn nh ng hàm v lư ng giác như sin, cosin thì “khó nu t” hơn nhi u. M c dù b n có th b qua nh ng hàm này nhưng nh ng hàm lư ng giác này r t h u ích và hay trong vi c t o nh ng ng d ng trong Flash. V y chúng ta hãy cùng tìm hi u cách nó làm vi c nhé! Hàm sin và cosin s d ng qua Math.sin và Math.cosin, bi u di n m i quan h gi a ư ng th ng v i ư ng cong c a m t ư ng tròn. Hình dư i ây bi u di n m t vòng tròn v i m t s i m ư c ánh d u b ng các ch . 0,0; bán kính c a ư ng tròn b ng 1. Vì Hãy tư ng tư ng tâm c a vòng tròn to th , i m trên cùng s có to 0,1 và i m t n cùng bên ph i s có to 1,0

Bây gi b n hãy tư ng tư ng vòng tròn trên là m t ư ng th ng. B t

ut

i m “a”

có to 1,0 n i m 0,-1 qua -1,0 r i qua 0,1 và cu i cùng tr v 1,0. Trong Flash, và cũng như trong các ngôn ng l p trình khác, chúng ta nh v m t v t b t kỳ b ng to x, y c a chúng. Vì th , vi c chuy n m t i m trên ư ng th ng thành m t i m có to x, y trên ư ng tròn r t h u d ng. ó là nh ng gì mà hàm sin và cosin th c hi n. Ví d như chúng ta t i m “a” là i m b t u c a ư ng th ng c a ư ng tròn, b n có s d ng hàm sin và cosin c a 0 tính to x, y c a i m “a” trên ư ng tròn. T t nhiên, Math.cos(0) s tr v giá tr 1, Math.sin(0) s 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 trên ư ng tròn? N u du i ư ng tròn ra s có dài b ng 6.28 l n bán kính, do bán kính b ng 1 nên dài s b ng 6.28. ây là xu t x c a h ng s pi. Pi b ng 3.14, b ng m t n a dài c a ư ng tròn. dài c a ư ng tròn là 6.28 thì m t ph n tư dài ư ng tròn là 1.57. i m ó tương ng v i i m “c”. Hàm Math.cos(1.57) s tr v m t giá tr r t nh , g n b ng 0. Hàm Math.sin(1.57) s tr v giá tr g n b ng -1. Ch g n b ng ch không b ng vì h ng s pi không chính xác b ng 3.14, ch là g n b ng thôi. B n có th s d ng cách này chuy n các i m trên ư ng tròn thành i m có to x,y V y thì nó có ích như th nào? Gi s như b n mu n t o m t movieclip bay quanh màn hình trong m t vòng tròn. Làm sao làm ư c i u ó? N u làm b ng frame có th ph i t n hàng trăm frame . Ho c cách khác là có th dùng hàm Math.cos và Math.sin tính chuy n sang to x,y quanh vòng tròn. Trong o n code dư i ây, khi c ng thêm n, movie clip s chuy n ng d c theo ư ng tròn. Hàm Math.cos s tính ra giá tr x và hàm Math.sin s tính ra giá tr y, chúng s ư c nhân thêm v i giá tr c a radius tăng kích thư c c a ư ng tròn. Giá tr c a centerX và centerY s ư c c ng thêm cho các to x, y, vì th tâm ư ng tròn bây gi không còn 0,0 n a mà s v trí 150,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 cách chuy n i t chu i sang s và ngư c l i. Ví d như trư ng h p ngư i dùng nh p m t s vào text field, b n s nh n giá tr ó và c ng thêm m t. Hãy 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 không? 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 không ph i là m t s , vì th khi chúng ta c hi n phép c ng num v i 1 có nghĩa là c ng ký t “1” vào chu i num ang có giá “42”. làm cho Flash hi u num là m t s , b n có th s d ng m t trong hai hàm sau ây chuy n m t chu i thành s . Hàm parseInt chuy n m t chu i thành ki u s nguyên, hàm parseFloat chuy n m t chu i thành ki u s th c. Ví d hàm parseInt(“42”) s tr v giá tr là 42, n u chúng ta s d ng parseInt(“42.9”) thì cũng s nh n ư c giá tr là 42 b i vì hàm parseInt không làm tròn s , nó ch l y ph n nguyên mà thôi. Còn n u s d ng hàm parseFloat(“42.9”) b n s nh n ư c giá tr là 42.9, mu n làm tròn các b n có th s d ng hàm Math.round(parseFloat(“42.9”)). Hàm parseFloat cũng s tr v m t m t s nguyên n u tham s truy n vào là m t chu i s nguyên. 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 nguyên, còn không b n nên s d ng hàm parseFloat. M t nét r t c bi t và r t hay c a hàm parseInt là có th chuy n m t chu i thành m t s nhưng thành nhi u d ng h s khác nhau. Hãy xem m t ví d cho d hi u: CODE parseInt(“FF”, 16);

N gi th tr

Hàm này s tr v giá tr là 255, ý nghĩa c a nó là chuy n chu i ch a s FF là m t s hexa h s 16 thành m t s h nguyên h s 10. Ngư c l i, chuy n t m t s sang m t chu i, hãy s d ng hàm toString. Hàm này s ho t ng khác v i hàm parse, b i vì nó ho t ng bên trong m i bi n, g i hàm này sau d u ch m (.). Xem ví d nhé: CODE a = 135; trace(a.toString() + 1);

K t qu s là 1351. Chúng ta cũng có th s d ng hàm toString chuy n m t s thành m t chu i ch a s dư i m t h s khác. Ví d a.toString(16) s tr v k t qu là chu i “ff” S ng u nhiên T o s ng u nhiên là m t ph n quan tr ng trong công vi c thi t k game và m t s ho t hình. B i vì n u không có sô ng u nhiên thì nh ng o n phim c a b n s ch y gi ng nhau, không còn gì thú v n a! t o s ng u nhiên, b n có th s d ng hàm Math.random(). Hàm này s tr v m t giá tr t 0.0 n 1.0 nhưng thư ng thì không tr v giá tr b ng 1.0 Hãy xem ví d dư i ây, b n s nh n ư c con s ng u nhiên trong c a s OutPut CODE

random() * 10 + 1).random() * 51 + 50). Th t ra thì con s ng u nhiên trong máy tính cũng chưa th t s ng u nhiên. o n code sau s cho ta con s ng u nhiên t 0.0 Bây gi thì k t qu tr v là 1.0 CODE trace(Math. n 10.023268056102097. K t qu tr v cho chúng ta k t qu dư ng như là ng u nhiên. K t qu tr v i lo i gi ng như 0. vì th .0.0 n 10. Thay vào ó s có m t con s chu n.0 n 11.floor(Math. r t r t ph c t p mà chúng ta không th oán ư c.0 ch không ph i t 0. Nhưng cái chúng ta c n là con s ng u nhiên t 1. bây gi hãy th t o m t s ng u nhiên t 3 n 7. chúng ta s có cùng m t k t qu ư c r i. ch c n nhân thêm s ng u nhiên cho 10.floor(Math. nhưng m i l n l i khác nhau. K t qu này s ư c ưa và m t hàm tính m t l n n a là lưu l i thành con s chu n tính ng u nhiên cho l n ti p theo. M t ví d khác là b n c n t o m t s ng u nhiên t 1 n 10.random()). Hãy s d ng hàm Math.random() * 10 + 1)). có m t th thu t cho b n ây: CODE trace(Math. và 7. s ng u nhiên trong i s ng th t s cũng không th t s ng u nhiên.floor làm tròn xu ng. m t con s nào ó không bi t trư c ư c như là gi ho c phút… c a h th ng. 4. vi c này r t ơn gi n. hãy c ng thêm 1 CODE trace(Math. .0 nhưng s không có k t qu 11. 6.random() * 5 + 3).floor(Math. Th còn trong ph m vi t 50 n 100 thì sao CODE trace(Math. B i vì nó không th t s thay i trong b vi x lý. N u chúng ta gi m t m t c a con xúc x c. Hãy nghĩ v i u này. con s này s ư c ưa và m t bi u th c r t ph c t p.0. Trong ph m vi t 3 n 7 s có t t c là 5 s nguyên 3.0 n 10.trace(Math.random() * 10). Làm th nào ây? Ah. th y úng theo m t hư ng th t chính xác. CODE trace(Math. 5.

Giá tr l n nh t c a Math. còn n u t 51 n 100 s là CODE trace(Math. } ._x = Math. movie clip c a b n s nh y kỳ CODE onClipEvent(enterFrame) { this. hãy th v i s 0 nhé CODE trace(0 * 51 + 50).random().9999 CODE trace(. text field này s liên k t v i bi n display.Là s 51 b i vì trong ph m vi t 50 n 100 có 51 s . Giá tr nh nh t c a hàm Math. M t cách th xem ph m vi c a b n có úng như ý c a mình không.Trong m i movie clip c a m i nút b m. } n nh ng v trí b t Luy n t p: T o m t chương trình máy tính ơn gi n Hãy b t tay vào vi c thi t k m t chương trình máy tính ơn gi n nhé. ó là hãy th v i s nh nh t và s l n nh t thay cho Math. phím =. v y chúng ta hãy th v i giá tr là 0._name). . d u ch m th p phân. chèn o n code sau CODE on (release) { _parent. phím C xóa màn hình. Hãy th xem có úng không nhé! Dư i ây là m t ví d n a r t thú v .random() s không chính xác b ng 1.keyPressed(this.random() * 50 + 50).random()*400.9999 * 51 + 50). this. .M m t movie m i trong Flash.random() là 0.random()*550._y = Math. các nút các phép toán.floor(Math.0 mà s là g n b ng. Movie c a chúng ta s gi ng như hình dư i ây Chúng ta s có 10 nút nh p 10 s t 0 n 9. M t text field t trên hi n th nh ng s ngư i dùng b m.

7 thì s 5 nh p vào. i u này r t c n thi t. . Ví d khi ngư i dùng b m 5. 7 r i. +. C hai cách u ho t ng tương t nhưng cách vi t hơi khác. nút C l n lư t t tên là plus.Ok. t tên c a movie clip theo s c a nó. Nó s b t u v i giá tr b ng 0. Phép toán ngư i dùng ch n cũng c n ư c lưu vào b nh . equals. b n hãy xem nhé: CODE // hàm này ư c g i b i nút nh n function keyPressed(keyName) { // do something different for different keys switch (keyName) { case "clear" : // khi nh n nút C clearAll(). // giá tr m c nh là 0 memory = 0. ví d b n b m s 5. .Quay tr l i level root. xoá màn hình cũ clearAll(). // b nh operation = "none". clear. d u ch m th p phân có tên là “. m i movie clip ph i có m t tên riêng. // ánh d u khi nào ã nh p xong m t s } Bi n display là m t chu i (string). else. ví d nút s 5 s có tên là 5. minus. newNum = false. function clearAll() { display = "0". Hàm này s truy n tên c a movie clip. . Hàm keyPressed s s d ng c u trúc switch thay cho c u trúc if. s 7 ư c nh p ti p và s th c hi n phép tính 5 và 7. break. Bi n newNum như là m t bi n c hi u báo cho chương trình bi t khi nào s k t thúc m t phép toán. d u tr . lúc này phép toán chưa k t thúc. d u nhân. tr . bây gi b t u vi t code nhé! Code này s n m ngoài movie frame CODE // trư c tiên. Còn n u ngư i dùng b m d u = thì màn hình s hi n ra k t qu và k t thúc luôn phép toán chuy n sang phép toán m i. chia operate(keyName). d u chia. case "plus" : // các phép toán c ng. s liên k t v i text field hi n th n i dung ngư i dùng b m. màn hình s ư c xóa và s 5 ư c lưu vào memory. không ư c trùng. . then. multiply. nhân. divide. Khi ngư i dùng ã nh n 5. +. 7 r i sau ó b m m t phép toán khác thì k t qu s ư c lưu l i tính toán ti p.Ph n ti p theo là hàm keyPressed x lý khi m i nút ư c nh n.Khi m t nút b t kỳ ư c nh n thì hàm keyPressed s ư c g i level ngoài mà ây s là level root. newNum = true. d u b ng.”. +. có nghĩa là khi ngư i dùng m i b t máy lên thì s m c nh là s 0 Bi n memory lưu l i con s trư c ó th c hi n phép tính. khi b n b m d u c ng. sau ó b m d u = ho c m t phép toán khác thì chương trình s g i l i phép toán cũ ã ơc lưu trong bi n operation th c hi n phép toán trư c c a 5 v i 7. D u c ng. // chưa có phép toán nào c newNum = true.

break; case "minus" : operate(keyName); break; case "multiply" : operate(keyName); break; case "divide" : operate(keyName); break; case "equals" : operate(keyName); break; default : // các s if (newNum) { // hi n th s m i trên màn hình display = keyName; newNum = false; if (display == "0") newNum = true; // s không b t } else { display += keyName; // n i thêm s vào màn hình } break; } } Khi ngư i dùng nh n nút C thì hàm clearAll() s ư c g i, tương t khi ngư i dùng nh n các phép toán thì hàm operate s ơc g i - Hàm operate s th c hi n tính toán. Nó s tìm ra phép toán gi a con s trư c ó và con s hi n th i, s d ng hàm parseFloat chuy n chu i thành s .Operation có giá tr b ng none khi nh p m t s m i sau khi th c hi n xong phép toán và màn hình ư c xóa. CODE // th c hi n phép toán trư c function operate(keyName) { switch (operation) { case "none" : // s u tiên memory = parseFloat(display); // lưu l i s trư c break; case "plus" : // th c hi n phép toán 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: Làm nh ng hành tinh bay quanh qu

o

Trong ví d v lư ng giác trong ph n trư c, b n ã bi t cách làm m t movie clip quanh quay m t vòng tròn. Bây gi hãy áp d ng nh ng ki n th c ó làm m t movie 4 hành tinh xoay quang m t tr i, hành tinh th 3 s có m t v tinh. - T o m t movie m i trong Flash T o 6 movie clip là các vòng tròn, t tên l n lư t là sun, mercury, venus, earth, mars, and moon, và t instance name c a chúng gi ng v y luôn. Hãy làm cho kích thư c c a chúng ta khác nhau m t chút nhé! - t movie clip sun (m t tr i) vào gi a màn hình. Các hành tinh khác s quay quanh m t tr i. V trí c a các movie clip các hành tinh khác không quan tr ng, vì chúng ta s i u khi n v trí c a chúng b ng Action Script - t o n code sau vào 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 hành tinh, kho ng cách gi a hành tinh v i m t tr i. Bi n speed i u khi n t c quay c a hành tinh, có nghĩa là s vòng quay trong m t frame. N u speed = 6.28 thì hành tinh s quay ư c m t vòng trong

úng m t frame, và n u speed = .4 như trong o n code sau thì hành tinh s quay m t vòng 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 thêm v i speed hi n th i, và hành tinh di chuy n n v trí m i. To x, y c a các hành tinh s ư c hi u ch nh theo v trí c a m t tr i, vì v y tâm qu o c a các hành tinh chính là m t tr i. - Ch y th movie. Lúc này, các hành tinh v n ng yên, ch có mercurcy là di chuy n. N u qu o b nghiêng thì b n ph i xem l i xem m t tr i có n m úng gi a qu o hay không. - t o n code tương t vào các movie clip venus, earth, and mars movie clips, nhưng mà b n hãy thay i giá tr c a hai bi n speed và radius làm cho hành tinh xa ho c g n m t tr i hơn. G i ý cho các b n nhé, speed c a các hành tinh mercury, venus, earth, and mars là .4, .2, .1, và .05, radius cho các hành tinh là 40, 90, 150, và 210. - Ch y th l i movie. Bây gi thì c b n hành tinh ã chuy n ng, ch còn moon là chưa chuy n ng vì chưa ư c vi t code i u khi n. - Bây gi hãy vi t code cho moon, moon s có speed nhanh hơn và radius nh hơn, 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; }

- Bây gi hãy ch y th movie c a b n m t l n n a. Bây gi t t c các hành tinh u ã quay r i, nhưng còn m t v n . Earth không chính xác 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 trên layer c a earth. Chúng ta c n ph i làm cho earth quay trư c r i m i n moon. làm như v y, ch n movie clip moon, r i ch n Modify -> Arrange -> Send to Back. Luy n t p: Làm tuy t rơi ây là m t ví d r t h u ích cho vi c t o s ng u nhiên. B n có th không c n ph i dùng Action Script nhưng lúc ó b n ph i làm hàng trăm movie clip bông tuy t, m i cái chuy n ng theo m t ư ng. B ng cách s d ng Action Script và s ng u nhiên, b n có th làm cho các bông tuy t rơi v i t c và hư ng rơi ng u nhiên. B t tay vào làm nhé! - T o m t movie m i trong Flash - T o m t movie clip m i, t tên là Snowflake và t tên instance c a nó là snowflake - t o n code sau vào movie clip Snowflake. o n code này s kh i t o nh ng giá

_x > 550) this._y > 400) this. Ti p theo là s ki m tra xem n u bông tuy t ã rơi xu ng t r i thì s cho nó rơi l i.i++) { snowflake._x = 550. Bông tuy t cũng s b xoay theo giá tr c a rotate. CODE onClipEvent(load) { this.random()*3+3. Hãy click vào cu i movie xem sao. this._y = Math. } rơi._x += drift. // ki m tra hai biên if (this. // -1 to 1 rotate = Math. this.random()*400. ơc r i. t c bông tuy t._x < 0) this. t c b th i ngang. if (this.i). // -3 to 3 } onClipEvent(enterFrame) { this. // 3 to 6 drift = Math.random()*550. s d ng l i t t c hình nh và code. n u bông tuy t b d t qua bên ph i thì nó s ư c ưa quay l i v bên trái… . bây gi hãy làm cho bông tuy t nhi u nhi u m t tí b ng o n code sau.Ch y th movie c a b n.tr ban u như v trí c a các bông tuy t. t vào timeline chính nhé! CODE // t o 50 bông tuy t for(var i=0._rotation += rotate. Các bông tuy t s rơi t do.random()*2-1. i m khác bi t là hàm duplicateMovieClip s chèn t m t Movie clip có s n._x = 0. // 0 to 400 speed = Math. // ưa nh ng bông tuy t lên u if (this. // 0 to 550 this.i<50._y += speed. nhưng b n ph i ch c ch n r ng m i movie clip ph i có m t tên riêng và m t level riêng . } Hàm duplicateMovieClip ho t ng cũng gi ng như hàm attachMovie ưa movie clip vào trong lúc ang ch y._x = Math. nh ng bông tuy t dư i s ư c rơi l i.random()*6-3._y = 0. xoay c a Khi event enterFrame x y ra thì bông tuy t s ư c i u khi n rơi xu ng b i speed và b d t theo hư ng ngang b i drift.duplicateMovieClip("snowflake"+i.

m i bi n ch a m t d li u. ch c n t o bi n c a b n r i gán giá tr cho bi n c a b n thôi . v i Custom Object b n có th nhóm nh ng d li u riêng l l i v i nhau. y:20}. Có bao gi b n c m th y nhàm chán v i nh ng ch x. positionY hay b t c gì b n thích không? Vi c ó quá ơn gi n. M t là Custom Object ( i tư ng). Cũng có nh ng lúc b n g p khó khăn khi nh n ra r ng b n c n lưu r t r t nhi u d li u. Ví d . Nhưng dù sao thì ó cũng ch là nh ng bi n riêng l thôi.Làm ch chuy n ng .Cách t o Custom Object . m t trong nh ng ph n cơ b n c a các ngôn ng l p trình cao c p. y như sau: CODE pos = {x:10.Tìm hi u v Array (M ng) . Trong ph n này.Gi th 12: i tư ng và M ng. m i bi n u ch a d li u riêng l . Objects and Arrays Cho n bây gi . nhưng n khi b n c n s d ng th t nhi u bi n. nh ng bi n bình thư ng mu n làm thì không ph i d . ch v i m t cái tên khác . . ActionScript cung c p cho ta hai th lưu nh ng lo i nhi u d li u.T o nh ng v t th ch y theo con tr chu t trên màn hình T o Custom Object Ch c h n các b n ã quen thu c v i nh ng tên như x và y i u khi n v trí trên movie clip. Cách khác là Array (M ng). Trong gi th 12 này. b n có th lưu bi n x. y hay mu n thay th nó b ng nh ng ch khác như positionX. chúng tôi không mu n ch cho các b n làm nh ng i u như v y mà s nói v cách t o m t custom variable Object. i v i nh ng chương trình nh và ơn gi n thì không có gì nói.Cách s d ng nh ng i tư ng ActionScript ư c d ng s n . chúng ta s h c: .

Cũng v i m c ích làm cho d li u d t ch c hơn. S d ng hàm getRGB() l y màu c a movie. Th c hi n cách ó b ng hàm new Color(). . s d ng setRGB t i tư ng Color c a movie clip tl i màu cho movie clip sang màu 0xFF0000 (màu ) CODE circleColor = new Color("circle"). B n có th s d ng nó như b t c nh ng bi n nào khác. sau ó thì có th s d ng câu l nh setRGB thay i màu.state = "Colorado". phone… B n có th t o object t ng bư c m t.name = "Gary". B n có th truy c p d li u b ng cách: CODE trace(pos. Dư i ây là m t ví d . Ví d như ta có m t custom object tên record.setRGB(0xFF0000). t o thêm property. custom object cũng gi ng như nh ng i tư ng d ng s n. chúng ta s chuy n n i tư ng Color c a movie clip. trace(record. ó là cách d nh t nhưng nó s không th c hi n ư c i v i instance c a movie clip. record. Thay vào ó.age = 32. i tư ng Color Có th dùng ActionScript i màu c a m t movie clip b ng cách s d ng câu l nh setRGB. Chúng ta cũng có th l y màu c a m t movie clip.x). b n ã t o ra m t object. record. Xem ví d này nhé: CODE record = new Object().B ng cách s d ng hai d u ngo c nh n. circleColor. address. Hãy tư ng tư ng n m t c u trúc ph c t p hơn nhi u như m t record trong m t cơ s d li u. Hai ví d v nh ng i tư ng d ng s n là Color và i tư ng Date.name). nhưng nh s d ng hàm toString(16) chuy n thành giá tr hexa. record. và trong nó s có nh ng property như là name.

gi (hour). tháng (month). B n có th t o m t i tư ng Date m i b ng cách cung c p cho nó 7 thông tin trên CODE myDate = new Date(2002. bb. ab: 0}. myObject = {ra:100.3.CODE circleColor = new Color("circle"). . M t cách khác t màu cho movie clip b ng cách t o m t transform ng v i 8 m c như trong hình dư i ây i tư ng color u tiên. a là i di n cho t red.setTransform(myObject).500).15. ba. ga. phút (minute). blue và alpha. gb.10. aa: 100. rb:255. aa. giây (second) và ph n trăm giây (milisecond). ba:0. i tư ng Date M t i tư ng d ng s n khác là i tư ng Date. gb:0. ga:0. ab. R i t o các property ra.getRGB(0xFF0000). i tư ng này cũng có th ư c xem như là m t bi n bình thư ng. b. rb. t o m t i tư ng custom variable. green. circleColor. myObject = new Object().30. Còn ký t th hai a và b là i di n cho 2 c t bên trái và bên ph i Thay vì s d ng setRGB thì chúng ta s s d ng setTransform như trong ví d dư i ây: CODE circleColor = new Color("circle").toString(16)).29. bb: 0. nó i di n cho m t th i i m c a th i gian. trace(circleColor. g. ngày (date). i tư ng Date ư c chia ra 7 ph n: năm (year). Các ký t u tiên r.

Có ph i b n nh n ư c k t qu này không? CODE Mon Apr 29 10:30:15 GMT R t d hi u. CODE myDate. r t c bi t. Ví d dư i ây s l y năm. trace(myDate). B n s g p m ng trong h u h t các ngôn ng l p trình b i vì nó là m t công c r t c n thi t cho nh ng ngôn ng l p trình ph c t p. Trong ó thì các d li u s có cùng m t ki u d li u v i nhau. v y ph i là March ch !? i tư ng Date c a Flash cũng ho t ng tương t như i tư ng Date c a các ngôn ng l p trình khác. Tháng ư c quy nh t 0 n 11. b i ngày thì ư c quy nh t 1 n 31 .Hãy th s d ng câu l nh trace ki m tra n i dung c a myDate xem nào. Chú ý: Flash s l y gi c a ng h h th ng trong máy b n. S d ng d u ngo c vuông và nh ng d u ph y . úng không nào? Nhưng mà còn m t v n : tháng là Apr trong khi chúng ta truy n tham s vào cho tháng là 3. Vì th máy tính 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 trình. M ng (Array) là m t dãy d li u. Ví d : CODE myDate = new Date(). i tư ng Date r ng . như là cùng là tên c a movie clip ho c u cùng là v trí c a movie clip T o m ng Dư i ây là m t ví d v m t m ng.getYear() B n có th l y gi hi n t i b ng cách ơn gi n là t o m t Gi hi n t i s ư c ưa vào i tư ng. Nhưng dù sao thì b n cũng ph i làm quen i B n cũng có th l y nh ng thành ph n t i tư ng Date.

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]). M t cách khác t o m ng là s d ng new Array() CODE myArray = new Array(). trace(myArray. .23.t o m ng: CODE myArray = [36.25]. Ph n t u tiên trong m ng luôn luôn ư c ánh s 0.push(36). Mu n thêm m t ph n t vào cu i m ng. myArray.length). s d ng câu l nh push. myArray.23. myArray.63.71.25]. Vì v y.71. M ng myArray có ch a 5 ph n t là s nguyên.63. myArray. Nh ng thao tác trên m ng ki m tra xem m ng có bao nhiêu ph n t thì b n có th s d ng thu c tính length CODE myArray = [36.push(25).push(63). myArray.push(23).push(71). như ví d trên 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. Ví d dư i ây s t o ra m t m ng gi ng m ng ví d trên: CODE myArray = new Array().

cu n th 3.23. CODE myArray = [36. is truy n vào s là v trí u tiên và v trí cu i cùng c a ph n c n l y ra trong m ng. Ngư c l i v i pop là shift. o n code dư i ây s làm gi ng như o n trên nhưng s không b ph n t 25 mà s b ph n t 36: CODE myArray = [36. t c là ch ng lên cu i cùng. M t hàm khác n a là hàm splice. trace(a). N u không có i s th 2 thì nó s l y n cu i m ng.71. chúng ta cu n sách u tiên xu ng. i s u tiên là v trí c a ph n t trong . Cu i cùng trace các ph n t c a m ng myArray.63. trace(myArray). trace(myArray). Nó s b ra ph n t u tiên trong m ng. Hãy tư ng tư ng n m t ch ng sách. a = myArray. Sau ó.25]. a = myArray. trace(myArray). Nó s chèn thêm m t ph n t vào u m ng.23. trace(a).shift(). Hàm này s thay th m t s ph n t trong m ng b ng nh ng ph n t khác.71. lúc này ch còn 4 ph n t .71. ng th i b ph n t 25 ra kh i m ng. 63 vì nó không k ph n t th 3.63.pop().25] trace(myArray.Còn n u mu n l y ph n t cu i cùng c a m ng và b ph n t này ra kh i m ng thì s d ng câu l nh pop CODE myArray = [36. r i ch ng lên cu n sách th 2.25]. cu n th 4… Khi mu n l y sách ra thì ph i l y cu n trên cùng trư c. Ngư c l i v i shift là unshift. S d ng k t h p push và pop t o m t h th ng vào sau ra trư c (last in first out). l y ph n t cu i cùng c a m ng t c là 25 ưa vào bi n a.63. o n code trên s tr v 23. thư ng g i là stack.23. S d ng hàm này.3)). o n code ví d trên s trace 5 ph n t c a m ng myArray. trace(myArray). N u b n mu n l y ra ch m t ph n c a m ng thì có th s d ng hàm slice.slice(1.

71."Will".25].m ng.23.23. myArray. Ví d : CODE myArray = ["Gary". trace(myArray). trace(myArray). trace(myArray). trace(myArray).63.71. Câu l nh reverse o v trí s p x p c a m ng. myArray. i các ."Brian"]."Jay".63. Ví d dư i ây s cho ta m t m ng ư c s p x p theo th t s : CODE myArray = [36.reverse().25]. 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. Ví d này s xóa ph n t 23 và 63 và chèn vào ph n t 17."Brian"].splice(1."Jay". Nh ng ph n t ti p theo là danh sách nh ng ph n t mu n chèn vào m ng. S d ng câu l nh concat n i hai m ng l i v i nhau. v y hãy xét ví d này nhé. i s th hai là s ph n t mu n xóa k t ph n t trong i s u tiên. CODE myArray = [36.2. Nó s không làm thay m ng cũ."Will". S p x p trong m ng Chúng ta có th s p x p m t m ng b ng câu l nh sort.17).sort(). Truy n i s th 2 là s 0 n u không mu n xóa ph n t nào c . Còn ví d này s s p x p theo th t ch : CODE myArray = ["Gary". myArray. Nói v y cũng hơi khó hi u nh .sort(). mà nó s t o ra m t m ng m i. myArray.

CODE myArray = [36.23.split(" ")."). Hãy nghĩ n chuy n chúng ta có m t câu nói ư c lưu trong m t chu i mu n chuy n sang m ng. trace(newArray). myArray = myString. trace(myString).23.16].split(". newArray = myArray. trace(myArray).concat(otherArray).25".71.63.23. N u b n không truy n tham s này vào thì ký t m c nh là d u ph y.63. CODE myArray = [36. Câu l nh join ít ư c s d ng vì nó không c n thi t l m.25” thành m t m ng trong ví d dư i ây: CODE myString = "36.71.97. Nó s chuy n i t m t chu i sang m ng. Xem ví d dư i ây nhé: CODE myString = "This is a test". Ví d như nó s chuy n m t chu i “36. trace(myArray). Làm ch chuy n ng .23. myArray = myString.25] otherArray = [58. Chuy n i gi a chu i và m ng Chúng ta có th s d ng câu l nh join i t m t m ng thành chu i. Ví d dư i ây tr v 36:23:63:71:25.63.join(":").63.71. m i ph n t trong m ng s ch a m t ch . Câu l nh này c n m t i s duy nh t là ký t ngăn cách gi a các ph n t c a m ng trong chu i. nhưng hàm split l i r t h u d ng.71.25] myString = myArray.

. Bi n frameCount s m s frame mà m t ch ã i qua.V m t shape r i ch n Insert -> Convert to Movie Clip. hình bàn tay hay m t movie clip.Nào. frameCount = frameDelay. Sau ó s khai báo thêm 3 bi n n a.length) wordNum = 0. . Cho text field n m gi a màn hình và canh gi a cho text field.T o movie Flash m i . như là hình mũi tên. Bi n frameDelay s lưu s frame m i ch hi n ra. t variable = text. // next word if (wordNum >= wordList. kho ng 64. u tiên s s d ng hàm split tách t ng ch c a câu vào trong m ng.text = wordList[wordNum]. // prime for first word } onClipEvent(enterFrame) { // time for new word if (frameCount == frameDelay) { _root.Chèn o n code sau vào movie clip ó. // display word wordNum++. Hình dư i ây là m t ví d c a m t movie clip ư c dùng làm con tr . Bi n wordNum s lưu m t con s là s th t c a ch s hi n th . Ch là m t hình mũi tên ơn gi n nhưng b n ph i chú ý r ng d u c ng chính gi a movie clip ph i n m ngay u c a mũi tên. frameCount = 0. // set up variables wordNum = 0.Trong ví d này. hãy ch y th xem nào Gi th 13: S d ng Rollovers. CODE onClipEvent(load) { // get the words wordList = ("Imagination is more important than knowledge").T o m t text field dynamic. bây gi thì ã xong r i. t tên cho instance này là Actions r i kéo nó ra ngoài vùng hi n th . chúng ta s l y t ng ch trong m t câu dài và hi n th vào textfield. . frameDelay = 6. Con tr có th là b t c hình dáng gì cũng ư c.split(" ").hide() và t m t movie clip c a mình vào v trí c a con tr là xong. } . . ch c n s d ng hàm Mouse. cho font ch to. Rollovers T o hình dáng con tr theo ý thích Vi c thay con tr m c nh b ng m t con tr theo ý thích c a mình r t ơn gi n. } frameCount++.

Luy n t p: T o con tr tĩnh .N u b n mu n s d ng l i con tr m c nh thì ch c n g i Mouse. chúng ta s s d ng swapDepths() ưa movie clip này lên trên cùng. 2… 9999. } .swapDepths(99999). ưa movieclip c a chúng ta lên trên cùng.hide(). Câu l nh swapDepths() s ưa movieclip lên m t level m i. level có th là m t s nguyên 0.Ti p theo chúng ta s g n v trí c a movie clip vào v trí c a con tr CODE .show() M t i u c n lưu ý n a là ph i ch c r ng movie clip làm con tr c a chúng ta ph i trên t t c các movie clip khác.swapDepths(9999). Chúng ta có th ch n Modify -> Arrage ->Bring To Front ưa movie clip lên u nhưng ch là trên các movie clip trong layer ó mà thôi. Vì th chúng ta s s d ng l nh Cursor. Cho dù b n có movie clip c a mình lên layer trên cùng thì cũng có th b che khu t b i nh ng movie clip ư c load vào b ng duplicateMovie và attachMovie. Vì v y. // bring this movie clip to the front this. và chúng ta s thay th con tr b ng cách CODE onClipEvent(load) { // hide the real cursor Mouse.Quay tr l i movie u tiên. 1.T o m t movie m i .T o m t movie clip m i thay th cho con tr .

Chúng ta s thay i m t ít trong movie clip làm con tr .show(). T o m t frame th hai. .Chúng ta có th s d ng l i movie trư c .Sau cùng. chúng ta s ph c h i l i con tr cũ khi k t thúc movie CODE onClipEvent(unload) { // show the real cursor again Mouse._xmouse. } .T o m t button m i trong root. vào frame u tiên c a movie clip ._y = _root. } ._ymouse._x = _root. this.Cu i cùng là vi c ch y th movie c a mình Luy n t p: T o con tr ng . Hãy th làm cho button có s thay i trong over và down chúng ta có th th y ư c s khác bi t.onClipEvent(enterFrame) { // follow the mouse this. v thêm vài nét như hình v - t tên hai frame là normal và over button t câu l nh stop().

Trong ví d sau. Chúng ta có th s d ng AS Rollovers s d ng button làm Rollovers b ng nhi u cách Chúng ta s s d ng hai event c a button là on(rollOver) và on(rollOut) vi t code .Thêm o n code sau vào button CODE on (rollOver) { cursor. Khi chúng ta ưa tr chu t qua nh ng vùng ó thì bên ph i s xu t hi n thông tin v hành tinh ó..gotoAndStop("normal"). Khi ưa tr chu t ra ngoài thì thông tin ó cũng bi n m t. Ý tư ng c a k thu t này là khi ngư i dùng ưa chu t lư t nh ng vùng nào ó. s có 9 vùng như th . } on (rollOut) { cursor.t tên movie clip làm con tr là cursor . Xem k t qu b n làm có gi ng hình này không nhé! Rollovers M t k thu t thông d ng hi n th nh ng thông tin dài là s d ng Rollovers ưa ra nh ng thông tin thay vì s d ng m t button ngư i dùng click vào thì s sang m t trang khác. m i vùng s là m t tên c a m t hành tinh ( bên trái). M i vùng s hi n th cho ngư i dùng xem m t thông tin gì ó trên màn hình. hãy th click vào button xem sao. } .Bây gi hãy ch y th xem nào .gotoAndStop("over button").Kéo th m t button vào root .

vì th chúng ta s s d ng m t hàm khác. chúng ta s s d ng bi n over.x lý vi c hi n th thông tin.gotoAndStop("none").information.gotoAndStop("information 1"). Chúng ta s ghi nh l i r ng con tr chu t có ang trên movie clip hay không. nó s thi hành l nh khi con tr chu t i vào movie clip. Vì v y. N u v trí con tr i l p v i over thì s x y ra s thay i. } Rollovers s d ng movie clip Flash không có hàm onClipEvent(mouseOver). Hàm hitTest s cho chúng ta bi t r ng con tr chu t có ang trên movie clip hay không. Hãy xem ví d dư i ây: CODE on (rollOver) { information. } on (rollOut) { information. chúng ta s làm như sau._ymouse. i u này s làm x y ra xung t._root. Chúng ta hãy xem o n code sau: CODE onClipEvent (load) { over = false. làm i u này. Còn n u không.gotoAndStop("none"). } .information. m t khác thì rollovers khác l i ưa movie clip information v m t nơi khác. B i vì movie clip c a chúng ta s v n ti p t c ch y t frame này sang frame khác.hitTest(_root. true)) { _root. i v i m i frame. nó s thi hành l nh khi con tr chu t ra ngoài movie clip. chúng ta ã g i hàm gotoAndStop() d ng l i. } } Nhưng làm như v y v n còn m t v n n a. Cái u tiên s ưa movie clip information v frame none. } else { _root. chúng ta s s d ng hàm hitTest ki m tra v trí c a con tr chu t. N u có. Hãy tư ng tư ng chúng ta có nhi u rollovers.gotoAndStop("information 1"). ph thu c vào v trí c a con tr chu t mà nó s mang giá tr true ho c false._xmouse. Và chúng ta có th làm như sau CODE onClipEvent (enterFrame) { if (this.

có r t nhi u cách làm rollovers.onClipEvent (enterFrame) { // ki m tra xem li u con tr chu t có ang di chuy n qua movie clip không testOver = (this._ymouse. Chúng ta hãy xem hình bên dư i Ví d trên s d ng button cho các hotspot._xmouse.information. chúng ta s bàn v m t Như ã nói trên. } } Rollovers s d ng frame ây. CODE on (rollOver) { gotoAndStop("information 1")._root. và các frame ti p theo s ch a các thông tin. over = false. }else if (!testOver and over) { _root. nhưng thông tin c n hi n th thì ch xu t hi n m t vài frame.information. over = true. Nhưng chúng ta không c n ph i g i hàm gotoAndStop t movie clip information. Bây gi công vi c vi t code c a chúng ta g n gi ng như làm rollovers b ng button.gotoAndStop("none"). Thay vì s d ng movie clip cho m i thông tin c n hi n th . và chúng ta hãy lưu ý r ng các button s xu t hi n trong t t c các frame. cách khác. chúng ta s s d ng timeline chính lưu thông tin. } on (rollOut) { .gotoAndStop("information 1"). Frame u tiên s là frame none. true)). if (testOver and !over) { _root.hitTest(_root.

m i hotspot s hi n th m t h p thông tin khi ưa tr chu t ngang qua. hãy t o m t movie m i trong Flash. không có s khác bi t. Movie clip này cũng s ch a 10 frame: 1 frame tr ng và 9 frame ch a thông tin c a 9 hành .u tiên. ây. M i hotspot là m t button. t frame 2 cho n frame 10 s ch a thông tin c a các hành tinh. vì th ngư i dùng có th click vào di chuy n n m t frame khác xem nh ng thông tin v hành tinh ó. N u b n quen s d ng nhi u frame thì ây là m t cách t t cho b n Lưu ý r ng c ba cách trên u cho m t k t qu như nhau. bây gi các b n hãy th s d ng nh ng hi u bi t c a mình v cách thay i con tr và rollovers làm m t chương trình xem nào! Chương trình này s hi n th nh ng thông tin v các hành tinh. t tên frame 1 là none và tr ng vùng hi n th thông tin. chúng tôi ch mu n trình bày cho các b n th y nh ng cách làm khác nhau mà thôi! Luy n t p: Hi n th thông tin Nào. Chúng ta s có 9 hotspot. m i hotspot là m t hành tinh. m i cái cho m t hành tinh. chúng ta không ph i m x vào t ng movie clip. } L i th c a vi c s d ng cách này là chúng ta có th thay i nh ng thông tin trong các frame r t d dàng. t 10 button bên trái. M t movie clip summary s xu t hi n hi n th thông tin v n t t v các hành tinh khi ưa tr chu t ngang qua.gotoAndStop("none"). . Movie này s có 10 frame.

show().T o m t movie clip thay th con tr chu t. chúng ta l i vi t code cho các button CODE on (release) { gotoAndStop("mercury"). } onClipEvent(enterFrame) { this.gotoAndStop("mercury").Nh ng button trên s ưa ngư i dùng n nh ng frame khác nhau tin v hành tinh._y = _root.gotoAndStop("none"). m t frame timeline chính và m t trong movie clip summary ._xmouse. và cũng t trong frame u tiên c a movie clip summary . vào frame u tiên. this.tinh. } . và vi t code như sau CODE onClipEvent(load) { Mouse. hãy vi t code nhé! CODE on (rollOver) { summary.swapDepths(99999).hide()._x = _root. Chúng ta cũng ph i chú ý vi c s d ng layer cũng r t quan tr ng. trong ví d này thì chúng ta s s d ng 3 layer và movie clip summary s ư c t layer trên cùng . } xem thông Lưu ý r ng chúng ta có hai frame tên mercury._ymouse.t l nh stop(). } on (rollOut) { summary. this. } .Nào. } onClipEvent(unload) { Mouse.

Ti p theo chúng ta s làm cho con tr chu t thay i khi ưa con tr ngang qua các button. chúng ta hãy cùng nhau tìm hi u 4 thành ph n cơ b n c a m t scrollbar và hãy tìm hi u scrollbar là gì. Thanh trư t (Slider) .gotoAndStop("none"). K t qu là khi nh ng nhà phát tri n s d ng Flash t o ra nh ng scrollbar c a riêng h thì g p khó khăn. M i ngư i s d ng nó nhưng không suy nghĩ nhi u v nó. mũi tên xu ng. Scrolling M c dù scrollbar r t quen thu c trong các ng d ng Mac. Hình dư i ây cho chúng ta th y nh ng thành ph n cơ b n c a m t scrollbar là: mũi tên lên. } on (rollOut) { summary. các trình duy t web… nhưng m y ai hi u ư c nó ho t ng như th nào.gotoAndStop("normal"). } on (release) { gotoAndStop("mercury"). Lý do ơn gi n là do ây là m t trong nh ng thành ph n tr c quan. cursor.gotoAndStop("mercury").. Windows. thanh trư t và khay trư t. } Bây gi thì movie c a b n ã xong.gotoAndStop("over button"). r t d xây d ng mà không c n ph i vi t code nhi u. Hãy thêm o n code sau vào ph n code c a button CODE on (rollOver) { summary. cursor. Vì v y. B n hãy ch y th xem sao Gi th 14: Thành ph n Scroll.

Ví d m t textbox có scrollbar hi n th ư c 10 dòng c a m t văn b n có 100 dòng thì chi u cao thanh trư t s là 10% so v i khay trư t. Chi u dài c a khay trư t ph thu c vào dài c a văn b n. Khay trư t còn có m t ch c năng n a là khi ta click vào khay trư t thì kh i văn b n s di chuy n m t trang. Thay vì kích thư c c a thanh trư t s b g n s n v i m t giá tr thì kích thư c này s ư c thay i tùy vào dài văn b n. các thành ph n c a scrollbar ch ho t ng khi chúng ta click vào. chúng ta s t tên cho text field là scrollText Sau ó. còn n u thanh trư t cu i thì chúng ta ang xem dòng cu i cùng. Khi ã ch n vào text field r i thì b n có th thay i kích thư c c a text field b ng cách kéo hình ô vuông góc dư i bên ph i c a text field. Nh ng thu c tính chung Scrollbar có m t s thu c tính chung mà chúng ta c n ph i xem xét. N u thanh trư t trên cùng thì chúng ta ang xem dòng u tiên c a văn b n. nó ch có ch c năng cho ngư i dùng di chuy n kh i văn b n t ng dòng m t. scrollbar có thêm m t c tính m i. u tiên. M i ây. Khi click vào ph n trên c a thanh trư t thì kh i văn b n s di chuy n n trang trư c. Scroll m t văn b n u tiên. u tiên. Còn n u không t kích .Thanh trư t ph c v nhi u m c ích. thanh trư t s trư t trên khay trư t cho chúng ta th y v trí c a kh i văn b n chúng ta ang xem. Khay trư t (Bar) Khay trư t có ch c năng chính là ch a thanh trư t và cho thanh trư t trư t trên nó. chúng ta có th vi t code cho nó l y d li u vào. v trí u tiên c a thanh trư t s ng v i dòng u tiên c a văn b n và v trí cu i cùng s ng v i dòng cu i cùng. Khi chúng ta kéo thanh trư t trư t trên khay trư t thì kh i văn b n s ư c c p nh t v trí thích h p. L y ví d : n u ngư i dùng click vào mũi tên xu ng di chuy n m t kh i văn b n thì kh i văn b n s di chuy n t ng dòng m t cho n khi chúng ta th nút chu t ra. còn n u click vào ph n dư i thanh trư t thì kh i văn b n s di chuy n n trang sau. thanh trư t s ư c k p ch t và trư t trên khay trư t. Nhưng chúng ta s không bàn v n này ây. Nhưng trư c h t c n t cho text field c a chúng ta m t scroll. Các mũi tên Mũi tên lên và xu ng là hai thành ph n ơn gi n nh t c a scrollbar. M t v n n a là v trí thanh trư t ph i ư c c p nh t liên t c khi nh ng thành ph n khác ư c kích ho t. và s ti p t c ho t ng cho n khi chúng ta th nút chu t ra. Vì th . Như trong hình dư i ây. chúng ta m khung Properties ra t tên l i cho text field. Như ã nói.

chi u cao c a text field s ư c t i u ch nh theo kích thư c n i dung bên trong.Dán o n văn b n mà b n ã chu n b vào text field . . Còn m t s thu c tính khác lien quan n scroll như Thu c tính scroll s cho chúng ta bi t dòng nào trong văn b n s xu t hi n u tiên. VD như scroll = 1 thì dòng u tiên s ư c hi n th u tiên.M ph n Properties ra và t tên cho text field c a chúng ta là scrollText.Tìm m t o n văn b n nào ó dán vào text field (tìm o n nào dài dài tí ) .S d ng công c Text Tool t o m t text field . lúc này chúng ta có th i u ch nh kích thư c text field theo ý mu n. Thu c tính maxscroll cho chúng ta bi t giá tr l n nh t c a scroll Thu c tính scroll và bottomscroll cho chúng ta bi t chính xác dòng văn b n nào trên u và dòng nào cu i scroll văn b n lên hay xu ng b n c n ph i tăng ho c gi m giá tr c a scroll. chúng ta s xây d ng m t chương trình v i m t text field dynamic ch a văn b n và hai button như hình dư i ây . Trong ví d dư i ây.T o hai button gi ng như hai hình v trên.Bây gi hãy t o m t movie m i trong Flash . n u scroll = 2 thì dòng th hai s hi n th và lúc này thì dòng 1 s không th y ư c.thư c thì text field s v a hi u th n i dung bên trong. M t button i u khi n i lên. m t i xu ng. có nghĩa là n u văn b n bên trong text field ó có nhi u dòng thì chúng ta không th làm cho text field ch hi n m t vài dòng scroll. t thu c tính Mutiline và Show Border Around Text . Mu n là xu t hi n scroll thì chúng ta hãy gi phím Shift và click vào hình vuông tr ng ó tr thành hình vuông en. Thay vì i u ch nh b ng hình vuông màu tr ng thì lúc ó. Như v y là chúng ta ã kích ho t scroll cho text field.Nh p o n code sau cho button i lên: CODE on (press) { . Th là xong! Luy n t p: Thi t k m t chương trình scroll văn b n ơn gi n Bài t p này th t ra r t d .

scroll--. b m F6 t o frame k ti p và t button On vào frame th 2. có nghĩa là cũng checkbox ó nhưng ã ư c ch n. Trong chương này. B n hãy th click vào button scroll văn b n Gi th 15: Các thành ph n nh p li u Các b n có th t o ư c nhi u thành ph n nh p li u b ng Action Script.scroll++. M t button th hi n tr ng thái On.Và nh p o n code này cho button i xu ng: CODE on (press) { scrollText. các b n ã bi t cách t o m t selectable movie clip. t tên . bây gi b n hãy ch y th movie c a mình xem sao. ch c h n các b n ã g p các thành ph n này trong các th HTML. t o ra m t Checkbox b n c n 2 button và 1 movie clip. Các b n có bi t cách nào cho 3 thành ph n c a checkbox ho t ng chung như v y ư c không? R t ơn gi n. } . button Off s ư c ưa vào m t movie clip riêng t frame u tiên. } . cái th 2 chưa ư c ch n. có nghĩa là khi checkbox chưa ư c ch n.scrollText. Hình dư i ây là 3 checkbox làm ví d . B n cũng s h c ư c cách làm sao chuy n t thành ph n này sang thành ph n khác trong form b ng cách nh n nút TAB. các b n s h c cách làm checkbox.S d ng TAB chuy n t thành ph n này sang thành ph n khác . Check box u tiên ang ư c ch n.H n ch n i dung nh p li u T o Checkbox Trong Hour 8. và làm sao h n ch n i dung ngư i dùng nh p vào Các n i dung trong chương này: .Cách t o radiobutton .Ok. CheckBox cũng là m t Selectable movie clip gi ng v i các checkbox chu n s d ng trong các h i u hành Mac và Windows. cái th 3 thì ngư i dùng ang chu n b ch n.Cách t o checkbox . radiobutton b ng Action Script. Button u tiên th hi n tr ng thái Off c a Checkbox.

khi b n ch n qua m t Radiobutton khác thì ch n l a cũ s t ng m t i. nhưng ngư i dùng ang chu n b ch n . không có chuy n 2 Radiobutton u ư c ch n. có nghĩa là trong m t nhóm Radiobutton thì ch có m t checkbox ư c ch n t i m t th i i m. Ti p theo. sau khi click s thành true ( ã ch n). Hình dư i ây là m t nhóm Radiobutton RadioButton u tiên ang ư c ch n. Radiobutton ư c s d ng trong nh ng trư ng h p có tính lo i tr . N u state = s ki m tra giá tr c a bi n state true thì s nh y n frame On. if (state) { gotoAndStop("on"). có nghĩa là lúc u pressButton s ư c g i. hàm pressButton ưa ngư i dùng n frame thích h p. s là false (chưa ch n). function pressButton() { state = !state. } } Bi n state ki m tra tr ng thái c a checkbox. } Ngoài ra. frame 2 là On. chuy n qua Radiobutton m i. Checkbox ư c s d ng trong nh ng trư ng h p ch n l a không có tính lo i tr . trong frame Off (frame 1) s còn ch a m t o n code n a ngoài câu l nh stop(). còn n u state = false thì s nh y n frame Off. CODE on (release) { pressButton(). vào frame 1 dùng movie clip l i ngay ó. Khi click m t button thì hàm i l i tr ng thái c a state. Ti p theo. Trong ó. T o RadioButton Vi c t o m t Radiobutton s ph c t p hơn m t chút so v i checkbox. } else { gotoAndStop("off"). Trong m i button ó s có m t o n code g i m t hàm ngoài time line c a movie clip có ch a 2 button x lý khi m i nút ư c nh n. có nghĩa là ngư i dùng có th ch n nhi u checkbox. cho m t câu l nh stop(). CODE state = false.frame 1 là Off. N u b n ã ch n m t RadioButton. Ngư c l i. Các Radiobutton s ư c gom vào m t nhóm có quan h v i nhau.

// ki m tra có ph i là RadioButton u tiên trong nhóm hay không if (_parent.i++) { _parent. i m khác nhau gi a Checkbox và RadioButton chính là code c a chúng.radioButtons. Code c a RadioButton s ph c t p hơn code c a CheckBox.radioButtons.radioButtons[i]. M t RadioButton ơn gi n cũng tương t như m t Checkbox. } . i u u tiên là hàm turnOn s duy t qua t t c các RadioButton (các movie clip). } else { // các RadioButton khác không ư c ch n state = false. CODE stop(). } // chuy n RadioButtond ư c ch n thành ON gotoAndStop("on").radioButtons == undefined) { // t o m t array RadioButton _parent. Frame u tiên ch a m t vòng tròn r ng. state = true. không n m trong hàm nào c .i<_parent. frame th 2 ch m t vòng tròn v i d u ch m tròn gi a. sau ó s chuy n tr ng thái c a RadioButton ư c ch n thành On.push(this). } // chèn array RadioButton ra ngoài level ngoài _parent.radioButtons = new Array(). n u ngư i dùng ch n RadioButton 2 ho c b t kỳ cái nào khác thì RadioButton u tiên s t ng m t ch n l a.RadioButton th 2. Khi ngư i dùng click vào button.turnOff(). Ph n u code c a Radiobutton s ơc vi t frame u tiên. thì hàm turnOn s ư c g i. Nó ư c vi t ngoài. g i hàm turnOff cho t ng RadioButton. CODE function turnOn() { // chuy n t t c thành OFF for(var i=0. i u này có nghĩa là o n code này s ch y khi load movie clip. m t movie clip có 2 frame ch a 2 button bi u hi n 2 tr ng thái c a RadioButton. Nói ơn gi n có nghĩa là khi click vào m t RadioButton thì trư c tiên t t c các RadioButton trong nhóm u quay v tr ng thái Off.length. state = true. // RadioButton u tiên m c nh ư c ch n gotoAndStop("on").

} Luy n t p: Chương trình tr c nghi m Bây gi hãy cùng nhau áp d ng nh ng th ã h c ư c v CheckBox và RadioButton làm m t chương trình tr c nghi m ơn gi n nhé.radioButtons[i]. nó s duy t qua t t c các RadioButton trong array RadioButton xem cái nào ang ư c ch n. Ví d frame u tiên s ch a câu h i như hình dư i ây. Hàm này s ư c m t movie khác g i. và có nh ng câu tr l i dư i .i<_parent.length. Hàm này r t ơn gi n. state = false.radioButtons[i].Ti p theo là o n code cho hàm turnOff() CODE function turnOff() { gotoAndStop("off")._name).state) { return(_parent. M i frame s ch a m t câu h i riêng. } Ti p theo là xây d ng hàm getValue() ki m tra xem RadioButton nào ang ư c ch n. CODE function getValue() { // duy t t t c các RadioButton for(var i=0.i++) { // tìm RadioButton nào ang ư c ch n if (_parent.radioButtons. } } // n u không có cái nào ư c ch n thì tr v m t chu i r ng “” return "".

state) results. if (Director.state) results. . if (Dreamweaver.T o các câu tr l i và m t static text k bên Checkbox như hình trên. .T o m t movie m i trong Flash . Director.T o m t button Next chuy n n câu h i ti p theo. if (Freehand. Vì câu h i th hai ch cho ch n m t l a ch n nên chúng ta s s d ng RadioButton như hình dư i ây . . o n code trên có nhi m v t o m t m ng results lưu k t qu c a các câu tr l i. .push("Dreamweaver").B t u nhé . and Dreamweaver.push("Flash").push("Fireworks"). .Ti p theo. Freehand. stop().Chèn o n code sau vào frame u tiên CODE results = new Array(). t tên là: Flash.push("Director"). trong frame th hai s là câu h i th hai.R i sau ó kéo t o 5 b n c a movie clip checkbox vào.state) results. nextFrame().Khi nh n nút Next thì s chuy n sang câu h i ti p theo và lưu câu tr l i hi n th i vào m ng results CODE on (release) { if (Flash.T o Checkbox như ã ư c h c r i ó. ng th i cũng dùng movie t i ây. } .state) results. if (Fireworks.push("Freehand"). Fireworks.state) results.

i u này s mang l i nhi u thu n ti n cho ngư i s d ng.Ok.Copy nút Next vào frame 2 nhưng chúng ta s thay o n code b ng m t o n code khác.push(Windows.Trong Hour 18. chúng ta thư ng th y vi c này trong h u h t các chương trình chuyên nghi p.T o RadioButton như ph n trư c r i ưa vào movie 3 cái tên: Windows. n ây thì b n t làm ti p nh ng câu h i ti p theo nhé. Flash ch có th ch a v trí c a thành ph n mà thôi. nextFrame(). . and Linux .Chèn n i dung câu tr l i vào luôn như hình trên . . ví d như trong m t trình duy t web. khi ó các b n có th c i ti n chương trình này ưa câu tr l i lên server ki m tra. nó s chuy n n thành ph n logic ti p theo trong chương trình. CODE on (release) { results. Flash s hi u r ng thành ph n ti p theo thành ph n u tiên s là cái dư i nó ch không ph i là cái k bên. Nhưng mà hãy nh là tên các thành ph n ph i khác nhau nhé. Vì th . s l a ch n thành ph n logic ti p theo c a Flash không ph i lúc nào cũng úng. Các b n cũng có th s d ng hàm trace ưa k t qu nh ng câu tr l i ra c a s Output xem. Tuy nhiên.getValue()). Macintosh.. các b n s h c v cách ưa d li u lên server. tương t như v y thôi. L y ví d như trong hình bên dư i. } o n code trên s d ng hàm getValue ki m tra xem RadioButton nào ang ư c ch n . Công vi c chuy n i b ng cách nh n phím Tab này ư c g i là Tab Order. S d ng Tab chuy n t thành ph n này sang thành ph n khác Nh ng ngư i s d ng Flash 5 luôn than phi n v vi c không th s d ng tab chuy n i gi a các thành ph n như v y.

b n s t con tr vào textfield thay vì b t ngư i dùng ph i click vào textfield trư c khi gõ. i u chú ý khi s d ng tabIndex là ph i chú ý n label c a các textfield và tránh s d ng l i m t s nhi u l n. B n có th s d ng Selection. this.tabIndex = 4. b n ch mu n ngư i dùng nh p s vào. 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 thành ph n u tiên. text4 thì chúng ta có th s d ng o n code sau: CODE text1. Dư i ây .setFocus(text1).tabIndex = 1. text3. B n có th h n ch nh ng ký t ư c phép nh p vào textfield b ng cách t giá tr c a thu c tính restrict c a textfield ó. o n code dư i ây s là m t ví d . b n s d ng m t l nh trong i tư ng Selection báo cho Flash bi t thành ph n m c nh ư c t focus CODE Selection. text2. Ví d trong ô năm sinh. B n có th s d ng l nh Selection.tabIndex = 3.addListener(this). Khi ngư i dùng chuy n focus sang m t thành ph n khác thì b n s bi t ngư i dùng chuy n n âu. text4. Nhưng n u thu c tính 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.May m n là chúng ta có th t l i Tab order cho các thành ph n b ng cách t l i thu c tính tabIndex.setFocus b t c lúc nào cũng ư c chuy n n m t thành ph n mong mu n. không c n ph i nh p ch . cũng có lúc b n mu n h n ch vi c nh p li u ó. } H n ch nh p li u Khi ngư i dùng nh p d li u vào m t textfield. CODE Selection. b n ph i t làm i u cũng không t này. text3. text2.onSetFocus = function(oldFocus. i u này s làm cho Flash b l n l n. N u chúng ta có 4 text field như hình trên: text1."+newFocus). newFocus) { trace(oldFocus+". làm ư c như v y.tabIndex = 2. N u không t giá tr thì textfield có th nh n t t c các ký t . vì th . Vi c này s r t quan tr ng.getFocus ki m tra xem thành ph n nào ang ư c focus.

T o 3 textfield cho các n i dung nêu trên.T o m t movie m i . text1.t o n code sau vào frame ch nh p li u CODE stop().c. b có th là tuỳ ý nhưng c ph i có ít nh t là 3 ký t và b t bu c ph i có ký hi u @.restrict = "01234567890". năm sinh. email. Còn email ít nh t ph i có 7 ký t và có d ng a@b. có th t thu c tính tr c ti p trong khung Properties CODE text1. B n cũng c n ph i t o m t dynamic textfield liên k t v i variable feedback. Nào. b t u nhé! .restrict = "01234567890". M t i u chú ý là c các ký t in hoa và in thư ng u ơc ch p nh n trong text2 B n cũng có th h n ch s ký t ư c phép nh p vào m t textfield. Cái này b n cũng có th không c n ph i dùng AS. yêu c u nh p vào tên. Năm sinh ph i có 4 s và ó là nh ng năm trong kho ng 100 năm trư c n nay. và userEmail. ngư i dùng ch có th nh p s mà thôi CODE text1. t các variable tương ng là userNameText.là m t ví d v h n ch nh p li u. ó là nh ng yêu c u cơ b n. Luy n t p: Ki m tra d li u nh p Bây gi chúng ta s làm m t chương trình g m m t form nh p li u. u tiên d ng l i và thi t l p các thu c tính h n // h n ch chi u dài t i a c a tên là 64 ký t . a. and userEmailText.-_".maxChars = 4. Movie c a b n s gi ng như hình dư i này nhé . Còn dư i ây là m t ví d n a n u ô nh p li u là email CODE text2.restrict = "abcdefghijklmnopqrstuvwxyz0123456789@. Và chúng ta s ki m tra các thông tin nh p vào này Tên ngư i dùng ít nh t ph i có 3 ký t . t tên là userName. userYearText. T o m t nút Submit. userYear.

ki m tra khi nào ngư i dùng ã nh p li u xong. userEmail.-_". n bi n . // năm sinh ph i có 4 s userYear.maxChars = 4.Ti p theo là t con tr vào text field userName lúc movie m i b t u CODE Selection.maxChars = 128. chúng ta s thêm m t listener b t event như o n code dư i ây CODE Selection. chúng ta s s d ng này sau CODE ignoreSetFocus = false.userName. CODE this.Ti p theo chúng ta vi t hàm onSetFocus b t event. .addListener(this).Ti p theo t giá tr c a bi n ignoreSetFocus là False. so ignore if (ignoreSetFocus) { ignoreSetFocus = false. } // use the appropriate check function if (oldFocus == userName) { ret = checkUserName(). } else if (oldFocus == userEmail) { ret = checkUserEmail().restrict = "01234567890". userYear.restrict = "abcdefghijklmnopqrstuvwxyz0123456789@. Nó s báo cho chúng ta bi t khi nào x y ra event onSetFocus . return(0). } else if (oldFocus == userYear) { ret = checkUserYear().onSetFocus = function(oldFocus. newFocus) { // this is a focus reset. // h n ch d li u email userEmail.setFocus(userName).maxChars = 64. } .

return(false). // n u năm sinh là trong tương lai :) } else if (parseInt(userYearText) > thisYear) { feedback = "B n ph i nh p úng năm sinh". return(true). Selection. . return(false).length < 3) { feedback = "B n ph i nh p ít nh t 3 ký t " return(false). } i Hàm checkUserYear s ki m tra năm nh p vào CODE // năm ph i t kho ng 100 năm n nay function checkUserYear() { // l y năm today = new Date().getYear().setFocus(oldFocus).if (!ret) { // ignore this focus change and go back ignoreSetFocus = true. t 100 năm trư c return(false). Hàm checkUserName s ki m tra tên ngư i dùng CODE // tên ph i có ít nh t 3 ký t function checkUserName() { if (userNameText. i s th nh t là textfield tr ơc khi chuy n focus và s th hai là textfield sau khi chuy n focus.". } // quay tr l i feedback feedback = "". } } Hàm này s nh n hai i s . thisYear = 1900+today.NaN) { feedback = "B n ph i nh p năm sinh. } n nay". // ki m tra ã nh p if (parseInt(userYearText) == Math. // n u năm sinh quá s m (không th t) } else if (parseInt(userYearText) < thisYear-100) { feedback = "B n ph i nh p úng năm sinh.

} else if (userEmailText. } else if (userEmailText. } Ti p theo là hàm chechUserEmail ki m tra email CODE // ki m tra email function checkUserEmail() { if (userEmailText.lastIndexOf(". . return(true).// quay tr l i feedback = "". Hàm sau s ki m tra t ng ô nh p li u. return(true).)".Th là ki m tra d li u ã xong. } // quay tr l i feedback = "". } else if (!checkUserYear()) { return(false). } return(true). n u m t trong nh ng ô trên sai thì s tr v k t qu false. } else if (!checkUserEmail()) { return(false).indexOf("@") == -1) { feedback = "Thi u ký t @". return(false).indexOf("@") > userEmailText.length < 7) { feedback = "Email quá ng n". } else if (userEmailText.")) { feedback = "@ và d u ch m không úng".") == -1) { feedback = "Thi u d u ch m (.length-3) { feedback = "Domain không h p l " return(false). return(false).indexOf(".") > userEmailText. return(false). } else if (userEmailText. còn úng h t s là true CODE function checkAll() { if (!checkUserName()) { return(false).indexOf(". } . Bây gi chúng ta s d ng các hàm này ki m tra d li u nh p vào và xu t ra k t qu . return(false).

frame th nh t. N u ý. H i u hành c a chúng ta và ngay c Flash u có m t h th ng menu trên u. khi ngư i dùng ư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 dùng ưa con tr chu t ra ngoài. frame th hai s ch a button About Us và 3 button còn l i.Bây gi chúng ta vi t code cho nút Submit. Chúng ta cùng xem nhé! CODE .S d ng button ng trong movie Cách làm m t menu ơn gi n Nh ng b n m i làm quen v i AS thư ng mu n bi t cách t o menu. Như v y. chúng ta ã t ng bi t qua r i. } } Gi th 16: Menu và button ng Menu h th ng ã r t quen thu c v i các chương trình máy tính hi n nay. khi ó thì s tr v frame 1. Frame th nh t s ch ch a button About Us. Menu là ưa ra nhi u l a ch n cho ngư i dùng mà l i ít t n di n tích màn m t cách t t hình.S d ng menu trong movie .Cách t o button ng . Chúng ta s dùng hàm hitTest ki m tra xem v trí c a con tr chu t có n m trong button không. Th t ra t o m t menu r t ơn gi n.Cách làm m t menu ơn gi n . CODE on (release) { if (checkAll()) { nextFrame(). ho c có th các b n không ý.T o m t menu x xu ng khi chúng ta click vào m t nút . và khi ngư i dùng ưa con tr qua button ó thì m t lo t nh ng button khác s xu t hi n l n lư t bên dư i button ó t o thành m t dãy menu. chúng ta s h c v : .} . các b n s th y cách này gi ng như chúng ta ã ư c h c Gi th 13 v RollOver. Trong gi th 16 này. Dư i ây là o n code x lý vi c này. Hình dư i ây là m t ví d Khi chúng ta ưa con tr ngang qua nút About Us thì m t lo t nh ng button khác s xu t hi n như hình bên ph i. chúng ta c n có 2 frame trong movie clip làm menu. Cách th c ho t ng c a nó là có m t button. Khi nh n nút Submit thì s g i hàm CheckAll và ưa sang frame ti p theo v i l i cám ơn.

gotoAndStop("off").Trong layer Buttons._ymouse. kéo thêm 3 button n a vào và t o n i dung cho chúng là History. kéo button v a t o vào. và Partners.T o m t button ơn gi n thôi. hãy ch c r ng b n ph i ưa menu lên trên cùng b ng cách s d ng hàm swapDepths Luy n t p: Làm m t menu Nào. Clients. . m i menu l i ch a nhi u menu con. . button này không nên có ch . frame u t tên là off. } onClipEvent(enterFrame) { // ki m tra v trí con tr currentlyOver = this.Trong frame th hai c a layer Buttons. m t là Label và m t là Buttons . và nh ch a ch tr ng chúng ta ưa ch vào sau .hitTest(_root. t dòng ch About Us lên trên . Products và Store. } } Hãy chú ý. } else if (previouslyOver and !currentlyOver) { previouslyOver = false.true). n u b n s d ng AS qu n lý nh ng thành ph n khác ơc t chung trong frame. // ki m tra s thay i if (!previouslyOver and currentlyOver) { previouslyOver = true._xmouse._root. this.onClipEvent(load) { previouslyOver = false. chúng ta b t tay vào làm th m t menu ơn gi n nhé! Menu chính c a chúng ta s có 3 ph n: About Us.Vi c u tiên là t o m t movie m i trong Flash .gotoAndStop("on"). T o hai layer. t tên là About Us Menu. Nh t câu l nh stop() vào frame u tiên. frame 2 t tên là on. this. Movie clip c a chúng ta bây gi s gi ng như hình bên dư i .Layer Label s tr i ra trên 2 frame. Nhưng 2 frame trong layer Buttons s khác nhau.T o movie clip m i.

Làm tương t cho các menu còn l i! T o m t menu x xu ng khi chúng ta click vào m t nút Có nhi u cách làm menu x xu ng.gotoAndStop("off").gotoAndStop("on"). và chèn o n code sau: CODE onClipEvent(load) { previouslyOver = FALSE. } onClipEvent(enterFrame) { currentlyOver = this._root. this.Bây gi hãy ch y th movie c a b n xem nào._xmouse. và cũng có nhi u cách menu ho t ng. khi ngư i dùng ưa con tr ngang qua m t button thì m t lo t button khác s xu t hi n d c bên dư i t o thành m t menu.Quay tr l i level root. Chúng ta ã bi t m t cách trong ví d ph n trư c. ơn gi n ch b ng 2 frame. this. ưa con tr vào button About Us xem i u gì x y ra! .hitTest(_root. aboutUsMenu.Ph n vi c còn l i là c a b n ó. Menu x xu ng s ho t ng theo m t cách khác: khi ngư i dùng click vào m t . kéo movie clip About Us Menu t Library vào._ymouse. } } t tên là . } else if (previouslyOver and !currentlyOver) { previouslyOver = false. if (!previouslyOver and currentlyOver) { previouslyOver = true.true).

Chúng ta hãy nghiên c u m x menu x xu ng này nhé! Chúng ta cũng s t o 2 frame như bài trư c. collapseMenu(). bây gi chúng ta s vi t các hàm này. } on (release.button. releaseOutside) { collapseMenu(). Tuy nhiên cách vi t code s khác i! ây là code cho button làm tiêu cho menu CODE on (press) { expandMenu(). } on (dragOut) { rollOutMenu(). mu n ch n menu nào thì th chu t t i menu ó. } Hàm collapseMenu() s làm ngư c l i CODE function collapseMenu() { expanded = false. khi ngư i dùng th chu t ra thì nó s g i hàm collapseMenu() Ngoài ra thì chúng ta còn s d ng các event on(dragOver) và on(dragOut). t chúng trên frame nhé! Hàm expandMenu() s t giá tr cho bi n expanded là true và nh y sang frame th hai CODE function expandMenu() { expanded = true. } Khi ngư i dùng click vào button thì nó s g i hàm expandMenu(). frame hai ch a các button x p d c xu ng thành m t h th ng menu khi tiêu c a menu ư c click. . gotoAndStop("on"). } Button tiêu ã g i 4 hàm expandMenu(). rollOutMenu(). hai event này cũng gi ng v i on(rollOver) và on(rollOut) nhưng mà ph i gi chu t trong khi di chuy n CODE on (dragOver) { rollOverMenu(). frame u ch a button là tiêu c a menu. rollOverMenu(). m t lo t menu s xu t hi n nhưng ngư i dùng ph i gi a chu t và kéo con tr ch n các menu con.

Chúng ta cũng vi t event on(dragOver) và on(dragOut) cho các button này gi menu l i khi ngư i dùng gi chu t và kéo qua các button cũng như s thu menu l i khi ngư i dùng th chu t ra ho c kéo ra ngoài. Còn có r t nhi u cách làm menu. nó g i hàm collapseMenu() r i th c hi n công vi c c a mình. Có nghĩa là khi ngư i dùng click chu t vào button tiêu thì menu s x xu ng và ngư i dùng ph i gi chu t trong lúc di chuy n ch n. } } function rollOutMenu() { if (expanded) { gotoAndStop("off"). Chúng u là các button. Khi ó. ây ơn gi n ch g i hàm trace. } Hàm rollOverMenu s ki m tra bi n expanded và s di chuy n n frame thích h p n u expanded = true. chuy n Track as Button thành Track as Menu Item. CODE on (release) { collapseMenu(). có nghĩa là ngư i dùng ch n menu ó. } } Chúng ta s vi t code ti p cho các menu x xu ng. } i u cu i cùng c n ph i làm là ph i thay i thu c tính cho các button. CODE function rollOverMenu() { if (expanded) { gotoAndStop("on"). và chúng ta s vi t event on(release) cho chúng b t s ki n khi ngư i ngư i th chu t trên button ó. trace("History Button Pressed"). n u th chu t ra thì menu s thu l i. } on (dragOut) { rollOutMenu(). Trong ph n khung properties c a button.gotoAndStop("off"). i u này s làm cho button nh n ư c s ki n release thay vì s nh n press trư c. nó ph thu c vào m c ích s d ng c a b n và kh năng s d ng AS c a m i ngư i Button ng .

như v y thì m i button có th g i m t hàm khác nhau. Ti p theo. movie clip này s có hai thành ph n. ho c chúng ta s lưu các tên button vào m t m ng r i dùng vòng l p for g i hàm createButton. Vi c này cũng r t ơn gi n. t o n code sau vào button CODE on (rollOver) { _parent. m t là button và hai là dynamic text trên button.buttonLabel).T o m t movie m i trong Flash .buttonLabel). bmc. } on (release) { _parent. V y làm cách nào làm cho các button có th x lý nh ng công vi c khác nhau? Button s g i nh ng hàm t ngoài root. buttonLevels++.T o button m u như trong ph n trư c. Trong c a s Library. } .M t cách khác cũng tương t làm menu x xu ng là s d ng button ng. x. t button vào trong m t movie clip. } ơc r i._y = y. i u này cũng có nghĩa là chúng s th c hi n nh ng vi c khác nhau Luy n t p: S d ng button ng t o menu . hãy th movie c a b n xem nào B n có th t o ra hàng lo t button ng b ng cách g i m t lo t hàm createButton. y) { this. Nh ch n m c Export for Actionscript và t tên cho nó là buttonMovieClip.buttonClickAction(thisAction. ơc r i. bây gi chúng ta ã có m t button m u. chúng ta . CODE function createButton(buttonLabel. N u vi t code ngay trong button thì các button s như nhau.buttonLevels).buttonRolloverAction(thisAction. và t l i v trí c a nó b ng cách t cách thu c tính _x. dynamic text s ư c liên k t v i bi n buttonLabel. _y. ti p theo chúng ta s s d ng AS s d ng button này.buttonLabel = buttonLabel. bmc = this["button"+buttonLevels]. thú v nh . click chu t ph i lên tên movie clip và ch n Linkage. s ư c t sinh ra b ng AS i u u tiên c n ph i làm là t o m t button m u."button"+buttonLevels. Nhưng có m t v n c n gi i quy t là làm th nào x lý riêng cho t ng button. Chúng ta có th làm m t menu x xu ng mà không c n ph i làm cách button trư c. bmc. return(bmc)._x = x.attachMovie("buttonMovieClip". bmc. chúng 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.

Hai i s c a nó s giúp báo button nào ư c click .Dư i ây là hàm createButton t o button ng.thisAction = buttonAction. nhưng l n này chúng ta s t o m t lo t button t m t m ng lưu s n CODE function createButton(buttonLabel. mainButtonList.y. x. buttons[i]. bmc.100."button"+buttonLevels. action:"aboutUsButtonList"}).mc = ret. bmc = this["button"+buttonLevels]. } // T o m t lo t button t m ng function createButtonList(buttonList. } else if (direction == "across") { x += 100.i u này có nghĩa là khi button s g i hàm buttonRollOverAction khi ưa chu t qua.Công vi c ti p theo là g i hàm createButtonList CODE buttonLevels = 1. bmc. và g i hàm buttonClickAction khi click chu t.attachMovie("buttonMovieClip"._x = x. buttonLevels++.buttonLevels). if (direction == "down") { y += 20.x.buttonLabel = buttonLabel. } } } . direction) { for (var i=0. mainButtonList. buttonList[i]. action:"productsButtonList"}). y. x. return(bmc). . bmc.Còn ây là cách t o m ng t o button CODE mainButtonList = new Array(). bmc._y = y.i<buttonList. y.push({label:"Products"."across").i++) { ret = createButton(buttonList[i].label.push({label:"About Us". createButtonList(mainButtonList. buttonAction) { this. mainButtonList.length.action).action:"storeButtonList"}).100. t o button .push({label:"Store".

120. storeButtonList. action:"goto"}).push({label:"Partners". aboutUsButtonList. action:"goto"}). storeButtonList.120."down"). aboutUsButtonList. } else if (thisAction == "productsButtonList") { deleteAllButtonLists().push({label:"Power Tools". createButtonList(productsButtonList. Bây gi chúng ta s vi t hàm buttonRollOverAction x lý CODE function buttonRolloverAction(thisAction.push({label:"Return Item".100. chúng ta ph i có o n code sau ch t ng menu n các m ng menu con CODE .push({label:"Find a Store"..push({label:"History".200. nhưng khi ưa sang Edit thì menu File s thu l i và menu Edit x xu ng… Trư c ó. có nghĩa là t t c các 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à thôi. aboutUsButtonList. action:"goto"}).300. } else if (thisAction == "storeButtonList") { deleteAllButtonLists(). action:"goto"}). action:"goto"}). storeButtonList = new Array().Hàm buttonRollOverAction g i hàm createButtonLists v i các m t trong 3 m ng ư c nh nghĩa dư i ây CODE aboutUsButtonList = new Array(). productsButtonList = new Array(). khi ưa con tr n menu File thì menu File x xu ng.push({label:"Toys". createButtonList(aboutUsButtonList.push({label:"Order Online". storeButtonList. action:"goto"}). productsButtonList. action:"goto"}). } } ."down").push({label:"Widgets".push({label:"Clients"."down"). productsButtonList.thisLabel) { if (thisAction == "aboutUsButtonList") { deleteAllButtonLists(). action:"goto"}).push({label:"Track Shipment". i s khác nhau là .N u b n th ch y movie lúc nào thì chúng ta s th y 3 button ư c t o nhưng mà s chưa làm gì khi ưa chu t ngang qua hay click vào.Hàm deleteAllButtonLists s làm bi n m t các button ã ư c t o. storeButtonList. action:"goto"}). createButtonList(storeButtonList. action:"goto"}). productsButtonList. action:"goto"}).120. storeButtonList. Hãy tư ng tư ng cái menu c a chúng ta trong Flash.push({label:"Request Catalog".

Trong gi th 17.i<buttons. chúng ta c n load m t trang web m i t movie Flash. Nó ư c s d ng làm trang ch ho c là t o nh ng thanh liên k t (navigation bar)… Cũng có lúc. allButtonLists = [aboutUsButtonList. 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: .Nh ng câu l nh c bi t cho nh ng application t ch y Load m t trang web Ngày nay thì Flash ư c s d ng r t nhi u trong các website.T o movie s d ng JavaScript . Browser Navigation and Communication Khi thi t k Flash. các b n s h c ư c: . B n th y sao? Tuy t v i ph i không nào Gi th 17: Liên k t và liên l c v i trình duy t. Cách ơn gi n B n có th load m t trang web m i b ng cách s d ng câu l nh getURL.productsButtonList.M m t c a s trình duy t m i t movie .S d ng JavaScript g i thông i p n movie .removeMovieClip().length. b n có 2 s lưa ch n. Nó ho t ng gi ng như th <a href…> c a HTML.i++) { deleteButtonList(allButtonLists[i]).Lưu thông tin ngư i dùng vào JavaScript cookies . N u b n nhúng vào m t trang web thì movie c a b n có th liên l c v i trình duy t báo cho trình duy t c n ph i làm gì.i<allButtonLists. Ti p theo chúng ta s vi t hàm deleteButtonList và deleteAllButtonLists CODE function deleteButtonList(buttons) { for (var i=0. } } Bây gi hãy ch y th movie c a chúng ta nhé.Cách load m t trang web .allButtonLists = new Array().i++) { buttons[i].storeButtonList].mc. có th nhúng vào m t trang web ho c làm m t application có th t ch y riêng.Tìm hi u cách liên l c v i JavaScript .length. } } function deleteAllButtonLists() { for(var i=0.

_parent : load trang web vào frame cha c a frame hi n t i . frame bên ph i s ch a n i dung. Không c n s d ng AS.yahoo._top : load trang web vào window cũ.html s ư c load. trang web m i s ư c load trong frame Main này CODE on (release) { getURL("summary.html". nhưng b n c n ph i có thêm nh ng ki n th c khác v HTML. Trong ví d dư i ây. trang này tên là . } B n cũng có th s d ng o n code trên load trang web vào window tên Main. Thanh liên k t c a chúng ta s t frame bên trái c a trình duy t.html"). Ngoài ra. chúng ta s truy n tên này vào i s th 2 c a hàm getURL. } ví d trên thì trang anotherpage."Main"). Chúng ta s nói v v n này sau Luy n t p: Làm thanh liên k t (navigation bar) Bây gi thì b n ã kh năng làm m t thanh liên k t b ng Flash s d ng AS. trong ó có frame tên là Main. Như chúng ta ã bi t thì m i frame và m i window u có tên. chúng ta cũng có th t o ư c liên k t như v y b ng cách t thu c tính hypertext links c a TextField.CODE on (release) { getURL("anotherpage. . trang web c a b n s có nhi u frame._blank : m m t window m i và load trang web vào window ó . B n có th thay b ng m t URL hoàn ch nh (như là http://www. cái này th t ra gi ng h t như là th <a href…> c a HTML Cách nâng cao Cách này b n cũng s d ng hàm getURL v i m t cách khác xác nh nơi s load trang web lên là trong frame nào ho c là trong window nào. Movie làm b ng Flash s ch a m t s button liên k t sang các trang web khác. không k ang frame nào mà s thay th t t c các frame trong window N u b n mu n thay i nh ng thi t l p c a window như kích thư c… thì b n ph i s d ng JavaScript. b n còn có th s d ng nh ng i s c bi t truy n vào thay cho tên: .u tiên chúng ta s t o m t trang HTML ch a 2 frame.com) liên k t n m t website khác ho c ư ng d n tương i liên k t n nh ng trang trong cùng m t website.

html" scrolling="auto"> </FRAMESET> </BODY> </HTML> .html CODE <HTML><HEAD> <TITLE>Flash Navigation Example</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> <FRAMESET cols="120. cao 400px.html.html.html.html.Ti p theo là ưa t t c các file vào m t thư m c. content1. Chúng ta chưa c n ph i làm trang HTML cho frame bên trái.html".fla .html. trong m i frame s ch a m t trang HTML khác.html. T o 3 button và vi t code cho các nút liên k t n 3 trang content1.html."content"). Còn trang HTML trong frame bên ph i s có nhi u thay i. content2. } .html. content3.Trang HTML trên ch t o ra 2 frame.Hãy m trang navigation. content2. T o m t movie m i r ng 100px. content2. navbar. content3.html ch a 3 dòng ch ơn gi n.swf.Lưu movie l i v i tên navbar. . CODE <HTML><HEAD> <TITLE>Content 1</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> Content 1 </BODY> </HTML> . and navbar.Bây gi là công vi c làm v i Flash. content3.html.html tương t như sau: CODE on (release) { getURL("content1. Bây gi chúng ta s t o 2 trang HTML ó. vì nó s ư c t o ra khi chúng ta publish movie thành HTML.Publish movie ra thành file html .*"> <FRAME name="navigation" src="navbar.html th xem nhé . Bây gi hãy t o 3 trang HTML ơn gi n tên content1.html" scrolling="no"> <FRAME name="content" src="content1. Các file ó s là: navigation.navigation.

Tuy nhiên. trong ó s có m t s ph n ch p nh n s liên l c. Hai tham s này s t tên cho movie c a chúng ta trong trang web JavaScript có th g i nó.swf"> <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#FFFFFF> <EMBED src="17astojs.0. N u b n t o file Flash b ng cách ch n FSCommand trong Publish settings. CODE <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download. M t là công ngh LiveConnect ư c xây d ng trong nh ng phiên b n trình duy t Netscape trư c phiên b n 6. Tham s ID trong th OBJECT s gi ng v i tham s NAME trong th EMBED.macromedia. cách này không ho t ng t t i v i t t c các lo i trình duy t. hãy chú ý n th OBJECT/EMBED.0. G i thông i p n JavaScript G i thông i p t ActionScript n JavaScript thì ch c n vi t code trong ActionScript nhưng nó cũng s thay i n i dung trang HTML c a b n . b n s t o ư c m t file HTML ã ư c s a ch a y nh n thông i p.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 liên l c ư c v i ActionScript. Như ví d trên thì tên hàm c a chúng ta s là . Công 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.0" ID=flashmovie WIDTH=120 HEIGHT=120> <PARAM NAME=movie VALUE="17astojs.cab#version=5. Nhưng n u b n ang thi t k cho ngư i dùng s d ng trình duy t c a Windows thì cách này s r t t t. Vi c liên l c này ư c xây d ng trên 2 công ngh .com/pub/shockwave/cabs/ [ic:cc]flash/swflash.swf" quality=high bgcolor=#FFFFFF WIDTH=120 HEIGHT=120 swLiveConnect=true NAME=flashmovie TYPE="application/x-shockwave-flash" PLUGINSPAGE="http: //www.macromedia. Công ngh th hai là ActiveX dùng liên l c gi a Flash và Internet Explorer.0 có th liên l c v i Flash b ng công ngh LiveConnect.cgi?P1_Prod_Version=ShockwaveFlash"></ EMBED> </OBJECT> Trư c o n code c a th OBJECT/EMBED s có m t o n script. hi u rõ hơn cách nó làm vi c như th nào thì chúng ta hãy cùng nhau m x file html mà Flash ã t o ra nhé u tiên. Ph n u tiên là m t hàm JavaScript v i tên c a movie ID trong th OBJECT và n i ti p v i _DoFSCommand.0.com/shockwave/download/ index. ó là tham s swLiveConnect cho phép nh ng phiên b n Netscape trư c phiên b n 6. Ngoài ra còn có m t tham s khác trong th EMBED.

write('<script LANGUAGE=VBScript\> \n').appName && navigator. } else { var flashmovieObj = document. Trong hàm này thì chúng ta s truy n d li u l i cho movie. } alert(command). document.write('</SCRIPT\> \n').appName. Không may là Netscape . args)\n').indexOf("Windows") != -1 && navigator.write('on error resume next \n'). o n code dư i ây ư c vi t b ng JavaScript thay cho o n JavaScript trên: CODE if (navigator. document. } </SCRIPT> V y còn ph n ActionScript ph i làm sao ây. Internet Explorer và Internet Explorer nhìn nh n movie c a chúng ta khác nhau nhìn movie v i tên truy n vào tham s ID (flashmovie).write('end sub\n'). args) { if (navigator. ByVal args)\n'). document.indexOf("Microsoft") != -1 && navigator.flashmovie. document.userAgent.indexOf("Microsoft") != -1) { var flashmovieObj = flashmovie. Hãy xem o n code dư i ây xem nhé: CODE <script LANGUAGE=JavaScript> function flashmovie_DoFSCommand(command. Flash không ch có th liên l c v i JavaScript mà còn có th li n l c v i VBScript.write('call flashmovie_DoFSCommand(command. document.").appName.flashmovie_DoFSCommand. alert(args). còn Netscape nhìn movie v i tên là document.indexOf("Windows 3.write('Sub flashmovie_FSCommand(ByVal command.1") == -1) { document. Xin tr l i là ch c n m t dòng duy nh t mà thôi CODE fscommand ("alert". "This is alert 1. } Trong Internet Explorer.userAgent.flashmovie. .

Hãy xem ví d này nhé. Vì v y. ."> </FORM> Ch c ch c n ây các b n ang t h i t i sao di chuy n sang frame th hai mà l i s d ng gotoFrame(1). Nhưng b n ph i nh r ng ã t tham s ID trong th OBJECT và tham s NAME trong th EMBED. Tuy nhiên chúng ta không c n ph i dành nhi u th i gian tìm hi u b i vì như ã nói trên thì cách liên l c này không ph i ho t ng t t i v i t t c các lo i trình duy t. s d ng JavaScript s có r t nhi u c i m m i và hay hơn. B n có th làm ư c i u này b ng cách s d ng hàm getURL ho c JavaScript. Play dùng play m t movie khi nó ang ng ng. b n có th t l i nh ng thu c tính c a window.html"). CODE <FORM NAME="flashControlForm"> <INPUT NAME="gotoFrame1" TYPE=Button VALUE="Frame 1" onClick="window. trong ví d này thì chúng ta s s d ng hàm gotoFrame di chuy n movie sang frame th hai.T o m t movie m i. Và cũng nh t swLiveConnect=true trong th EMBED. .Nh n thông i p t JavaScript Nh n thông i p t JavaScript thì có v d hơn. úng không nào? B i vì h m c a chúng ta b t u t s 0 (zero-based). frame 3 s là 2… Có hơn 24 câu l nh trong Flash movie. Luy n t p: M window m i Có l ây là m t yêu c u r t thư ng g p i v i nh ng ngư i s d ng Flash. Tuy nhiên. ch n publish ra file HTML cùng v i Flash movie. Bây gi thì ã s n sàng truy n thông i p t JavaScript cho movie r i. B n có th s d ng hàm GetVariable và SetVariable i u khi n nh ng bi n trong timeline c a movie. Nào. "content. Hai hàm isPlaying và percentLoaded dùng ki m tra movie nào ang ho t ng.flashmovie. } . frame 2 s là 1. Câu l nh Zoom dùng kéo dãn movie. frame 1 s là 0.document. cùng làm th nhé: .t vào movie m t button. nh t gi ng tên nhé. .Trong ph n Publish Settings.GotoFrame(1).Chèn o n code sau cho button v a t o CODE on (release) { fscommand ("newwindow".

M file HTML mà Flash v a t o b ng m t trình so n th o nào cũng ư c.newWindowMovie.Bây gi hãy quay tr l i file Flash c a b n. s d ng getURL . kích thư c 320x240. i u quan tr ng là c n ph i cho Flash bi t lúc nào s d ng Flash. } .toolbar=no. .V y còn i v i nh ng trình duy t không h tr JavaScript thì sao? ơn gi n thôi."". N u trình duy t có h tr JavaScript thì jsCommOK s mang giá tr OK còn n u không thì bi n jsCommOK v n là undefined. không có toolbar. .html .open(args. lúc nào s d ng JavaScript. chèn o n code JavaScript sau vào cu i o n code ta ã chèn vào lúc trư c CODE function initComm() { window.document. } o n code trên s th t giá tr cho bi n jsCommOK là OK. menubar=no").Publish movie c a b n. như NotePad ch ng h n."OK"). Quay tr l i file HTML mà Flash ã t o.height=240.location=no.M file HTML c a b n ra trong m t trình duy t và nh là trình duy t ó ph i h tr JavaScript ó nha. ."width=320."> i u này có nghĩa là hàm initComm s ư c g i ngay sau khi trang này load xong. ch y hàm initComm u tiên thì b n s a l i ph n BODY c a trang HTML như sau: CODE <BODY bgcolor="#FFFFFF" onLoad="initComm().T o thêm m t file HTML ơn gi n n a và t tên là content.Trong ph n HTML. Hãy tìm ph n chèn JavaScript. Khi nh n vào button thì m t c a s m i s xu t hi n. nh ch n vào m c Flash with FSCommand . và chèn o n code sau vào: CODE if (command == "newwindow") { window.SetVariable("jsCommOK". s a o n script c a button thành: CODE .

"> <INPUT NAME="prev" TYPE=Button VALUE="Previous" onClick="prevFrame(). . window. C hai hàm s s d ng TcurrentFame(“/”)bi t ang frame th m y.on (release) { if (jsCommOK == "OK") { fscommand ("newwindow".T o m t movie Flash m i v i 3 frame ho c nhi u hơn. "_blank").document. b n mu n gì trong ó cũng ơc nhưng m t l i khuyên là m i frame nên khác nhau chúng ta theo dõi s thay i . CODE <script LANGUAGE="JavaScript"> function nextFrame() { var frameNum = window.t câu l nh stop() vào frame u tiên .Nh t swLiveConnect=true trong th EMBED . } } Luy n t p: T o m t SlideShow ư c i u khi n b i JavaScript Trong ph n này.GotoFrame(frameNum-1). N i dung c a m i frame thì không quan tr ng.document.slideshow.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(). } else { getURL ("content.GotoFrame(frameNum+1).slideshow.Publish ra file HTML .html").TCurrentFrame("/").document. chúng ta s cùng nhau làm m t file Flash không có ActionScript mà s ư c i u khi n b ng JavaScript.Truy n tham s ID trong th OBJECT và NAME trong th EMBED. "content. } function prevFrame() { var frameNum = window.TCurrentFrame("/").M file HTML ó ra trong trình so n th o văn b n .slideshow.slideshow.M i button s g i m t hàm. window.html".document. r i s d ng gotoFrame di chuy n t i ho c lui."> </FORM> . c hai s mang giá tr là slideshow . } .

S d ng Flash g i d li u v cho Server i tư ng LoadVars R t may m n là chúng ta ã có Flash MX. Thay vì s d ng new Object() b ng new LoadVars. chúng ta s d ng câu l nh load. Cái chúng ta c n ây là m t ư ng d n n nơi ch a d li u: CODE myVars. b i vì trong nh ng phiên b n Flash trư c ây. Trong gi th 18. mu n làm i u này thì chúng ta ph i làm nh ng movie clip r t khó khăn.load("myURL. Sending Information to the Server Cho n t n bây gi .</SCRIPT> Công vi c ti p theo b n còn nh không: CH Y TH i nào Gi th 18: G i thông tin cho máy ch .T o m t chương trình server-side ơn gi n . V y thì trong gi th 18 này. nh ng movie chúng ta làm ư c h u h t là ch ch y m t mình (stand alone). ó là g i và l y d li u. chúng ta s h c: . iv i Flash MX. CODE myVars = new LoadVars(). .Tìm hi u v i tư ng LoadVars . Có nghĩa là nó ch ch y m t máy khách (client-side) không có s liên l c v i máy ch (Server).txt"). i tư ng LoadVars bao g m m t t p h p các câu l nh và nh ng bi n c bi t g i d li u cho Server gi ng như post form trong HTML. l y d li u. V i i tư ng LoadVars. chúng ta có th s d ng i tư ng LoadVars. chúng ta có th làm ư c 2 vi c. Chúng ta có th t o i tư ng gi ng như t o nh ng i tư ng khác. chúng ta s tìm hi u v v n này. Hãy xem gi th 12 nhé! L y d li u Dư i ây là m t ví d . Sau ó thì i tư ng LoadVars m i s ư c t o. Nên nh r ng Flash cũng có th g i tr thông tin cho Server gi ng như form c a HTML.

chính xác là n chương trình CGI tên là echo. r i sau ó s d ng câu l nh send g i d li u i. mySendVars. Trư c h t. myVars.sendAndLoad("serverprogram. sau ó s l y giá tr tr v .cgi". Có th ph i i trong m t th i gian ng n ho c dài.name = "George". g i d li u i lên Server. chúng 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.Ví d trên ho t ng gi ng như câu l nh LoadVariables trong gi th 10.name = "George". Sau ó. mySendVars. chúng ta ưa d li u vào i tư ng LoadVars. myVars.send("serverprogram. chúng ta cũng có th g i d li u i lên Server. Có nghĩa là i tư ng LoadVars s g i d li u lên Server. Hãy tư ng tư ng.ID = 47. CODE mySendVars = new LoadVars(). Nhưng còn m t câu l nh n a là sendAndLoad. Câu l nh này ư c ghép câu l nh send và load. myVars. CODE myVars = new LoadVars(). _self là Target. o n code trên s t o m t i tư ng LoadVars m i tên là myVars. câu l nh LoadVariables ch l y và thay th d li u trong cùng m t level v i câu l nh này mà thôi. myLoadVars). Tuy nhiên. Tr ng thái l y d li u Hãy nh là câu l nh send và load s không l y d li u ngay t c thì. myLoadVars = new LoadVars(). r i ưa hai thu c tính vào i tư ng myVars. Vì v y. chúng ta có th thay th b ng các giá tr khác như ã ư c bi t. mySendVars.cgi. Câu l nh send cũng ho t ng tương t như trong form c a HTML.ID = 47.cgi". chúng ta s có nhu c u theo dõi tr ng thái . "_self").

.l y d li u.) V i Flash MX. } else { gotoAndStop("load problem"). b n có th d dàng truy c p ư c d li u tr trong XML. Tuy nhiên. còn XML thì không.. mà c n ph i ki m tra xem ã l y d li u xong chưa.onLoad = function(success) { if (success) { gotoAndStop("load done").. V i XML. i Trong VNFX có r t nhi u bài vi t v XML (ví d như bài gi i thi u XML c a FlashLee) các b n có th tham kh o thêm . phù h p cho m c ích Có th t o m t XML file v i 1 trình biên t p văn b n (như Notepad. Chúng ta không th s d ng d li u ngay l p t c sau câu l nh load ho c sendAndLoad. b n có th t t o cho mình các th theo ý b n riêng c a b n. và ngay c trong Flash. } } Như trong o n code trên 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 chưa Gi th 19: Dùng XML v i Flash Càng ngày XML càng tr nên thông d ng trong các ng d ng tin h c. Epic . Dư i ây là ví d ki m tra vi c l y d li u: CODE myLoadVars.) ơn gi n hay là các software chuyên vi t v XML (XMLSpy.. Cũng có th s d ng getBytesLoaded và getBytesTotal v i nh ng d li u l n. và tư ng XML c a Flash s t ng phân tích văn b n XML này. v y trong gi này mình s h c các i u sau: • • • XML căn b n i tư ng XML trong Flash Phân tích và x lý XML theo phuơng pháo quy (recursive) XML Căn b n XML ch ơn gi n là m t văn b n ch a d li u. Cách ơn gi n nh t là dùng m t movie clip l p i l p l i ki m tra. Textpad . XML tương t như HTML. cũng dùng các th . XML khác HTML là các th HTML ã ư c n nh trư c cho các ch c năng khác nhau.

-9 có nghĩa là thi u th óng (end tag). N u chúng ta i xâu vào 1 l n n a v i firstChild . CODE myXML = new XML("<user><name>Gary</name><ID>47</user>"). Ví d . và 0 có nghĩa là m i vi c hoàn ch nh L y d li u t i tư ng XML l y nút (node) Có nhi u hàm làm vi c này. Vì ây chính là nút u tiên c a i tư ng XML. Output window s cho ra -9 khi ch y o n code trên. vì mình thi u th </ID>. hi n gi phiên b n này v n chưa có gì c . trace(myXML. Output window s cho ra <user><name>Gary</name><ID>47</ID></user>.status). Bư c u tiên khi dùng i tư ng XML là t o m t phiên b n XML trư c: CODE myXML = new XML() Phân tích và s lý văn b n thành XML Sau khi t o phiên b n XML trên. trace(myXML. b n có th dùng firstChild u tiên c a i tư ng XML: CODE myXML = new XML("<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 output window cho ra -10 thì b n thi u th m (start tag). L nh này s nh p m t chu i văn b n.parseXML("<user><name>Gary</name><ID>47</ID></user>"). N u mà chu i ư c nh p vào không th t o thành XML hoàn ch nh thì b n có th dùng c tính status ki m tra.firstChild).i tư ng XML i tư ng XML trong Flash g m có nhi u hàm v c tính dùng giúp b n l y và phân tích d ki n trong XML file m t cách d dàng. và phân tích và x lý nó thành 1 tài li u XML. myXML. CODE myXML = new XML(). tuy nhiên b n có th nhanh chóng t o ra m t tài li u XML b ng cách dùng l nh parseXML.

trace ("myVar2: " +typeof(myVar2)).childNodes[0]).nodeValue).childNodes[0]. myVar1 = myXML. là ma tr n c a c a các nút. và có th dùng cách trên l y nút ó: CODE myXML = new XML("<user><name>Gary</name><ID>47</ID></user>").childNodes[0]. trace(myXML. nhưng n u b n mu n l y giá tr c a nó như là chu i văn b n thì b n có th i thêm 1 bư c n a như sau: CODE myXML = new XML("<user><name>Gary</name><ID>47</ID></user>"). trace(myXML. Nhìn thì tư ng ây là t n cùng r i.childNodes[0]. Kỳ này output window s cho ra <name>Gary</name>.childNodes[0].nodeValue. và output window s cho b n th y rõ. còn 1 cách n a là dùng childNodes.childNodes[0]. n u b n ch dùng childNodes thì k t qu s là 1 i tư ng.childNodes[0]. không th xu ng sâu hơn ư c n a. Dư i nút name.childNodes[0].childNodes[0].childNodes[0]. ây là nút văn b n (text node) c a nút name. còn n u b n dùng nodeValue thì s ra chu i.firstChild.childNodes[1]. trace(myXML.childNodes[0]). chúng ta còn m t nút n a dư i nút name. . vì ph n t name là nút u tiên c a user Ngoài cách trên ra. cái nào law i tư ng và cái nào là chu i. * gi i thích thêm v o n code trên. trace(myXML. Cùng m t ví d trên nhưng có th dùng như sau v i chidlNodes CODE myXML = new XML("<user><name>Gary</name><ID>47</ID></user>"). trace ("myVar1: " +typeof(myVar1)).firstChild).childNodes[0]. vì ây là nút cu i cùng. và output window s cho ra ch Gary. B n có th th b ng o n code mình vi t dư i ây CODE myXML = new XML("<user><name>Gary</name><ID>47</ID></user>").childNodes[0].CODE myXML = new XML("<user><name>Gary</name><ID>47</ID></user>"). N u b n mu n l y cái ID trong nút th 2 thì thay i như sau: CODE myXML = new XML("<user><name>Gary</name><ID>47</ID></user>"). trace(myXML. myVar2 = myXML.childNodes[0].nodeValue).childNodes[0].childNodes[0].

CODE myXML = new XML(). c 2 ch này ti ng vi t u d ch là thu c tính.appendChild(newText).createTextNode("Gary"). ("alias" là bí danh) CODE <user> <name type="alias">Gary</name> <ID>47</ID> </user> .childNodes[0].childNodes[0]. minh ho . c tính . Trong ây mình g p r c r i v cách d ch attribute và property.childNodes[0]. ành d ch như trên v y. Các cách t o XML trên u t 1 chu i văn b n. Ví d .appendChild(newElement). newText = myXML. N u b n mu n thay i giá tr c a text node. myXML. v y b n ph i thêm nó vào b ng l nh appendChild.childNodes[1]. nhưng n u như b n không có 1 chu i văn b n nào trư c thì sao? B n có th dùng createElement t o ra các nút m i và dùng createTextNode t o ra các text node.. myXML.appendChild(newElement).createElement("name").createElement("user").childNodes[0].createTextNode("47"). Thu c tính Các thành ph n c a XML có th có thu c tính (attribute).. Tuy nhiên 2 l nh trên ch t o ra nút ch không thêm vào trong XML.childNodes[0]. myXML.nodeValue = 53. newElement = myXML. thì b n ch c n dùng nodeValue CODE myXML. Attribute g m có t khoá và giá tr c a t khoá ó.childNodes[0].appendChild(newElement). myXML. myXML. chúng ta s t o m t XML tương t như trên nhưng v i các l nh v a c p.childNodes[0]. newText = myXML.T t o XML t "tay tr ng" Không bi t d ch câu này sao cho úng nghĩa v i "Creating XML from Scratch".appendChild(newText).childNodes[1].createElement("ID"). newElement = myXML. o n XML dư i dây v i attribute type làm rõ nghĩa c a thành ph n name hơn. và dùng nh rõ m t thành ph n hơn. newElement = myXML. mà ti ng anh thì khác th t r c r i v y mình xin ư c dùng ti ng Anh nhe.

V i câu trên.nodeValue.type). } output window s cho ra: alias và verified Thêm vài AS v XML B n cũng c n bi t thêm m t s i u v i tư ng XML. thisUserNameText = thisUserName.childNodes[1].childNodes[0]. n u attribute type chưa có thì nó s ư ct o (trong sách các o n code trên tác gi vi t l n gi a type và alias.childNodes[0]. .childNodes[0].childNodes[0]. Nh t là i m sau.attributes. CODE myXML = new XML("<user><name type='alias' validity='verified'>Gary</name> <ID>47</user>").attributes[attr])..childNodes[0].attributes) { trace(attr+": "+myXML. v y các b n c n ki m tra l i) Khác v i node. thisUserID = thisUser.childNodes[0].childNodes[0]. thisUser = myXML.nodeValue.childNodes[0].childNodes[0].attributes["type"]). Còn m t cách n a cũng cho ra k t qu như trên là dùng [] CODE trace(myXML.attributes["type"] = "real". thisUserIDText = thisUserID. in truy c p t ng attribute c a node.childNodes[0]. hay thêm attribute m i như sau: CODE myXML..childNodes[0]. Nhưng b n có th dùng vòng l p for .N u b n mu n ưa o n code trên vào trong XML object thì ph i kép) thành d u ' (ngo c ơn) CODE trace(myXML. b t c m t ph n nào c a i tư ng XML cũng có th là m t i tư ng XML riêng bi t. Ví d b n có th l y cái node u tiên c a i tư ng XML và quy thành m t bi n CODE myXML = new XML("<user><name>Gary</name><ID>47</user>"). n u b n so sánh gi a sách và bài này thì s th y s khác bi t. và có th các source file cũng s không chính xác. for(attr in myXML. attribute không th truy c p b ng ma tr n (array) nên b n không th dùng các l nh như length hay dùng [] v i index number. Và b n có th thay i d u " (ngo c i giá tr c a attribute.childNodes[0].childNodes[0].childNodes[0]. thisUserName = thisUser.

b n có th t ư c nhi u ký hi u trên nhi u frame. trace(myXML. Chú ý r ng. in n là m t cách mà FLash truy n d li u ra ngoài. 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>").H c cách thi t l p movie c a b n cho vi c in n .childNodes[0]. b n có th bí t ư c tên c a thành ph n (hay th ) v i nodeName.length). Th t không may. 2 . t ng frame m t. Ví d . N u ký hi u ó không ư c t lên frame nào thì Flash s in ra toàn b movie c a b n. trace(myXML. Nhưng hi m khi b n mu n in h t toàn b . . Có khi b n ch mu n in duy nh t frame hi n t i.childNodes. Ví d b n có th l y ư c tên c a thành ph n (th ) u tiên c a user là name như sau: CODE myXML = new XML("<user><name>Gary</name><ID>47</user>"). Gi th 20 : Printing Không ph c t p như trình duy t ho c Server Cominucation. Theo cách ó. Trong gi th 20 này chúng ta s : . Flash s in ra toàn b n i dung c a movie. N u nodeType là 1 thì có là 1 thành ph n c a XML và có th có nhi u thành ph n trong node ó.nh ng l nh in này không ư c linh ho t l m. Kh năng in n c a FLash là r t h u ích vì nó cho phép chúng ta xây d ng nh ng văn b n mà ngư i s d ng có th in ra n i dung t file flash c a b n. Và nó cũng thu n ti n hơn khi b n không mu n s d ng ký hi u "#p" như m t label th t cho keyframe. Hình 1 cho ta th y timeline v i hai frame ã ư c t ký hi u in. t t c nh ng frame có chưa ký hi u in này s ư c t m t layer riêng. n u b n t t hai ký hi u tr lên trong movie c a b n thì flash s in ra t t c nh ng frame ó. ho c m t frame b t kỳ trong m t movie riêng. ho c m t o n g m nhi u frame. Ngoài vi c có t h tìm ư c giá tr c a m t node văn b n b ng nodeValue. Và ó thư ng là i u mà b n không mu n. n u là 3 thì node ó chính là node văn b n. ây thư ng là l a ch n t t hơn d a vào hàm in n c a trình duy t .t tên cho frame B n s ch nh nh ng frame ư c in b ng ký hi u "#p" .childNodes[0].B n có th bi t ư c s node trong trong m t node khác b ng thu c tính length c a childNodes.H c cách s d ng các l nh in . user node có 2 node trong. N u s d ng chúng mà không có s chu n b .childNodes[0].T o ra m t bi u m u có th in ư c I> Thi t l p cho movie có kh năng in: 1-B n c n làm m t vài vi c v i movie trư c khi có th s d ng ư c các l nh in c a Action Script.nodeName). Ngư c l i. B n có th bi t ư c m t node là thành ph n c a XML hay là m t node văn b n (text node) b ng v i thu c tính nodeType.

Frame th hai này s ư c d t nhãn là "#p" B n có th b trí b ng cách s d ng timeline chính.*Chú ý: Khi b n t t hai ký hi u in tr lên. Flash s xu t hi n l i c nh báo : "WARNING : Duplicate layer. mà c n có trong n i dung c a bi u m u in.. và m t frame khác tương t nhưng không có nút Print cũng như các y u t khôgn c n thi t khác.Lên k ho ch in B n c n ph i suy nghĩ và lên k ho ch cho movie c a b n khi mu n movie có kh năng in. NÓ ch a n i dung. Chú ý r ng m i th t n t i trên movie c a b n s ư c in ra. n u trong movie có t n t i. Ví d b n có m t menu và m t nút Prin trên hai layer riêng bi t..." ó là i u r i ro có th x y ra. Vì không th ch in m t frame hi n t i nên b n c n t o ra nh ng frame có kh năng in. 3. nhưng cũng s không nh hư ng n movie c a b n tr phi b n s d ng label "#p" trong câu l nh "gotoAndStop" ho c nh ng l nh tương t . nút Print và menu . Hình th nh t.là frame mà ngư i dùng s th y xu t hi n trên trang web. Nó bao g m c nút Print ( khi nh n vào s th c hi n l nh in). Vì v y chúng ta c n ph i có m t frame ch a nút Print. khi test movie. Nh ng layer này n u b n không mu n in ra thì không c n kéo chũng sang frame có nhãn "#p" hai hình sau th hi n i u này..

có th thêm vào frame này m t s thông tin s ư c in ra như a ch .. Ngoài vi c ch n nút Print không oc in ra.. ít nh t là trên màn hình. trong hình hai là n i dung mà ngư i duy t web không th y ư c.Layer Buttons không s d ng keyframe gi ng như frame 1. Frame này ư c t tên là "#p" b n có th th y trên timeline. .Ngư c l i. .

ho c "_root". Chúng có m t khác bi t r t nh .Bây gi b n ã bi t làm th nào AS c n thi t chu n b cho m t bi u m u in. nhưng v căn b n là ho t ng gi ng nhau. n u b n không mu n in nh ng frame trong movie. Thương là timeline chính. b n có th s d ng tham chi u t i movie ó. Tuy nhiên. 1. bây gi cùng h c Có hai l nh in chính ư c s d ng. B n cũng có th s d ng "this".Print L nh th nh t là QUOTE Print L nh này bao g m hai tham s . Tham s th nh t là i tư ng in. Tham s th hai là m t trong ba tuỳ ch n sau : QUOTE bframe II> Các câu l nh QUOTE bmovie .

Frame khác ch có kích thư c 275x200. khi s d ng tuỳ ch n "bmax". t ng frame s t scale l p y kích thư c c a trang ó. i u khác bi t là l nh Print s g i các i tư ng ho và font ch t i máy in. Khung này s xác nh kích thư c l n nh t ư c in ra i v i văn b n (b ng kích th oc c a khung). PrintAsBitmap s chuy n toàn b n i dung thành m t nh bitmap l n và g i t i máy in. và nó l p y trang in. B n ph i t tên frame này v i ký hi u "#b". Khi s d ng tuỳ ch n "bframe". Sau ó. ng th i nó cũng ho t ng t t v i nhi u lo i máy in hơn. ó là t o ra frame m i có chưa m t khung. Và flash s s d ng kích thư c c a khung scale toàn b các frame còn l i. L nh in chính là văn b n ư c in ra có tính th m m cao. Tuỳ ch n cu i cùng là "bmovie". Sau ây là ví d v l nh "Print" : QUOTE on(release) { print(this. tính theo t l . nó ch chi m m t n a trang in. . thì chi u ngang s ư c phóng to t i kích thư c 550px chi u d c có th s ư c scale theo t l . Các frame còn l i s scale d a trên kích thư c c a frame l n nh t. máy in s xây d ng l i các vector và n i dung in ra. i u này ta nên các frame có kích thư c t l v i nhau Ví d . Nó cũng nhanh hơn khi in qua m ng. frame l n nh t có kích thư c 550x400. N u frame th nh t có n i dung v i kích thư c là 550x400 nhưng frame th hai ch ch a n i dung có kích thư c 275x200. Ví d n u frame ư c in có kích thư c 550x400. Flash s ki m tra toàn b các frame ư c in xác nh xem frame nào có kích thư c l n nh t. tuỳ ch n ư c coi như m t chu i và ư c t trong d u "" 2-PrintAsBitmap Câu l nh này làm vi c tương t như l nh Print v i hai tham s tương t ."bframe"). Flash có th co dãn văn b n in t i kích thư c c a trang gi y mà không bóp méo văn b n. } Như b n ã th y. Ngư c l i. trư ng h p này b n c n ph i làm thêmm m t vi c nh n a. ư ng cong smooth hơn và ch rõ ràng hơn khi ư c in ra. N u có m t ph n văn b n này n mg ngoài khung in chúng s không ư c in ra. i m thu n l i nh t c a PrintAsBimap là trong su t c a văn b n cũng ư c in ra. khi ó frame th hai s t ng scale g p ôi kích thư c ban u. ch c có ưu i m ch n b n s c n n ch c năng in này. N u b n có m t i tư ng ho bán trong su t.QUOTE bmax Các tham s này giúp FLash có th co dãn văn b n in theo ý c a ngư i s d ng.

Chú ý: N u b n sưe d ng movie qua internet.T o ra các trư ng nh p d li u (ví d tên.) (xem .. email. 1. vì v y nh ng th linh tinh trên trang web có th ư c b qua và nh ng y u t m i như email address có th ư c thêm vào. Chúng ta ang s d ng máy tính. l nh in ch làm vi c khi t t c các frame trong movie ư c load xu ng. i n vào. t nhiên l i ph i i ki m cái bút trên bàn vi t ? Vì v y t i sao chúng ta không t o ra bi u m u cho phép i n thông tin vào. gi i tính. và s th y chúng thu n ti n hơn r t nhi u so v i m t biêt m u html yêu c u ngư i s d ng in ra toàn b n i dung c a site.Nguyên tác 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 trên màn hình. Chúng ta s làm ví d ơn gi n này. r i g i i . tu i.. B n hoàn toàn có th i khi n nh ng gì s ư c in ra. Thao tác : T o bi u m u in M t i u mà ngư i dùng ghét nh t trên m t website là m t bi u m u mà chúng ta ph i in ra. S dung Print khi văn b n không c n chính xác cao ho c khi b n xây d ng movie i u khi n môi trư ng như m ng n i b . sau ó ư c in ra v i y n i dung ã ư c nh p vào. hình) sau ó t tên layer này là CONTENT a ch .T o m t movie m i 2.

kéo Title Bar và Content sang frame 2 T o blank keyframe cho layer Buttons và Titles. } này s ư c t hai layer riêng 7. n u frame th nh t là "Fill out that application" thì frame th hai ch c n là Appilcation .Trong frame th hai c a layer Title. 5-T o nút Print và t trong layer tên là Buttons 6-CHèn o n mã sau cho button : QUOTE on (release){ print (this. Ví d . Chú ý.Thêm Frame th hai cho movie. "bmax").hai lo i tiêu bi t . vì chúng s có n i dung khác trong frame th hai 8.t tiêu cho trư ng lên phía trên ô nh p li u 4-T o thanh tiêu cho Form.3. t m t tiêu khác.

Tóm t t . Keyframe th nh t chèn code QUOTE stop(). và n nút Print. Keyframe th 2. Tiêu cũ s bi n m t.9.. N u làm úng thì frame 1 c a layer này s không có gì. t trong ó hai keyframe. Test movie c a b n. i n vào. B n hãy i n vào bi u m u ó. n i dung ch t n t i frame 2 11..Thêm m t layer m i tên là Signature. bi u m u ã s n sàng th y tiêu m i trong hình. ch ký. và a ch .Sau ó.. b n có th nhìn 10. t m t keyframe frame th hai c a layer này.Thêm layers tên Frame Labels . chúng ta t ký hi u "#p" . Thêm ư ng ngăn cách và a ch trong frame này. Frame th hai s ư c in ra v i tiêu "Application".

vì th chúng cũng không nh hư ng m y n công vi c c a b n. Hàm này ch g i m t vài dòng text ra c a s Output: ActionScript function buttonPressed(buttonInstance) { if (buttonInstance == testButton) { trace("Test Button Pushed. Hàm này ph i n m trong cùng Timeline v i nút. Khi ó b n ã thêm m t s ph n t Library vào trong movie. B n có th trang trí tuỳ thích i v i bi u m u ư c in ra. } else { . R t may là các ph n t này ư c c t trong các folder r t g n trong Library (thư vi n). b n có th s d ng l nh PrintAsBitmap Gi th 21: S d ng component. Component PushButton trên stage trông r t ơn gi n: ch là m t khung v i t "PushButton" gi a. Ta thi t t Click Handler thành buttonPressed (nút ã ư c nh n). b n có th click úp lên component trong b ng Component. n u c n in nh ng i tư ng ho bán 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. Hai thông s có th thi t t cho component PushButton là Label (nhãn): ta i thành Press Me ! và Click Handler (qu n lý s ki n nh n nút): ây là tên c a hàm ư c g i khi nút ư c click. hàm ph i trên Timeline chính. B n có th t tên cho m t ho c nhi u frame trong cùng m t movie. ScrollPane. vì th n u nút t level g c (root level). B n nh b t tính năng Live Preview (xem trư c) c a Flash b ng cách ch n Control-->Enable Live Preview. ListBox. ho c nh n và kéo m t component vào stage. B n có th s d ng l nh "Print" in các frame s d ng vector shape g i t i máy in. thêm m t component vào movie c a b n. b n có th click ch n nó và m b ng Properties i tên. ScrollBar.in ư c các frame trong m t movie b n c n ph i t label cho chúng là "#p". Tuy nhiên. Dư i ây là m t ví d ơn gi n. RadioButton. M i th trong frame "#p" s ư c in ra. PushButton Click và kéo component PushButton vào stage s t o m t instance (th hi n) m i c a component PushButton trên màn stage. Ngoài ra b n t cho component m t instance name (tên minh h a) là testButton (ki m tra nút). PushButton. ComboBox. tr nh ng y u t như menu. Sau khi PushButton ã trên stage. Bây gi t t c công vi c ph i làm là vi t hàm buttonPressed."). Using component ActionScript cho các Component i kèm Flash Có 7 component g n li n kèm theo chương trình Flash: CheckBox.

Hàm này s ư c th c thi khi nào m t trong các h p ki m CheckBox ư c click vào. B n có th xem ví d m u này trong movie 21pushbutton.fla. tôi ã t o 3 h p ki m (CheckBoxes). và Option Three. ActionScript function changeOptions(checkBoxInstance) { trace(checkBoxInstance. Trong ví d movie 21checkboxes. Right là s p x p m c nh. t o m t instance th hai. tùy thu c vào vi c b n mu n h p ki m ban u ư c ánh d u hay không. N u b n chuy n thành left. Hàm này s l p i l p l i v i t t c các CheckBox và g i tr ng thái c a chúng ( ư c ánh d u hay chưa) ra c a s ._name). Thông s Change Handler c a m i instance ư c i thành changeOptions. click úp vào nó trong b ng Components. Option Two. B sung vào các thông s Label và Change Handler. Thông s Label Placement cho phép b n s p x p các nhãn bên ph i ho c trái (right ho c left) so v i ô ki m. Trong movie m u. dòng ch ghi nhãn c a h p ki m s xu t hi n bên trái c a ô. Tôi cũng t nhãn (label: ph n text bên c nh ô ki m) là Option One. Tôi t hàm changeOptions trong timeline chính. và option3.trace(buttonInstance. Nó s g i tên và tr ng thái m i c a CheckBox ra c a s Output. Hàm ví d trên s chuy n thông báo "Test Button Pushed" n u nút ư c nh n là testButton. gi ây b n có c Initial Value (giá tr ban u) và Label Placement (s p x p nhãn). N u b n ch n m t component trong chúng và m b ng Properties. } Trong 21checkboxes. b n s th y nó có nhi u thông s hơn so v i component PushButton. ho c click và kéo nó lên trên stage. tôi t tên cho 3 instance CheckBox là option1.getValue()). Vì th b n có th ki m tra instance này có ph i có tên là testButton hay không. } } M i hàm qu n lý nút s chuy n m t tham s : m t tham chi u n nút g i hàm. CheckBoxes Component CheckBox (h p ki m) tương t như cái mà chúng ta ã t o em d ch sau nhé). option2. gi 15 (anh t o m t CheckBox component. m folder Flash UI Components trong thư vi n Library và kéo component CheckBox lên trên stage._name+": "+checkBoxInstance.fla.fla. tôi cũng thêm vào m t component PushButton. Nút này ư c t tên là doneButton và s g i hàm buttonPressed. và in ra tên minh h a c a nút n u nút b nh n không ph i là testButton. Thông s Initial Value là true ho c false.

} } Thay vì g i các k t qu ra c a s Output. trace("Option Two: "+option2. b n s nhìn th y component này có nhi u thông s hơn so v i các component CheckBox hay PushButton. T i m t th i i m. và choice3.getValue()). N u b n ch n m t trong nh ng nút ó và m b ng các thu c tính (Properties panel) cho nút. Nhãn c a ba nút này là Choice One. Thêm vào các thông s b n ã th y trong component CheckBox là hai thông s Group Name (tên nhóm) và Data (d li u). h u h t b n s mu n s d ng chúng trong các d ng khác. Sau ó PushButton s ch y o n script này quy t nh xem l a ch n nào ã ư c thi t l p. Thông s Group Name xác nh xem RadioButton thu c v nhóm nào. .getValue()).Output. b n ch có th ch n m t nút RadioButton trong m t nhóm. RadioButtons RadioButtons gi ng như CheckBoxes. B n có th truy c p (access) nó b i hàm getData(). b n có th t chúng trong m t i tư ng LoadVars chúng có th g i t i m t server. Thông s Data là tùy ch n và b n có th s d ng trong các o n mã c a mình. trace("Option Three: "+option3. ActionScript function buttonPressed(buttonInstance) { if (buttonInstance == doneButton) { var choice = "none".fla có ba component RadioButtons. o n script s l p i l p l i v i c ba nút tìm ki m m t nút tr v true t hàm getState(). N u ã có m t nhóm nút th hai v i m t tên khác. ActionScript function buttonPressed(buttonInstance) { if (buttonInstance == doneButton) { trace("Option One: "+option1. ba RadioButtons ư c t tên là choice1. Vi c xác nh xem ngư i dùng ã ch n nút radio nào s ư c th c hi n khi PushButton trong movie ư c click. Ví d . và Choice Three. Trong movie m u.getValue()). Choice Two. File m u 21radiobuttons. i u này nghĩa là nút RadioButton ó ã ư c b t. ngo i tr vi c chúng ư c s p x p thành các nhóm. c ba RadioButtons u thi t t thông s này là firstGroup. Trong movie m u. choice2. thì hai nhóm này ư c xem là c l p v i nhau khi quy t nh RadioButton nào ư c b t. B n có th lưu tr các l nh mà o n mã c a b n th c thi khi nút radio ư c ch n.

M i dòng tương ng v i m t l a ch n riêng bi t c a ngư i s d ng. } } ListBox M t ListBox (h p danh sách) là m t phương pháp ơn gi n cho phép ngư i dùng l a ch n m t ho c nhi u tùy ch n.fla._name. gi ng như thông s data ã dùng v i các nút radio. Flash có m t giao di n c bi t (special interface) cho vi c nh p các giá tr này. ây không ph i là m t giá tr ơn mà là m t m ng các giá tr . b n ph i thi t t thông s Select Multiple (l a ch n nhi u dòng) c a nó.i<=3. Khi b n t o m t instance m i c a component ListBox.getState()) { choice = this["choice"+i]. thông s này không b t bu c ph i có. ngư i dùng có th dùng các phím Shift. hàm listBoxChange s ư c g i.for(i=1. b n ph i thi t t thông s Labels (nhãn). Khi ngư i dùng click lên trên m t dòng. cho phép o n mã c a b n l y thông tin b sung v các l a ch n mà ngư i dùng ã ch n. B n cũng có m t tham s Data (d li u) t o m t m ng d li u. N u có nhi u l a ch n hơn vùng mà khung danh sách có th hi n th thì ngư i dùng có th cu n lên và cu n xu ng xem h t các m c trong danh sách. i u này ư c xác nh b i thông s Change Handler c a nó. Thông s Data này. Tuy nhiên. N u là false.i++) { if (this["choice"+i]. Khi b n click trên tham s Labels trong b ng Properties. b n s b t g p m t h p tho i cho phép b n nh p vào m t m ng các m c (item) cho các thông s khác. Trong movie m u 21listbox. Hàm này cho b n bi t dòng nào (l a ch n nào) v a ư c ch n: ActionScript function listBoxChange(listBoxInstance) { trace(listBoxInstance. ho c Ctrl l a ch n nhi u hơn m t dòng. } } trace("Choice: "+choice).getValue()). M t khung danh sách trong như m t trư ng text cu n--trên th c t là như v y. Thêm vào ó. tôi t m t component ListBox v i ba l a ch n trên màn hình. M t ListBox có th t như m t thi t l p c a CheckBoxes ho c RadioButtons. m i l n b n ch có th ch n ư c m t dòng. N u tham s này là true. Chúng ư c thi t t là có th ch n nhi u dòng. Nó c bi t h u ích khi b n có nhi u l a ch n nhưng kho ng tr ng trên màn hình có h n. Command. } . Tuy nhiên.

i<items. addItem s thêm m t l a ch n b sung vào list box. thay i list box b i ComboBox M t combo box gi ng như m t menu kéo xu ng (pull-downl menu) cũng có th gõ vào m t giá tr . } } } B n cũng có th thêm ho c b t các dòng t list box b ng cách s d ng ActionScript. ActionScript myListBox. m t thanh cu n s xu t hi n bên ph i cho phép ngư i dùng cu n lên xu ng l a ch n. combo box s tr i r ng thành danh sách tuỳ ch n. và replaceItemAt ActionScript. Vì chúng ta ã không s d ng các thu c tính data c a h p danh sách (list box).addItem("Choice Four").length. nên thay vào ó chúng ta s l y các nhãn (label).i++) { trace(items[i]. nó s th c thi hàm này. n u s l a ch n l n hơn s dòng có th hi n th thì xu t hi n thêm thanh cu n. for(var i=0. Dư i ây là m t hàm ơn gi n cho b n bi t nhãn c a combo box . Khi không ho t ng nó thu nh thành m t dòng. b qu n lý Click Handler s ư c g i. M i m c ch n trong m ng là m t i tư ng v i m t thu c tính label và data. Các combo box có th nh như các list box. Ví d . Khi click vào nó.Trong movie m u này cũng có m t component PushButton. B n có th dùng addItemAt. Thông s ch nh) trong h p tho i Properties. b n cũng có th t t tùy ch n hi u ch nh giá tr . N u s l a ch n vư t quá giá tr Row Count. Khi ngư i dùng click vào. B sung cho tham s ó. M t thông s khác c a combo box là Row Count (s dòng). b n cũng có th cung c p các m ng ch a nhãn (Labels) và d li u (Data). Nó s d ng hàm getSelectedItems() l y m t m ng các l a ch n (choices) ã ch n trong list box. ActionScript function buttonPressed(buttonInstance) { if (buttonInstance == doneButton) { items = myListBox. removeItemAt. ó ngư i dùng May thay.getSelectedItems(). Khi nó ư c click.label). Khi ó combo box như m t làm i u này là Editable (có th hi u menu pull-down bình thư ng. chúng s tr i r ng thành m t danh sách các l a ch n. Khi m t ngư i dùng ch n m t l a ch n m i trong combo box. Cơ b n m t combo box có th có 3 tr ng thái.

N u b n thi t t thông s Drag Content là true. Thông s chính c a component này là Scroll Content (cu n n i dung). B n có th xem ví d trong file 21scrollpane. Khi b n ch y movie. ScrollPane Hai component ti p theo khác h n so v i 5 component trên. ô cu n trông b méo mó trong Flash. ư c dùng như m t trình duy t hình nh. Component ScrollPane (ô cu n) g m có m t thanh cu n d c. B n cũng có th dùng b ng Properties thay i chi u r ng và chi u cao c a ô cu n. Movie m u 21combobox. L nh này s d ng m t ch URL và hi n th m t movie clip ngoài vào trong ô cu n.fla là m t ví d v component ComboBox. cu n ngang và m t vùng hi n th hình ch nh t. movie clip ư c copy t Library và t vào vùng hi n th c a ô cu n. nhưng no star where. Các thanh cu n cũng thay i khi b n kéo n i dung trong ô cu n (chính là cái movie clip hi n th trong ô ó). } B n cũng có th dùng getSelectedIndex() l y ch m c (tính t 0) c a m c ã ch n. Sau ó các thanh cu n s cho phép ngư i dùng nhìn th y các ph n khác nhau c a movie clip. M c dù component ScrollPane không òi h i b t kỳ ActionScript nào làm vi c. Chúng không dùng cho phép ngư i dùng l a ch n.getValue()).swf").ã ch n: ActionScript function comboBoxChange(comboBoxInstance) { trace(comboBoxInstance.loadScrollContent("myMovieClipFile. ActionScript myScrollPane. M t l nh ActionScript r t h u ích là loadScrollContent . Khi b n làm vi c ó. ngư i dùng cũng có th click vào trong vùng hi n th và kéo hình trong ó ch y. a Ô cu n có th ScrollBar .fla. nhưng dùng hi n th lư ng thông tin l n trong các kho ng nh (cu n mà l ). nó s ngon lành ngay khi b n ch y movie. ây là tên liên k t (Linkage name) cho m t movie clip. nhưng có r t nhi u hàm mà b n có th dùng xác nh xem ph n nào c a movie clip ang ư c xem ho c thay i chi u r ng (width) và chi u cao (height) c a ô.

như trên T o m t ComboBox component.. ComboBox. Thi t t thông s ListBox Multiple Selections thành false."Asc"). Thêm m t vài nhãn (label) vào ó ngư i dùng có th ch n l a. Dùng b ng Properties t o cho khung danh sách (list box) r ng 200 và cao 200 pixel. t tên cho chúng là radiobutton1. và radiobutton3. Ví d . radiobutton2. Windows. Ch vi c kéo và th m t component ScrollBar vào m t trư ng text (text field). Thêm bao nhiêu nhãn vào tuỳ b n.Component cu i cùng là ScrollBar. t tên cho chúng là checkbox1. và checkbox3. L nh sortItemsBy làm vi c r t t t v i component ComboBox. ListBox. RadioButton. ActionScript listbox.. Sau ó nó ki m tra t ng check box xem hàm getValue() c a nó có ph i là true không. b n có th s d ng getScrollPosition() l y v trí cu n hi n t i và setScrollPosition() thay i nó. t nó s thêm vào trư ng text. Component này thêm các thanh cu n vào trư ng text. T o ba component CheckBox.sortItemsBy("label". T o m t Flash movie m i. Linux. Hàm b t u b ng vi c t o m t m ng m i. Thông s th hai có th là "Asc" (s p x p theo th t tăng d n) ho c "Desc" (gi m d n). và PushButton components. T o m t ListBox component t tên là listbox. Nhãn c a chúng là: Macintosh. t tên cho nó là combobox. Component ScrollBar có ít thu c tính Actionscript có th s d ng ư c. Thêm m t PushButton component. N u là true. checkbox2. B n có th dùng "label" ho c "data" cho thông s u tiên. Chúng ta s t o hàm này theo t ng o n nh x lý t ng ph n c a form. Nhãn c a chúng l n lư t là . B n có th dùng component này mà không c n dùng b t kỳ code ActionScript nào. nhãn c a check box ó s . i u ó tùy thu c vào nhãn (label) hay các trư ng d li u (data) s ư c s d ng s p x p. T o ba component RadioButton. Component PushButton s g i hàm buttonPressed. Th c hành v i Components Bây gi chúng ta s ph i h p 5 component khác nhau t o m t form nh p d li u: CheckBox. t cho nó nhãn là Done và thông s i u khi n Thêm dòng sau vào trong frame script. ng lo l ng v th t c a chúng vì chúng ta s s p x p l i sau. Nó s s p x p l i nhãn c a các m c trong component ListBox. Click Handler là buttonPressed.

i<=3.getValue().i++) { if (this["radiobutton"+i]. o n mã này ch nó: ActionScript // l y giá tr c a ComboBox ComboBox nextPurchase = comboBox. for(var i=1.getLabel()). ActionScript function buttonPressed(buttonInstance) { if (buttonInstance == doneButton) { // sưu t p m ng c a các CheckBoxes ã ch n own = new Array(). ơn gi n tr v giá tr c a check (ki m) nhi u l a ch n c a list box.getValue()) { own.i<=3. Khi vòng l p k t thúc. o n mã ti p theo ki m tra t t c các component RadioButton và ghi nh xem component nào ã ư c b t ( ã ư c ch n): ActionScript // xác nh RadioButton nào ã l a ch n favorite = "none". trace("Next Purchase: "+nextPurchase).getState()) { favorite = this["radiobutton"+i]. } } trace("Computers Owned: "+own). Component ơn gi n nh t là combo box.getLabel().i++) { if (this["checkbox"+i]. Sau ó b n c n xem xét thu c tính label c a m i m c ch n (item). for(var i=1. } } trace("Favorite: "+favorite).ư c thêm vào m ng ó. o n mã sau s làm i u ó và xây d ng m t m ng ch a các nhãn ã l a ch n: ActionScript . m ng own ch a b t kỳ l a ch n nào mà ngư i dùng ã làm v i các check box. b n c n l p t u n cu i m ng tr v b i getSelectedItems().push(this["checkbox"+i].

b n có th tùy ch nh giao di n cho t t c các component trong m t l n. b n có th thi t tính khác. Cho ví d .i<items. S m c thay i trong ki u dáng c a các component quá dài có th li t kê h t ây.// sưu t p các l a ch n c a ListBox uses = new Array().applyChanges(). L nh applyChanges ch p nh n s thay i. } } N u th c s hi n t i b n ang làm i u này. b n có th tuỳ ch nh các component theo nhi u cách khác nhau.label). b n có th t o m t sau ó g i thông tin n máy ch .textFont = "Arial". Nhưng n u t t c các nhà phát tri n Flash u b t u s d ng chúng. items = listbox. ây là m t ví d thay i màu ch c a t t c các text trong t t c các component thành màu xanh da tr i (blue): ActionScript globalStyleFormat. for(var i=0. thì t t c các Flash movie c a chúng ta trông s na ná nhau.textColor = 0x0000FF. t nhi u thu c B n có th thay i thành nhi u giá tr như font ch ng h n. i tư ng có tính c u i tư ng LoadVars Thay i ki u dáng (Style) c a m t Component Các component c a Flash v n trông ã r t p. Dư i ây là ba cách tùy ch nh component b ng cách s d ng ActionScript. Dư i ây là m t s thay i chi ti t: ActionScript globalStyleFormat. B n có th thay i . globalStyleFormat. globalStyleFormat. Ngoài ra. nên s d ng các trúc hơn là s d ng l nh trace.push(items[i]. globalStyleFormat. May thay. } trace("Uses: "+uses). globalStyleFormat.textColor = 0x0000FF.length.textBold = true.getSelectedItems(). B n có th d dàng t o các giao di n riêng (custom skin) cho chúng.applyChanges().i++) { uses. Global Customization (tuỳ bi n chung) S d ng i tư ng globalStyleFormat. globalStyleFormat.textSize = 18.

i tư ng m i c a b n s có các thu c tính gi ng như i tư ng globalStyleFormat. . b n c n ph i dùng l nh setStyleProperty. mà di n m o c a style không thay i. áp d ng ki u dáng style này vào m t component. L nh này s t thu c tính style dư i d ng m t chu i tham s u tiên và giá tr mà b n mu n thi t t cho nó tham s th hai. B n th c hi n i u ó b ng cách t o m t i tư ng FStyleFormat.0xFF0000). màu s c c a vùng tô sáng (highlight colors). ActionScript checkbox1. Single Component Customization (tùy ch nh component riêng l ) B n cũng có th thi t t m t cách chính xác m t trong nh ng thu c tính c a style. Vì th b n có th áp d ng style này cho m t component. b n có th tùy ch nh các component theo như mong mu n. úng là như v y. Grouped Customization (tùy ch nh theo nhóm) M c dù i tư ng globalStyleFormat ã ư c s d ng b i t t c các component trên stage.addListener(radiobutton1). nh ng mũi tên trong các thanh cu n ScrollBars.setStyleProperty("textColor".. Thay vì th . B n nghĩ có v kỳ qu c khi s d ng v i addListener. màu n n. b n không th làm i u ó b ng cách s d ng cú pháp ch m (dot) g n và p như b n mong mu n. v.v. hãy s d ng l nh addListener: myStyle. b n có th t o m t i tư ng ki u dáng (style object) và thi t nó thành tươi như dư i ây: ActionScript myStyle = new FStyleFormat(). Ví d . myStyle.textColor = 0xFF00FF.màu s c và ki u dáng c a các d u ki m trong CheckBoxes. Tuy nhiên. b n v n có th t o cho các i tư ng c a b n ki u dáng (style) riêng bi t ch dùng trong m t vài component mà b n ch nh. Các y u t khác c a style không ư c thi t t chính xác trong i tư ng style này. màu s c các m c ch n. Hãy xem trong chương trình Flash c a b n bi t y thông tin v danh sách này. Khi b n làm i u này.. t màu s c c a B ng cách s d ng ba phương pháp thi t t style cho các component. Hãy hi u r ng: b n báo cho component ti p nh n (listen) i tư ng style. các hình tròn trong nh ng RadioButton.

r i ánh d u vào các ph n export.wav.start(). mySound.wav". B n cũng có th t m t cái tên "Identifier" khác cho o n nh c thay vì tên file nh c. B n cũng có th xem qua m t phương pháp hơi ph c t p m t tí trong file "22playsoundfunction.fla" kèm theo quy n sách này. ó chính là cái tên mà b n s s d ng trong ActionScript. Tìm hi u cách truy xu t âm thanh v i ActionScript: Vi c k t n i và chơi nh c: i u u tiên mà b n c n trư c khi chơi m t o n nh c v i ActionScript là k t n i n nó. b n hãy ra l nh cho i tư ng "Sound" c a b n chơi o n nh c: ActionScript mySound.wav"). Th hai. n u b n "import" file nh c "mysound. Ví d .attachSound("poof. Cách th hai là s d ng ActionScript chơi nh ng o n nh c ư c lưu tr trong Library. b m ph i chu t ch n "Linkage". có m t function tên là "playsound" ư c t timeline chính. nhưng b n có th s a thành b t kì tên gi b n mu n(vd: nhac1). b n c n g n o n nh c trong thư vi n vào i tư ng "Sound" này: mySound. Vi c này không c n ph i s d ng mã.fla". chơi m t o n nh c b ng ActionScript.wav". mySound. B n hãy "Import" file nh c vào Library.wav") //mySound. b n ph i làm ít nh t ba bư c: u tiên là t o m t i tư ng "Sound" : ActionScript mySound = new Sound(). Cách th nh t là t nó vào ngay timeline. Trong file Flash này. Và ây là m t o n ơn gi n t vào trong m t Button chơi o n nh c t Library: ActionScript on (release) { mySound = new Sound(). Khi b n ch n Linkage. .wav là tên b n ã t trong ph n "Identifier" Cu i cùng. "function" này bao g m t t c các mã mà b n c n chơi m t o n nh c ơn gi n. } B n có th tham kh o m t ví d ơn gi n trong file "22playsound.start(). nó s ư c t tên "Identifier" ngay là "mysound. và ánh d u export.attachSound("mySound. nó s xu t hi n trong Library v i cái tên mysound.Gi th 22: i u khi n âm thanh v i ActionScript Có hai cách b n có th cho âm thanh vào o n phim Flash c a mình.

Ví d . } Câu l nh "start" Câu l nh "start" trong ví d trên có th ư c s d ng b ng nhi u cách. Tham s th hai c a câu l nh "start" là s l n l p l i c a o n nh c. B n ph i thêm vào tham s là tên (Identifier) c a o n nh c. } V i vi c s d ng function này. Ví d . Tham s th nh t b n có th thêm ư c g i là "offset".start(1000. n u b n mu n b t u b n nh c t i v trí sau 1 giây và l p ba l n.ActionScript function playSound(soundName.3).start(0.wav"). b n có th ưa ra câu l nh "stop" b t c khi này ng ng h n o n nh c.balance) { var mySound = new Sound(). mySound. B t u b n nh c t i v trí t u và l p ba l n: ActionScript mySound. b n ã ơn gi n hóa o n ActionScript nên b n s ch c n s d ng úng m t dòng l nh chơi nh c. Khi b n ang chơi m t o n nh c. B n có th thêm hai tham s n a vào nó thay i cách mà o n nh c s ư c chơi. mySound. N u không.start(1000). Nó giúp b n có th chơi b n u. dòng l nh nh c t b t kì v trí nào b n mu n ch không ph i chơi l i t này s b t u chơi t v trí th 1000 miligiây c a o n nh c(1 giây sau khi b t): ActionScript mySound. Câu l nh i ôi v i "start" là "stop".attachSound(soundName). câu l nh s như sau: ActionScript mySound.start(). l nh "stop" s ng ng t t c các o n nh c ang chơi. .3). ây là o n mã t trong m t Button s d ng function này: ActionScript on (release) { playSound("poof.

i u ch nh âm lư ng B n có th s a i o n trư c và khi ang chơi b ng m t s câu l nh. cũng tính b ng miligiây.mark. Chú ý là vi c b n i u ch nh âm thanh c a m t o n nh c s không liên quan n các o n nh c khác. Th hai là "position" là v trí mà o n nh c ang chơi.ActionScript mySound. b n ch c n cho m t tham s t 0 n 100 là b n có th v n to.duration. Vì v y b n có th i u ch nh các âm thanh khác nhau như nh c n n và các ti ng ng. nh m t o n nh c: ActionScript mySound.fla" bao g m m t nút Play và b n nút khác i u ch nh âm lư ng l n t là 0. L nh "setVolume" là cách i u ch nh ơn gi n nh t. n u m t o n nh c có thu c tính "duration" b ng 3000. ActionScript onClipEvent(enterFrame) { // tính xem ã chơi ư c bao nhiêu c a o n nh c (giá tr t 0. 50 và cu i cùng là 100. Các câu l nh này còn có th i u ch nh âm lư ng c a o n nh c. m t v ch en s ch y d n d n theo v trí c a o n nh c.setVolume(50). N u thu c tính "position" b ng 1500 thì o n nh c ang chơi chính gi a. i tư ng "Sound" i tư ng "Sound" có hai thu c tính mà b n nên bi t n. Nút Play s chơi m t o n nh c 100 l n nên b n có th th i u ch nh âm lư ng trong lúc ang chơi nh c.0 percentPlayed = thisSound. Sau khi b t u. } n 1.bar. trong t t c loa hay ch t ng cái. Trong file "22tracksound.wav"). Th nh t là "duration" là dài c a o n nh c tính b ng miligiây. // l y dài c a thanh barWidth = _root.position/thisSound._x + barWidth*percentPlayed. 10. Ví d .stop("poof.bar.0) . có nghĩa là nó dài 3 giây.fla" th hi n cách dùng "position" và "duration" th hi n c a o n nh c._width._x = _root. Trong file "22playsoundvolume. // t v trí c a d u v ch _root.

attachSound("mySound. M t cách t t hơn ki m tra khi nào o n nh c k t thúc là dùng "onSoundComplete". B n có th ko mu n vi c này x y ra. khi ó hai giá tr này s b ng nhau. mySound. ActionScript mySound = new Sound(). Managing Movie Streaming Trong gi 23 chúng ta s ti n hành nh ng bư c sau: • • • • Tìm hi u. loa trái s phát ra. i u này có nghĩa là frame u tiên c a movie s b t u ngay khi nó ư c n p xu ng.aif"). còn 100 s là loa ph i.fla".start(). t t c âm thanh s ư c phát ra bên loa trái. Tuy nhiên n u o n nh c ư c l p nhi u l n thì hai giá tr này s b ng nhau m i khi cu i o n nh c. ây là m t function s ư c th c thi khi o n nh c k t thúc h n. Khi b n b m nào nút "Play" bên trái. image) Chúng ta b t âu v i bư c 1 nhé : Các Movie Flash u có tính ch t stream. ActionScript mySound. Ví d như movie c a b n là 1 o n animation . } mySound. ko ph thu c vào vi c cái frame cu i cùng ã ư c load xong hay chưa. B n có th tham kh o file "22monopan. Gi th 23: Qu n lý streaming cho movie. loa ph i s phát ra.Khi o n nh c k t thúc: B n có th s d ng thu c tính "position" và "duration" ki m tra m t o n nh c h t hay chưa. giám sát movie khi load Làm 1 loader ơn gi n Làm 1 loader ph c t p hơn v i loading bar Load các media movie bên ngoài vào flash (sound. i u này gi ng như giàn máy stereo. b m nút "Play" bên ph i. i u ch nh cân b ng: B n có th i u ch nh âm lư ng c a loa này to hơn loa khác thông qua l nh "setPan".setPan(-100). mySound.onSoundComplete = function () { trace("sound done!"). N u b n là -100. B n có th t giá tr t -100 n 100.

bi t ư c có bao nhi u frame ã ư c load xu ng b n s d ng tính ch t _framesLoaded.". 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 sàng. Nó s quan sát tính ch t c a movie và xác nh xem khi nao thì movie k t thúc vi c loading. B n cũng có th s d ng kĩ thu t này trong 1 ph n c a 1 movie dài._framesLoaded >= 100) { _root.textDisplay = "Waiting for the next sequence to load. Khi ngư i s d ng click vào btn b n có th dùng 1 o n script tương t như sau xác nh xem ph i làm gì ti p theo: CODE on (release) { if (_root. Tuy nhiên có các cách khác chính xác hơn giám sát vi c loading hơn là tính s frames. Ta dùng o n code sau th c hi n: CODE onClipEvent(load) { _root. } } ây là ph n u cơ b n c a 1 loader script. B n có th s d ng i u này trong 1 s trư ng h p ơn gi n.ng n. Có vài cách b t movie i cho n khi loading xong. ây là o n script t vào trong 1 mc frame u tiên c a movie. ó ta t o 1 button cho phép ngư i s d ng ti p túc. Cách thông d ng nh t là ta t o 1 loader frame.play(). _root._totalFrames) { play(). } else { textDisplay = "Wait a few seconds and press again.". ó là frame u tiên c a movie. . } } N u như movie chưa ư c load h t thì text field mà ta ã liên k t qua var textDisplay s thông báo cho user. } onClipEvent(enterFrame) { if (_root.stop(). frame u tiên b n chú ý t thêm l nh stop(). b n có th ko mu n nó b t u cho n khi movie ư c load hoàn toàn t web. Ví d b n t frame u tiên l nh stop(). còn bi t t ng s Frame c a movie b n s d ng tính ch t: _framesTotal._framesLoaded == _root. B n có th s d ng getBytesLoaded and getBytesTotal tính t ng s file và s file ã load.

getBytesLoaded(). ây ta tính s ph n trăm ã load (percentLoaded) và cho hi n th con s này qua bi n displayText root level B n ng quên t o 1 dynamic text field và t var cho nó là displayText nhe. Ho c b n có th gi thi t l p 1 cai modem 56 K Nào bây gi goto website và test b n s th y quá trình loading ư c hi n s ph n trăm text field. Ta cho o n script sau vào: CODE onClipEvent(enterFrame) { bytesLoaded = _root.play().displayText = "Loading: "+percentLoaded+"%". _root. 4. Khi t n 100% movie s ti p t c play.getBytesTotal()) { _root. bytesTotal = _root.T o thêm 1 kf m i frame 2 có th test cái loader 1 cách rõ ràng thì frame 2 nên ch a 1 movie t i thi u là 100 K. B i v y nên publish nó lên 1 trang web rùi test . Ta t o 1 shape ơn gi n và convert nó sang mc và t ng c nó sang 1 góc màn hình mà ngư i xem ko nhìn th y (chu i r ng). if (bytesLoaded == bytesTotal) { _root. chúng ta ti n hành bư c 3 làm 1 loader . } } m i l n enterFrame i u ki n s ư c ki m tra và khi th a mãn t c movie ư c load hoàn toàn thì movie s ư c play ti p t c Chúng ta ti p t c ti n hành làm 1 loader ơn gi n trư c khi nó vư t qua frame 1 : cho toàn b movie ư c load 1. S r t khó ki m tra khi b n test cái movie này v i Flash player trên máy vì movie c a b n ch y nhanh quá. chúng ta mu n có 1 movie ch cho n khi toàn b movie ã ư c load trư c khi tiép t c sang frame 2 ---> cho 1 l nh stop(). Cách t t nh t tăng dung lư ng là ta import 1 video. } } o n script s ki m tra getBytesLoaded xem li u movie ã k t thúc vi c loading chưa.getBytesTotal() percentLoaded = Math. ko k p nhìn cái loader. frame u ta t o 1 keyframe 3.fla 3. 2. vào frame 1 này.Tr l i frame 1.getBytesLoaded() == _root.M 1 file m i.round(100*bytesLoaded/bytesTotal). cho cái loader c a chúng ta thêm p.play(). B n có th ki m tra movie c a b n v i file: 23simpleloader.CODE onClipEvent(enterFrame) { if (_root.

Layer này nên n m trư c và layer có ch a hình ch nh t cũ thì n m sau nó.Click 2 cái vào mc m i này edit nó t chúng vào 1 mc b ng cách ch n insert và 5.B t u 1 movie m i : 2. Và nó ư c s d ng chính thay i _xscale c a thanh Bar. point cho nó là góc t n cùng bên trái.V 1 hình ch nh t r ng v i border 3.ph c t p hơn có thêm 1 cái progess bar n a nhé các bư c làm như sau: 1.Tách riêng ph n fill và border c a cái hình ch nh t ra làm 2 layer 6.Bây gi ta convert nó sang mc và t instance name là barFill Double click vào mc m i này và ta ch nh reg.Copy cái fill c a hình ch nh t và t o 1 layer m i paste nó vào. ta t o thêm 1 layer m i. B n còn nh là ta ã m c nh i m reg. Và t 1 dynamic text ó. bytesTotal = _root. point c a thanh Bar này góc bên trái ko? Chính vì v y mà thanh bar s dài ra theo giá tr c a bi n percentLoaded sang phía bên ph i Khi mà s bytesLoaded = s bytesTotal thì display text s hi n thông báo: "Loading Complete" và chuy n movie sang frame ti p theo. t var cho nó là displaytext. Nó có nhi m v theo dõi s bytesLoaded và bytesTotal liên t c m i Frame.getBytesTotal().Ch n toàn b cái hình ch nh t này và convert to mc. CODE onClipEvent(enterFrame) { // if there is more to load . 4. phía trên hình ch nhât cũ 8. Tr l i movie chính. b n nh ch n font ch p d p và màu cũng p p 1 chút nhé movie c a timeline chính ta t o n code sau vào mc chính c a chúng ta: CODE onClipEvent(load) { // initialize variables bytesLoaded = 0. } o n code enterFrame ph i làm nhi u vi c nh t. Bi n percentLoaded có giá tr t 0 n 100.Ch n hình ch nh t m i này(cai fill) và ch n cho nó màu t i hơn. 7. ăt v trí kh p v i cái border.

// calculate percentage percentLoaded = Math._xscale = 100.".getBytesLoaded(). N u các b n chưa hi u thì cbt s post thêm hình minh h a vào Timeline c a chúng ta tôt nh t nên phân ra như sau nha: -Timeline chính s g m có 3 layer.if (bytesLoaded < bytesTotal) { // get current amount loaded bytesLoaded = _root. Ngư i s d ng s click vào button xem ti p ph n còn l i c a movie. -Layer th 2 s g m có 2 keyframes fr1 và fr2. Layer th 2 ta s cho 1 button. // if there is still more if (bytesLoaded < bytesTotal) { // display text displayText = "Loading: "+percentLoaded+"%". // set scale of bar barFill. Trong btn cho o n code sau: CODE on (release) { play().round(100*bytesLoaded/bytesTotal)._xscale = percentLoaded. Nó s kéo dài trong 2 frames. Layer th nh t s ch a cái loader bar mc mà chúng ta ã t o. } } } Ko bi t hư ng d n như trên các b n ã hình dung ra cách làm chưa nh . // go to next frame _root. // fill out bar barFill. } -Layer th 3 b t u t frame th 3 s ch a cái movie c n load c a b n . kf 1 là l nh stop().nextFrame(). // no more left } else { // display complete displayText = "Loading Complete.

Bây gi khi n o n có s d ng mc này thì l nh loadMovie s làm vi c. h có th click vào 1 button và xem 1 movie khác. không có gì trong ngo i tr m t câu l nh stop(). làm ư c i u này chúng ta s tìm hi u các bư c sau: Th ch movie hi n th i Cách ơn gi n làm i u này là b n chia c t movie này ra thành các ph n riêng. chúng ta s t o m t movie tr ng.Các b n có th xem thêm file : 23complexLoader. Movie file này s n m s n sàng trong browser cache c a user. cu i movie s có 2 buttons ch a các movie khác nhau. Khi ngư i xem n ó. Lúc ó s nhanh hơn vì file ã ư c download hoàn toàn v r i. T t c nh ng gì b n c n là dùng l nh loadMovie Ví d . N u mu n preload m t movie clip s n sàng lúc c n hi n th . Ví d th ch c a myMovieClip b ng file otherMovie. Loading a Movie Clip V i l nh loadMovie b n có th thay th ch c a 1 mc b ng 1 mc khác. Khi 1 movie k t thúc ta có th chuy n n 1 movie khác. b n có 1 frame cu i 1 movie dài. Nh v y b n có th xây d ng 1 trình di n l n b ng cách s d ng nh ng file bên ngoài.fla bi t thêm làm th nào trình bày tác ph m c a b n v i các files có s n.loadMovie("otherMovie. .swf). Sau ó chúng ta load mc vào mc tr ng này (ko hi n th trên stage). } 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. Khi load hoàn toàn thì movie c a chúng ta ã s n sàng frame u tiên. thay Khi s d ng loadMovie b n có th dùng getBytesTotal and getBytesLoaded functions thông báo cho ngư i dùng b ng text ho c b ng progess bar mà chúng ta ã làm trên quá trình load.swf b n ch c n làm: CODE myMovieClip. o n code ơn gi n như sau: CODE on (release) { loadMovie("animation2. B n có th xem ví d file 23movie1. Vi c t o liên k t gi a các movie là r t quan tr ng sao cho khi user có th tr l i movie cũ ban u. Sau ó s d ng l nh gotoAndPlay(2) qua frame 1.swf").fla Có nh ng lúc b n c n t o các movie l n có các media thì ta ko c n ph i t o 1 movie y nh ng file media trong ó mà có th load các file media có s n này t bên ngoài.

loadSound("mysound.false). Ngay khi sound ư c load ph n nào thì s b t u chơi ngay trong lúc ph n còn l i v n ti p t c ư c load. Ghi chú là b n ko c n ph i s d ng l nh start v i 1 streaming sound. Các sound file này c n d ng ph bi n là mp3. Cách làm tương t như cách chúng ta load movie trên.start(). } Cách th 2 là ta s d ng true param th 2. B n có th ki m tra và xem ví d file 23loadipeg. ch c n thay movie b ng a ch c a file JPEG là ok: CODE myMovieClip. mySound. CODE on (release) { mySound = new sound(). Khi sound ư c load xong thì nó s ư c play ngay l p t c CODE on (release) { mySound = new sound(). mySound.loadSound("mysound. C 2 u s d ng sound object và l nh loadSound. Flash MX cũng cho phép ta kh năng load 1 file JPEG ngoài vào. Sau ây là 1 ví d cho cách th 1.true).Loading a JPEG myMovieClip. } Flash s ghi nh là l nh start ã ư c ưa ra th m chí khi sound m i ch b t download. Tuy nhiên b n u .jpg").fla Loading a Sound Có 2 cách play 1 sound t 1 file bên ngoài. i a ch mc myMovieClip bây gi ư c thay th ch b ng 1 mc có ch a bitmap image này.jpg"). chơi 1 event sound. Giá tr true này s b o v i flash ó là 1 stream sound. N u ngư i dùng có k t n i m ng t t thì s nghe ư c toàn b sound khi load. mySound.loadMovie("picture. ây toàn b sound s ư c load vào b nh trư c và sau ó ư c chơi n u như có l nh start().loadMovie("picture.mp3".mp3".

c n ph i chú ý khi s lí file MP3. Drawing with ActionScript ây là h cu i cùng. file nh c n a. Ví d n u b n s d ng file nh c mp3 v i 128 Kbps hay 160 Kbps thư ng dùng nghe thì nó s là 1 file quá l n có th stream vói internet. Ngoài movie b n có th load 1 file nh. B n có th chia movie ra thành cách file riêng và s d ng loadMovie này t i file khác như ngư i s d ng mu n. Hour 24.vnfx. Chúng ta t ng k t l i nhe: Streaming là 1 cách r t t t giúp chúng ta s d ng d dàng hơn v i 1 movie l n.vnfx. loadSound cũng có r t nhi u bài. CBT ko có kinh nghi m d ch bài. c bi t n u ngư i sư d ng dùng modem.com/ipb/index. b ng l nh unloadMovie Câu 2: bình thư ng thì flash c n bao lâu load trư c khi nó start?? -Tr l i: ngay frame u tiên. B n cũng có th thông báo cho ngư i dùng quá trình loading b ng text thông báo s % ho c 1 b ng 1 progess bar ch ng h n. Ngoài ra b n có th xem thêm các bài vi t sau: Cách t o 1 preloader ơn gi n http://www. 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.com/ipb/index. 32 Kpsb hay ít hơn s thích h p hơn khi ta s d ng stream. M t s câu h i và tr l i sau có th giúp b n n m rõ bài hơn: Câu 1: ta có th load 1 mc. B n có th gi movie frame th nh t và ch nó ti p t c khi toàn b movie ã ư c load.php?showtopic=2325 Cách t ng quát t o 1 loader p: http://www.php?showtopic=2921 Ngoài ra v loadMovie. cũng là gi r t thú v . Câu 3: 2 cách xác nh khi 1 movie ư c load hoàn toàn?? -Tr l i: cách 1 dùng getBytesLoaded == getBytesTotal function cách 2 dùng _frameLoaded property và _totalFrames property. v y có th unload chúng ko?? -Tr l i: có. Ta có th sư d ng AS ki m tra 1 quá trình loading. nh y t file Các file bên ngoài có th ư c load vào b ng các cách khác nhau. hy v ng các b n c m th y dzui dz khi v b ng AS . v i l i nhìn vào m y bài text dày c . B n ch u khó search ha Gi th 24: V v i AS.

M i i m l i ư c xác inh câu trên ta t bút t i x=20. vi c u tiên c n làm là dày như th nào nè. ư c t bút. còn n u ta cho giá tr là 0 (hairline) thì nó v n có dày là 1 pixel . và thay i giá tr dày nhé: CODE lineStyle(0. _yscale=300. 0xffffff: tr ng .0x000000. lineTo(200. Màu (color): giá tr ư c ưa ra dư i d ng s th p l c phân hexa. V i dày 1 cái line có dày là 1 pixel. dày (thickness): dày nh nh t là 0. nó Nhìn o n code trên ta th y xu t hi n l nh: CODE moveTo(20. .50) n (200. max=100. i m nh 2 i m: u và cu i.200). nh nghĩa các giá tr c a lineStyle.100).50) v 1 ư ng th ng ta c n xác v i 2 giá tr x và y ---> moveTo là i m u. moveTo(20.ch là t i m t t i mũi nên nhi u ch d ch lung tung. Như v y ----> lineTo là i m ti p n. y=200. rùi có màu gì và alpha. chúng ta có th nhìn vào b ng color mixer bi t thêm trong su t(alpha): min = 0.v 1 ư ng th ng. ví d : 0x000000 là màu en. Như v y chúng ta ã v ư ng th ng n i t i m (20. ng thương ti c .200). color. theo ý thích b i v y có ch nào di n t t i nghĩa. Ta có x= 200.50). ko úng thì các b n c th ng th n góp ý. CODE lineStyle(thickness. còn l n nh t là bao nhiu thì cbt ko bi t . alpha).Drawing lines . y=50. _xscale=300. Tuy nhiên chúng khác nhau ch : v i hairline n u như dày c a nó v n ko thay i. Các b n th o n chúng ta thay i scale c a nó thì code sau. Trong gi này chúng ta s h c cách: • • • • • V ư ng th ng và ư ng cong Tô màu 1 vùng ngư i s d ng v v i chu t t các hình ã v trong 1 movie clip m i T o các text fields 1a.

random()*550. // draw 500 lines for(var i=0.Chú ý: 1.random()*400. } Bây gi các b n th play trò này xem sao. n u như các b n ko nêu i m moveTo thì nó t m c nh là i m (0.0).i++) { // pick random start point x1 = Math.random()*400. y1 = Math.i<500.y2). n u như các b n v thêm các line ti p theo v i lineTo thì i m t bút ư c m c nh là i m cu i cùng c a line trư c. lineTo(550-x-400.100).400). // draw opposite strip moveTo(550-x.0x999999. } . for(var x=-400.y1). lineTo(x+400.x+=10) { // draw diagonal strip from left to right moveTo(x. th thay c a nó i alpha.0x000000.400).100).0). v 500 ư ng lung tung trên màn hình ta có o n code ơn gi n sau: Ví d CODE // set line style lineStyle(2. // move to start point moveTo(x1. y2 = Math.0) 2.x<550. // pick random end point x2 = Math. // draw to end point lineTo(x2. color or thickness M i ngư i th copy and paste o n code sau xem hi n ra gì nào : CODE // set line style lineStyle(2.random()*550.

200.250. curveTo(200. curveTo(control_x.250. curveTo(300.200. moveTo(200. Các b n có th c thêm 1 s bài vi t trong di n àn v ư ng cong bezier thêm .200.200.200-bend.200).200). Nó ch có thêm 1 chút giá tr thôi.200). moveTo(200. 100 ).300). curveTo(250. curveTo(250. moveTo(150.0x000000.300). 0x0000FF. Ta có o n code: CODE lineStyle(3. control_y.300.100).200).V .400. Chúng ta play ti p v i o n code sau: hi u rõ CODE lineStyle( 1.300+bend. curveTo(250.Drawing Curves Tương t khi b n ã bi t cách v line r i thì v curveTo ko có gì là khó.300. Nguyên nhân là do chúng ta cho các giá tr control point gi a 2 i m kia Hãy th thay i 1 chút xem chúng ta có gì nào: CODE var bend = 42. Như ã bi t moveTo là i m b t u. curveTo(300+bend. curveTo(200-bend.300).300. anker2_x.300.200). Control_point là ti p tuy n c a 2 i m anker v i ư ng cong anker2 là i m cu i cùng c a curve. Olala. t i sao chúng ko hi n ra các curve mà l i là 1 hình vuông. curveTo(275. curveTo(250.1b. anker1 ha.250.250. anker2_y).200.200).200).275. s d ng bi n bend thay i control point ta ư c 1 hình trong hơi méo rùi ph n này plz c thêm các topic trong box AS .300.300).200).

300).vnfx. moveTo(250.120). lineTo(250. lineTo(155. B n th copy o n code sau xem nó hi n ra cái gì nào và ch nào ư c tô màu.100).230). beginFill(0xFF0000).230). beginFill( 0xFF0000 ). lineTo(375.fla xem sao Pause nh các giá tr ban u. lineTo(308. lineTo(175.100). lineTo(375.2. 100 ). alpha of fill) Ví d o n code sau: CODE lineStyle( 3. n u b n ã c o n code c a DS post bên ph n Flash hack thì b n s th y nó khác nhau 1 tr i 1 v c như th nào http://www.100 ).120). lineTo(192. D a vào ó ta có th t o nên 1 s hình thú v . N u như 1 vùng ư c c t b i line l n th 2 thì ch ó nó s ko có màu n a. lineTo(345. moveTo(175. 0x000000.100).V v i chu t Ph n ti p theo trong sách này có o n code user v v i chu t.0x000000. 3.50).50). lineTo(175. thành th t mà nói.com/ipb/index. Drawing Filled Areas Trư c h t có th tô màu cho 1 vùng ta c n ph i v 1 hình khép kín ha. endFill(). endFill().php?showtopic=3007 N u b n ã c o n code c a DS thì ng nên c ti p o n code hư ng d n trong . ch nào ko : CODE lineStyle(3. nó cho phép chúng ta qui B n th xem file fla 24betterstar.300). Có cách khác t t hơn v 1 star. Sau ó dùng l nh beginFill v : CODE beginFill(color of fill.

_ymouse.cu n sách này làm gì. 0x000000. startY = newY. } //khi chu t ư c dzí xu ng thì b t onClipEvent(mouseDown) { // ok to draw draw = true. } //b t u onClipEvent (enterFrame) { if (draw) { //l y v trí hi n t i c a chu t newX = _root. cbt d ch cho y v y 1.startY)._ymouse. } //khi th chu t ra thì ko v n a onClipEvent(mouseUp) { // don't draw anymore draw = false.T o 1 shape ơn gi n.Copy o n code sau vào mc (cbt ã phân tích kèm) CODE onClipEvent (load) { // cho các giá tr cho ki u line _root. startY = _root.newY).moveTo(startX._xmouse. newY = _root._xmouse.lineTo(newX. _root. CBt th y là ko c n thi t ph i d ch ch này nhưng trót rùi nên tôn tr ng quy n sách. 100). // xác nh i m start v startX = _root. 2. } } } uv . // reset location for new time startX = newX.lineStyle(0. convert to mc. //n u như v trí khác v i v trí ban u if ((newX != startX) or (newY != startY)) { //v 1 line t i v trí m i _root.

moveTo(100.200).100). with(mymovieClip){ lineStyle(0. B i v y cbt s ko d ch v o n code trong sách này n a.lineTo(200. ko th di chuy n.100). trong khi trong di n àn c a chúng ta có nhi u o n code v làm tuy t hay hơn r t nhi u: bài th tr i làm tuy t c a DS trong box hư ng d n th c hành. Khi chúng ta t nh ng cái này vào trong 1 mc thì thu n ti n hơn r t nhi u.0x000000. nó có b t l i là có th b b t kì mc nào che khu t. level 1. myMoveClip.1). _y. ta có th thay i _x. Như v y b n ã có 1 mc m i tên là myMovieClip. myMoveClip. level c a nó) Ví d : CODE this.0x000000. trong ó có o n code r t hay..createEmptyMovieClip("myMovieClip".createEmptyMovieClip("myMovieClip". } L nh createEmptyMovieClip này còn có r t nhi u tác d ng khác như ta có th attach thêm movie vào ó hay là sao chép (duplicateMovieClip) Rùi bi gi b n hãy th t o 1 mc m i i nào Có 1 bài hư ng d n v bông tuy t khá p trong cu n sách.createEmptyMovieClip("tên c a new mc". lineTo(200. alpha. myMovieClip.1). moveTo(100.200). c b êt h p v i ch này là bài dùng 100% b ng AS c a Raider (tìm trong m c l c). rotation. t o 1 new mc ta dùng l nh : CODE my_mc. N u b n mu n vi t nhanh hơn thì có th vi t l i như sau: CODE this..100).100).lineStyle(0. tuy nhiên code ư c chia nh thành các function khá dài dòng và m t công. có ch a các hình v trên. .Ph n này ch có v y 4.T o 1 movie clip riêng cho các hình ã v Nh ng gì chúng ta ã làm trên ch là v 1 cách ơn gi n trên stage.. scale .

Ví d o n code sau. //liên k t nh ng tính ch t này v i ô text c a chúng ta myTextField. . myTextFormat. myTextFormat. myTextFormat. chi u r ng.bi t thêm chi ti t xin xem file fla 24snowflakes..170. linkage. Sau ó là text hi n lên trong text field ó: CODE text_name.fla 5.size = 48.550.60). mình phân tích trong ó luon cho nhanh: CODE //t o 1 ô ch tên my. sau ó click chu t ph i.font = "Arial".embedFonts = true.text = "Welcome to VNFX". chúng ta s h c cách t o 1 text field và sau ó là làm 1 effect flying words. width=550. //lo i ch . //text myTextField.. // giá tr true là s d ng font chúng ta add trong thư vi n. v trí myTextFormat. //m c nh các tính ch t c a text myTextFormat = new TextFormat(). _x=0. height=60 createTextField("myTextField".setTextFormat(myTextFormat). v trí _x.Textfield ây là ph n cu i cùng.color = 0x330000. vi trí _y. Chú ý khi s d ng embedFont ta c n ph i ch n 1 font trong thư vi n click vào góc ph i trên cùng c a thư vi n.align = "center".0. màu. level 0.text = "N i dung text".0. c . T o Text t o 1 text chúng ta c n t o 1 ô text (text field) v i l nh : CODE createTextField("text_name". ch n font mà b n mu n. level ..chi u dài). false là ta s d ng font m c nh myTextField. _y=170.

size = 24. mc.-20..myTextField._x = Math.createEmptyMovieClip("text"+n.200. myFormat. l i còn ph i t o thêm mc trên stage. // return reference to this movie clip return(mc). myFormat..toUpperCase().40).embedFonts = true.i++) { // create movie clip with this text mc = createText(i. Thôi thì c ưa ra v y CODE function createText(n.align = "center".text) { // create a new movie clip this. mc. nào bây gi chúng ta s làm effect flying words CBT ko dám nh n xét nhi u v o n code và cách làm trong cu n sách này. mc. sau ó có th set thêm các variable máy có th nh n info t user Còn r t nhi u các tính ch t trong textField và textFormat class. dài dòng cho ngư i c.i<textList. // set the text format myFormat = new TextFormat().1. IDname N u b n mu n t o 1 Input text thì c n ph i cho type c a textField là input. myFormat.n).setTextFormat(myFormat). có ch h n ch n a. // set random location mc.random()*450+50.textList[i])._y = Math. mc = this["text"+n]. } function createAllText(textList) { // loop through array of text for(var i=0.-100. // set scale to nothing .font = "Arial".myTextField. tuy nhiên nó ư c chia nh thành các function gây r c r i. // create a new text field mc.text = text.export. các b n nên help trang trí cho textField c a mình c thêm Lý thuy t ch có v y. myFormat.random()*350+25.myTextField.length.color = 0x000000. mc.createTextField("myTextField".

_xscale = 0.scale.i<numWords._yscale = mc.scale += 10.scale.Peace. var textList = words.History._yscale = 0. // set scale variable to negative amount mc.scale > 0) { mc.moveText().Fate._visible = false. Sau ó b n t o 1 mc trên stage và nhét o n code sau vào: CODE onClipEvent(enterFrame) { _parent. mc.Rainbows.scale = 0-i*100. } function moveText() { // loop through words for(var i=0.scale > 300) { mc.Tiny Rocks". mc. // hide movie clip when scale is too big if (mc. // create all text movie clips createAllText(textList).i++) { // increase the scale of this movie clip mc = this["text"+i]. mc._xscale = mc.Cheese. } } function init() { // create array of text var words = "Love. } . // set scale of movie clip to scale when it is a positive number } else if (mc.").Llamas. // remember how many there are numWords = textList.length.mc.Destiny.split(". stop(). } } } init().

//bi n t o s xu t hiên t t mc._xscale=this. myFormat=new TextFormat(). u mc. mc.n) mc=_root["text"+n].myTextField. rùi export v i tên Arial.1. sau ó các text hi n ra t t và d n d n phóng to lên. mc.-100. . effect này ko có gì khác là ta t o 1 array ch a các ô text. if (this.random()*450+50. mc.embedFonts = true.myTextField. mc.scale+=10. trong menu c a thư vi n ta ch n font ruì linkage. mc.scale > 300) { removeMovieClip(this). } } } } a().scale > 0) { this. //m c nh các giá tr ban mc.scale._y=Math._yscale=0.n<wordArr.font="Arial"._yscale = this.setTextFormat(myFormat). Th y o n code trên dài dòng quá nên cbt vi t l i cho nó ơn gi n b t như sau CODE function a(){ wordArr=new Array("vnfx". sau ó dùng thêm 1 var n a.color = 0x000000.size = 24.scale=0-n*100.text = wordArr[n].myTextField. myFormat."flash". //ta t o 3 mc ch a 3 text field for(var n=0."actionscript").align = "center".40).n++){ _root._xscale=mc._x=Math. D n d n phóng to lên thì ta thay i scale thôi.onEnterFrame=function(){ this.createEmptyMovieClip("text"+n.Cu i cùng vào thư vi n. myFormat. myFormat. các text hi n ra t t ta ch c n m c nh scale ban u c a text là ko. mc.-20. n 1 kích thư c nào ó thì bi n m t.200. myFormat.createTextField("myTextField". } else if (this.length.random()*350+25.

5000).//cho l p l i sau 5 s setInterval(a. K t thúc r i có th c m c ki n cáo gì các b n c góp ý ha .

Sign up to vote on this title
UsefulNot useful