Gi th 01: Làm quen v i AS, Your First Look at ASAS là m t ngôn ng l p trình ư c xây d ng trong Flash. AS gi ng như các ngô...
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à...
b n có th t dùng nó        làm ra nh ng s n ph m tuy t v i mà không ai có.Vi t AS     âuCâu h i u tiên nh ng ai tìm hi u A...
1. T o m t movie m i2. t o 3 key frames3. Dung Flash v m i hình khác nhau cho m i frame4. Ch y th movie (nh n Control + en...
M t l nh n a là "Goto Line" giúp b n tìm ư c câu b n mu n tìm. L nh "CheckSyntax" s rà soát script c a b n và tìm nh ng l ...
Gi th 03: H c cách l p trình, Learning to programL p trình có th coi là khoa h c và ngh thu t. Vì v y l p trình viên gi i ...
Bi n sBi n s (parameter) c n thi t trong m i ngôn ng l p trình vì nó lưu tr thông tin vm t cái gì ó trong chương trình. Bi...
Ví d n u như b n ra l nh cho Flash không cho ngư i dùng coi m t o n phim trongFlash n u như user dư i 18 tu i, n u user tr...
ơn gi n nói ra ch mua gà thì chưa     vì bi t mua gà s ng hay gà làm r i. n u muagà s ng thì mua lo i nào v.v. ó là chưa n...
for (var i=0; i<10; i++) {      trace(i);       if (myVariable + 3 == 5) {          trace(myOtherVariable);       }    }}D...
Th c hành: vi t thông tin ra output windownCách t t nh t hi u rõ ch c năng c a output window là s d ng nó. Bây gi mình svi...
Local variable (bi n s c c b ), khác v i global variable, local variable ch có trtruy c p trong cùng m t o n code, hay tro...
N u b n mu n th giá tr coi l n hơn hay nh hơn thì dùng > và <ActionScriptvar a = 7;trace(a < 8);trace(a > 6);trace(a < 1);...
vi t có nghĩa là "n u ... n u không". T khoá if dùng k t qu c a s so sánh nào ó i t i quy t nh kích ho t m t o n code. o n...
nó tương t như C, C++, Java. G m có 3 lo i vòng l p chính là for loop, while loopvà do-while loopfor loop ư c coi là vòng ...
do {  // code th c hi n trong do-while loop} while (a > 0);Ch khác v i while loop là do-while loop th c hi n code trong vò...
trace(myFunction(7));trace(myFunction(13));trace(myFunction(2));Khi ch y o n code này thì output windown s là 10, 16 và 5....
// add 2 to bb += 2;DebuggingThư ng thì th i gian di t b t n g n 1/3 th i gian phát tri n chương trình. N u b nn m v ng ư ...
nhanh r i n ch B, nhưng ch C s ko th y xu t hi n,, ơn gi n vì câu l nh stop() ã d ng animation c a timeline t i Frame 2.Nh...
N ub n tm t          h a, ch ng h n là m t vòng tròn, trong frame u tiên(UP) và kocó gì trong 3 frame sau, tr ng thái Over...
Frame 4 c a layer 2, và b m F6. i u này    m b o cho button c a b n s xu t hi ntrong t t c các Frame c a Layer 1.Bây gi co...
th y box instance name.. t tên cho movietên này ư c s d ng cho Action script , vd : gearsvà như v y, khi b n l p trình , t...
gears.stop();}RewindActionScripton (release) {  gears.gotoAndStop (1);}3) Target m t movieLevel cơ b n u tiên c a Flash là...
Chúng ta ã bàn v button      trên, v y v cơ b n movie clip script cũng gi ng button, ó làActionScriptonClipEvent (load) { ...
1) V trí c a MC:M i th trong Flash u có v trí. V trí này ư c o b ng PIXEL. Góc trên cùng bêntrái c a màn hình là v trí (0,...
Có hai thu c tính cơ b n c a con tr , ó là _xmouse và _ymouse.V y _xmouse và _ymouse là thu c tính c a chính i tư ng mà ch...
4) Co giãn àn h i m t MC:B n có th làm co giãn, thay        i chi u dài chi u r ng c a movie clipScale thu c tínhTHu c tín...
onClipEvent (enterFrame) { // get the distance from the center of the mc to the mouse dx = _root._xmouse-this._x; dy = _ro...
B n ã bi t cách h c sao t o m t button và cho phép ngư i s d ng click vào làms ki n ho t ng. Tuy nhiên       ây ta s h c c...
Quy t inh movie nào ư c click.Có m t cách click vào movie mình mu n. ó là s d ng v trí chu t           xác   nh.S a o n mã...
this.startDrag();    }}onClipEvent (mouseUp) {  if (this.hitTest(_root._xmouse, _root._ymouse)) {     this.stopDrag();  }}...
onClipEvent (mouseDown) {  if (this.hitTest(_root._xmouse, _root._ymouse)) {     // follow the mouse from now on     dragg...
dragging = false;}onClipEvent (mouseDown) {  if (this.hitTest(_root._xmouse, _root._ymouse)) {     // follow the mouse fro...
this.startDrag();  }}onClipEvent (mouseUp) {  if (this.hitTest(_root._xmouse, _root._ymouse)) {     this.stopDrag();      ...
Bây gi movie kéo th c a ta h at ng t t hơn. N u b n s d ng ví d 08drop.fla,movie bên ph i s s d ng o n mã gôc, và nó n m è...
•   <Insert>   •   <PageDown>   •   <Down>   •   <Up>   •   <Delete>   •   <Tab>   •   <Backspace>   •   <Escape>   •   <H...
•   Key.CAPSLOCK   •   Key.ESCAPE   •   Key.RIGHT   •   Key.CONTROL   •   Key.HOME K   •   ey.SHIFT   •   Key.DELETEKEY   ...
L nh Key.addlistner t o listener cho i tư ng trong thông s là _root. Và     i tư ngnày s ư c thông báo v s ki n c a bàn ph...
bi n [b]x,y[/b] ch không i u ch nh v trí c a movie clip, sau ó ph i h p v i bi n[b]speed[/b] tìm v trí m i cho movie clip,...
là substring c a "hello world" hay là "hello" hay là "elle" hay "hell".B n có th l y b t c substring nào c a 1 string v i ...
3. toUpperCase/toLowerCase: dùng              i chu i t vi t thư ng sang vi t hoa vàngư c l iActionScriptvar myString = "H...
}function submitForm() {  if (middleInitial.length == 1) {     trace("Name: "+firstName+" "+middleInitial+". "+lastName); ...
myText += "This text is <FONT SIZE=24>large</FONT>.<BR>";myText += "This text is <A HREF=link.html>linked</A>.<BR>";QUOTET...
tuỳ theo t ng trang web. Mu n nh p văn b n hay giá tr c a bi n nào t HTML, b nch c n thêm vài ch vào sau cái tên c a movie...
firstChar = 0; // b t u ch cái u tiên lineLength = 50; // s ch cái t i a trên news ticker // thêm các kho ng tr ng vào trư...
vi c là c ng thêm 7 và bi n aCODEa = a + 7;a += 7;Nh ng phép so sánhNh ng phép toán so sánh như == so sánh hai s xem có b ...
CODEMath.pow(4, 3);Math.sqrt ây là hàm tính căn, nhưng mà mình xin nói tr ơc luôn là ngoài hàmMath.sqrt, b n còn có th s d...
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 k...
b = num + 1;N  u num = 42, v y thì b s là 43, úng không? Xin tr l i là sai, k t qu b là 421, ơngi n b i vì num là m t chu ...
trace(Math.random());K t qu tr v     i lo i gi ng như 0.023268056102097, nhưng m i l n l i khác nhau.M t ví d khác là b n ...
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
24 gio hoc_flash_2267_89039819_7063-1330520798
Upcoming SlideShare
Loading in...5
×

24 gio hoc_flash_2267_89039819_7063-1330520798

298

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
298
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "24 gio hoc_flash_2267_89039819_7063-1330520798"

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

×