SlideShare ist ein Scribd-Unternehmen logo
1 von 149
Downloaden Sie, um offline zu lesen
Gi th 01: Làm quen v i AS, Your First Look at AS

AS là m t ngôn ng l p trình ư c xây d ng trong Flash. AS gi ng như các ngôn ng
khác như Javascript, C++ v.v. nhưng b n không c n bi t các ngôn ng khác h c
AS (n u có thì càng d hơn).

B t âu h c AS, thì chúng ta coi th AS là gì, làm ư c nh ng gì và có quan h gì v i
các ch c năng khác c a Flash. Trong bài này, b n s tìm hi u coi AS ra i như th
nào, xem cách vi t AS làm sao, tìm hi u AS làm ư c nh ng gì và sau sau cùng là
xác nh ư c nơi lưu tr AS trong Flash.

    i sát nghĩa và ti n cho sau này, mình s không d ch m t s t ng ra ti ng vi t
như script, movieclip v.v.

Script là gì?

AS là ngôn ng l p trình, v i các l nh sai khi n Flash movie làm vi c theo úng
nh ng gì mình vi t (ch có mình vi t sai ch computer không làm sai       ). Ph n nhi u
thì AS ch làm vi c trong môi trư ng c a Flash, tuy nhiên AS cũng có th g i l nh
cho browser, h i u hành v.v.

Script có th ng n g n vài ch hay cũng có th dài c trăm trang. Script có th     ư c
vi t g p l i m t ch hay cũng có th vi t rãi rác kh p nơi trong movie.

Xu t x c a AS

AS rât gi ng ngôn ng C++, Java, javascript .v.v và ư c d a trên tiêu chu n do
ECMA (European Computer Manufactuers Association) l p ra g i là ECMAScript.
Nhi u ngư i hi u l m r ng AS d a trên Javascript, nhưng th c ch t c 2 u d a trên
ECMAScript.

Lúc u vi t script trong Flash r t ơn gi n và cho t i Flash 4 m i u c phát tri n
nhưng cũng v n còn "thô sơ" v i nh ng vòng l p và các i u ki n "if...else". Cho t i
Flash 5 thì dân Flash m i có th l p trình và g n li n script v i các y u t trong
movie. . Sang t i Flash MX thì AS ã tr thành ngôn ng l p trình toàn di n v i hơn
300 câu l nh, hàm .v.v

Nh n biêt AS

AS ơn gi n là nh ng câu l nh ư c vi t b ng ti ng Anh (vì l này mà mình s không
d ch các tư ti ng Anh liên quan n AS, và m t ph n thì mình không gi i thu t ng
computer hay ti ng vi t cho l m) và các phép tính và d u câu. Ví d sau:


ActionScript
on (press) {
  gotoAndPlay ("my frame");
}
B n có th gi i nghĩa o n mã trên b ng cách tìm hi u các t chính trong ó. Ch
"press" g i ý răng ngư i dùng ang kích chu t vào m t cái gì ó, (và trong trư ng
h p này là cái nút) Ch k ti p "gotoAndPlay" do 4 ch "go to and play" g p l i, g i
ý r ng AS ra l nh cho Flash t im t i m nào ó trong movie và b t u chơi t i m
 ó.

AS có th làm nh ng gì?

Flash movie g m có các scence (c nh), và m i c nh s có 1 timeline (th i gi n
bi u???) và timeline s có các frame (khung) b t u t s 1. Thông thư ng thì Flash
s chơi t frame 1 cho t i frame cu i c a scence v i t c c nh và d ng l i hay
l pl it     u tuy theo ngư i làm Flash.

M c ích chính c a AS là thay i th t trong cách chơi c a Flash. AS có th dùng
b t frame nào, hay ch y ngư c tr l i frame trư c hay nh y vài frame r i chơi ti p.
Nhưng ó không ch là nh ng gì AS có th làm ư c. AS có th bi n film ho t hình
c a Flash thành m t chương trình ng d ng có s tương tác c a ngư i dùng. Dư i
 ây là nh ng cơ b n mà AS có th làm:

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

Phát tri n các kh năng c a AS

 i u quan tr ng nh t mà AS có th làm cho b n là nh ng gì chưa ai nghĩ t i      V i
AS và trí tư ng tư ng và óc sáng t o c a b n thì không có gì là không th x y ra v i
AS ư c.

M c ích c a các sách, và c a VNFX là hư ng d n b n hi u bi t v Flash        t   ó
b n có th t dùng nó        làm ra nh ng s n ph m tuy t v i mà không ai có.

Vi t AS     âu

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

Vi t AS    time line

AS có th vi t vào key frame b t c timeline nào.     làm như v y, b n ch n key
frame trong timeline trư c r i b n m Action Panel ra (có th nh n F9) viêt hay
xem AS ã ư c vi t       ó. Mình khuyên b n nên dùng Action Panel dư i d ng
Expert hơn là Normal, vì như v y b n s h c ư c nhi u và l hơn.

Khi vi t AS vào key frame như v y thì AS key frame ó s ho t ng khi mà Flash
chơi t i key frame ó. Ví d như l nh AS stop() ư c t key frame 5 thì Flash
chơi t i key frame 5 thì s d ng l i cho t i khi có l nh khác. cách vi t này g i là vi t
vào time line

M t trong nh ng lý do vi t script vào time line là khi b n mu n dùng function (hàm),
vì function cho phép chúng ta tái s d ng o n mã ó t nhi u nơi, nhi u level khác.

Viêt AS    nút

Các ph n t c a Flash movie ư c g i là symbol (bi u tư ng). thư ng thì symbol là
các hình nh. Và có 3 lo i symbol: button (nút), graphich (hình nh), movie
clips( o n phim). 3 lo i trên thì AS không th vi t li n v i graphic, còn button và
movie clip thì OK.

Nút s không có tác d ng gì c n u như không kèm AS lên trên nó. Mu n kèm AS
vào nút thì ch n nút trên stage (sân kh u: di n tích c a flash movie), r i sau ó m
Action panel và vi t vào ó như ta vi t vào key frame.

AS vi t trên nút ch ho t     ng khi chu t ho c bàn phím tác    ng lên nút mà thôi

Vi t AS    MC

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

AS kèm theo MC có th i u khi n MC ó hay là các MC trong cùng m t timeline
hay các timeline ngoài movie

Bài t p
1. T o m t movie m i
2. t o 3 key frames
3. Dung Flash v m i hình khác nhau cho m i frame
4. Ch y th movie (nh n Control + enter)
5. Sau ó tr l i timeline, vi t vào keyframe 2 o n mã : "stop();"
6. Cho ch y th movie l n n a
7. 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ông
trong vi c vi t AS :


  Gi th 02: S d ng Action panel, Using the Script Editing Window

N u dân     ho coi Timeline là nhà thì dân l p trình v i AS coi Action Panel là nơi
cư ng c a mình, t i ó dân AS có th thay i, vi t t t c các l nh. Vì v y r t quan
tr ng là b n có th s d ng quen thu c Action Panel

Flash MX s d ng các panel giúp b n có th l y các thông tin v movie b n ang
làm m t cách d dàng. Khi b n cài t và chay Flash l n u tiên, Flash s h i b n
mu n s d ng Flash như th nào và Flash s x p t các panel cho h p lý. B n cũng
có 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ác
panel ch gi l i 2 cái chính trên màn hình, mình kéo cái action panel và property
panel qua m t bên monitor, còn cái bên kia cho cái stage, n u c n m panel nào
thì 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). Khi
m i ch y máy l n u thì Action panel ư c set dư i d ng bình thư ng. d ng bình
thư 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 menu
bê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 t
AS 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ông
bao gi ti n ư c, dùng expert mode lúc u hơi m t nhưng b o m là các b n s
h c ư c mau và nh lâu hơn

S d ng Action panel v i expert mode thì b n có nhi u t do hơn, nhưng t do ng
nghĩa v i trách nhi m nên b n ph i c n th t khi vi t code. T normal mode chuy n
sang 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ím
t t). B n có th   i t Normal mode sang expert mode b t c lúc nào, nhưng i
ngư 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 action
panel) và trong ó có nhi u l nh r t t t cho b n khi b n dùng Action panel, nh t là i
v 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 a
b 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.
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 "Check
Syntax" 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 theo
là "Auto Format" và "Auto Format Options" giúp cho b n trình bày script c a b n cho
d     c hơn. B n có th thay i màu s c, font ch v.v. cho script c a b n cho b n
d     c code hơn b ng cách vào Edit > Preferences > ActionScript Editor. Các ph n
còn l i c a pop-up window cho phép b n ư c xu t hay nh p AS dư i d ng text file
và in script ra gi y.

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ư i
expert 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 Action
Panel. 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âu
l 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 Action
panel ư 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 expert
mode

1. T o m t movie m i
2. Ch n key frame u tiên (frame s 1) c a layer 1 (mình không d ch ch layer = l p
vì d trùng v i class= l p)
3. M Action panel (có th dùng phím t t hay vào trong ph n Window > Action panel
4. Chuy n sang expert mode (dùng phím t t hày vào trong pop-up menu c a Action
panel      i)
5. Vào ch     vi t AS
6. Vi t o n code sau:

ActionScript
trace ("I am expert");


Khi b n th movie thì dòng ch "I am expert" s ư c hi n ra trong Output panel, và
mình s    c p n l nh trace() vào nh ng gi t i
Gi th 03: H c cách l p trình, Learning to program

L 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 u
ki 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 ch
có 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 n

Thư 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 s
bàn v nh ng khái ni m l p trình và làm sao áp d ng nó trong Flash

Cách suy nghĩ c a computer

Th t ra computer d t l m ch ng bi t suy nghĩ âu, ch bi t làm vi c theo m nh l nh
m 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 nh
sai 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àm
nh 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 nh
AS 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 a
computer, 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ên
tuy t v i trong vai computer thì b n cũng tr thành m t l p trình viên tài ba.

L nh, hàm, và phép tính

L nh (command) là y u t căn b n c a AS ch th Flash làm m t hành ng c th .
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 t
gotoAndPlay(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ác
phép tính và cho ra (return) m t k t qu . Ví d hàm random() s cho ra m t con s
ng u nhiên nào ó, hay hàm sqrt() s cho ra giá tr bình phương c a 1 s mà hàm
nh n ư c truy n cho.

L nh và hàm u có th ư c truy n cho 1 hay nhi u thông s (parameter, mình s
dùng t parameter thay vì thông s ), và nh ng thông s ó giúp cho hàm và l nh ư c
c th hơn. Ví d gotoAndPlay(5) thì 5 là thông s , n u như không có thông s này
thì l nh "gotoAndPlay" s không bi t rõ ph i nói Flash i âu. 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
Bi n s

Bi n s (parameter) c n thi t trong m i ngôn ng l p trình vì nó lưu tr thông tin v
m t cái gì ó trong chương trình. Bi n s g m có 2 ph n: tên và giá tr . ôi khi b n
ch c n lưu tr thông tin trong bi n s m t th i gian ng n, ví d b n mu n Flash thi
hành 1 s l nh 10 l n thì b n c n m s l n mà Flash ã thi hành l nh có th ra
l nh cho Flash ngưng ngay sau khi thi hành xong l nh l n th 10. Nhưng cũng có lúc
b n c n ph i lưu l i thông tin trong m t th i gian dài hay trong su t quá trình th i
gian Flash chơi.

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 1
ch 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 t
c 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ùng
trong bi n s thì b n nên t tên bi n s ó là userName (mình nghĩ t tên ti ng Anh
d hi u hơn, vì ti ng vi t không d u cũng d b hi u l m), 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ư ng
MovieClip)

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ên
quy ư c tên bi n s theo quy t c sau: tên bi n s luôn vi t thư ng ch      u tiên, và
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ũng
có 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 cho
chu 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 t
c các chu i sau ây u h p l : "ablsdfjksl", "a", " ", "". Khi vi t m t chu i thì c n
dùng d u ngo c kép ("") b t u và k t thúc chu i.

Trong các ngôn ng l p trình khác như Java, C++, hay ngay c ActionScript 2.0 trong
Flash MX 2004 thì b n ph i xac nh trư c lo i thông tin nào b n s lưu trong bi n
s . Nhưng v i ActionScript 1 (trong FlashMX) thì b n không c n làm vi c này. Ví d
bi n s userName lúc u ch a 1 chu i, nhưng sau ó l i ch a 1 s nguyên thì cũng
v 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ào
nh ng bài sau.


 i u ki n

Trong nh ng trư ng h p chúng ta không bi t nên ra l nh cho Flash ph i làm gì cho
thích h p v i t ng tình hu ng thì ta có th dùng " i u ki n" ra l nh cho Flash.
Ví d n u như b n ra l nh cho Flash không cho ngư i dùng coi m t o n phim trong
Flash n u như user dư i 18 tu i, 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 tho
mãn i u ki n chúng ta t ra thì Flash s có 1 giá tr true t phép so sánh trên, 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á tr
ch 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í d
như 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 13
thì chơi o n phim B, và nh ng ai dư i 13 thì chơi o n phim C.

Vòng l p

Con ngư i làm ra computer vì lư i     không mu n làm nhi u, mà bán cái cho
computer. 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òng
l 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 n
mu n cho vòng l p ch y 10 l n thì s có 1 bi n s dùng        m vòng l p, b t u t
0, 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 ng
l i. Sau ây minh ho c a vòng l p này:

1. M t s l nh tr ơc vòng l p
2. B t u vòng l p, set bi n s counter = 0
3. Làm m t s l nh trong vòng l p
4. Tăng bi n s counter +=1
5. N u bi n s counter nh hơn 9, tr l i bư c th 3
6. 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 p
trì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 nh
trong 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ác
l 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 p

Làm nh ng i u không tư ng

L 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 n
trong 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ành
m 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 n
nà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 n
ph 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
ơ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 mua
gà 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 nh
b n ch hay i taxi ra ch b n thành. N u i taxi i hãng nào, tìm s phone g i,
v.v. còn nh b n ch i thì nh tên nào. R i nên m c qu n áo nào i ch . Ra n ch
thì 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 n
mua gà ơn gi n v y mà có th t n c ngày tr i lên chương trình

Vi t AS, b n c n ph i lưu ý t i t t c m i vi c dù nh cách m y cho Flash có th
làm úng theo như ý b n trong m i tình hu ng. Các chương trình có bug không ph i
vì ngư i vi t d mà vì chưa nghĩ t i h t m i tình hu ng thôi.

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ành
nhi u v n nh cho t i khi không còn nh hơn n a, và sau ó xây d ng chương
trình t gi i quy y các v n nh lên d n cho t i v n chính.

Vi t mã hoàn ch nh

B (bug) ơn gi n là l i c a chương trình mà b n t o ra. Bug có th ch là nh ng l i
cú 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ôi
trư 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ân
tí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 script
c 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 do
con ngư i làm ra mà không có bug c . Vì v y b n ng c g ng viêt code sao cho
tuy t h o không có l i.   N u 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 t
kho mà bi t bug     âu di t. Flash có kèm theo vài công c giúp b n debug d dàng
hơ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 Flash

Khi 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ên
chú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.

ActionScript
on (press) {
 var myVariable = 7;
 var myOtherVariable = "Macromedia";
for (var i=0; i<10; i++) {
      trace(i);
       if (myVariable + 3 == 5) {
          trace(myOtherVariable);
       }
    }
}


Dòng u tiên xác nh nh ng o n code sau ó ư c kích ho t khi mà user nh n vào
nút. hàm on(press) ch có th s d ng trong vào trong nút mà thôi. Ngoài ra b n có
th dùng on(release) n u như b n 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 cho
d 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ào
trong 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á tr
b ng 7 cho nó. tương t hàng k ti p l p ra var tên là myOtherVariable và cho giá tr
c a nó là "Macrmedia". 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ác
lo 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 n
b t u là i=0 và nó s tăng thêm 1 cho m i l n l p cho t i khi nó lên t i 9. Tương t
như 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úc
b 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 myOtherVariable

V 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 u
Flash compile movie cho b n và phát hi n ra l i thì Flash s vi t ra các output
window này. Trong khi ch y th movie, thì l nh trace() m i có th vi t các thông tin
ra output window. Output window r t quan tr ng trong vi t "di t b ", dùng nó chung
v 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 i
tư ng .v.v

Trong 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 ch
vi t thông tin ra output window, như o n code trên.
Th c hành: vi t thông tin ra output windown

Cách t t nh t hi u rõ ch c năng c a output window là s d ng nó. Bây gi mình s
vi t m t o n code ng n g i thôi tin ra output window nhe.

1. T o m t file m i

2. Ch n frame u tiên c a movie, m Action panel. Ch nh kích thư c cho action
panel    l n vi t, và nh dùng expert mode

3. 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 n
F2)

Gi ng như action panel, output window có 1 cái pop-up menu nho nh            trên góc
ph 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 t
b ", b n có th ch n không c n output window in ra các l i (none), hay ch in l i
(error), hay ch in 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á tr
cho nó. (b n có th   t tên cho variable là b t c gì b n muôn)

Bây gi b n có th th vi t o n code sau:

ActionScript
var1= 7;
var2= "hello world";
trace ("var1: " + var1+ " /var2: " + var2);

Khi b n ch y th movie thì output window s có hàng ch sau: var1: 7 /var2: hello
world Vì s 7 và "hello world" ư c 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ó th
truy c p giá tr c a nó b t c nơi nào trong movie. T o global variable không òi
h i m t b n ph i làm m t cái gì c bi t c , 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 t
Flash movie nh       trong Flash movie l n. Các hình nh, script trong m t movie clip
là 1 level th p hơn root level.
Local variable (bi n s c c b ), khác v i global variable, local variable ch có tr
truy c p trong cùng m t o n code, hay trong cùng m t timeline. Khi dùng local
variable thì khi ra kh i timeline hay o n code ó thì Flash s xoá local variable ra
kh i b nh . Mu n t o local variable thì dùng t khoá var trư c tên c a local
variable, ví d : var myLocal = "This is local"; B n ch c n dùng t khoá var 1 l n
thô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 n
code:

ActionScript
var myLocal = 9;
myLocal = 11;
trace(myLocal);


Phép so sánh và các phép tính

So sánh 2 giá tr trong AS r t ơn 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 n
code sau xét coi giá tr c a a có b ng 7 không, và in k t qu ra output window. Và khi
test o n code sau, b n s th y true output window

ActionScript
var a = 7;
trace(a == 7);

N u b n dùng l n = v i == thì s b l i         runtime ch Flash s không có th tìm ư c
l i này cho b n.

B n có th dùng ==          so sánh 2 chu i m u t :

ActionScript
var myString = "Hello World.";
trace(myString == "Hello World.");
trace(myString == "hello world.");

Khi b n test o n code trên thì b n s có ư c "true" và "false" output window, vì
l n so sánh th nh t thì b ng nhau, nhưng l n th hai thì không vì ch H và h khác
nhau.

N u b n mu n th coi 2 giá tr có khác nhau không thì dùng ky hi u !=

ActionScript
var a = 7;
trace(a != 9);
trace(a != 7);

Hàm trace        u tiên s cho ra "true" vì 7 khác 9, và cái th hai thì s cho ra "false"
N u b n mu n th giá tr coi l n hơn hay nh hơn thì dùng > và <

ActionScript
var a = 7;
trace(a < 8);
trace(a > 6);
trace(a < 1);

 o n code trên s cho ra "true", "true" và "false" trong output window vì "a" qu th t
nh 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 nhau
thì dùng ký hi u >= và <=

ActionScript
var a = 7;
trace(a <= 9);
trace(a >= 5);
trace(a >= 7);

 o n code trên s cho ra 3 k t qu "true" c .

B n có th thay i giá tr 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 n
có th vi t như 2 cách trên a = a +1 và a += 1 và còn cách th 3 a++ . D u ++ ch làm
tă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:

ActionScript
var 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á tr
c 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:

ActionScript
var 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ăng
giá 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 t
t 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 n

Trong 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
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 a
variable a v i 7, n u úng thì Flash s chơi frame 10

ActionScript
if (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 so
sánh gi a ngo c ơn (). T t c các code ư c kích ho t n u i u ki n ư c tho
mãn s    trong âu ngo c móc {}.

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 :

ActionScript
if (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ùng
so sánh a h p (compound comparision). Trong i u ki n c a Flash ta có th dùng
nhi u so sánh     i t i m t k t qu chính xác hơn. Ví d n u như a l n 10 và a ph i
nh hơn 15 thì ra l nh cho Flash chơi frame 10.

ActionScript
if ((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 2
phé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ư ch
c n tho mãn 1 i u ki n trong 2 phép so sánh thôi.

ActionScript
if ((a > 10) or (a < 15)) {
   gotoAndPlay(10);
}


Vòng l p

Cú pháp c a vòng l p (loop) thì hơi r c r i hơn so v i cú pháp c a i u kiên if. nhưng
nó tương t như C, C++, Java. G m có 3 lo i vòng l p chính là for loop, while loop
và do-while loop

for loop ư c coi là vòng l p chính v i t khoá for và cú pháp c a nó nhìn như sau:

ActionScript
for(var i=0;i<10;i++) {
  trace(i);
}

N u b n cho ch y o n code trên thì b n s có ư c t s 0 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 a
for 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 u
ki n b t u v i vi c t o local variable cho for loop var i=0. ph n này for loop ch
th 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 loop
i<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 c
vò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 i
b t u. 3 ph n này u ư c b vào trong ngo c ơn (). Còn nh ng code th c hi n
trong m i vòng l p thì trong ngo c móc {}. Bây gi chúng ta gi làm computer và
ch y cái for loop này.

   1. T o local variable và n nh giá tr cho nó b ng 0
   2. Ki m tra giá tr 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 loop


T i bư c th 5 thì giá tr c a i s b ng 10

while loop v i t khoá while có cú pháp nhìn tương t như sau:

ActionScript
while (a > 0) {
  // code th c hi n trong while loop
}


  ơn gi n hơn for loop, while loop tương t như i u ki n if ơn gi n, th c hi n các
code trong vòng l p n u i u ki n c a while loop ư c thoã mãn, vì v y b n d dàng
r 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 code
trê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 ng
l i.

Gi ng như while loop, do-while loop có cú pháp nhìn như sau:

ActionScript
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 i
ki m tra i u ki n. (while loop ki m tra i u ki n r i m i ch y code trong 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ì ch
phá 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 t
ph 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àm

Cho t i bây gi các script c a chúng ta u ư c vi t vào frame u tiên c a moive,
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 tr
nê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 o
và 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 t
function ơn gi n:

ActionScript
function 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ư i
ta 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 1
hay 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 gi
chú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 a
myFunction. 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 i
cù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 code
dùng chung 1 fuction và cho 3 k t qu khác nhau

ActionScript
trace(myFunction(7));
trace(myFunction(13));
trace(myFunction(2));

Khi ch y o n code này thì output windown s là 10, 16 và 5. Ví có th tái s d ng
nên chúng ta ch c n thay i code trong myFunction thì t t c các k t q a có ư c
t g i function này cũng thay i theo luôn.

Dot Syntax

M t i u b n s th y r t nhi u trong quá trình h c AS là dot syntax (h ng bi t d ch
sao bây gi ) Dot syntax là phương pháp ư c dùng trong l p trình theo hư ng i
tư ng (oob: object oriented programming).

  â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ư ng
toá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ư ng
mà fucntion này tr c thu c, ó là Math, theo sau ó là d u ch m (dot), và r i t i tên
c a function ó là sqrt. Cách vi t như sau:

ActionScript
var 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   i
tư ng, như là movie clip.

ActionScript
var 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 gi
thì quan tr ng là b n n m ư c khái ni m v dot syntax.

Chú gi i

M t trong c tính c n có c a l p trình viên là vi t code làm sao cho d    c và d
hi u. Nhưng nhi u khi dù khi vi t có c g ng cách m y thì nh ng o n code ó v n
khó hi u cho ngư i xem, vì v y m i c n nh ng l i chú gi i. Mu n chú gi i trong AS
thì ch c n 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
// add 2 to b
b += 2;


Debugging

Thư ng thì th i gian di t b t n g n 1/3 th i gian phát tri n chương trình. N u b n
n m v ng ư c "nghê thu t" di t b thì b n s rút ng n ư c r t nhi u th i gian. Có 3
cách di t b h u hi n là: phân tích, vi t message ra output window và dùng AS
debugger.

V i các lo i b ơn gi n thì phân tích các o n code s giúp b n b t trúng con b c n
di t. 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 debugger
có s n trong Flash. Debugger window cho phép b n có th coi h t t t c moi thành
ph n trong movie c a b n, cho phép b n dùng AS b t ch khi nào và ch nào b n
mu 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 movie

S 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:

ActionScript
stop();


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ác
animation 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 nh
play.. ta s bàn n nó sau.

Ví d
T i frame 1, b n hãy th m t text box và vi t vào ó Ch A
T i frame 2, b n hãy th m t text box và vi t vào ó Ch B
T i frame 3, b n hãy th m t text box và vi t vào ó Ch C

Bây gi b n hay     t câu l nh stop(); vào Frame 2, b n se th y ch A xu t hi n r t
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 kia

M 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ó th
nh y t frame này n frame mà b n mu n. B n có th sư d ng s th t c a frame
hay là tên c a frame


ActionScript
gotoAndPlay(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 nh
gotoAndPlay 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ên
frame.


ActionScript
gotoAndPlay("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à nextFrame
and 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ình

T o m t button

Có nhi u cách t o nút. M t trong nhưng cách ó là ch n Insert, New Symbol t
Menu. 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 th
timeline 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 a
button.
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à ko
có gì trong 3 frame sau, tr ng thái Over và Down c a button s gi ng như tr ng thái
c 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 qua
button, button s chuy n sang màu xanh.

Khi b n t o xong 1 button, b n tr lai movie timeline chính. Và button c a b n ã s n
sà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 th
nó vào nơi nào b n c n trên c a s thi t k .

T o script cho button

     t script cho button, u tiên hãy ch m m t button. Sau ó vào c a s Action
b ng cách b m chu t ph i lên button và ch n Action t menu xu t hi n.

Hãy Ch c ch n r ng c a s Action ã ư c t ch         Expert. B n có th ki m tra
bă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.

ActionScript
on (release) {
  trace("You clicked the button!")
}

on : là m t keyword, ư c g i ra x lí m t s ki n
Release : Là m t s ki n, khi ngư i s d ng click vào button và nh chu t ra. o n
mã 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 Release
ch 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 i
th 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 Power
Point.. Khi chúng ta b m chu t, các slide s chuy n sang slide khác.

1. M Flash, ch n New

2. Trong Layer 1, t Frame 1 n Frame 4, b n hãy ăt các bi u tư ng hay hình nh,
text khác nhau phân bi t ư c các frame

3. 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
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 n
trong 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 a
button, ch ko ph i vào b t kì frame nào

ActionScript
on (release) {
  nextFrame();
}

Cu i cùng ch n Frame 1 Layer 1 action và chèn o n code sau

ActionScript
stop();

Hãy ch y th slide show 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 n
hay down load file FLA xem .. easy


  Gi th 06: i u khi n movie clip, Controlling Movie Clips

6th Hour i u khi n movie clip
B ns h c
1- ra l nh cho movie clip
2-T o playback cho animation
3-TÌm hi u ích(target) c a movie clip
4-T p vi t code cho movie clip
5-T o movie clip có th ch y lùi l i.


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ưng
b 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à ko
c n Actioncript.

     i u khi n ư c movie, b n ph i t tên cho movie clip. Chú ý r ng m t movies
clip có 2 tên, m t tên s d ng cho timeline . M t tên s d ng cho actioncript. 2 tên
này có th     t trùng tên nhau ho c khác tên nhau.

Làm sao        t tên cho movie clip :
Ch n insert -----> New Symbol (ho c b m Ctrl F8), t tên cho movies clip
(nh 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 animation

Th movie gear animation vào c a s thi t k .. PHía dư i c a s properties, ban s
th y box instance name.. t tên cho movie
tên này ư c s d ng cho Action script , vd : gears

và như 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í d

ActionScript
gears.stop();
gears.gotoAndStop(5);

Nh r ng movie clip luôn có level. N u o n mã ư c t trên chính movieclip, b n
ko c n s d ng tên movies, ch c n gotoAndStop();. N u b n t c tên movie vào,
Flash s tìm movie c a b n t timeline chính.. T c là s ph i qua 2 level. ---> ch m
hơn chút.

2)Animation Playback Controller
Hãy down load source code t trên ph n download và xem. V cơ b n, chúng ta làm
cá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 code

ActionScript
gears.stop();

-T o các button Advance, Previous, Play, Stop, and Rewind
-Code cho các button l n lư t là
Advance
ActionScript
on (release) {
  gears.nextFrame();
}

Previous
ActionScript
on (release) {
  gears.prevFrame();
}

Play
ActionScript
on (release) {
  gears.play();
}

Stop
ActionScript

on (release) {
gears.stop();
}

Rewind

ActionScript
on (release) {
  gears.gotoAndStop (1);
}


3) Target m t movie

Level cơ b n u tiên c a Flash là time line chính(Level 0). N u b n mu n ra l nh
cho 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 n
gotoAndStop();

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 nh

gears.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ành
s 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 n
t 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 clips

ActionScript
var 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ũng
x 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 y
this 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
Chúng ta ã bàn v button      trên, v y v cơ b n movie clip script cũng gi ng button,
 ó là


ActionScript
onClipEvent (load) {
  trace("This clip has been loaded.");
}


onClipEvent : key word g i s ki n (gi ng on c a button)
load : s ki n này x y ra khi movie clip xu t hi n l n u tiên trên màn hình . NÓ ch
x 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 p
t c ch y. S kiên enterFrame x y ra liên t c bên trong movie clip m i khi n m t
frame m i. S ki n này s th c thi o n mã m t cách liên t c cho n khi nó b k t
thúc.

ActionScript

onClipEvent (enterFrame) {
  trace("This clip has entered a new frame.");
}


bây gi hãy copy 2 o n code trên vào c a s action c a timeline chính và run .. b n
s th y

ActionScript
This clip has been loaded
 This clip has entered a new frame
 This clip has entered a new frame
 This clip has entered a new frame
 This clip has entered a new frame

dòng ch s ti p t c hi n ra cho     n khi b n t t movie.


  Gi th 07: d ch chuy n và thay          i movie, Moving and Changing Movie Clips

M 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
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ên
trá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ó nghia
là 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.. ^^
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 u
b 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 s
d ng chúng trên movie clip, thì nó là thu c tính c a movie clip. N u xmous y mouse
là 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 xmouse
ymouse 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í du
CODE
onClipEvent (enterFrame) {
  trace(_root._xmouse);
  trace(_root._ymouse);
  trace("");
}


Khi b n ch y movie, b n s th y các c p s ư c in ra, ó chính là t a x,y mouse
.Hãy 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 c
gó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 mouse
khô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ài
c 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 i
luôn lên k ho c c n th n trư c khi dùng xmouse, y mouse

3) Làm movie quay

M t thu c tính khac ó là thu c tính _rotation

Thu c tính rotation ch p nh n giá tr là góc . M t vòng tròn chia ra 360 , mi n
giá tr c thu c tính rotation là -180 và 180. B n có th s d ng giá tr integer ho c
floating point.

Giá tr c a _rotation luôn luôn trong vòng -180 và 180, ví d 179, ho c -179. Nhưng
n 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ác
bi u toán ++, += thay i giá tr . Hãy xem ví d sau
CODE

myClip._rotation = 90;
myClip._rotation++;
_root["myClip"]._rotation = 45;
this._rotation += 0.5;
4) Co giãn àn 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 clip
Scale thu c tính

THu 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 nh
hơ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 bao
nhiê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 l
cho movie clip.
CODE
onClipEvent (load) {
  // get the original width and height of the mc
  origWidth = this._width;
  origHeight = this._height;
}
onClipEvent (enterFrame) {
  // get the distance from the center of the mc to the mouse
  dx = _root._xmouse-this._x;
  dy = _root._ymouse-this._y;

    // calculate the percentage of scale
    sx = 100*dx/(origWidth/2);
    sy = 100*dy/(origHeight/2);

    // set the scale of the mc
    this._xscale = sx;
    this._yscale = sy;
}



Chú ý      ây ta s d ng 2 thu c tính m i, _width và _height tr v chi u cao và chi u
r 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, _height
S khác nhau gi a scale và width,height í scale s d ng giá tr ph n trăm. Còn width
height s d ng pixel . Movie có th có giá tr sau: width 75, height 45, nhưng scale
cho 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
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ên
onClipEvent(load) b i gái tr chi u dài chi u cao c a movie g c ko c n lưu tr . â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) Visibility

M 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á tr
boolean true , false.

CODE
myClip._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 100
CODE
myClip._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 t
c 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, 50
và 100 (t trái sang)




    Gi th 08: ch n, kéo th movie clip, Moving and Changing Movie Clips

1. Selection
B n ã bi t cách h c sao t o m t button và cho phép ngư i s d ng click vào làm
s ki n ho t ng. Tuy nhiên       ây ta s h c cách click vào ch n l a m t i
tư ng trên màn hình.
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 t
button 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àn
hì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ên
là offbutton. Button này có mã là


CODE
on (release) {
  this.gotoAndStop(2);
}

b ng this, button s g i n movie clip mà nó n m trên y. Frame th 2 ch a nút
tươ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ùng
nh n ra khi nó ư c ch n.

CODE
on (release) {
  this.gotoAndStop(1);
}

cu i cùng   t vào frame 1
CODE
stop();

Bây gi hãy ch y     xem.


Phương th c hitTest
Có cách khác làm movie có th s lý mouse click mà không c n button, ó là s
d ng s ki n onClipEvent(mouseDown) ho c là onClipEvent(mouseUp)ví d
CODE
onClipEvent (mouseUp) {
  this.gotoAndStop(2);
}
Hãy ch y ví d 08twomcs1.fla xem.B n s th y t i sao onClipEvent(mouseUp)
khác v i on (Release) . N u b n click vào movie, c hai u ph n ng.B i vì t t c
movie clip nh n s ki n mouse up ư c g i n cho chúng.
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ư sau

CODE
onClipEvent (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 ta
mu 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 MC
t 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 1
kh nó frame th nh t, giá tr 2 khi nó frame th 2.

CODE
onClipEvent (mouseUp) {
  if (this.hitTest(_root._xmouse, _root._ymouse)) {
     if (this._currentFrame == 1) {
        this.gotoAndStop(2);
     } else {
        this.gotoAndStop(1);
     }
  }
}
Bây gi b n ã th y các cách t o s ch n l a movie. Cách thư nh t ti n l i n u b n
mu n dùng c các trang thái khác như Over,up , down.. Cách th hai thì không c n
nhi u bi u tư ng trong thư vi n.

Enjoy..

2) Kéo m t movie clip
Bâ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 ng
nhưng nó không cho b n nhi u l a ch n trong vi c s a i và giám sát movie.

Cá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 n
movie c a b n i theo chu t, còn stopDrag khi b n mu n movie c a b n không theo
chu t n a. ây là o n code cơ b n :

CODE
onClipEvent (mouseDown) {
  if (this.hitTest(_root._xmouse, _root._ymouse)) {
this.startDrag();
    }
}

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




S ki n onClipEvent nhìn tương t như ta ã làm trên. Chúng s d ng hitTest
nh n bi t movie nào ang ư c click. Và sau ó câu l nh startDrag và stopDrag ư c
s d ng. Khi chu t ư c b m xu ng, câu l nh startDrag th c thi. Và ngư c l i, khi
chu 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 t
cá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 t
movie ư 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 s
còn l i là left, top, right, bottom. N u b n t chúng, movie c a b n ch có th ư c
kéo theo các ràng bu c ó.


Kéo nâng cao

Bây gi ta h c cách kéo movie mà ko dùng câu l nh startDrag và stopDrag. V y làm
th nào??

B n c n có 4 ph n mã sau trong movie c a b n:
Th nh t là s ki n onClipEvent(load), 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). S
ki 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 y
CODE
onClipEvent (load) {
  // start out not dragging
  dragging = false;
}
onClipEvent (mouseDown) {
  if (this.hitTest(_root._xmouse, _root._ymouse)) {
     // follow the mouse from now on
     dragging = true;
  }
}

onClipEvent (enterFrame) {
  if (dragging) {
     // set to location of the mouse
     this._x = _root._xmouse;
     this._y = _root._ymouse;
  }
}

onClipEvent (mouseUp) {
  if (this.hitTest(_root._xmouse, _root._ymouse)) {
     // don't follow the mouse any longer
     dragging = false;
  }
}




Trong ví d 08complexdrag.fla ch a 2 MC. Ki m tra movie, nhưng ch s d ng MC
bên trái. ây là MC làm theo o n code trên. Chú ý xem trung tâm movie ơc khóa
v i v trí chu t như th nào. Nó làm movie nh y ngay l p t c n u b n click vào nó.

Thông thư ng, khi b n mu n kéo MC ó lên màn hình, b n không mu n nó nh y t i
   làm kh p v trí chu t v i trung tâm c a MC. Hãy kéo file xung quanh màn
hình.B n s th y khi b n click chu t vào b t kì i m nào trên movie, movie s l p t c
làm kh p v trí click chu t v i trung tâm movie. i u này cũng tương t v i câu l nh
startDrag .

   tránh i u này, chúng ta ch c n thêm m t o n code nh . Khi ngưòi s d ng b m
chu t, chúng ta s l y offset, ây là kho ng cách t chu t cho n trung tâm c a
movie. Sau ó, thay th b ng vi c gán v trí chu t n trung tâm movie, ta se thêm
vào offset cho MC luôn luôn xu t hi n offset b i cùng m t giá tr khi ngư i dùng
kéo.

Tư ng tư ng , ví d ngưòi dùng click vào m t i m cách trung tâm movie 5 pixel.
Sau ó ta luôn mu n kho ng cách 5 pixel ó ư c duy trì. i u này làm cho ngư i
dùng có th click vào b t c i m nào kéo movie.
 ây là code cho movie 2(bên ph i)

CODE
onClipEvent (load) {
 // start out not dragging
dragging = false;
}

onClipEvent (mouseDown) {
  if (this.hitTest(_root._xmouse, _root._ymouse)) {
     // follow the mouse from now on
     dragging = true;

        // get the mouse offset
        xOffset = this._x - _root._xmouse;
        yOffset = this._y - _root._ymouse;
    }
}

onClipEvent (enterFrame) {
  if (dragging) {
     // set to location of the mouse
     this._x = _root._xmouse + xOffset;
     this._y = _root._ymouse + yOffset;
  }
}

onClipEvent (mouseUp) {
  if (this.hitTest(_root._xmouse, _root._ymouse)) {
     // don't follow the mouse any longer
     dragging = false;
  }
}



Hãy xem movie           th y khác bi t gi a 2 o n code.

3) Kéo và th

Bây gi ta ã bi t kéo movie, v y ta s th nó âu.?
V n là b n mu n theo dõi hành ng c a ngư i s d ng và xác inh ngư i s dung
  t movie   âu.
Basic Drop Zone

Ch c năng hitTest có th ư c s d ng xác              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 t
movie khác tên là dragZone trên m t lêvl(root level)

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

        // see if this mc is inside the dropZone mc
        if (this.hitTest(_parent.dropZone)) {
           trace("Dropped in zone");
        } else {
           trace("Dropped outside zone");
        }
    }
}



Chú ý hitTest không ư c s d ng như các bài trư c, chúng ta thay th v trí _x và _y
b i m t movie khác.


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

Hãy xem hình minh h a. T t c các movie Dragme           u n m è trên DropZone.

Có 2 cách s d ng hitTest. Th nh t là s d ng t a     x,y. Chúng ta có th s d ng
movie clip như v trí x,y, r i sau ó s d ng dropzone như m t movie clip th nh t.

CODE
if (_parent.dropZone.hitTest(this._x,this._y)) {



V i o n code này, thay th ví d trên, movie clip s n m bên trong hình ch nh t
c a vùng dropzone.
Chúng ta có th thêm m t bư c n a v i hittest. B ng cách thêm tham s th 3 cho
hitTest, chúng ta có th dùng hitTest xem hình d ng chính xác c a movie clip và
xác inh v trí x,y. Bi n th 3 này c n gán true n u b n mu n hành vi này. N u nó
false, nó se hành ng gi ng như ch c năng hitTest bình thư ng. ây là o n code

CODE
if (_parent.dropZone.hitTest(this._x,this._y,true)) {
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 a
dropzone. Các movie khác s d ng o n code ph c t p hitTest và chúng có trung tâm
nàm bên trong hình d ng g c c a dropzone.


  Gi th 09: L y thông tin t ngư i dùng, Getting input from the user

Cho 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ông
tin vào Flash.

Làm sao      phát hi n khi ngư i dùng b m phím

Có 3 cách phát hi n khi m t phím tên bàn phím b nh n. 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ùng
l 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 khi
mà ngư i dùng nh n phím "a".

ActionScript
on (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ân
bi t d ng ch (case-sensitive) nên n u b n ch code cho nó nh n phím "a" thì nó s
không th nh n ư c phím "A". May mà chúng ta có th dùng bao nhi u b x lý d
ki 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 (space
bar) ... 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ím
mũi tên trái (left arrow key) thì dùng o n code sau:

ActionScript
on (keyPress "<Left>") {
  trace("Left pressed.");
}

Và sau ây là các code dành cho các phím    c bi t:

   •   <Right>
   •   <Left>
   •   <End>
   •   <PageUp>
•   <Insert>
   •   <PageDown>
   •   <Down>
   •   <Up>
   •   <Delete>
   •   <Tab>
   •   <Backspace>
   •   <Escape>
   •   <Home>
   •   <Enter>
   •   <Space>

B n có th h p nhi u d ki n l i chung v i nhau. Ví d b n có m t 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.

ActionScript
on (keyPress "b", release) {
  trace("'b' pressed or button clicked.");
}

Các ví d trên    u có trong movie m u 09keybutton.fla

2. Phát 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 i
không th phát hi n ư c trư ng h p khi ngư i dùng nh n phím và không nh t tay.
Ví d n u b n làm m t game b ng Flash, và trong ó ngư i chơi cho th làm cho các
nhân v t trong game di chuy n liên t c n u như h nh n phím mũi tên và không nhât
tay lên.

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 p
h 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 hay
khô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:

ActionScript
if (Key.isDown(Key.LEFT)) {
   trace("The left arrow is down");
}

Hàm Key.isDown s cho ra k t qu úng hay sai ph 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ên
trái. v y khi mũi tên trái b nh n thì output window s cho ra hàng ch "The left arrow
is down". 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
•   Key.CAPSLOCK
   •   Key.ESCAPE
   •   Key.RIGHT
   •   Key.CONTROL
   •   Key.HOME K
   •   ey.SHIFT
   •   Key.DELETEKEY
   •   Key.INSERT
   •   Key.SPACE
   •   Key.DOWN
   •   Key.LEFT
   •   Key.TAB
   •   Key.END
   •   Key.PGUP
   •   Key.UP

N u b n mu n ki m tra xem n u nh ng phím bình thư ng ang b nh n thì b n ph i
dù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"

ActionScript
if (Key.isDown(Key.getCode("a")) {
   trace("The left arrow is down");
}

Cho 2 ví d trên, b n có th coi source Fla 09keyobject.fla

3. Key Listener

Key listener ư c dùng     quan sát bàn phím và thông báo cho Flash khi phím ư c
nh n.

   cách th 2 chúng ta dùng i tư ng Key ki m tra coi phím có b nh n hay
khô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ư i
dùng nh n phím quá nhanh, trư c khi onClipEvent(enterFrame) k p kích ho t i
tư ng key ki m tra thì Flash s không bao gi bi t ư c ngư i dùng ã nh n phím.
M t b t ti n n a khi dùng cách th 2 là n u b n mu n ngư i dùng nh n phím nhi u
l n thì i tư ng Key s không phân bi t ư c ó là 1 l n nh n dài hay là nhi u cái
nh n th t nhanh.

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àn
phím và thông báo cho Flash ngay khi phím ư c nh n.

Listener có 2 ph n. Ph n u là ph n t o listener. B n ph i ra l nh cho listener này
chú ý vào s ki n c a bàn phím. ây là code cho t o listener

ActionScript
Key.addListener(_root);
L nh Key.addlistner t o listener cho i tư ng trong thông s là _root. Và     i tư ng
nà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 t
code x lý s ki n cho _root. Ví d o n code sau s ư c th c hi n khi _root nh n
 ư c 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 n
này ư c thông báo t i _root (b n có th thay th _root b ng b t kỳ i tư ng nào) và
sau ó thì hàm Key.getAscii() s cho ra k t qu là mã s ASCII tương ng v i phím
v a ư c nh n, ví d A = 65, B = 66 .v.v

B n có th xem cái fla m u 09keylistener.fla, trogn ó có o n code trên (lưu ý là
trong fla này s không có gì h t ngoài o n code AS frame u tiên)

N u b n mu n bi t phím ư c nh t là gì thay vì ASCII code thì b n có th dùng
String.fromCharCode() cho ra k t qu b n mu n tìm. Thay dòng
trace(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 a
movie clip theo d i s ki n keyDown, keyUp, nhưng cách này không còn ư c
dùng trong Flash MX n a, vì v y b n ch có th cách này trong các Flash trư c MX
thôi.

Bài T p: Dùng phím     di chuy n movie clip

1. T o m t file Flash m i
2. T o m t movie clip ơn gi n
3. G n o n code này vào movie clip ó

ActionScript
onClipEvent(enterFrame) {
  if (Key.isDown(Key.LEFT)) this._x -= 5;
  if (Key.isDown(Key.RIGHT)) this._x += 5;
  if (Key.isDown(Key.UP)) this._y -= 5;
  if (Key.isDown(Key.DOWN)) this._y += 5;
}[/b]
  o n code trên ki m tra 4 phím mũi tên và di chuy n movie clip theo hư ng c a mũi
tên. B n hãy th movie coi sao

4. 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
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ư c
khi 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úng
ta thay i t c     di chuy n c a movie clip, ch c n thay i giá tr c a bi n speed

Nh p văn b n

Trong 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 khung
input 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ên
box tài li u tham kh o thêm)

Các ch c năng và thao tác làm vi c v i chu i ký t (string

Chúng ta có r t nh iu thao tác v i chu i ký t :

1. Ghép 2 chu i l i v i nhau: dùng ký hi u +. Ví d b n có variable tên là myVariable
có 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 n
cũng có th ghép nhi u hơn 2 chu i l i v i nhau b ng cách trên.

2. Substrings. Substring là m t chu i ký t nh trong 1 chu i ký t khác. Ví d "ell"
là substring c a "hello world" hay là "hello" hay là "elle" hay "hell".

B n có th l y b t c substring 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 t
ph 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 t
b 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"

ActionScript
var 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 ch
cá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 qu
tư ng t như cách 1

ActionScript
var myString = "Hello World.";
trace(myString.charAt(6));


Các hàm c a      i tư ng String

Sau â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ư ng
String. N u hàm indexOf tìm không th y ký t hay chu i nh thì s cho ra k t qu -1.
  ây là cú pháp:myString.indexOf(substring,start)); substring là ký t hay chu i
mình mu n tìm, start là s th t mình b t u tìm trong i tư ng String. Ví d :

ActionScript
var myString = "Hello World.";
//output: 6
trace(myString.indexOf("W",0));
//output: 2
trace(myString.indexOf("llo",0));


2. lastIndexOf: tương t như indexOf nhưng chúng ta tìm ký t cu i cùng i ngư c
lên t iký t   u tiên.

ActionScript
var myString = "Hello World.";
//output: 2
trace(myString.indexOf("l",0));
//output: 9
trace(myString.lastIndexOf("l"));
3. toUpperCase/toLowerCase: dùng              i chu i t vi t thư ng sang vi t hoa và
ngư c l i

ActionScript
var myString = "Hello World.";
//output: HELLO WORLD
trace(myString.toUpperCase());
//output: hello world
trace(myString.toLowerCase());


4. length: là    c tính c a Sring dùng     tính chi u dài c a chu i.

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


Bài t p:

1. m file 09form-noscripts.fla
2. ki m tra tên c a variable c a m i input text field qua property panel
3. Thêm o n mã sau vào nút CLEAR

ActionScript
on (release) {
  clearForm();
}

4. thêm o n mã sau vào nút SUBMIT

ActionScript
on (release) {
  submitForm();
}

5. Thêm o n code sau vào frame           u tiên c a movie

ActionScript
function clearForm() {
  firstName = "";
  middleInitial = "";
  lastName = "";
  address = "";
  city = "";
  state = "";
  zip = "";
  phone = "";
  comments = "";
}

function submitForm() {
  if (middleInitial.length == 1) {
     trace("Name: "+firstName+" "+middleInitial+". "+lastName);
  } else {
     trace("Name: "+firstName+" "+lastName);
  }
}



R i b n test movie.


    Gi th 10: T o Và i u Khi n Văn B n, Creating and Controlling Text

Dynamic Text

B 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 dung
vă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ó th
thay i b t c lúc nào nên m i g i là dynamic text

Trư c tiên b n t o dynamic text b ng d ng c text trên thanh toolbar, 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 variable
b ng cách vi t tên c a variable ó vào trong khung Var trong propery panel. Ví d
như b n t variable myText vào trong khung Var thì khi b n thay i giá tr c a
myText thì văn b n trong dynamic text field cũng thay i gi ng như giá tr c a bi n
myText. 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ăn
b 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ó th
dù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 n
sau:

CODE
myText = "This text is <B>bold</B>.<BR>";
myText += "This text is <I>italic</I>.<BR>";
myText += "This text is <U>underlined</U>.<BR>";
myText += "This text is <FONT COLOR='#FF0000'>red</FONT>.<BR>";
myText += "This text is <FONT FACE='Arial Black'>Arial Black</FONT>.<BR>";
myText += "This text is <FONT SIZE='24'>large</FONT>.<BR>";
myText += "This text is <A HREF='link.html'>linked</A>.<BR>";


QUOTE
This text is <B>bold</B>.<br>
This text is <I>italic</I>.<br>
This text is <U>underlined</U>.<br>
This text is <FONT COLOR='#FF0000'>red</FONT>.<br>
This text is <FONT FACE='Arial Black'>Arial Black</FONT>.<br>
This text is <FONT SIZE='24'>large</FONT>.<br>
This text is linked.

Siêu liên k t (hyper link) trên có tác d ng gi ng như trong HTML như khác 1 i u là
không có g ch dư i
Sau ây là nh ng th HTML có th dùng trong Flash MX

   •   <B></B>: vi t m
   •   <I></I>: vi t nghiêng
   •   <U></U>: g ch dư i
   •   <FONT FACE='Arial Black'></FONT>: ki u ch
   •   <FONT SIZE='24'></FONT>: c ch
   •   <FONT COLOR='#XXXXXX></FONT>: màu ch
   •   <A HREF=''></A>: link
   •   <P></P>:      an văn
   •   <BR>: Xu ng hàng

  i Tư ng TextFormat

Cò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:
CODE
myFormat = 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 t
khi b n t o nó ra thì b n có th dùng nó b t c ch nào trong movie
B n có th coi các an code trên trong file m u: 10formattext.fla

Variable   ngoài Flash

B n có th l y bi n t ngoài trang HTML vào trong Flash thay i n i dung c a
Flash hay dùng vào b t c chuy n gì. Ví d b n ph i làm 30 cái banner b ng Flash
cho 30 trang web, thì b n có th ch làm 1 cái banner thôi, nhưng thay i n i dung
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 n
ch c n thêm vài ch vào sau cái tên c a movie trong ph n <object> và <embed>
trong HTML.. o n mã HTML sau ây nh p giá tr c a bi n txtName vào trong Flash

HTML
<PARAM NAME=movie VALUE="10banner.swf?txtName=Dominico Savio!">
và trong th <embed> thì b n thêm ph n variable và giá tr vào sau tên file
HTML
src="10banner.swf?txtName=Dominico Savio!">
Khi movie load thì nó s t t o variable "txtname" và t giá tr cho bi n này b ng
"Dominico Savio". B n có th xem trang 10banner.html, 10banner.fla trong cái
source file xem chi ti t hơn.
B n có th làm nhi u giá tr m t lúc cũng b ng cách này
10banner.swf?txtName=Dominico Savio!&gender=male"
Ngoài l y bi n t HTML, b n còn có th l y bi n t các text file. Cách này thích h p
khi 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ào
th HTML. B n ch c n dùng l nh loadVariables() làm ư c i u này. Ví d :
CODE
loadVariables("10external.txt", _root);
B n có th coi thêm v cách dùng loadVariables() bên box ActionScript

[Bài T p
M t ví d ơn gi n áp d ng các i u mà b n v a h c trong bài này là làm m t cái
"news ticker" như dư i ây:


Dòng ch s ch y t bên ph i qua bên trái cho su t b n tin. B n có th tham kh o
source fla: 10ticker.fla và test nó có khái ni m thêm v "news ticker"
1. T o movie m i

2. T o dynamic text field, v i cao ch v a 1 hàng, và dài b ng chi u ngang c a
stage, 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à text

4. Ch n font, nên dùng ki u ch tương t như Courier New, sao cho b ngang c a
m i chư b ng nhau

5. Con text field r i nh n F8       i thành Movie Clip, và   t cho nó 1 cái tên như th
nào tuỳ b n

6. Sau ó thì g n o n script sau vào movie
CODE
onClipEvent(load) {
  // t b n tin
  tickerText = "News Alert: ";
  tickerText += "Stock prices shoot up sharply with good earnings reports. ";
  tickerText += "The first manned flight to Mars prepares to leave Earth orbit. ";
  tickerText += "Your favorite sports team wins championship. ";
  tickerText += "Scientists find cure for major diseases. ";
firstChar = 0; // b t u ch 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 firstChar
ch a giá tr c a ch cái u tiên s th y trong news ticker, và lineLenght là s ch cái
có 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 s
lý d ki n onLoad
Trong onEnterFrame, Flash s l y 50 ch cái u tiên b vào bi n text ( trong
dynamic text field) cho nó hi n th lên màn hình. Sau ó di chuy n sang ch cái
th 2 b ng câu firstChar++;, và sau cùng là ki m tra, n u 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 tickerText
hi u hơn v 2 bi n này

7. 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 nhe

Happy 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 s
nghiên c u v nh ng con s . B n s ph i ng          v i nh ng con s trong Action
Script trong nhi u trư ng h p, vì v y b n c n ph i hi u làm sao s d ng chúng.

Nh ng phép toán (operator) và nh ng hàm (function) v s

Nh ng phép toán ơn gi n
Chúng ta cũng ã h c qua các phép toán ơn gi n r i. 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 c
hi 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 ơn
gi 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
vi c là c ng thêm 7 và bi n a


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


Nh ng phép so sánh
Nh ng phép toán so sánh như == so sánh hai s xem có b ng nhau không, > (l n
hơn), < (nh hơn), <= (nh hơn ho c b ng), >= (l n hơn ho c b ng). Trong Action
Script 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 n
hơ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 v
giá 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é:


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


Math.round
N 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 ng
s 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àm
Math.round. Th nhé:


CODE
trace(Math.round(7.2));


Math.ceil, Math.floor
Hai hàm khác dùng làm tròn s 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é:


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


Math.min, Math.max
Các b n có th s d ng hai hàm này tìm s 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 5

Math.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 th
hai là lũy th a. Ví d b n mu n l y 4 lu th a 3 thì vi t th này
CODE
Math.pow(4, 3);


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


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


C hai cách trên    u ra cùng m t k t qu là 2.

Hàm s lư ng giác

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




Bây gi b n hãy tư ng tư ng vòng tròn trên là m t ư ng th ng. B t   ut    i m “a”
có to     1,0 n i m 0,-1 qua -1,0 r i qua 0,1 và cu i cùng tr v 1,0.
Trong Flash, và cũng như trong các ngôn ng l p trình khác, chúng ta nh v m t v t
b t kỳ b ng to      x, y c a chúng. Vì th , vi c chuy n m t i m trên ư ng th ng
thành m t i m có to        x, y trên ư ng tròn r t h u d ng. ó là nh ng gì mà hàm
sin và cosin th c hi n. Ví d như chúng ta t i m “a” là i m b t u c a ư ng
th ng c a ư ng tròn, b n có s d ng hàm sin và cosin c a 0 tính to              x, y c a
 i m “a” trên ư ng tròn. T t nhiên, Math.cos(0) s tr v giá tr 1, Math.sin(0) s tr
v giá tr 0. K t qu s tr v to          c a i m “a” 1,0
V y i m “c” s n m         âu trên ư ng tròn? N u du i ư ng tròn ra s có           dài
b ng 6.28 l n bán kính, do bán kính b ng 1 nên       dài s b ng 6.28. ây là xu t x
c a h ng s pi. Pi b ng 3.14, b ng m t n a        dài c a ư ng tròn.
    dài c a ư ng tròn là 6.28 thì m t ph n tư      dài ư ng tròn là 1.57. i m ó
tương ng v i i m “c”. Hàm Math.cos(1.57) s tr v m t giá tr r t nh , g n b ng 0.
Hàm Math.sin(1.57) s tr v giá tr g n b ng -1. Ch g n b ng ch không b ng vì
h ng s pi không chính xác b ng 3.14, ch là g n b ng thôi.
B n có th s d ng cách này chuy n các i m trên ư ng tròn thành i m có to
   x,y
V y thì nó có ích như th nào? Gi s như b n mu n t o m t movieclip bay quanh
màn hình trong m t vòng tròn. Làm sao làm ư c i u ó? N u làm b ng frame có
th ph i t n hàng trăm frame        . Ho c cách khác là có th dùng hàm Math.cos và
Math.sin tính chuy n sang to           x,y quanh vòng tròn.
Trong o n code dư i ây, khi c ng thêm n, movie clip s chuy n ng d c theo
 ư ng tròn. Hàm Math.cos s tính ra giá tr x và hàm Math.sin s tính ra giá tr y,
chúng s ư c nhân thêm v i giá tr c a radius tăng kích thư c c a ư ng tròn.
Giá tr c a centerX và centerY s ư c c ng thêm cho các to           x, y, vì th tâm
 ư ng tròn bây gi không còn 0,0 n a mà s v trí 150,150

CODE
onClipEvent(load) {
  n = 0;
  radius = 100;
  centerX = 150;
  centerY = 150;
}

onClipEvent(enterFrame) {
  n += .1;
  this._x = Math.cos(n) * radius + centerX;
  this._y = Math.sin(n) * radius + centerY;
}



Ch (string) và s (number)

Có r t nhi u cách chuy n i t chu i sang s và ngư c l i. Ví d như trư ng h p
ngư i dùng nh p m t s vào text field, b n s nh n giá tr ó và c ng thêm m t. Hãy
xem o n code sau ây, num là m t bi n giá tr text field

CODE
b = num + 1;


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, ơn
gi n b i vì num là m t chu i (string) ch không ph i là m t s , vì th khi chúng ta
th 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 tr
v giá tr là 42, n u chúng ta s d ng parseInt(“42.9”) thì cũng s nh n ư c giá tr là
42 b i vì hàm parseInt không làm tròn s , nó ch l y ph n nguyên mà thôi. Còn n u
s d ng hàm parseFloat(“42.9”) b n s nh n ư c giá tr là 42.9, mu n làm tròn các
b n có th s d ng hàm Math.round(parseFloat(“42.9”)). Hàm parseFloat cũng s tr
v m t m t s nguyên n u tham s truy n vào là m t chu i s nguyên. Ví d
parseFloat(“42”) s cho ta s 42. Tr trư ng h p b n mu n tr v m t giá tr s
nguyên, còn không b n nên s d ng hàm parseFloat.
M t nét r t c bi t và r t hay c a hàm parseInt là có th chuy n m t chu i thành m t
s nhưng thành nhi u d ng h s khác nhau. Hãy xem m t ví d cho d hi u:

CODE
parseInt(“FF”, 16);


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

CODE
a = 135;
trace(a.toString() + 1);


K t qu s là 1351.
Chúng ta cũng có th s d ng hàm toString chuy n m t s thành m t chu i ch a
s dư i m t h s khác. Ví d a.toString(16) s tr v k t qu là chu i “ff”

S ng u nhiên

T o s ng u nhiên là m t ph n quan tr ng trong công vi c thi t k game và m t s
ho t hình. B i vì n u không có sô ng u nhiên thì nh ng o n phim c a b n s ch y
gi ng nhau, không còn gì thú v n a!
    t o s ng u nhiên, b n có th s d ng hàm Math.random(). Hàm này s tr v m t
giá tr t 0.0 n 1.0 nhưng thư ng thì không tr v giá tr b ng 1.0
Hãy xem ví d dư i ây, b n s nh n ư c con s ng u nhiên trong c a s OutPut

CODE
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ên
t 0.0 n 10.0

CODE
trace(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 1

CODE
trace(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 s
d ng hàm Math.floor làm tròn xu ng.

CODE
trace(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 t
con 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ày
s ư c ưa và m t bi u th c r t ph c t p, r t r t ph c t p mà 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ày
s ư c ưa và m t hàm tính m t l n n a là lưu l i thành con s chu n tính ng u
nhiên cho l n ti p theo.
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 u
nhiê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 t
chí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:

CODE
trace(Math.floor(Math.random() * 5 + 3);


Trong ph m vi t 3 n 7 s có t t c là 5 s nguyên 3, 4, 5, 6, và 7. Th còn trong
ph m vi t 50 n 100 thì sao

CODE
trace(Math.floor(Math.random() * 51 + 50);
Là s 51 b i vì trong ph m vi t 50   n 100 có 51 s , còn n u t 51   n 100 s là

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


M t cách th xem ph m vi c a b n có úng như ý c a mình không, ó là hãy th
v i s nh nh t và s l n nh t thay cho Math.random(). Giá tr nh nh t c a hàm
Math.random() là 0, hãy th v i s 0 nhé

CODE
trace(0 * 51 + 50);


Giá tr l n nh t c a Math.random() s không chính xác b ng 1.0 mà s là g n b ng,
v y chúng ta hãy th v i giá tr là 0.9999

CODE
trace(.9999 * 51 + 50);


Hãy th xem có úng không nhé!
Dư i ây là m t ví d n a r t thú v , movie clip c a b n s nh y   n nh ng v trí b t
kỳ

CODE
onClipEvent(enterFrame) {
  this._x = Math.random()*550;
  this._y = Math.random()*400;
}



Luy n t p: T o m t chương trình máy tính ơn gi n

Hãy b t tay vào vi c thi t k m t chương trình máy tính ơn gi n nhé.
- M m t movie m i trong Flash. Movie c a chúng ta s gi ng như hình dư i ây


Chúng ta s có 10 nút nh p 10 s t 0 n 9, các nút các phép toán, phím =, d u
ch m th p phân, phím C xóa màn hình. M t text field t trên hi n th nh ng
s ngư i dùng b m, text field này s liên k t v i bi n display.
- Trong m i movie clip c a m i nút b m, chèn o n code sau

CODE
on (release) {
  _parent.keyPressed(this._name);
}
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

Weitere ähnliche Inhalte

Andere mochten auch

Incapacity Planning and Guardianship 2016
Incapacity Planning and Guardianship 2016Incapacity Planning and Guardianship 2016
Incapacity Planning and Guardianship 2016mitoaction
 
Intoduction virtualbox khmer
Intoduction virtualbox khmerIntoduction virtualbox khmer
Intoduction virtualbox khmerKichiemon Adachi
 
URAREKIN JOLASEAN
URAREKIN JOLASEANURAREKIN JOLASEAN
URAREKIN JOLASEANELIZALDE
 
Exchange Auditing in the Enterprise
Exchange Auditing in the EnterpriseExchange Auditing in the Enterprise
Exchange Auditing in the EnterpriseNetwrix Corporation
 
TGL Lublin
TGL LublinTGL Lublin
TGL LublinsalonyVi
 
SOCIAL IMMEDIATELY Connect, Share, Expand
SOCIAL IMMEDIATELY Connect, Share, ExpandSOCIAL IMMEDIATELY Connect, Share, Expand
SOCIAL IMMEDIATELY Connect, Share, ExpandDigitalByDesign
 
The inaugural Professional Diversity Network Diversity Jobs Index and Report
The inaugural Professional Diversity Network Diversity Jobs Index and ReportThe inaugural Professional Diversity Network Diversity Jobs Index and Report
The inaugural Professional Diversity Network Diversity Jobs Index and ReportDaniel Sullivan
 
Medical Equipment
Medical EquipmentMedical Equipment
Medical EquipmentThe Dreamer
 
500 loi win
500 loi win500 loi win
500 loi winHà Buzz
 
Leap pad explorer features 1
Leap pad explorer features 1Leap pad explorer features 1
Leap pad explorer features 1cvhaslacker0
 
A tutorial of Gale Literature Resource Center
A tutorial of Gale Literature Resource Center A tutorial of Gale Literature Resource Center
A tutorial of Gale Literature Resource Center Helen Tang
 
Mylivelihood MyBusiness Presentation
Mylivelihood MyBusiness PresentationMylivelihood MyBusiness Presentation
Mylivelihood MyBusiness Presentationwishmasterako
 
LEY FUNDAMENTAL DE LA EDUCACIÓN (Honduras 2012)
LEY FUNDAMENTAL DE LA EDUCACIÓN (Honduras 2012)LEY FUNDAMENTAL DE LA EDUCACIÓN (Honduras 2012)
LEY FUNDAMENTAL DE LA EDUCACIÓN (Honduras 2012)Percy Lopez
 
PR и НКО: принцип, кейсы
PR и НКО: принцип, кейсыPR и НКО: принцип, кейсы
PR и НКО: принцип, кейсыDavid Oreshok
 
Plan and create assessments in sa
Plan and create assessments in saPlan and create assessments in sa
Plan and create assessments in saAdam Caplan
 

Andere mochten auch (20)

Diagramas
DiagramasDiagramas
Diagramas
 
Incapacity Planning and Guardianship 2016
Incapacity Planning and Guardianship 2016Incapacity Planning and Guardianship 2016
Incapacity Planning and Guardianship 2016
 
Intoduction virtualbox khmer
Intoduction virtualbox khmerIntoduction virtualbox khmer
Intoduction virtualbox khmer
 
URAREKIN JOLASEAN
URAREKIN JOLASEANURAREKIN JOLASEAN
URAREKIN JOLASEAN
 
Exchange Auditing in the Enterprise
Exchange Auditing in the EnterpriseExchange Auditing in the Enterprise
Exchange Auditing in the Enterprise
 
TGL Lublin
TGL LublinTGL Lublin
TGL Lublin
 
Test
TestTest
Test
 
SOCIAL IMMEDIATELY Connect, Share, Expand
SOCIAL IMMEDIATELY Connect, Share, ExpandSOCIAL IMMEDIATELY Connect, Share, Expand
SOCIAL IMMEDIATELY Connect, Share, Expand
 
The inaugural Professional Diversity Network Diversity Jobs Index and Report
The inaugural Professional Diversity Network Diversity Jobs Index and ReportThe inaugural Professional Diversity Network Diversity Jobs Index and Report
The inaugural Professional Diversity Network Diversity Jobs Index and Report
 
Medical Equipment
Medical EquipmentMedical Equipment
Medical Equipment
 
500 loi win
500 loi win500 loi win
500 loi win
 
Leap pad explorer features 1
Leap pad explorer features 1Leap pad explorer features 1
Leap pad explorer features 1
 
Android: App Quality
Android: App QualityAndroid: App Quality
Android: App Quality
 
A tutorial of Gale Literature Resource Center
A tutorial of Gale Literature Resource Center A tutorial of Gale Literature Resource Center
A tutorial of Gale Literature Resource Center
 
Mylivelihood MyBusiness Presentation
Mylivelihood MyBusiness PresentationMylivelihood MyBusiness Presentation
Mylivelihood MyBusiness Presentation
 
portfolio
portfolioportfolio
portfolio
 
LEY FUNDAMENTAL DE LA EDUCACIÓN (Honduras 2012)
LEY FUNDAMENTAL DE LA EDUCACIÓN (Honduras 2012)LEY FUNDAMENTAL DE LA EDUCACIÓN (Honduras 2012)
LEY FUNDAMENTAL DE LA EDUCACIÓN (Honduras 2012)
 
PR и НКО: принцип, кейсы
PR и НКО: принцип, кейсыPR и НКО: принцип, кейсы
PR и НКО: принцип, кейсы
 
Gold
GoldGold
Gold
 
Plan and create assessments in sa
Plan and create assessments in saPlan and create assessments in sa
Plan and create assessments in sa
 

Ähnlich wie 24 gio hoc_flash_2267_89039819_7063-1330520798

Thu thuat may tinh piv
Thu thuat may tinh pivThu thuat may tinh piv
Thu thuat may tinh pivnhatthai1969
 
Thu thuat may tinh pvi
Thu thuat may tinh pviThu thuat may tinh pvi
Thu thuat may tinh pvinhatthai1969
 
Thu thuat may tinh pi
Thu thuat may tinh piThu thuat may tinh pi
Thu thuat may tinh pinhatthai1969
 
Slide: Scratch: 7 Giới thiệu khung trợ giúp
Slide: Scratch: 7 Giới thiệu khung trợ giúpSlide: Scratch: 7 Giới thiệu khung trợ giúp
Slide: Scratch: 7 Giới thiệu khung trợ giúpNguyễn Duyênmiks
 
Giải mã windows & bí mật của phần cứng elpvn[bookbooming.com]
Giải mã windows & bí mật của phần cứng   elpvn[bookbooming.com]Giải mã windows & bí mật của phần cứng   elpvn[bookbooming.com]
Giải mã windows & bí mật của phần cứng elpvn[bookbooming.com]bookbooming1
 
Powerpoint
PowerpointPowerpoint
PowerpointTHT
 
Powerpoint
PowerpointPowerpoint
PowerpointTHT
 
tao file exe cho chuong trinh viet bang ngon ngu java
 tao file exe cho chuong trinh viet bang ngon ngu java tao file exe cho chuong trinh viet bang ngon ngu java
tao file exe cho chuong trinh viet bang ngon ngu javanamcntt_nd
 
Kien thuc ho tro 1
Kien thuc ho tro 1Kien thuc ho tro 1
Kien thuc ho tro 1qdai2008
 
Chèn nhạc vào power point
Chèn nhạc vào power pointChèn nhạc vào power point
Chèn nhạc vào power pointDSLIDES
 
Thu thuat may tinh piii
Thu thuat may tinh piiiThu thuat may tinh piii
Thu thuat may tinh piiinhatthai1969
 
Lập trình tiện MASTERCAM x9
Lập trình tiện MASTERCAM x9Lập trình tiện MASTERCAM x9
Lập trình tiện MASTERCAM x9Technical VN
 
Thu thuat may tinh pii
Thu thuat may tinh piiThu thuat may tinh pii
Thu thuat may tinh piinhatthai1969
 
Giao trinh gia cong nhieu truc Mastercam X9
Giao trinh gia cong nhieu truc Mastercam X9Giao trinh gia cong nhieu truc Mastercam X9
Giao trinh gia cong nhieu truc Mastercam X9Ứng Dụng Máy Tính
 
"Thu Vien Sach Co Khi" – Master cam x
"Thu Vien Sach Co Khi" – Master cam x"Thu Vien Sach Co Khi" – Master cam x
"Thu Vien Sach Co Khi" – Master cam xThu Vien Co Khi
 
Mot so meo khi trinh chieu
Mot so meo khi trinh chieuMot so meo khi trinh chieu
Mot so meo khi trinh chieu2md2md
 
Color me ebookslide
Color me ebookslideColor me ebookslide
Color me ebookslidePhan Cong
 
Giáo trình Tiếng Việt Sony Vegas
Giáo trình Tiếng Việt Sony VegasGiáo trình Tiếng Việt Sony Vegas
Giáo trình Tiếng Việt Sony VegasHuytraining
 
[Hoccokhi.vn] lap trinh gia cong master cam 2d
[Hoccokhi.vn] lap trinh gia cong master cam 2d[Hoccokhi.vn] lap trinh gia cong master cam 2d
[Hoccokhi.vn] lap trinh gia cong master cam 2dHọc Cơ Khí
 

Ähnlich wie 24 gio hoc_flash_2267_89039819_7063-1330520798 (20)

24 gio hoc flash
24 gio hoc flash24 gio hoc flash
24 gio hoc flash
 
Thu thuat may tinh piv
Thu thuat may tinh pivThu thuat may tinh piv
Thu thuat may tinh piv
 
Thu thuat may tinh pvi
Thu thuat may tinh pviThu thuat may tinh pvi
Thu thuat may tinh pvi
 
Thu thuat may tinh pi
Thu thuat may tinh piThu thuat may tinh pi
Thu thuat may tinh pi
 
Slide: Scratch: 7 Giới thiệu khung trợ giúp
Slide: Scratch: 7 Giới thiệu khung trợ giúpSlide: Scratch: 7 Giới thiệu khung trợ giúp
Slide: Scratch: 7 Giới thiệu khung trợ giúp
 
Giải mã windows & bí mật của phần cứng elpvn[bookbooming.com]
Giải mã windows & bí mật của phần cứng   elpvn[bookbooming.com]Giải mã windows & bí mật của phần cứng   elpvn[bookbooming.com]
Giải mã windows & bí mật của phần cứng elpvn[bookbooming.com]
 
Powerpoint
PowerpointPowerpoint
Powerpoint
 
Powerpoint
PowerpointPowerpoint
Powerpoint
 
tao file exe cho chuong trinh viet bang ngon ngu java
 tao file exe cho chuong trinh viet bang ngon ngu java tao file exe cho chuong trinh viet bang ngon ngu java
tao file exe cho chuong trinh viet bang ngon ngu java
 
Kien thuc ho tro 1
Kien thuc ho tro 1Kien thuc ho tro 1
Kien thuc ho tro 1
 
Chèn nhạc vào power point
Chèn nhạc vào power pointChèn nhạc vào power point
Chèn nhạc vào power point
 
Thu thuat may tinh piii
Thu thuat may tinh piiiThu thuat may tinh piii
Thu thuat may tinh piii
 
Lập trình tiện MASTERCAM x9
Lập trình tiện MASTERCAM x9Lập trình tiện MASTERCAM x9
Lập trình tiện MASTERCAM x9
 
Thu thuat may tinh pii
Thu thuat may tinh piiThu thuat may tinh pii
Thu thuat may tinh pii
 
Giao trinh gia cong nhieu truc Mastercam X9
Giao trinh gia cong nhieu truc Mastercam X9Giao trinh gia cong nhieu truc Mastercam X9
Giao trinh gia cong nhieu truc Mastercam X9
 
"Thu Vien Sach Co Khi" – Master cam x
"Thu Vien Sach Co Khi" – Master cam x"Thu Vien Sach Co Khi" – Master cam x
"Thu Vien Sach Co Khi" – Master cam x
 
Mot so meo khi trinh chieu
Mot so meo khi trinh chieuMot so meo khi trinh chieu
Mot so meo khi trinh chieu
 
Color me ebookslide
Color me ebookslideColor me ebookslide
Color me ebookslide
 
Giáo trình Tiếng Việt Sony Vegas
Giáo trình Tiếng Việt Sony VegasGiáo trình Tiếng Việt Sony Vegas
Giáo trình Tiếng Việt Sony Vegas
 
[Hoccokhi.vn] lap trinh gia cong master cam 2d
[Hoccokhi.vn] lap trinh gia cong master cam 2d[Hoccokhi.vn] lap trinh gia cong master cam 2d
[Hoccokhi.vn] lap trinh gia cong master cam 2d
 

Mehr von qu0cthangprovip95

Bq noi chuyen_hay - tu sach beenvn.com
Bq noi chuyen_hay - tu sach beenvn.comBq noi chuyen_hay - tu sach beenvn.com
Bq noi chuyen_hay - tu sach beenvn.comqu0cthangprovip95
 
102 bi quyet_tm_dien_tu - www.beenvn.com - tu_sachonline
102 bi quyet_tm_dien_tu - www.beenvn.com - tu_sachonline102 bi quyet_tm_dien_tu - www.beenvn.com - tu_sachonline
102 bi quyet_tm_dien_tu - www.beenvn.com - tu_sachonlinequ0cthangprovip95
 
102 bi quyet_tm_dien_tu - www.beenvn.com - tu_sachonline
102 bi quyet_tm_dien_tu - www.beenvn.com - tu_sachonline102 bi quyet_tm_dien_tu - www.beenvn.com - tu_sachonline
102 bi quyet_tm_dien_tu - www.beenvn.com - tu_sachonlinequ0cthangprovip95
 
Bqddum www.beenvn.com - download sach mien phi - khong can dang nhap
Bqddum   www.beenvn.com - download sach mien phi - khong can dang nhapBqddum   www.beenvn.com - download sach mien phi - khong can dang nhap
Bqddum www.beenvn.com - download sach mien phi - khong can dang nhapqu0cthangprovip95
 
Doc thu bi_quyet_thanh_cong_danh_cho_tuoi_teen-1330440240_2
Doc thu bi_quyet_thanh_cong_danh_cho_tuoi_teen-1330440240_2Doc thu bi_quyet_thanh_cong_danh_cho_tuoi_teen-1330440240_2
Doc thu bi_quyet_thanh_cong_danh_cho_tuoi_teen-1330440240_2qu0cthangprovip95
 
Nhat.ky.dang.thi.thuy.tram (1) (1)
Nhat.ky.dang.thi.thuy.tram (1) (1)Nhat.ky.dang.thi.thuy.tram (1) (1)
Nhat.ky.dang.thi.thuy.tram (1) (1)qu0cthangprovip95
 

Mehr von qu0cthangprovip95 (9)

Bq noi chuyen_hay - tu sach beenvn.com
Bq noi chuyen_hay - tu sach beenvn.comBq noi chuyen_hay - tu sach beenvn.com
Bq noi chuyen_hay - tu sach beenvn.com
 
102 bi quyet_tm_dien_tu - www.beenvn.com - tu_sachonline
102 bi quyet_tm_dien_tu - www.beenvn.com - tu_sachonline102 bi quyet_tm_dien_tu - www.beenvn.com - tu_sachonline
102 bi quyet_tm_dien_tu - www.beenvn.com - tu_sachonline
 
102 bi quyet_tm_dien_tu - www.beenvn.com - tu_sachonline
102 bi quyet_tm_dien_tu - www.beenvn.com - tu_sachonline102 bi quyet_tm_dien_tu - www.beenvn.com - tu_sachonline
102 bi quyet_tm_dien_tu - www.beenvn.com - tu_sachonline
 
Bqddum www.beenvn.com - download sach mien phi - khong can dang nhap
Bqddum   www.beenvn.com - download sach mien phi - khong can dang nhapBqddum   www.beenvn.com - download sach mien phi - khong can dang nhap
Bqddum www.beenvn.com - download sach mien phi - khong can dang nhap
 
Hgth2
Hgth2Hgth2
Hgth2
 
Doc thu bi_quyet_thanh_cong_danh_cho_tuoi_teen-1330440240_2
Doc thu bi_quyet_thanh_cong_danh_cho_tuoi_teen-1330440240_2Doc thu bi_quyet_thanh_cong_danh_cho_tuoi_teen-1330440240_2
Doc thu bi_quyet_thanh_cong_danh_cho_tuoi_teen-1330440240_2
 
Hgth1
Hgth1Hgth1
Hgth1
 
Nu sinh
Nu sinhNu sinh
Nu sinh
 
Nhat.ky.dang.thi.thuy.tram (1) (1)
Nhat.ky.dang.thi.thuy.tram (1) (1)Nhat.ky.dang.thi.thuy.tram (1) (1)
Nhat.ky.dang.thi.thuy.tram (1) (1)
 

24 gio hoc_flash_2267_89039819_7063-1330520798

  • 1. Gi th 01: Làm quen v i AS, Your First Look at AS AS là m t ngôn ng l p trình ư c xây d ng trong Flash. AS gi ng như các ngôn ng khác như Javascript, C++ v.v. nhưng b n không c n bi t các ngôn ng khác h c AS (n u có thì càng d hơn). B t âu h c AS, thì chúng ta coi th AS là gì, làm ư c nh ng gì và có quan h gì v i các ch c năng khác c a Flash. Trong bài này, b n s tìm hi u coi AS ra i như th nào, xem cách vi t AS làm sao, tìm hi u AS làm ư c nh ng gì và sau sau cùng là xác nh ư c nơi lưu tr AS trong Flash. i sát nghĩa và ti n cho sau này, mình s không d ch m t s t ng ra ti ng vi t như script, movieclip v.v. Script là gì? AS là ngôn ng l p trình, v i các l nh sai khi n Flash movie làm vi c theo úng nh ng gì mình vi t (ch có mình vi t sai ch computer không làm sai ). Ph n nhi u thì AS ch làm vi c trong môi trư ng c a Flash, tuy nhiên AS cũng có th g i l nh cho browser, h i u hành v.v. Script có th ng n g n vài ch hay cũng có th dài c trăm trang. Script có th ư c vi t g p l i m t ch hay cũng có th vi t rãi rác kh p nơi trong movie. Xu t x c a AS AS rât gi ng ngôn ng C++, Java, javascript .v.v và ư c d a trên tiêu chu n do ECMA (European Computer Manufactuers Association) l p ra g i là ECMAScript. Nhi u ngư i hi u l m r ng AS d a trên Javascript, nhưng th c ch t c 2 u d a trên ECMAScript. Lúc u vi t script trong Flash r t ơn gi n và cho t i Flash 4 m i u c phát tri n nhưng cũng v n còn "thô sơ" v i nh ng vòng l p và các i u ki n "if...else". Cho t i Flash 5 thì dân Flash m i có th l p trình và g n li n script v i các y u t trong movie. . Sang t i Flash MX thì AS ã tr thành ngôn ng l p trình toàn di n v i hơn 300 câu l nh, hàm .v.v Nh n biêt AS AS ơn gi n là nh ng câu l nh ư c vi t b ng ti ng Anh (vì l này mà mình s không d ch các tư ti ng Anh liên quan n AS, và m t ph n thì mình không gi i thu t ng computer hay ti ng vi t cho l m) và các phép tính và d u câu. Ví d sau: ActionScript on (press) { gotoAndPlay ("my frame"); }
  • 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ư ng h p này là cái nút) Ch k ti p "gotoAndPlay" do 4 ch "go to and play" g p l i, g i ý r ng AS ra l nh cho Flash t im t i m nào ó trong movie và b t u chơi t i m ó. AS có th làm nh ng gì? Flash movie g m có các scence (c nh), và m i c nh s có 1 timeline (th i gi n bi u???) và timeline s có các frame (khung) b t u t s 1. Thông thư ng thì Flash s chơi t frame 1 cho t i frame cu i c a scence v i t c c nh và d ng l i hay l pl it u tuy theo ngư i làm Flash. M c ích chính c a AS là thay i th t trong cách chơi c a Flash. AS có th dùng b t frame nào, hay ch y ngư c tr l i frame trư c hay nh y vài frame r i chơi ti p. Nhưng ó không ch là nh ng gì AS có th làm ư c. AS có th bi n film ho t hình c a Flash thành m t chương trình ng d ng có s tương tác c a ngư i dùng. Dư i ây là nh ng cơ b n mà AS có th làm: • Ho t hình: B n không c n AS làm ho t hình, nhưng v i AS thì b n có th t o nh ng ho t hình ph c t p hơn. Ví d , trái banh có th tưng xung quanh mành hình mà không bao gi ng ng, và tuân theo các nh lu t v t lý như l c hút, l c ma sát, l c ph n v.v N u không có AS thì b n c n ph i dùng c hàng ngàn frame làm, còn v i AS thì ch 1 frame cũng • Navigation (hông bi t d chlàm sao cho hay ): thay vì movie ch chơi t ng frame 1 theo th t thì b n có th d ng movie b t c frame nào, và cho phép ngư i dùng có th chơi b t c frame nào .v.v • Thu nh p thông tin t ngư i dùng (user input): b n có th dùng AS h i ngư i dùng 1 c u h i, r i dùng thông tìn ó trong movie hay có th g i cho server hay làm nh ng gì b n mu n. • Thu nh p thông tìn t các ngu n khác: AS có th tương tác v i server và l y các thông tin t server hay text file • Tính toán: AS có th làm b t c phép tính nào mà toán h c cho phép • Thay i hình nh trong movie: AS có th thay i kích thư c, màu s c, v trí c a b t c movie clip (MC) nào trong movie flash c a b n. B n có th t o thêm phiên b n hay xoá b i phiên b n c a MC v i AS • Phân tích môi trư ng c a máy tính: V i AS b n có th l y gi t h i u hành hay a ch ang chơi movie Flash ó. • i u khi n âm thanh trong flash movie: AS là cách t t nh t i u khi n âm thanh trong Flash,AS có chơi ch m, chơi nhanh, ng ng, quay vòng .v.v bât kỳ âm thanh nào trong Flash. Phát tri n các kh năng c a AS i u quan tr ng nh t mà AS có th làm cho b n là nh ng gì chưa ai nghĩ t i V i AS và trí tư ng tư ng và óc sáng t o c a b n thì không có gì là không th x y ra v i AS ư c. M c ích c a các sách, và c a VNFX là hư ng d n b n hi u bi t v Flash t ó
  • 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 âu Câu h i u tiên nh ng ai tìm hi u AS thư ng h i là "Vi t AS vào âu?". Flash có m t môi trư ng làm multimedia khá ph c t p. N u b n ã dùng Flash r i hay ã c qua các hư ng d n i kèm v i Flash, thì b n ã bi t các y u t cơ b n như timeline, key frame v.v. nêu b n chưa bi t thì mình khuyên b n nên tìm hi u trư c r i tiêp t c ây. Ơ trong m c Flash T ng Quá, VNFX có post link download 3 cái CD hư ng d n cơ b n cho ngư i chưa bao gi dùng Flash. Vi t AS time line AS có th vi t vào key frame b t c timeline nào. làm như v y, b n ch n key frame trong timeline trư c r i b n m Action Panel ra (có th nh n F9) viêt hay xem AS ã ư c vi t ó. Mình khuyên b n nên dùng Action Panel dư i d ng Expert hơn là Normal, vì như v y b n s h c ư c nhi u và l hơn. Khi vi t AS vào key frame như v y thì AS key frame ó s ho t ng khi mà Flash chơi t i key frame ó. Ví d như l nh AS stop() ư c t key frame 5 thì Flash chơi t i key frame 5 thì s d ng l i cho t i khi có l nh khác. cách vi t này g i là vi t vào time line M t trong nh ng lý do vi t script vào time line là khi b n mu n dùng function (hàm), vì function cho phép chúng ta tái s d ng o n mã ó t nhi u nơi, nhi u level khác. Viêt AS nút Các ph n t c a Flash movie ư c g i là symbol (bi u tư ng). thư ng thì symbol là các hình nh. Và có 3 lo i symbol: button (nút), graphich (hình nh), movie clips( o n phim). 3 lo i trên thì AS không th vi t li n v i graphic, còn button và movie clip thì OK. Nút s không có tác d ng gì c n u như không kèm AS lên trên nó. Mu n kèm AS vào nút thì ch n nút trên stage (sân kh u: di n tích c a flash movie), r i sau ó m Action panel và vi t vào ó như ta vi t vào key frame. AS vi t trên nút ch ho t ng khi chu t ho c bàn phím tác ng lên nút mà thôi Vi t AS MC MC khác v i graphic ch MC ư c t tên khi mang vào stage, MC thư ng là hình ành ng, và có th có AS kèm theo MC. vi t AS vào MC thì cũng tương t như ta làm v i nút. AS kèm theo MC có th i u khi n MC ó hay là các MC trong cùng m t timeline hay các timeline ngoài movie Bài t p
  • 4. 1. T o m t movie m i 2. t o 3 key frames 3. Dung Flash v m i hình khác nhau cho m i frame 4. Ch y th movie (nh n Control + enter) 5. Sau ó tr l i timeline, vi t vào keyframe 2 o n mã : "stop();" 6. Cho ch y th movie l n n a 7. 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ông trong vi c vi t AS : Gi th 02: S d ng Action panel, Using the Script Editing Window N u dân ho coi Timeline là nhà thì dân l p trình v i AS coi Action Panel là nơi cư ng c a mình, t i ó dân AS có th thay i, vi t t t c các l nh. Vì v y r t quan tr ng là b n có th s d ng quen thu c Action Panel Flash MX s d ng các panel giúp b n có th l y các thông tin v movie b n ang làm m t cách d dàng. Khi b n cài t và chay Flash l n u tiên, Flash s h i b n mu n s d ng Flash như th nào và Flash s x p t các panel cho h p lý. B n cũng có 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ác panel ch gi l i 2 cái chính trên màn hình, mình kéo cái action panel và property panel qua m t bên monitor, còn cái bên kia cho cái stage, n u c n m panel nào thì 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). Khi m i ch y máy l n u thì Action panel ư c set dư i d ng bình thư ng. d ng bình thư 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 menu bê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 t AS 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ông bao gi ti n ư c, dùng expert mode lúc u hơi m t nhưng b o m là các b n s h c ư c mau và nh lâu hơn S d ng Action panel v i expert mode thì b n có nhi u t do hơn, nhưng t do ng nghĩa v i trách nhi m nên b n ph i c n th t khi vi t code. T normal mode chuy n sang 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ím t t). B n có th i t Normal mode sang expert mode b t c lúc nào, nhưng i ngư 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 action panel) và trong ó có nhi u l nh r t t t cho b n khi b n dùng Action panel, nh t là i v 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 a b 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. 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 "Check Syntax" 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 theo là "Auto Format" và "Auto Format Options" giúp cho b n trình bày script c a b n cho d c hơn. B n có th thay i màu s c, font ch v.v. cho script c a b n cho b n d c code hơn b ng cách vào Edit > Preferences > ActionScript Editor. Các ph n còn l i c a pop-up window cho phép b n ư c xu t hay nh p AS dư i d ng text file và in script ra gi y. 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ư i expert 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 Action Panel. 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âu l 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 Action panel ư 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 expert mode 1. T o m t movie m i 2. Ch n key frame u tiên (frame s 1) c a layer 1 (mình không d ch ch layer = l p vì d trùng v i class= l p) 3. M Action panel (có th dùng phím t t hay vào trong ph n Window > Action panel 4. Chuy n sang expert mode (dùng phím t t hày vào trong pop-up menu c a Action panel i) 5. Vào ch vi t AS 6. Vi t o n code sau: ActionScript trace ("I am expert"); Khi b n th movie thì dòng ch "I am expert" s ư c hi n ra trong Output panel, và mình s c p n l nh trace() vào nh ng gi t i
  • 6. Gi th 03: H c cách l p trình, Learning to program L 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 u ki 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 ch có 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 n Thư 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 s bàn v nh ng khái ni m l p trình và làm sao áp d ng nó trong Flash Cách suy nghĩ c a computer Th t ra computer d t l m ch ng bi t suy nghĩ âu, ch bi t làm vi c theo m nh l nh m 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 nh sai 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àm nh 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 nh AS 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 a computer, 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ên tuy t v i trong vai computer thì b n cũng tr thành m t l p trình viên tài ba. L nh, hàm, và phép tính L nh (command) là y u t căn b n c a AS ch th Flash làm m t hành ng c th . 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 t gotoAndPlay(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ác phép tính và cho ra (return) m t k t qu . Ví d hàm random() s cho ra m t con s ng u nhiên nào ó, hay hàm sqrt() s cho ra giá tr bình phương c a 1 s mà hàm nh n ư c truy n cho. L nh và hàm u có th ư c truy n cho 1 hay nhi u thông s (parameter, mình s dùng t parameter thay vì thông s ), và nh ng thông s ó giúp cho hàm và l nh ư c c th hơn. Ví d gotoAndPlay(5) thì 5 là thông s , n u như không có thông s này thì l nh "gotoAndPlay" s không bi t rõ ph i nói Flash i âu. 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. Bi n s Bi n s (parameter) c n thi t trong m i ngôn ng l p trình vì nó lưu tr thông tin v m t cái gì ó trong chương trình. Bi n s g m có 2 ph n: tên và giá tr . ôi khi b n ch c n lưu tr thông tin trong bi n s m t th i gian ng n, ví d b n mu n Flash thi hành 1 s l nh 10 l n thì b n c n m s l n mà Flash ã thi hành l nh có th ra l nh cho Flash ngưng ngay sau khi thi hành xong l nh l n th 10. Nhưng cũng có lúc b n c n ph i lưu l i thông tin trong m t th i gian dài hay trong su t quá trình th i gian Flash chơi. 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 1 ch 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 t c 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ùng trong bi n s thì b n nên t tên bi n s ó là userName (mình nghĩ t tên ti ng Anh d hi u hơn, vì ti ng vi t không d u cũng d b hi u l m), 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ư ng MovieClip) 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ên quy ư c tên bi n s theo quy t c sau: tên bi n s luôn vi t thư ng ch u tiên, và 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ũng có 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 cho chu 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 t c các chu i sau ây u h p l : "ablsdfjksl", "a", " ", "". Khi vi t m t chu i thì c n dùng d u ngo c kép ("") b t u và k t thúc chu i. Trong các ngôn ng l p trình khác như Java, C++, hay ngay c ActionScript 2.0 trong Flash MX 2004 thì b n ph i xac nh trư c lo i thông tin nào b n s lưu trong bi n s . Nhưng v i ActionScript 1 (trong FlashMX) thì b n không c n làm vi c này. Ví d bi n s userName lúc u ch a 1 chu i, nhưng sau ó l i ch a 1 s nguyên thì cũng v 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ào nh ng bài sau. i u ki n Trong nh ng trư ng h p chúng ta không bi t nên ra l nh cho Flash ph i làm gì cho thích h p v i t ng tình hu ng thì ta có th dùng " i u ki n" ra l nh cho Flash.
  • 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 trong Flash 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 tho mãn i u ki n chúng ta t ra thì Flash s có 1 giá tr true t phép so sánh trên, 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á tr ch 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í d như 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 13 thì chơi o n phim B, và nh ng ai dư i 13 thì chơi o n phim C. Vòng l p Con ngư i làm ra computer vì lư i không mu n làm nhi u, mà bán cái cho computer. 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òng l 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 n mu n cho vòng l p ch y 10 l n thì s có 1 bi n s dùng m vòng l p, b t u t 0, 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 ng l i. Sau ây minh ho c a vòng l p này: 1. M t s l nh tr ơc vòng l p 2. B t u vòng l p, set bi n s counter = 0 3. Làm m t s l nh trong vòng l p 4. Tăng bi n s counter +=1 5. N u bi n s counter nh hơn 9, tr l i bư c th 3 6. 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 p trì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 nh trong 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ác l 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 p Làm nh ng i u không tư ng L 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 n trong 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ành m 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 n nà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 n ph 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. ơ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 mua gà 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 nh b n ch hay i taxi ra ch b n thành. N u i taxi i hãng nào, tìm s phone g i, v.v. còn nh b n ch i thì nh tên nào. R i nên m c qu n áo nào i ch . Ra n ch thì 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 n mua gà ơn gi n v y mà có th t n c ngày tr i lên chương trình Vi t AS, b n c n ph i lưu ý t i t t c m i vi c dù nh cách m y cho Flash có th làm úng theo như ý b n trong m i tình hu ng. Các chương trình có bug không ph i vì ngư i vi t d mà vì chưa nghĩ t i h t m i tình hu ng thôi. 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ành nhi u v n nh cho t i khi không còn nh hơn n a, và sau ó xây d ng chương trình t gi i quy y các v n nh lên d n cho t i v n chính. Vi t mã hoàn ch nh B (bug) ơn gi n là l i c a chương trình mà b n t o ra. Bug có th ch là nh ng l i cú 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ôi trư 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ân tí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 script c 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 do con ngư i làm ra mà không có bug c . Vì v y b n ng c g ng viêt code sao cho tuy t h o không có l i. N u 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 t kho mà bi t bug âu di t. Flash có kèm theo vài công c giúp b n debug d dàng hơ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 Flash Khi 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ên chú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. ActionScript on (press) { var myVariable = 7; var myOtherVariable = "Macromedia";
  • 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ào nút. hàm on(press) ch có th s d ng trong vào trong nút mà thôi. Ngoài ra b n có th dùng on(release) n u như b n 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 cho d 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ào trong 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á tr b ng 7 cho nó. tương t hàng k ti p l p ra var tên là myOtherVariable và cho giá tr c a nó là "Macrmedia". 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ác lo 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 n b t u là i=0 và nó s tăng thêm 1 cho m i l n l p cho t i khi nó lên t i 9. Tương t như 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úc b 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 myOtherVariable V 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 u Flash compile movie cho b n và phát hi n ra l i thì Flash s vi t ra các output window này. Trong khi ch y th movie, thì l nh trace() m i có th vi t các thông tin ra output window. Output window r t quan tr ng trong vi t "di t b ", dùng nó chung v 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 i tư ng .v.v Trong 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 ch vi t thông tin ra output window, như o n code trên.
  • 11. Th c hành: vi t thông tin ra output windown Cách t t nh t hi u rõ ch c năng c a output window là s d ng nó. Bây gi mình s vi t m t o n code ng n g i thôi tin ra output window nhe. 1. T o m t file m i 2. Ch n frame u tiên c a movie, m Action panel. Ch nh kích thư c cho action panel l n vi t, và nh dùng expert mode 3. 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 n F2) Gi ng như action panel, output window có 1 cái pop-up menu nho nh trên góc ph 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 t b ", b n có th ch n không c n output window in ra các l i (none), hay ch in l i (error), hay ch in 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á tr cho nó. (b n có th t tên cho variable là b t c gì b n muôn) Bây gi b n có th th vi t o n code sau: ActionScript var1= 7; var2= "hello world"; trace ("var1: " + var1+ " /var2: " + var2); Khi b n ch y th movie thì output window s có hàng ch sau: var1: 7 /var2: hello world Vì s 7 và "hello world" ư c 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ó th truy c p giá tr c a nó b t c nơi nào trong movie. T o global variable không òi h i m t b n ph i làm m t cái gì c bi t c , 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 t Flash movie nh trong Flash movie l n. Các hình nh, script trong m t movie clip là 1 level th p hơn root level.
  • 12. Local variable (bi n s c c b ), khác v i global variable, local variable ch có tr truy c p trong cùng m t o n code, hay trong cùng m t timeline. Khi dùng local variable thì khi ra kh i timeline hay o n code ó thì Flash s xoá local variable ra kh i b nh . Mu n t o local variable thì dùng t khoá var trư c tên c a local variable, ví d : var myLocal = "This is local"; B n ch c n dùng t khoá var 1 l n thô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 n code: ActionScript var myLocal = 9; myLocal = 11; trace(myLocal); Phép so sánh và các phép tính So sánh 2 giá tr trong AS r t ơn 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 n code sau xét coi giá tr c a a có b ng 7 không, và in k t qu ra output window. Và khi test o n code sau, b n s th y true output window ActionScript var a = 7; trace(a == 7); N u b n dùng l n = v i == thì s b l i runtime ch Flash s không có th tìm ư c l i này cho b n. B n có th dùng == so sánh 2 chu i m u t : ActionScript var myString = "Hello World."; trace(myString == "Hello World."); trace(myString == "hello world."); Khi b n test o n code trên thì b n s có ư c "true" và "false" output window, vì l n so sánh th nh t thì b ng nhau, nhưng l n th hai thì không vì ch H và h khác nhau. N u b n mu n th coi 2 giá tr có khác nhau không thì dùng ky hi u != ActionScript var a = 7; 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. N u b n mu n th giá tr coi l n hơn hay nh hơn thì dùng > và < ActionScript var a = 7; trace(a < 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 t nh 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 nhau thì dùng ký hi u >= và <= ActionScript var a = 7; trace(a <= 9); trace(a >= 5); trace(a >= 7); o n code trên s cho ra 3 k t qu "true" c . B n có th thay i giá tr 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 n có th vi t như 2 cách trên a = a +1 và a += 1 và còn cách th 3 a++ . D u ++ ch làm tă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: ActionScript var 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á tr c 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: ActionScript var 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ăng giá 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 t t 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 n Trong 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. 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 a variable a v i 7, n u úng thì Flash s chơi frame 10 ActionScript if (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 so sánh gi a ngo c ơn (). T t c các code ư c kích ho t n u i u ki n ư c tho mãn s trong âu ngo c móc {}. 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 : ActionScript if (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ùng so sánh a h p (compound comparision). Trong i u ki n c a Flash ta có th dùng nhi u so sánh i t i m t k t qu chính xác hơn. Ví d n u như a l n 10 và a ph i nh hơn 15 thì ra l nh cho Flash chơi frame 10. ActionScript if ((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 2 phé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ư ch c n tho mãn 1 i u ki n trong 2 phép so sánh thôi. ActionScript if ((a > 10) or (a < 15)) { gotoAndPlay(10); } Vòng l p Cú pháp c a vòng l p (loop) thì hơi r c r i hơn so v i cú pháp c a i u kiên if. nhưng
  • 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 loop và do-while loop for loop ư c coi là vòng l p chính v i t khoá for và cú pháp c a nó nhìn như sau: ActionScript for(var i=0;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 a for 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 u ki n b t u v i vi c t o local variable cho for loop var i=0. ph n này for loop ch th 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 loop i<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 c vò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 i b t u. 3 ph n này u ư c b vào trong ngo c ơn (). Còn nh ng code th c hi n trong m i vòng l p thì trong ngo c móc {}. Bây gi chúng ta gi làm computer và ch y cái for loop này. 1. T o local variable và n nh giá tr cho nó b ng 0 2. Ki m tra giá tr 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 loop T i bư c th 5 thì giá tr c a i s b ng 10 while loop v i t khoá while có cú pháp nhìn tương t như sau: ActionScript while (a > 0) { // code th c hi n trong while loop } ơn gi n hơn for loop, while loop tương t như i u ki n if ơn gi n, th c hi n các code trong vòng l p n u i u ki n c a while loop ư c thoã mãn, vì v y b n d dàng r 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 code trê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 ng l i. Gi ng như while loop, do-while loop có cú pháp nhìn như sau: ActionScript
  • 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 i ki m tra i u ki n. (while loop ki m tra i u ki n r i m i ch y code trong 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ì ch phá 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 t ph 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àm Cho t i bây gi các script c a chúng ta u ư c vi t vào frame u tiên c a moive, 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 tr nê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 o và 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 t function ơn gi n: ActionScript function 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ư i ta 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 1 hay 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 gi chú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 a myFunction. 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 i cù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 code dùng chung 1 fuction và cho 3 k t qu khác nhau ActionScript
  • 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 ng nên chúng ta ch c n thay i code trong myFunction thì t t c các k t q a có ư c t g i function này cũng thay i theo luôn. Dot Syntax M t i u b n s th y r t nhi u trong quá trình h c AS là dot syntax (h ng bi t d ch sao bây gi ) Dot syntax là phương pháp ư c dùng trong l p trình theo hư ng i tư ng (oob: object oriented programming). â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ư ng toá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ư ng mà fucntion này tr c thu c, ó là Math, theo sau ó là d u ch m (dot), và r i t i tên c a function ó là sqrt. Cách vi t như sau: ActionScript var 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 i tư ng, như là movie clip. ActionScript var 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 gi thì quan tr ng là b n n m ư c khái ni m v dot syntax. Chú gi i M t trong c tính c n có c a l p trình viên là vi t code làm sao cho d c và d hi u. Nhưng nhi u khi dù khi vi t có c g ng cách m y thì nh ng o n code ó v n khó hi u cho ngư i xem, vì v y m i c n nh ng l i chú gi i. Mu n chú gi i trong AS thì ch c n 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. // add 2 to b b += 2; Debugging Thư ng thì th i gian di t b t n g n 1/3 th i gian phát tri n chương trình. N u b n n m v ng ư c "nghê thu t" di t b thì b n s rút ng n ư c r t nhi u th i gian. Có 3 cách di t b h u hi n là: phân tích, vi t message ra output window và dùng AS debugger. V i các lo i b ơn gi n thì phân tích các o n code s giúp b n b t trúng con b c n di t. 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 debugger có s n trong Flash. Debugger window cho phép b n có th coi h t t t c moi thành ph n trong movie c a b n, cho phép b n dùng AS b t ch khi nào và ch nào b n mu 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 movie S 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: ActionScript stop(); 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ác animation 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 nh play.. ta s bàn n nó sau. Ví d T i frame 1, b n hãy th m t text box và vi t vào ó Ch A T i frame 2, b n hãy th m t text box và vi t vào ó Ch B T i frame 3, b n hãy th m t text box và vi t vào ó Ch C Bây gi b n hay t câu l nh stop(); vào Frame 2, b n se th y ch A xu t hi n r t
  • 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 kia M 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ó th nh y t frame này n frame mà b n mu n. B n có th sư d ng s th t c a frame hay là tên c a frame ActionScript gotoAndPlay(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 nh gotoAndPlay 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ên frame. ActionScript gotoAndPlay("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à nextFrame and 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ình T o m t button Có nhi u cách t o nút. M t trong nhưng cách ó là ch n Insert, New Symbol t Menu. 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 th timeline 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 a button.
  • 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à ko có gì trong 3 frame sau, tr ng thái Over và Down c a button s gi ng như tr ng thái c 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 qua button, button s chuy n sang màu xanh. Khi b n t o xong 1 button, b n tr lai movie timeline chính. Và button c a b n ã s n sà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 th nó vào nơi nào b n c n trên c a s thi t k . T o script cho button t script cho button, u tiên hãy ch m m t button. Sau ó vào c a s Action b ng cách b m chu t ph i lên button và ch n Action t menu xu t hi n. Hãy Ch c ch n r ng c a s Action ã ư c t ch Expert. B n có th ki m tra bă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. ActionScript on (release) { trace("You clicked the button!") } on : là m t keyword, ư c g i ra x lí m t s ki n Release : Là m t s ki n, khi ngư i s d ng click vào button và nh chu t ra. o n mã 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 Release ch 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 i th 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 Power Point.. Khi chúng ta b m chu t, các slide s chuy n sang slide khác. 1. M Flash, ch n New 2. Trong Layer 1, t Frame 1 n Frame 4, b n hãy ăt các bi u tư ng hay hình nh, text khác nhau phân bi t ư c các frame 3. 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. 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 n trong 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 a button, ch ko ph i vào b t kì frame nào ActionScript on (release) { nextFrame(); } Cu i cùng ch n Frame 1 Layer 1 action và chèn o n code sau ActionScript stop(); Hãy ch y th slide show 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 n hay down load file FLA xem .. easy Gi th 06: i u khi n movie clip, Controlling Movie Clips 6th Hour i u khi n movie clip B ns h c 1- ra l nh cho movie clip 2-T o playback cho animation 3-TÌm hi u ích(target) c a movie clip 4-T p vi t code cho movie clip 5-T o movie clip có th ch y lùi l i. 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ưng b 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à ko c n Actioncript. i u khi n ư c movie, b n ph i t tên cho movie clip. Chú ý r ng m t movies clip có 2 tên, m t tên s d ng cho timeline . M t tên s d ng cho actioncript. 2 tên này có th t trùng tên nhau ho c khác tên nhau. Làm sao t tên cho movie clip : Ch n insert -----> New Symbol (ho c b m Ctrl F8), t tên cho movies clip (nh 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 animation Th movie gear animation vào c a s thi t k .. PHía dư i c a s properties, ban s
  • 22. th y box instance name.. t tên cho movie tên này ư c s d ng cho Action script , vd : gears và như 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í d ActionScript gears.stop(); gears.gotoAndStop(5); Nh r ng movie clip luôn có level. N u o n mã ư c t trên chính movieclip, b n ko c n s d ng tên movies, ch c n gotoAndStop();. N u b n t c tên movie vào, Flash s tìm movie c a b n t timeline chính.. T c là s ph i qua 2 level. ---> ch m hơn chút. 2)Animation Playback Controller Hãy down load source code t trên ph n download và xem. V cơ b n, chúng ta làm cá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 code ActionScript gears.stop(); -T o các button Advance, Previous, Play, Stop, and Rewind -Code cho các button l n lư t là Advance ActionScript on (release) { gears.nextFrame(); } Previous ActionScript on (release) { gears.prevFrame(); } Play ActionScript on (release) { gears.play(); } Stop ActionScript on (release) {
  • 23. gears.stop(); } Rewind ActionScript on (release) { gears.gotoAndStop (1); } 3) Target m t movie Level cơ b n u tiên c a Flash là time line chính(Level 0). N u b n mu n ra l nh cho 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 n gotoAndStop(); 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 nh gears.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ành s 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 n t 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 clips ActionScript var 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ũng x 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 y this 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. Chúng ta ã bàn v button trên, v y v cơ b n movie clip script cũng gi ng button, ó là ActionScript onClipEvent (load) { trace("This clip has been loaded."); } onClipEvent : key word g i s ki n (gi ng on c a button) load : s ki n này x y ra khi movie clip xu t hi n l n u tiên trên màn hình . NÓ ch x 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 p t c ch y. S kiên enterFrame x y ra liên t c bên trong movie clip m i khi n m t frame m i. S ki n này s th c thi o n mã m t cách liên t c cho n khi nó b k t thúc. ActionScript onClipEvent (enterFrame) { trace("This clip has entered a new frame."); } bây gi hãy copy 2 o n code trên vào c a s action c a timeline chính và run .. b n s th y ActionScript This clip has been loaded This clip has entered a new frame This clip has entered a new frame This clip has entered a new frame This clip has entered a new frame dòng ch s ti p t c hi n ra cho n khi b n t t movie. Gi th 07: d ch chuy n và thay i movie, Moving and Changing Movie Clips M 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. 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ên trá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ó nghia là 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. 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 u b 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 s d ng chúng trên movie clip, thì nó là thu c tính c a movie clip. N u xmous y mouse là 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 xmouse ymouse 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í du CODE onClipEvent (enterFrame) { trace(_root._xmouse); trace(_root._ymouse); trace(""); } Khi b n ch y movie, b n s th y các c p s ư c in ra, ó chính là t a x,y mouse .Hãy 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 c gó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 mouse khô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ài c 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 i luôn lên k ho c c n th n trư c khi dùng xmouse, y mouse 3) Làm movie quay M t thu c tính khac ó là thu c tính _rotation Thu c tính rotation ch p nh n giá tr là góc . M t vòng tròn chia ra 360 , mi n giá tr c thu c tính rotation là -180 và 180. B n có th s d ng giá tr integer ho c floating point. Giá tr c a _rotation luôn luôn trong vòng -180 và 180, ví d 179, ho c -179. Nhưng n 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ác bi u toán ++, += thay i giá tr . Hãy xem ví d sau CODE myClip._rotation = 90; myClip._rotation++; _root["myClip"]._rotation = 45; this._rotation += 0.5;
  • 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 clip Scale thu c tính THu 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 nh hơ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 bao nhiê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 l cho movie clip. CODE onClipEvent (load) { // get the original width and height of the mc origWidth = this._width; origHeight = this._height; } onClipEvent (enterFrame) { // get the distance from the center of the mc to the mouse dx = _root._xmouse-this._x; dy = _root._ymouse-this._y; // calculate the percentage of scale sx = 100*dx/(origWidth/2); sy = 100*dy/(origHeight/2); // set the scale of the mc this._xscale = sx; this._yscale = sy; } Chú ý ây ta s d ng 2 thu c tính m i, _width và _height tr v chi u cao và chi u r 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, _height S khác nhau gi a scale và width,height í scale s d ng giá tr ph n trăm. Còn width height s d ng pixel . Movie có th có giá tr sau: width 75, height 45, nhưng scale cho 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. 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ên onClipEvent(load) b i gái tr chi u dài chi u cao c a movie g c ko c n lưu tr . â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) Visibility M 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á tr boolean true , false. CODE myClip._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 100 CODE myClip._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 t c 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, 50 và 100 (t trái sang) Gi th 08: ch n, kéo th movie clip, Moving and Changing Movie Clips 1. Selection
  • 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àm s ki n ho t ng. Tuy nhiên ây ta s h c cách click vào ch n l a m t i tư ng trên màn hình. 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 t button 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àn hì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ên là offbutton. Button này có mã là CODE on (release) { this.gotoAndStop(2); } b ng this, button s g i n movie clip mà nó n m trên y. Frame th 2 ch a nút tươ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ùng nh n ra khi nó ư c ch n. CODE on (release) { this.gotoAndStop(1); } cu i cùng t vào frame 1 CODE stop(); Bây gi hãy ch y xem. Phương th c hitTest Có cách khác làm movie có th s lý mouse click mà không c n button, ó là s d ng s ki n onClipEvent(mouseDown) ho c là onClipEvent(mouseUp)ví d CODE onClipEvent (mouseUp) { this.gotoAndStop(2); } Hãy ch y ví d 08twomcs1.fla xem.B n s th y t i sao onClipEvent(mouseUp) khác v i on (Release) . N u b n click vào movie, c hai u ph n ng.B i vì t t c movie clip nh n s ki n mouse up ư c g i n cho chúng.
  • 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ư sau CODE onClipEvent (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 ta mu 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 MC t 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 1 kh nó frame th nh t, giá tr 2 khi nó frame th 2. CODE onClipEvent (mouseUp) { if (this.hitTest(_root._xmouse, _root._ymouse)) { if (this._currentFrame == 1) { this.gotoAndStop(2); } else { this.gotoAndStop(1); } } } Bây gi b n ã th y các cách t o s ch n l a movie. Cách thư nh t ti n l i n u b n mu n dùng c các trang thái khác như Over,up , down.. Cách th hai thì không c n nhi u bi u tư ng trong thư vi n. Enjoy.. 2) Kéo m t movie clip Bâ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 ng nhưng nó không cho b n nhi u l a ch n trong vi c s a i và giám sát movie. Cá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 n movie c a b n i theo chu t, còn stopDrag khi b n mu n movie c a b n không theo chu t n a. ây là o n code cơ b n : CODE onClipEvent (mouseDown) { if (this.hitTest(_root._xmouse, _root._ymouse)) {
  • 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 hitTest nh n bi t movie nào ang ư c click. Và sau ó câu l nh startDrag và stopDrag ư c s d ng. Khi chu t ư c b m xu ng, câu l nh startDrag th c thi. Và ngư c l i, khi chu 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 t cá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 t movie ư 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 s còn l i là left, top, right, bottom. N u b n t chúng, movie c a b n ch có th ư c kéo theo các ràng bu c ó. Kéo nâng cao Bây gi ta h c cách kéo movie mà ko dùng câu l nh startDrag và stopDrag. V y làm th nào?? B n c n có 4 ph n mã sau trong movie c a b n: Th nh t là s ki n onClipEvent(load), 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). S ki 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 y CODE onClipEvent (load) { // start out not dragging dragging = false; }
  • 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)) { // don't follow the mouse any longer dragging = false; } } Trong ví d 08complexdrag.fla ch a 2 MC. Ki m tra movie, nhưng ch s d ng MC bên trái. ây là MC làm theo o n code trên. Chú ý xem trung tâm movie ơc khóa v i v trí chu t như th nào. Nó làm movie nh y ngay l p t c n u b n click vào nó. Thông thư ng, khi b n mu n kéo MC ó lên màn hình, b n không mu n nó nh y t i làm kh p v trí chu t v i trung tâm c a MC. Hãy kéo file xung quanh màn hình.B n s th y khi b n click chu t vào b t kì i m nào trên movie, movie s l p t c làm kh p v trí click chu t v i trung tâm movie. i u này cũng tương t v i câu l nh startDrag . tránh i u này, chúng ta ch c n thêm m t o n code nh . Khi ngưòi s d ng b m chu t, chúng ta s l y offset, ây là kho ng cách t chu t cho n trung tâm c a movie. Sau ó, thay th b ng vi c gán v trí chu t n trung tâm movie, ta se thêm vào offset cho MC luôn luôn xu t hi n offset b i cùng m t giá tr khi ngư i dùng kéo. Tư ng tư ng , ví d ngưòi dùng click vào m t i m cách trung tâm movie 5 pixel. Sau ó ta luôn mu n kho ng cách 5 pixel ó ư c duy trì. i u này làm cho ngư i dùng có th click vào b t c i m nào kéo movie. ây là code cho movie 2(bên ph i) CODE onClipEvent (load) { // start out not dragging
  • 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)) { // don't 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à th Bây gi ta ã bi t kéo movie, v y ta s th nó âu.? V n là b n mu n theo dõi hành ng c a ngư i s d ng và xác inh ngư i s dung t movie âu. Basic Drop Zone Ch c năng hitTest có th ư c s d ng xác 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 t movie khác tên là dragZone trên m t lêvl(root level) CODE onClipEvent (mouseDown) { if (this.hitTest(_root._xmouse, _root._ymouse)) {
  • 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à _y b i m t movie khác. Lo i hitTest này so sánh v trí và vùng ư c bao ph c a 2 movie clip. Trong trư ng h p này, nó ư c so sánh v i _parent.dropZone. N u có 2 movie è lên nhau, hitTest tr giá tr True. xác inh xem MC nào ang t n t i, hình ch nh t c a c 2 movie u ư c s d ng. i u này có nghĩa là khi b n s d ng 2 hình tròng, như trong ví d , b n thân chính các vòng tròn ó không ư c ch m vào mi n là các hình ch nh t c a 2 movie ư c dùng. Hãy xem hình minh h a. T t c các movie Dragme u n m è trên DropZone. Có 2 cách s d ng hitTest. Th nh t là s d ng t a x,y. Chúng ta có th s d ng movie clip như v trí x,y, r i sau ó s d ng dropzone như m t movie clip th nh t. CODE if (_parent.dropZone.hitTest(this._x,this._y)) { V i o n code này, thay th ví d trên, movie clip s n m bên trong hình ch nh t c a vùng dropzone. Chúng ta có th thêm m t bư c n a v i hittest. B ng cách thêm tham s th 3 cho hitTest, chúng ta có th dùng hitTest xem hình d ng chính xác c a movie clip và xác inh v trí x,y. Bi n th 3 này c n gán true n u b n mu n hành vi này. N u nó false, nó se hành ng gi ng như ch c năng hitTest bình thư ng. ây là o n code CODE if (_parent.dropZone.hitTest(this._x,this._y,true)) {
  • 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 a dropzone. Các movie khác s d ng o n code ph c t p hitTest và chúng có trung tâm nàm bên trong hình d ng g c c a dropzone. Gi th 09: L y thông tin t ngư i dùng, Getting input from the user Cho 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ông tin vào Flash. Làm sao phát hi n khi ngư i dùng b m phím Có 3 cách phát hi n khi m t phím tên bàn phím b nh n. 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ùng l 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 khi mà ngư i dùng nh n phím "a". ActionScript on (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ân bi t d ng ch (case-sensitive) nên n u b n ch code cho nó nh n phím "a" thì nó s không th nh n ư c phím "A". May mà chúng ta có th dùng bao nhi u b x lý d ki 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 (space bar) ... 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ím mũi tên trái (left arrow key) thì dùng o n code sau: ActionScript on (keyPress "<Left>") { trace("Left pressed."); } Và sau ây là các code dành cho các phím c bi t: • <Right> • <Left> • <End> • <PageUp>
  • 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. ActionScript on (keyPress "b", release) { trace("'b' pressed or button clicked."); } Các ví d trên u có trong movie m u 09keybutton.fla 2. Phát 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 i không th phát hi n ư c trư ng h p khi ngư i dùng nh n phím và không nh t tay. Ví d n u b n làm m t game b ng Flash, và trong ó ngư i chơi cho th làm cho các nhân v t trong game di chuy n liên t c n u như h nh n phím mũi tên và không nhât tay lên. 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 p h 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 hay khô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: ActionScript if (Key.isDown(Key.LEFT)) { trace("The left arrow is down"); } Hàm Key.isDown s cho ra k t qu úng hay sai ph 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ên trái. v y khi mũi tên trái b nh n thì output window s cho ra hàng ch "The left arrow is down". 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. Key.CAPSLOCK • Key.ESCAPE • Key.RIGHT • Key.CONTROL • Key.HOME K • ey.SHIFT • Key.DELETEKEY • Key.INSERT • Key.SPACE • Key.DOWN • Key.LEFT • Key.TAB • Key.END • Key.PGUP • Key.UP N u b n mu n ki m tra xem n u nh ng phím bình thư ng ang b nh n thì b n ph i dù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" ActionScript if (Key.isDown(Key.getCode("a")) { trace("The left arrow is down"); } Cho 2 ví d trên, b n có th coi source Fla 09keyobject.fla 3. Key Listener Key listener ư c dùng quan sát bàn phím và thông báo cho Flash khi phím ư c nh n. cách th 2 chúng ta dùng i tư ng Key ki m tra coi phím có b nh n hay khô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ư i dùng nh n phím quá nhanh, trư c khi onClipEvent(enterFrame) k p kích ho t i tư ng key ki m tra thì Flash s không bao gi bi t ư c ngư i dùng ã nh n phím. M t b t ti n n a khi dùng cách th 2 là n u b n mu n ngư i dùng nh n phím nhi u l n thì i tư ng Key s không phân bi t ư c ó là 1 l n nh n dài hay là nhi u cái nh n th t nhanh. 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àn phím và thông báo cho Flash ngay khi phím ư c nh n. Listener có 2 ph n. Ph n u là ph n t o listener. B n ph i ra l nh cho listener này chú ý vào s ki n c a bàn phím. ây là code cho t o listener ActionScript Key.addListener(_root);
  • 38. L nh Key.addlistner t o listener cho i tư ng trong thông s là _root. Và i tư ng nà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 t code x lý s ki n cho _root. Ví d o n code sau s ư c th c hi n khi _root nh n ư c 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 n này ư c thông báo t i _root (b n có th thay th _root b ng b t kỳ i tư ng nào) và sau ó thì hàm Key.getAscii() s cho ra k t qu là mã s ASCII tương ng v i phím v a ư c nh n, ví d A = 65, B = 66 .v.v B n có th xem cái fla m u 09keylistener.fla, trogn ó có o n code trên (lưu ý là trong fla này s không có gì h t ngoài o n code AS frame u tiên) N u b n mu n bi t phím ư c nh t là gì thay vì ASCII code thì b n có th dùng String.fromCharCode() cho ra k t qu b n mu n tìm. Thay dòng trace(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 a movie clip theo d i s ki n keyDown, keyUp, nhưng cách này không còn ư c dùng trong Flash MX n a, vì v y b n ch có th cách này trong các Flash trư c MX thôi. Bài T p: Dùng phím di chuy n movie clip 1. T o m t file Flash m i 2. T o m t movie clip ơn gi n 3. G n o n code này vào movie clip ó ActionScript onClipEvent(enterFrame) { if (Key.isDown(Key.LEFT)) this._x -= 5; if (Key.isDown(Key.RIGHT)) this._x += 5; if (Key.isDown(Key.UP)) this._y -= 5; if (Key.isDown(Key.DOWN)) this._y += 5; }[/b] o n code trên ki m tra 4 phím mũi tên và di chuy n movie clip theo hư ng c a mũi tên. B n hãy th movie coi sao 4. 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. 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ư c khi 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úng ta thay i t c di chuy n c a movie clip, ch c n thay i giá tr c a bi n speed Nh p văn b n Trong 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 khung input 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ên box tài li u tham kh o thêm) Các ch c năng và thao tác làm vi c v i chu i ký t (string Chúng ta có r t nh iu thao tác v i chu i ký t : 1. Ghép 2 chu i l i v i nhau: dùng ký hi u +. Ví d b n có variable tên là myVariable có 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 n cũng có th ghép nhi u hơn 2 chu i l i v i nhau b ng cách trên. 2. Substrings. Substring là m t chu i ký t nh trong 1 chu i ký t khác. Ví d "ell"
  • 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 t ph 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 t b 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" ActionScript var 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 ch cá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 qu tư ng t như cách 1 ActionScript var myString = "Hello World."; trace(myString.charAt(6)); Các hàm c a i tư ng String Sau â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ư ng String. N u hàm indexOf tìm không th y ký t hay chu i nh thì s cho ra k t qu -1. ây là cú pháp:myString.indexOf(substring,start)); substring là ký t hay chu i mình mu n tìm, start là s th t mình b t u tìm trong i tư ng String. Ví d : ActionScript var myString = "Hello World."; //output: 6 trace(myString.indexOf("W",0)); //output: 2 trace(myString.indexOf("llo",0)); 2. lastIndexOf: tương t như indexOf nhưng chúng ta tìm ký t cu i cùng i ngư c lên t iký t u tiên. ActionScript var myString = "Hello World."; //output: 2 trace(myString.indexOf("l",0)); //output: 9 trace(myString.lastIndexOf("l"));
  • 41. 3. toUpperCase/toLowerCase: dùng i chu i t vi t thư ng sang vi t hoa và ngư c l i ActionScript var myString = "Hello World."; //output: HELLO WORLD trace(myString.toUpperCase()); //output: hello world trace(myString.toLowerCase()); 4. length: là c tính c a Sring dùng tính chi u dài c a chu i. ActionScript var myString = "Hello World."; //output: 12 trace(myString.length); Bài t p: 1. m file 09form-noscripts.fla 2. ki m tra tên c a variable c a m i input text field qua property panel 3. Thêm o n mã sau vào nút CLEAR ActionScript on (release) { clearForm(); } 4. thêm o n mã sau vào nút SUBMIT ActionScript on (release) { submitForm(); } 5. Thêm o n code sau vào frame u tiên c a movie ActionScript function clearForm() { firstName = ""; middleInitial = ""; lastName = ""; address = ""; city = ""; state = ""; zip = ""; phone = ""; comments = "";
  • 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 Text Dynamic Text B 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 dung vă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ó th thay i b t c lúc nào nên m i g i là dynamic text Trư c tiên b n t o dynamic text b ng d ng c text trên thanh toolbar, 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 variable b ng cách vi t tên c a variable ó vào trong khung Var trong propery panel. Ví d như b n t variable myText vào trong khung Var thì khi b n thay i giá tr c a myText thì văn b n trong dynamic text field cũng thay i gi ng như giá tr c a bi n myText. 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ăn b 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ó th dù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 n sau: CODE myText = "This text is <B>bold</B>.<BR>"; myText += "This text is <I>italic</I>.<BR>"; myText += "This text is <U>underlined</U>.<BR>"; myText += "This text is <FONT COLOR='#FF0000'>red</FONT>.<BR>"; myText += "This text is <FONT FACE='Arial Black'>Arial Black</FONT>.<BR>";
  • 43. myText += "This text is <FONT SIZE='24'>large</FONT>.<BR>"; myText += "This text is <A HREF='link.html'>linked</A>.<BR>"; QUOTE This text is <B>bold</B>.<br> This text is <I>italic</I>.<br> This text is <U>underlined</U>.<br> This text is <FONT COLOR='#FF0000'>red</FONT>.<br> This text is <FONT FACE='Arial Black'>Arial Black</FONT>.<br> This text is <FONT SIZE='24'>large</FONT>.<br> This text is linked. Siêu liên k t (hyper link) trên có tác d ng gi ng như trong HTML như khác 1 i u là không có g ch dư i Sau ây là nh ng th HTML có th dùng trong Flash MX • <B></B>: vi t m • <I></I>: vi t nghiêng • <U></U>: g ch dư i • <FONT FACE='Arial Black'></FONT>: ki u ch • <FONT SIZE='24'></FONT>: c ch • <FONT COLOR='#XXXXXX></FONT>: màu ch • <A HREF=''></A>: link • <P></P>: an văn • <BR>: Xu ng hàng i Tư ng TextFormat Cò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: CODE myFormat = 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 t khi b n t o nó ra thì b n có th dùng nó b t c ch nào trong movie B n có th coi các an code trên trong file m u: 10formattext.fla Variable ngoài Flash B n có th l y bi n t ngoài trang HTML vào trong Flash thay i n i dung c a Flash hay dùng vào b t c chuy n gì. Ví d b n ph i làm 30 cái banner b ng Flash cho 30 trang web, thì b n có th ch làm 1 cái banner thôi, nhưng thay i n i dung
  • 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 n ch c n thêm vài ch vào sau cái tên c a movie trong ph n <object> và <embed> trong HTML.. o n mã HTML sau ây nh p giá tr c a bi n txtName vào trong Flash HTML <PARAM NAME=movie VALUE="10banner.swf?txtName=Dominico Savio!"> và trong th <embed> thì b n thêm ph n variable và giá tr vào sau tên file HTML src="10banner.swf?txtName=Dominico Savio!"> Khi movie load thì nó s t t o variable "txtname" và t giá tr cho bi n này b ng "Dominico Savio". B n có th xem trang 10banner.html, 10banner.fla trong cái source file xem chi ti t hơn. B n có th làm nhi u giá tr m t lúc cũng b ng cách này 10banner.swf?txtName=Dominico Savio!&gender=male" Ngoài l y bi n t HTML, b n còn có th l y bi n t các text file. Cách này thích h p khi 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ào th HTML. B n ch c n dùng l nh loadVariables() làm ư c i u này. Ví d : CODE loadVariables("10external.txt", _root); B n có th coi thêm v cách dùng loadVariables() bên box ActionScript [Bài T p M t ví d ơn gi n áp d ng các i u mà b n v a h c trong bài này là làm m t cái "news ticker" như dư i ây: Dòng ch s ch y t bên ph i qua bên trái cho su t b n tin. B n có th tham kh o source fla: 10ticker.fla và test nó có khái ni m thêm v "news ticker" 1. T o movie m i 2. T o dynamic text field, v i cao ch v a 1 hàng, và dài b ng chi u ngang c a stage, 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à text 4. Ch n font, nên dùng ki u ch tương t như Courier New, sao cho b ngang c a m i chư b ng nhau 5. Con text field r i nh n F8 i thành Movie Clip, và t cho nó 1 cái tên như th nào tuỳ b n 6. Sau ó thì g n o n script sau vào movie CODE onClipEvent(load) { // t b n tin tickerText = "News Alert: "; tickerText += "Stock prices shoot up sharply with good earnings reports. "; tickerText += "The first manned flight to Mars prepares to leave Earth orbit. "; tickerText += "Your favorite sports team wins championship. "; tickerText += "Scientists find cure for major diseases. ";
  • 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 firstChar ch a giá tr c a ch cái u tiên s th y trong news ticker, và lineLenght là s ch cái có 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 s lý d ki n onLoad Trong onEnterFrame, Flash s l y 50 ch cái u tiên b vào bi n text ( trong dynamic text field) cho nó hi n th lên màn hình. Sau ó di chuy n sang ch cái th 2 b ng câu firstChar++;, và sau cùng là ki m tra, n u 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 tickerText hi u hơn v 2 bi n này 7. 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 nhe Happy 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 s nghiên c u v nh ng con s . B n s ph i ng v i nh ng con s trong Action Script trong nhi u trư ng h p, vì v y b n c n ph i hi u làm sao s d ng chúng. Nh ng phép toán (operator) và nh ng hàm (function) v s Nh ng phép toán ơn gi n Chúng ta cũng ã h c qua các phép toán ơn gi n r i. 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 c hi 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 ơn gi 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. vi c là c ng thêm 7 và bi n a CODE a = a + 7; a += 7; Nh ng phép so sánh Nh ng phép toán so sánh như == so sánh hai s xem có b ng nhau không, > (l n hơn), < (nh hơn), <= (nh hơn ho c b ng), >= (l n hơn ho c b ng). Trong Action Script 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 n hơ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 v giá 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é: CODE trace(Math.abs(-7)); Math.round N 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 ng s 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àm Math.round. Th nhé: CODE trace(Math.round(7.2)); Math.ceil, Math.floor Hai hàm khác dùng làm tròn s 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é: CODE trace(Math.ceil(7.2)); trace(Math.floor(8.3)); Math.min, Math.max Các b n có th s d ng hai hàm này tìm s 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 5 Math.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 th hai 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. CODE Math.pow(4, 3); Math.sqrt ây là hàm tính căn, nhưng mà mình xin nói tr ơc luôn là ngoài hàm Math.sqrt, b n còn có th s d ng hàm Math.pow v i lũy th a nh hơn 1 tính căn. Ví d mu n l y căn 2 c a 4 thì có th s d ng CODE Math.pow(4, .5); ho c Math.sqrt(4); C hai cách trên u ra cùng m t k t qu là 2. Hàm s lư ng giác Nh ng hàm c a object class mà các b n ư c bi t trên có v như r t d h c. Nhưng còn nh ng hàm v lư ng giác như sin, cosin thì “khó nu t” hơn nhi u. M c dù b n có th b qua nh ng hàm này nhưng nh ng hàm lư ng giác này r t h u ích và hay trong vi c t o nh ng ng d ng trong Flash. V y chúng ta hãy cùng tìm hi u cách nó làm vi c nhé! Hàm sin và cosin s d ng qua Math.sin và Math.cosin, bi u di n m i quan h gi a ư ng th ng v i ư ng cong c a m t ư ng tròn. Hình dư i ây bi u di n m t vòng tròn v i m t s i m ư c ánh d u b ng các ch . 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,0 Bây gi b n hãy tư ng tư ng vòng tròn trên là m t ư ng th ng. B t ut i m “a”
  • 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 t b t kỳ b ng to x, y c a chúng. Vì th , vi c chuy n m t i m trên ư ng th ng thành m t i m có to x, y trên ư ng tròn r t h u d ng. ó là nh ng gì mà hàm sin và cosin th c hi n. Ví d như chúng ta t i m “a” là i m b t u c a ư ng th ng c a ư ng tròn, b n có s d ng hàm sin và cosin c a 0 tính to x, y c a i m “a” trên ư ng tròn. T t nhiên, Math.cos(0) s tr v giá tr 1, Math.sin(0) s tr v giá tr 0. K t qu s tr v to c a i m “a” 1,0 V y i m “c” s n m âu trên ư ng tròn? N u du i ư ng tròn ra s có dài b ng 6.28 l n bán kính, do bán kính b ng 1 nên dài s b ng 6.28. ây là xu t x c a h ng s pi. Pi b ng 3.14, b ng m t n a dài c a ư ng tròn. dài c a ư ng tròn là 6.28 thì m t ph n tư dài ư ng tròn là 1.57. i m ó tương ng v i i m “c”. Hàm Math.cos(1.57) s tr v m t giá tr r t nh , g n b ng 0. Hàm Math.sin(1.57) s tr v giá tr g n b ng -1. Ch g n b ng ch không b ng vì h ng s pi không chính xác b ng 3.14, ch là g n b ng thôi. B n có th s d ng cách này chuy n các i m trên ư ng tròn thành i m có to x,y V y thì nó có ích như th nào? Gi s như b n mu n t o m t movieclip bay quanh màn hình trong m t vòng tròn. Làm sao làm ư c i u ó? N u làm b ng frame có th ph i t n hàng trăm frame . Ho c cách khác là có th dùng hàm Math.cos và Math.sin tính chuy n sang to x,y quanh vòng tròn. Trong o n code dư i ây, khi c ng thêm n, movie clip s chuy n ng d c theo ư ng tròn. Hàm Math.cos s tính ra giá tr x và hàm Math.sin s tính ra giá tr y, chúng s ư c nhân thêm v i giá tr c a radius tăng kích thư c c a ư ng tròn. Giá tr c a centerX và centerY s ư c c ng thêm cho các to x, y, vì th tâm ư ng tròn bây gi không còn 0,0 n a mà s v trí 150,150 CODE onClipEvent(load) { n = 0; radius = 100; centerX = 150; centerY = 150; } onClipEvent(enterFrame) { n += .1; this._x = Math.cos(n) * radius + centerX; this._y = Math.sin(n) * radius + centerY; } Ch (string) và s (number) Có r t nhi u cách chuy n i t chu i sang s và ngư c l i. Ví d như trư ng h p ngư i dùng nh p m t s vào text field, b n s nh n giá tr ó và c ng thêm m t. Hãy xem o n code sau ây, num là m t bi n giá tr text field CODE
  • 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, ơn gi n b i vì num là m t chu i (string) ch không ph i là m t s , vì th khi chúng ta th 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 tr v giá tr là 42, n u chúng ta s d ng parseInt(“42.9”) thì cũng s nh n ư c giá tr là 42 b i vì hàm parseInt không làm tròn s , nó ch l y ph n nguyên mà thôi. Còn n u s d ng hàm parseFloat(“42.9”) b n s nh n ư c giá tr là 42.9, mu n làm tròn các b n có th s d ng hàm Math.round(parseFloat(“42.9”)). Hàm parseFloat cũng s tr v m t m t s nguyên n u tham s truy n vào là m t chu i s nguyên. Ví d parseFloat(“42”) s cho ta s 42. Tr trư ng h p b n mu n tr v m t giá tr s nguyên, còn không b n nên s d ng hàm parseFloat. M t nét r t c bi t và r t hay c a hàm parseInt là có th chuy n m t chu i thành m t s nhưng thành nhi u d ng h s khác nhau. Hãy xem m t ví d cho d hi u: CODE parseInt(“FF”, 16); Hàm này s tr v giá tr là 255, ý nghĩa c a nó là chuy n chu i ch a s FF là m t s hexa h s 16 thành m t s h nguyên h s 10. Ngư c l i, chuy n t m t s sang m t chu i, hãy s d ng hàm toString. Hàm này s ho t ng khác v i hàm parse, b i vì nó ho t ng bên trong m i bi n, g i hàm này sau d u ch m (.). Xem ví d nhé: CODE a = 135; trace(a.toString() + 1); K t qu s là 1351. Chúng ta cũng có th s d ng hàm toString chuy n m t s thành m t chu i ch a s dư i m t h s khác. Ví d a.toString(16) s tr v k t qu là chu i “ff” S ng u nhiên T o s ng u nhiên là m t ph n quan tr ng trong công vi c thi t k game và m t s ho t hình. B i vì n u không có sô ng u nhiên thì nh ng o n phim c a b n s ch y gi ng nhau, không còn gì thú v n a! t o s ng u nhiên, b n có th s d ng hàm Math.random(). Hàm này s tr v m t giá tr t 0.0 n 1.0 nhưng thư ng thì không tr v giá tr b ng 1.0 Hãy xem ví d dư i ây, b n s nh n ư c con s ng u nhiên trong c a s OutPut CODE
  • 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ên t 0.0 n 10.0 CODE trace(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 1 CODE trace(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 s d ng hàm Math.floor làm tròn xu ng. CODE trace(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 t con 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ày s ư c ưa và m t bi u th c r t ph c t p, r t r t ph c t p mà 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ày s ư c ưa và m t hàm tính m t l n n a là lưu l i thành con s chu n tính ng u nhiên cho l n ti p theo. 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 u nhiê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 t chí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: CODE trace(Math.floor(Math.random() * 5 + 3); Trong ph m vi t 3 n 7 s có t t c là 5 s nguyên 3, 4, 5, 6, và 7. Th còn trong ph m vi t 50 n 100 thì sao CODE trace(Math.floor(Math.random() * 51 + 50);
  • 51. Là s 51 b i vì trong ph m vi t 50 n 100 có 51 s , còn n u t 51 n 100 s là CODE trace(Math.floor(Math.random() * 50 + 50); M t cách th xem ph m vi c a b n có úng như ý c a mình không, ó là hãy th v i s nh nh t và s l n nh t thay cho Math.random(). Giá tr nh nh t c a hàm Math.random() là 0, hãy th v i s 0 nhé CODE trace(0 * 51 + 50); Giá tr l n nh t c a Math.random() s không chính xác b ng 1.0 mà s là g n b ng, v y chúng ta hãy th v i giá tr là 0.9999 CODE trace(.9999 * 51 + 50); Hãy th xem có úng không nhé! Dư i ây là m t ví d n a r t thú v , movie clip c a b n s nh y n nh ng v trí b t kỳ CODE onClipEvent(enterFrame) { this._x = Math.random()*550; this._y = Math.random()*400; } Luy n t p: T o m t chương trình máy tính ơn gi n Hãy b t tay vào vi c thi t k m t chương trình máy tính ơn gi n nhé. - M m t movie m i trong Flash. Movie c a chúng ta s gi ng như hình dư i ây Chúng ta s có 10 nút nh p 10 s t 0 n 9, các nút các phép toán, phím =, d u ch m th p phân, phím C xóa màn hình. M t text field t trên hi n th nh ng s ngư i dùng b m, text field này s liên k t v i bi n display. - Trong m i movie clip c a m i nút b m, chèn o n code sau CODE on (release) { _parent.keyPressed(this._name); }