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; iTh 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à = 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;ido {
// 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