You are on page 1of 330

NG NGC HONG THNH

SCRIPT V K
THUT HOT HNH
(Gio trnh ging dy trn Flash CS5/CS6v ActionScript 3.0)

Blank Page

-2-

LI NI U

dobe Flash l mt phn mm chuyn nghip to cc thc phim


hot hnh, cc tr chi, thit k giao din web (ng du ng trong k
thua t RIA Rich Internet Application) Flash c mt ng dng to ln
trong th gii Internet ni chung v trong cng ngh gii tr ni ring.
D rng nhiu cng ngh mi ra i ang c gng cnh tranh vi
Flash, nhng Flash vn chim th phn cao hn hn. C kh nhiu gio trnh v
Flash c bin son, nhng i a s u da trn phin bn MacroMedia Flash
MX 2004 tng i c. Vi phin bn CS5, Adobe b sung vo nhng tnh nng
mi gip ngi dng thit k v lp trnh n gin hn. Cun gio trnh ny gm
c ba phn:
Phn 1. Thit k dnh ring cho nhng c gi khng chuyn mun tm
hiu cch s dng cng c v v to hot hnh bng cc cng c c sn ca Flash.
Phn ny bao gm cc chng 1, chng 2, chng 3, chng 4.
Phn 2. Gm chng 5. Dnh cho cc c gi mun tm hiu v
ActionScript 3.0 mt ngn ng lp trnh c cu trc gn ging vi Java c s
dng tng cng sc mnh cho Flash.
Phn 3. Mang tnh cht tng hp. Gm cc chng 6 v 7. Phn ny gip
bn c hon thin cc thc phim hot hnh bng cc k thut nng cao. Chng
ti cu ng cung cp thm cc kin thc lm vic vi hnh nh, m thanh v video.
Be n ca nh o , chng ti cn gii thiu gi th vin ma nguo n m PaperVision3D
(trong d a n cu ng te n) lm vic vi ha 3D trong Flash mt iu m hu
nh cha c mt gio trnh ve Flash no cp n.
Khi bin son gio trnh ny, chu ng ti c gng hon thin n. Tuy nhin,
khng th trnh khi sai st. Chu ng ti rt mong nhn c s ng gp kin
qu bu ca cc bn c gi cng nh cc bn ng nghip. Mi th t ng gp
xin gi v cc a ch email sau dnhthanh@hueic.edu.vn hoc
myhoangthanh@yahoo.com.
Trong gio trnh ny, chng ti cn b sung thm mt s tnh nng mi m Adobe
a vo cho phin bn Flash CS6.
Hu 2012

Tc gi

-3-

Blank Page

-4-

PH LC
LI NI U ........................................................................................................................................ 3
CHNG 1. GII THIU V FLASH .......................................................................................... 11
1.1.

S lc v ha vector v lch s ra i ca Flash ........................................ 11

1.3.

Ci t Adobe Flash CS5 .............................................................................................. 15

1.2.
1.4.

So snh Flash vi Silverlight v JavaFx .................................................................. 14

Gii thiu v Adobe Flash CS5/CS5.5...................................................................... 19

1.4.1.

Cc ch ty bin giao din ............................................................................. 20

1.4.3.

Layer, Frame, Scene v Movie ............................................................................ 24

1.4.2.

1.4.4.
1.4.5.
1.4.6.
1.4.7.

To mi d n cho desktop v mobile ........................................................... 21

Vng thanh cng c Tools .................................................................................... 27


Vng thuc tnh Properties ................................................................................. 27

Vng son tho ActionScript .............................................................................. 28


Cc vng chc nng khc ..................................................................................... 29

Tng kt chng 1 .......................................................................................................................... 37


CHNG 2. CC CNG C V C BN ................................................................................... 39
2.1.

Cc cng c Pencil, Brush v Erase .......................................................................... 39

2.3.

Cng c Text

2.2.
2.4.
2.5.
2.6.
2.7.

Cng c v hnh c bn ................................................................................................. 41


................................................................................................................ 49

Cng c chn Selection v Lasso ............................................................................... 51

Cc cng c mu Paint Bucket, Ink Bottle v bt mu EyeDropper ..... 53


Cng c Free Transform v Gradient Transform ............................................... 54

Cc cng c lm vic vi ng Bezier .................................................................. 57

-5-

2.8.

Lm vic vi cc i tng .......................................................................................... 59

Tng kt chng 2 .......................................................................................................................... 62

CHNG 3. CC BIU TNG TRONG FLASH ................................................................... 64


3.1.

Biu tng Graphic ........................................................................................................ 64

3.3.

Biu tng MovieClip .................................................................................................... 68

3.2.
3.4.

Biu tng Button .......................................................................................................... 66

Lm vic vi Library ...................................................................................................... 69

Tng kt chng 3 .......................................................................................................................... 71

CHNG 4. TO HOT CNH .................................................................................................... 73


4.1.

Tm hiu v TimeLine .................................................................................................... 73

4.3.

Shape Tween ..................................................................................................................... 81

4.2.
4.4.
4.5.
4.6.
4.7.

Classic Tween.................................................................................................................... 80
Motion Tween ................................................................................................................... 83
Cng c Bone v Bind .................................................................................................... 88
Cng c Deco ..................................................................................................................... 92

Cng c 3D Translation v 3D Rotation .............................................................. 102

Tng kt chng 4 ....................................................................................................................... 105

CHNG 5. LP TRNH VI ACTIONSCRIPT ................................................................... 107


5.1.

Cc kiu d liu ............................................................................................................. 108

5.3.

Ton t v Biu thc ................................................................................................... 111

5.2.
5.4.
5.5.

Bin v Hng................................................................................................................... 109

Kie u d lie u ma ng Array ........................................................................................... 116


Cc cu trc lnh iu khin .................................................................................... 118

5.5.1.

Cu lnh if ................................................................................................................ 118

-6-

5.5.2.

Cu lnh switch ..................................................................................................... 120

5.5.4.

Cc lnh continue, break v return ............................................................... 126

5.5.3.

5.6.
5.7.

Cc cu lnh lp for, while v dowhile ..................................................... 121

Hm .................................................................................................................................... 127
Lp v i tng .......................................................................................................... 132

5.7.1.

Xy dng lp .......................................................................................................... 132

5.7.3.

Lp s kin Event ................................................................................................ 138

5.7.2.
5.7.4.

5.7.5.
5.7.6.

5.7.7.

5.8.
5.9.

5.10.

Lm vic vi i tng ...................................................................................... 136


S kin chut ......................................................................................................... 142
S kin bn phm.................................................................................................. 144
La m vie c vi Timer .............................................................................................. 148
La m vie c vi ca c tha nh pha n ho tr giao die n ngi du ng GUI ........ 150

a mt i tng vo ActionScript.................................................................... 151

Lm vic vi XML ......................................................................................................... 154


Vng chc nng Code Snippets .......................................................................... 155

Tng kt chng 5 ....................................................................................................................... 195

CHNG 6. CC HIU CHNH NNG CAO ......................................................................... 197


6.1.

X l m thanh, hnh nh v video ........................................................................ 197

6.3.

To thc phim Flash ta 3D .................................................................................. 205

6.2.
6.4.
6.5.
6.6.
6.7.

To k xo in nh vi Flash .................................................................................. 201


Ghp ni nhiu hot cnh ......................................................................................... 212

K thut mt n mask .................................................................................................. 212


To cc nt nhn iu khin .................................................................................... 220
Xut bn mt Movie..................................................................................................... 222

-7-

6.8.

6.9.

6.10.
6.11.

Xut bn mt tp tin Flash trong sut trn trnh duyt................................ 231

Tng tc gia ActionScript v JavaScript ........................................................ 235


La p trnh Socket tre n Adobe AIR ....................................................................... 237
La m vie c vi c s d lie u trong AIR ............................................................... 246

Tng kt chng 6 ....................................................................................................................... 253


CHNG 7. TH VIN PAPERVISION3D .......................................................................... 255
7.1.

Gii thiu v PaperVision3D v Adobe Flex Builder...................................... 255

7.3.

Chng trnh Hello, PaperVision3D !................................................................... 261

7.2.
7.4.

Cu hnh v ci t PaperVision3D cho Adobe Flex Buider ........................ 259


Cc i tng trong PaperVision3D ..................................................................... 265

7.4.1. Cc i tng hnh th ........................................................................................... 265


7.4.2. i tng Material - Phi mu cho hnh th ................................................. 272

7.4.3. i tng Lights - Hiu ng nh sng ............................................................. 275

7.4.4. i tng Shader - Hiu ng bng ............................................................. 276


7.4.5. i tng ShadedMaterial.................................................................................... 276

7.4.6. i tng CompositeMaterial ............................................................................. 277

7.4.7. i tng MaterialsList ......................................................................................... 277

7.5.

Import mt m hnh 3D ............................................................................................. 277

Tng kt chng 7 ....................................................................................................................... 280

BI TP THC HNH ................................................................................................................. 282


A PHA N BA I TA P CO HNG DA N................................................................................. 282
1. TA O CHUYE N O NG CHO NHA N VA T ..................................................................... 282

2. TA O HIE U NG PHO NG TE N LA............................................................................. 284

3. TA O HIE U NG ZOOM ................................................................................................... 287

-8-

4. TA O BE CA .......................................................................................................................... 288

5. TA O PHA O HOA ................................................................................................................ 289


6. XA Y DNG GAME A BO NG VA O LO .................................................................... 298

7. XA Y DNG GAME DIE T RE P ........................................................................................ 303


8. XY DNG GAME NO NG TRA I VUI VE .................................................................... 309

B PHA N BA I TA P T LA M.................................................................................................. 321

BI THC HNH S 1 ........................................................................................................ 321


BI THC HNH S 2 ........................................................................................................ 323
BI THC HNH S 3 ........................................................................................................ 323
BI THC HNH S 4 ........................................................................................................ 324
BI THC HNH S 5 ........................................................................................................ 326
BI THC HNH S 6 ........................................................................................................ 326

TI LIU THAM KHO THM .................................................................................................. 329

-9-

Blank Page

- 10 -

CHNG 1. GII THIU V FLASH

CHNG 1. GII THIU V FLASH


1.1. S lc v ha vector v lch s ra i ca Flash
S lc v ha vector
o ho a ma y tnh la mo t trong nhng lnh vc co nhie u ng du ng ln trong thc
tie n. Mo t trong nhng lnh vc ng du ng tie m na ng o la lnh vc gia i tr a
phng tie n multimedia. ha my tnh co the c chia lm ba dng c bn:
ha im: c s ca n l cc im nh (pixel). Mi bc nh ca ha im
l mt ma trn im, m mi im nh c xc nh bi mt mu mu theo
chun ph bin l RGB (Red-Green-Blue). Mi tham s mu c phn b t 0
cho n 2n -1 (nh dng n bit mu). Khi phng to bc nh ca ha im, ta s
thy r tng im nh. Hy quan st v d i vi bc nh sau y:

Hnh 1 ha im

CHNG 1. GII THIU V FLASH

ha Fractal: s dng thut ton quy. Mo t bo pha n na o o tre n o i tng


fractal se la mo t hnh a nh thu nho cu a chnh o i tng o . a y la mo t da ng o ho a
quan tro ng va co nhie u ng du ng trong thc tie n. Nu quan tm n dng ha
ny, o c gia co the tham kho thm trong cc ti liu lin quan n ha Fractal
hay hnh hc Fractal.

Hnh 2 ha Fractal

ha vector: c s ca n l vector v ng cong Bezier. Da ng o ho a vector


c nhiu u im so vi ha im. Mt trong nhng u im ln nht ca n
l khng kho ng co s gii ha n khi pho ng to bc a nh. Tho ng thng, ca c a nh da ng
o ho a ie m se b v ht khi phng to. S v ha t na y co n tu y va o o pha n gia i
cu a ca c bc a nh. A nh ca ng min (c chu p bi ca c ma y a nh co zoom so ln) th
cho phe p kha na ng pho ng to ln hn. Co n o i vi a nh da ng vector, th se kho ng
bao gi xa y ra tnh tra ng na y. Cu ng v l do na y, ma ha u he t ca c nha thie t ke thch
s du ng chng trnh x l o ho a vector hn la o ho a ie m (bi chu ng thng
c in tre n ca c kho gia y co kch thc kha c nhau bao go m ca nhng kho gia y co
kch thc ln). Cc chng trnh ha vector ni ting bao gm Adobe

- 12 -

CHNG 1. GII THIU V FLASH

Illustrator, Corel Draw, Mt bc nh di dng ha vector bao gi cng mn


mng hn so vi ha im.
o i vi o ho a ie m, khng c nhiu nh dng h tr ch transparent (hay
ch mu alpha). Nhng vi ha vector, th nhng tnh nng ny c h
tr mt cch hon ho. Vi ha vector, cc chng trnh chnh sa v thit k
ha lun h tr ch lp Layer, nhng vi ha im, ch c mt vi nh
dng mi h tr lp Layer ny (nh inh da ng photoshop, inh da ng corel
photopaint,). Ba n hy quan st mt s i tng ha c to bi Adobe
Illustrator sau y:

Hnh 3 ha vector

nh dng ta p tin cuo i cu ng cu a Flash (swf) m chng ta s lm quen y cng


thuc vo ha vector. Flash thng c s dng to ra cc hiu ng ng.
Xt mt phm tr no , n c nhiu im tng ng vi k thut to video
(k thut 24 hnh/giy). Nhng n c u im l phim c to bi Flash khng
b v ht khi phng to (tr trng hp phim c cha cc i tng ha im).
Mo t ie u c bit ma Flash c a chuo ng va s du ng ro ng ra i tre n internet la

- 13 -

CHNG 1. GII THIU V FLASH

kch thc phim to bi Flash rt nh gn so vi cc nh dng phim khc va


thng c s du ng e truye n ta i tre n world wide web.
Lch s ra i ca Flash
Flash l mt k thut to cc hiu ng ng, cc thc phim hot hnh, thie t ke
giao die n ngi du ng cho ca c ng du ng web Flash c gii thiu u tin bi
cng ty MacroMedia vo nm 1999. n nm 2005, cng ty ny c Adobe
mua li vi gi 3.4 t la. T khi ra i cho n ny, Flash c rt nhiu bc
pht trin ng ch . Nhiu tnh nng mi lin tc c cp nhp trong cc
phin bn ca n, k t cc phin bn Macromedia Flash cho n Adobe Flash
hin nay.
Vi phin bn Adobe Flash CS4, cng ty Adobe b sung vo cho Flash nhng
tnh nng mnh m: h tr nhiu nh dng import d liu; b sung cc cng c
to hot hnh mnh m nh Bone, Bind, 3D Translation, 3D Rotation,
Phin bn mi nht ca Flash l CS5.5 (cho n a u nm 2012). Hin nay, Adobe
cng to ra mt n bn m ngun m cho Flash l cng ngh Flex. Mt
trong nhng cng ngh ra i sm nht h tr to giao din cho ng du ng web co
tnh tng ta c cao vi ngi du ng RIA. Flex l mt cng ngh ha hn em li
nhiu li nhun cho Adobe (nh vo trnh pht trin Adobe Flex Buider). N l
mt i th ln khi so sa nh vi cng ngh Silverlight ca Microsoft v JavaFx ca
Sun (nay c mua li bi Oracle).

1.2. So snh Flash vi Silverlight v JavaFx

Ngy nay, xu th thng mi in t ha ang ngy cng len li vo cc ngc


ngch x hi. Cc website kho ng ch l ni cung cp thng tin ma ngi s du ng
internet co n s du ng no e trao i tho ng tin, mua ba n, chia se ... Do , giao din
website p mt, thit k thun tin l mt li th. Chnh v l , rt nhiu nh
pht trin ch n iu ny. Cc hng phn mm ln nh Microsoft, Adobe,
Sun, a pht trin cc cng ngh h tr chim lnh th trng phn mm h
tr cng ngh RIA no i trn. Tnh v tui i pht trin ca cc cng ngh h tr
RIA, Adobe t ra l ngi tin phong.
Flash/Flex ca Adobe, Silverlight ca Microsoft v JavaFx ca Sun l nhng cng
ngh ng ch nht. Mi trong s chng u c u im no i tro i rie ng. Mt u
im chung ca chng l ha rt p v chuyn ng rt mm mi.
Flash/Flex c tui i kh cao, vi lng ngi dng ng o, hu ht cc nh
pht trin qu quen thuc vi Flash. Flash cng h tr lp trnh hng i
tng. N cng tng thch vi hu ht cc ngn ng lp trnh web hin nay.
Flash h tr hu ht trn cc h iu hnh: Windows, Linux, MacOS v rt nhiu
mu Mobile ca nhiu hng khc nhau. pht trin mt ng dng Flash, cc nh

- 14 -

CHNG 1. GII THIU V FLASH

pht trin c th s dng trnh bin tp Adobe Flash Professional hoa c Adobe
Flash Builder. Ca c trnh bin tp ny hot ng tt trn a s h iu hnh:
Windows v MacOS. Mt yu cu trnh khch (v du nh trnh duye t web) c
th chy c Flash l cn ci t mt plugin Flash nh gn (khoa ng 2 Mb); h
tr mt phin bn Flash Lite (cho cc dng in thoi); Adobe Flash Player,
Adobe Shockwave, Adobe AIR (cho ca PC, Laptop, smartphone, tablet,).
Silverlight mc du ra i sau Flash, nhng vi s hu thun ca mt tp on
ln nh Microsoft, n cng ang dn c mt v th ng k. Ngoi ra, Silverlight
c pht trin trn nn .NET, cc lp trnh vin c th s dng VB.NET hoc C# mt ngn ng lp trnh mnh m - pht trin. Nhc im ca n l ch tng
thch trn Windows, MacOS v cc mu in thoi Windows Mobile. pht trin
ng dng trn Silverlight, cc nh pht trin ch c th s dng Visual Studio vn
ch dnh cho h iu hnh Windows. Trnh khch mun chy c Silverlight cn
ci t Plugin Silverlight (khong 5 Mb).
JavaFx ra i sau cng, nhng n c nhiu u im: m ngun m, h tr nhiu
h iu hnh Windows, Linux, MacOS v ha hn hot ng tt trn nhiu mu
Mobile, trnh khch khng cn ci t plugin h tr. son tho JavaFx, ngi
dng c th s dng Eclipse hoc NetBean. C hai trnh bin dch ny u hot
ng tt trn Windows, Linux v MacOS. Nhng mt iu ng tic l JavaFx li
ra i qu mun mng.
Vi tui i cao, lng ngi dng c kinh nghim ln, cc lp trnh vin v cc
nh pht trin qu quen thuc vi Flash. Flash vn ang v s pht trin trong
mt khong thi gian di na. Flash c ba nh hng trng tm: pht trin RIA
cho web, to cc chng trnh ng dng cha y tre n Adobe Air (tng thch vi
Windows, MacOS, Linux, Android, iOS) v cc thc phim trnh din cha y tre n
Flash Player, Shockwave, Flash Plugin, Flash Lite. Trong nm 2010, W3C a
ra chun mi cho ca c ng du ng web co ng nghe HTML 5 ha hn s son ngi
RIA ca Flash, Silverlight v JavaFx. D sau ny, v th trong vic pht trin RIA
cho web c thay i, th nhng nh hng cn li ca Flash vn l nhng nh
hng pht trin quan trng, m bo s trng tn cho cng ngh ny.

1.3. Ci t Adobe Flash CS5

Yu cu cu hnh ci t: h iu hnh Windows XP Pack 3 hoc cao hn


(MacOS X hoc cao hn), 1Gb Ram hoc cao hn, Pentium IV hoc cao hn.
Mc du mc ch chnh ca chng ta l s dng chng trnh Adobe Flash
Professional CS5, tuy nhin cc bn c th s dng thm mt s chng trnh
nh km nh: Photoshop dng hiu chnh nh, Dreamweaver thit k giao
din web ng thi chn cc phim Flash vo, son tho ActionScript chuyn

- 15 -

CHNG 1. GII THIU V FLASH

nghip hn vi Flash Buider 4, hiu chnh m thanh, video Chnh v l do ny,


ti ngh cc bn nn chn b trn gi Adobe Master CS5 (hoa c CS5.5).
Chng ta c th ti trc tip t Adobe va c 30 ngy dng th. Sau khi ti v,
hy tin hnh gii nn tp tin, khi ta s thu c mt th mc chnh.
Nu ta s dng mt a ci t DVD, th hy a a DVD vo a DVD trn my
tnh. Chng ta c th s dng ch AutoRun ca n, hoc m a DVD ny ra.
Trong c hai trng hp nu trn, th mc chnh s c 4 th mc con v mt tp
Set-up.exe. Cu trc th mc c dng nh sau:

Hnh 4 Cu trc th mc bn trong a DVD ci t Flash CS5

Hy nhp i chut vo tp tin Set-up.exe, khi , s c ca s sau y hin ra

Hnh 5 Mn hnh cho n khi ci t Adobe Master CS5

- 16 -

CHNG 1. GII THIU V FLASH

Hy c qua cc iu khon s dng phn mm, nu ng th cc bn ch vic


nhp Accept. Ngc li, hy chn Quit hy b vic ci t.
Sau khi nhp vo Accept, ca s sau y s xut hin.

Hnh 6 Ca s Serial Number

Trong ca s ny, chng ta c th in serial vo tng ng vi Provide a serial


number (nu c mt s serial), ngc li, hy chn Install this product as a
trial (nu cc bn mun s dng th 30 ngy). Nu mun chn ngn ng hin th,
hy chn Select Language. Sau , bn nhp Next. Adobe Master khng h tr
ting vit. N ch h tr mt vi ngn ng nh ting anh, ting nht Nu s
serial in vo ng, th s xut hin mt du tch mu xanh. Ngc li, nu s
serial sai, du nhn mu s xut hin. Nu s serial ng, ta c th nhp Next
tip tc qu trnh ci t. Nu khng c s serial, hy chn ch dng th.
Khi ci t ch dng th, Adobe s thng xuyn a ra thng bo nhc
nh v s ngy dng th cn li v n s t ng chm dt kh nng dng th
sau 30 ngy. Ta cng c th s dng ch ci t ny nu c s serial. V s
serial s c b sung sau.
Sau khi nhp next, ca s Adobe ID s hin ra. Sau l ca s Install Options.
Trong ca s ny, cho php ta chn la cc thng s ci t.

- 17 -

CHNG 1. GII THIU V FLASH

Hnh 7 Ca s Install Options

Chng ta c th chn la cc phn mm cn ci t bng cch nh du tch vo


cc phn mm tng ng. Nu mun hc Flash CS5, hy chn Flash
Professional. Ngoi ra, ti khuyn ngh hy chn thm cc phn mm sau:
Photoshop (x l ha im), Flash Buider (thit k RIA cho web, lp trnh
ActionScript chuye n nghie p), SoundBooth (x l m thanh). Ngoi ra, nu quan
tm n cc lnh vc ha khc, ta c th ci t thm cc phn mm nh
Illustrator l phn mm chuyn x l ha vector, Fireworks cng l phn mm
chuyn x l ha im, Adobe Premier chuyn x l phim, After Effect chuyn
to k xo in nh. Ba n cu ng ca n lu y ra ng, trong phie n ba n CS5.5, Adobe a loa i
pha n me m SoundBooth ra kho i bo ca i a t. Ne u ba n muo n tm mo t chng trnh
x ly a m thanh khi cho n bo ca i a t CS5.5, th ba n co the du ng Adobe Audition.
Adobe Audition kho ng tch hp trong bo ca i a t CS5.5 ma no la mo t pha n me m
rie ng. Ba n co the ta i no va du ng th 30 nga y nh o i vi bo ca i a t CS5.5.
mc Location bn di, bn hy chn v tr m bn s ci t. Theo mc nh,
n s ci t vo th mc C:\Program Files\Adobe. Bn cng cn lu dung
lng a dnh cho vic ci t. Bn cn lun m bo rng dung lng ci
t Total install phi lun nh hn dung lng a cn trng Available.
Sau , hy nhp vo nt Install v ch i cho qu trnh ci t hon tt. kt
thc qu trnh ci t, hy nhp vo nt Finish ng ca s ci t li.

- 18 -

CHNG 1. GII THIU V FLASH

1.4. Gii thiu v Adobe Flash CS5/CS5.5


Khi ng Adobe Flash Professional CS5/CS5.5: khi ng Adobe Flash
Professional CS5/CS5.5, ta c th bm chn biu tng ca n trn mn hnh
Desktop, hoc tin hnh cc bc sau:
- Vo Start > All Programs
- Chn Adobe Master Collection CS5/CS5.5.
- Chn Adobe Flash Professional.

Hnh 8 Khi ng Adobe Flash Professional CS5/CS5.5


Khi , mn hnh Splash mn hnh cho n ca Adobe Flash Professional s
hin ra

Hnh 9 Mnh hnh cho n ca Adobe Flash Professional CS5/CS5.5

Sau khi qu trnh khi ng hon tt, bn s thy giao din sau y

- 19 -

CHNG 1. GII THIU V FLASH

Hnh 10 Ca s ban u ca Flash Professional CS5/CS5.5

Phin bn Adobe Flash CS5 xut xng nm 2010, phie n ba n CS5.5 xua t xng
na cuo i na m 2011. So vi cc phin bn trc , CS5 va CS5.5 c nhiu thay i
v c giao din chng trnh ln cc tnh nng ca n.
V giao din: phin bn CS5/CS5.5 dnh cho Windows tuyt giao vi giao
din Window, s dng mt giao din c lp vi h iu hnh.
V tnh nng: b sung thm nhiu cng c mi lm cho cng vic sng tc tr
nn n gin hn nh cc cng c Bone, Bind, 3D Translation, 3D Rotation, ca c
hie u ng script ho tr ma n hnh ca m ng...
1.4.1. Cc ch ty bin giao din

Trong giao din tng th Essential ca Flash CS5/CS5.5, c th chia lm 5 vng


chnh:
- Vng h thng menu pha trn cng.
- Vng thanh cng c bn phi.
- Vng thuc tnh v th vin bn cnh thanh cng c.
- Vng sng tc trung tm.

- 20 -

CHNG 1. GII THIU V FLASH

- Vng TimeLine v Layer pha bn di.

Hnh 11 Giao din Adobe Flash CS5/CS5.5

Flash CS5/CS5.5 cho php bn lm vic theo ch Tab. Trn vng thanh menu,
gc bn phi mc Essentials cho php ta chuyn i qua li gia cc cch b tr
giao din. C 6 ch b tr giao din: Animator, Classic, Debug, Designer,
Developer v Essentials. Ty vo cm quan ca bn, bn hy chn ly mt cch
b tr giao din no m bn cho l ph hp v tin li cho bn nht. Ring ti, ti
chn ch Essentials.
phng to hay thu nh khung sng tc, ta ch cn s dng phm tt l Ctrl+=
phng to v Ctrl+- thu nh. Hoc bn c th chn ch hin th % bn
di thanh menu.
1.4.2. To mi d n cho desktop v mobile
to mi mt d n, bn kch chut vo File, chn New (phm tt l Ctrl+N).
Chn th General. Gia hai phin bn CS5 v CS5.5 ch c mt cht khc bit. Hy
quan st hp thoi sau y:

- 21 -

CHNG 1. GII THIU V FLASH

Hnh 12 To mi mt d n trong Flash CS5 v CS5.5

- 22 -

CHNG 1. GII THIU V FLASH

Nh bn thy, mo t ie m mi cu a phie n ba n CS5.5 so vi phin bn CS5 la h tr


d n template cho h iu hnh Android.
Khi ta o mi mo t d a n trong Flash, chng ta ca n quan tm n mt so kiu d n
sau y:
- ActionScript 3.0: to d n Flash h tr ActionScript 3.0. D n ny s dng cho
Flash Player v Flash Plugin vi nn tng ch yu l Desktop. Bn cng lu
rng, trong gio trnh ny, chng ta ang tho lun v ActionScript 3.0. Phin bn
ny l phin bn mi nht ca ActionScript cho n thi im ny.
- ActionScript 2.0: tng t nh d a n ActionScript 3.0, tuy nhin phin bn
ActionScript c h tr l 2.0.
- Adobe Air 2/AIR: to d n Flash cho Desktop hoc cc thit b khc c h tr
Adobe Air. Trong trng hp ny, AIR c s dng l phin bn AIR 2.0 tr ln.
Adobe Air l mt d n mi ca Adobe nhm to ra mi trng cho cc nh pht
trin xy dng nhng ng dng da vo cng ngh Flash c th chy c lp trn
cc nn tng h iu hnh. N c nhiu im tng ng vi cng ngh Java ca
Sun hay .NET ca Microsoft. pht trin mt trnh ng dng trn Adobe Air,
bn hon ton c th s dng trnh son tho Adobe Flash hoc Adobe Flex
Builder (hay Adobe Flash Buider).
- AIR for Android: to d n Flash chy trn AIR phc v cho cc thit b s dng
h iu hnh Android ca Google. Trong gio trnh ny, ti s gii thiu cho cc
bn cch ci t AIR v cc ng dng chy trn AIR cho b gi lp Android SDK
do Google cung cp. Chi tit phn ny s c trnh by trong phn xut bn tp
tin Flash.
- AIR for iOS: to d n Flash chy trn AIR phc v cho cc thit b s dng h
iu hnh iOS ca Apple. iOS SDK ca Apple ch cung cp cho cc nh pht trin
s dng nn tng MacOS, do , nu bn l mt nh pht trin ng dng
Windows, bn ch c th la chn mt trong hai cch: ci t MacOS s dng
b SDK; hoc s dng mi trng gi lp Virtual PC ci t MacOS. Hin nhin,
bn hon ton c th vit cc ng dng cho iOS trong trng hp s dng Adobe
Flash CS5 tr ln, tuy nhin, m bo ng dng thc thi tt trn h iu hnh
ny, bn cn kim tra n trn mi trng gi lp hoc trn chnh thit b .
- Flash Lite 4, Adobe Device Central: to d n Flash cho Mobile chy trn Flash
Lite. Khi chn kiu d n ny, Adobe Flash CS5/CS5.5 s t ng gi n Adobe
Device Central. y l tin ch qun l cc thng tin v Flash Lite h tr trn cc
dng in thoi. Bn ch cn tm kim loi in thoi m bn cn to dng d n,
sau bm vo Create.

- 23 -

CHNG 1. GII THIU V FLASH

Hnh 13 Adobe Device Central

- Ngoi ra, nu bn mun to cc Action c lp, bn c th to ring chng bng


cch chn ActionScript File. Vic to cc ActionScript c lp v s dng chng
trong cc d n Flash s c tho lun k hn khi chng ta lm quen vi lp
trnh vi ActionScript chng 5.
Remarks: Bn cng cn lu n mt vi nh dng trong cc d n ca Flash.
Tp tin d n ca Flash s c phn m rng l .fla (thc cht y l mt tp tin
nn). Tp tin ActionScript File c nh dng l .as. Tp tin cui cng ca flash khi
xut bn l .swf (ngoi ra, Flash cn c cc nh dng khc h tr cho cc d n
khc nhau nh: *.exe trnh t chy trn windows, *.app trnh ci t trn Mac,
*.apk trnh ci t trn Android,).
1.4.3. Layer, Frame, Scene v Movie
Trong k thut to cc thc phim, k thut c s dng ph bin to chuyn
ng trong cc on phim l k thut 24 hnh/ giy. Trong k thut ny, cc hnh
nh c nhiu im tng ng s c ghp ni li mt cch lin tip. Cc i
tng cn to chuyn ng s c cht thay i trn mi khung hnh. Khi cc
khung hnh thay th cho nhau tc m mt ngi khng nhn ra s thay i

- 24 -

CHNG 1. GII THIU V FLASH

ny, chng ta s cm thy i tng chuyn ng. K thut to hot hnh trong
Flash cng hon ton tng t. Trc khi tm hiu k v cc cch thc to chuyn
ng trong Flash, chng ta cng nhau tm hiu qua cc khi nim: Lp Layer,
Khung hnh Frame, Cnh quay Scence, Thc phim Movie.
- Layer: l cc lp c dng trong vic sng tc. Mi mt khung hnh c th
cha nhiu layer khc nhau. Mi mt i tng thng c xy dng trn mi
layer. K thut layer c s dng rng ri trong ha my tnh, bao gm c
ha im nh: photoshop, corel photopaint hay ha vector nh: illustrator,
coreldraw.

Hnh 14 To mi Layer

Nhm biu tng xa v to layer


: biu tng th nht t tri sang l
to mi layer, biu tng th hai l to mi mt th mc cha layer v
biu tng cui cng l xa layer hoc th mc cha layer.

Nhm biu tng hiu chnh layer


: biu tng th nht t tri sang l
cho php n hay hin layer , biu tng th hai l kha khng cho php
chnh sa i tng trn layer v biu tng cui cng l cho php i tng
trn layer hin th ng vin v mu nn hay ch ng vin.
- Frame: l khung hnh dng trong k thut to chuyn ng. Vt th chuyn ng
c l nh vo k thut thay th cc khung hnh. Nh ti trnh by trn, mt
ngi ch c th lu c khng qu 24 hnh nh trong mt giy, nu tc
chuyn i cc khung hnh ln, mt chng ta khng th nhn thy c s thay
i ny m cm gic nh l hnh nh ang chuyn ng. Vi Flash, s khung hnh
khng nht thit phi ln nh trong k thut to video, n gim i mt cch ng
k nh vo cng ngh c s dng trong Flash. iu ny cng gip lm gim
kch thc ca tp tin Flash.
- Scene: c hiu nh l cc cnh quay trong Flash. Mt cnh quay l tp hp
ca cc khung hnh k tip nhau to ra chuyn ng. chn thm scene, ta
vo Insert, chn Insert Scene. Nh vo cc cnh quay ny, chng ta c th to cc

- 25 -

CHNG 1. GII THIU V FLASH

thc phim di, m khng phi qun l cc lp mt cch qu phc tp khi s


lng i tng trn cnh quay tr nn qu ln. Mt cnh quay trong Flash
cng ging mt cnh quay trong phim truyn hnh vy. Khi cn to mt thc
phim hon chnh, chng ta s ghp ni nhiu cnh quay li vi nhau. Bn cng
lu rng, cc cnh quay s c ghp t ng theo th t m bn sp xp. Do
, nu mun thay i th t cnh quay, bn ch vic thay i th t sp xp ca
n. lm xut hin ca s qun l cc cnh quay, bn vo Windows > Other
Panels > Scene (hoc phm tt Shift+F2).

Hnh 15 Ca s qun l cnh quay

Trong ca s ny, bn ch cn sp xp li th t trnh by ca cc Scence bng


thao tc ko th n gin. Th t cc cnh quay s din ra theo th t t trn
xung di. Khi xy dng cc cnh quay c lp, bn c th kim tra tng cnh
quay ny bng cch vo Control > Test Scene (hoc t hp phm Ctrl+Alt+Enter).
- Movie: l mt thc phim hon chnh. Mt movie c th cha mt hoc nhiu
cnh quay. chuyn i qua li gia cc cnh quay trong mt movie, ta bm vo
biu tng
v chn tn ca scene. kim tra mt b phim hon chnh, bn
chn Control > Test Movie (hoc t hp Ctrl+Enter). Bn cng lu rng, nu bn
xy dng mt thc phim cha nhiu i tng ha v c nhiu cnh quay,
th vic kim tra s hot ng ca tng cnh quay l iu cn thit. Bn ch nn
kim tra s hot ng ca ton b phim khi cc cnh quay hot ng tt. S d
nh vy l v, qu trnh bin dch mt b phim hon chnh bao gi cng chm
hn, chim nhiu ti nguyn b nh hn so vi bin dch tng cnh quay ring l.
iu ny c bit hu ch vi nhng my c cu hnh khng qu cao.
Remarks: Bn cng cn lu rng, Flash cng h tr ch kim tra trc tip
trong khung sng tc. thc hin chc nng ny, bn c th chn mt trong hai
ch : ch kim tra bng tay, ch kim tra t ng. i vi ch kim tra
bng tay, bn s dng thanh nh du Frame hin ti, sau ko trt n trn
thanh TimeLine. Vi ch kim tra t ng, bn ch cn nhn phm Enter. Nu
phim ca bn nm trn TimeLine qu di v bn ang thc hin chc nng kim

- 26 -

CHNG 1. GII THIU V FLASH

tra t ng, bn mun dng ch ny ngay lp tc ! Khi , bn hy nhn phm


Enter thm ln na. Ch kim tra t ng s dng ngay lp tc.
1.4.4. Vng thanh cng c Tools
Vng thanh cng c cha cc cng c to hnh, hiu chnh v to cc hiu ng
cho cc i tng. Bn c th thu gn thanh cng c bng cch bm vo biu
tng thu nh bn phi trn cng, th hai t phi sang (). Hoc tt n i, bng
cch bm vo biu tng cn li ().

Hnh 16 Thanh cng c

Bn c th di chuyn n, ko th n vo mt v tr no trong giao din ca


Flash. Bn c th lm xut hin hoc n n i bng cch vo menu Window, chn
Tools.
1.4.5. Vng thuc tnh Properties

Mi mt i tng u c cc thuc tnh ring nh mu vin, loi vin, mu nn


e qua n ly ca c thuo c tnh na y, Flash bo tr chu ng trong mo t ca so Properties.

Hnh 17 Vng thuc tnh Properties

- 27 -

CHNG 1. GII THIU V FLASH

hin th cc thuc tnh ca mt i tng, bn ch vic nhp chn i tng.


Khi , trong bng thuc tnh Properties ny s hin th cc thng s lin quan
n cc thuc tnh ca i tng. thay i cc thng s thuc tnh ca i
tng , bn ch vic thay i cc thng s trong bng thuc tnh Properties ny.
Ca c biu tng nh gc trn bn phi cho php thu nh () hoc ng li vng
thuc tnh Properties (). Tng t, chng ta cng c th lm xut hin hoc
ng vng thuc tnh ny li bng cch vo Windows, chn Properties.
Thuc tnh ca vng son tho Stage:
Publish: gm Player (cho php phim trnh chiu c th hot ng tt trn phin
bn Flash Player no), Script (phin bn ActionScript m on phim ang s
dng), Class (bn ch vic nhp tn Lp th hin vo, lp tc Flash s khi to cho
bn mt c php khai bo ca lp ni ti mc nh l lp tha k t MovieClip),
Profile (qun l cc thng tin lin quan n vic xut bn d n Flash), AIR
Settings (cc cu hnh thit lp cho d n Flash chy trn Adobe Air).
Properties: cha FPS (tc chi o bng s frame trn mi giy Frames Per
Second), Size (kch thc ca khung trnh chiu o bng pixel), Stage (qun l
mu nn ca khung son tho).
1.4.6. Vng son tho ActionScript

Trong khung son tho ActionScript, phn son tho nm trung tm ca ca s


ny. Vng pha bn tri cha cc lp th vin v cy ph h (mo ta s ke tha cu a
ca c lp). Pha trn khung son tho l h thng cc cng c h tr son tho
ActionScript.
(1) B sung thm cc thnh phn vo ActionScript.
(2) Tm kim v thay th.
(3) Chn target path. Chc nng ny thng s dng khi lm vic vi lp.
(4) Kim tra li c php.
(5) nh dng cho m ngun theo ch t ng ca ActionScript.
(6) Xem cc ch dn v m ngun.
(7) To cc im thot khi debug chng trnh.
(8) ng m cc khi m lnh chng trnh.
(9) H tr khi vit script.

- 28 -

CHNG 1. GII THIU V FLASH

Hnh 18 Khung son tho ActionScript

1.4.7. Cc vng chc nng khc

Ta c th lm hin th thm cc vng chc nng khc trong Flash bng cch vo
Windows v chn ca s tng ng.
Vng Align (Ctrl+K): dng can chnh l tri, phi, trn v di cho cc i
tng. Can chnh kch thc cho i tng.
Trong vng align ny chia lm bn nhm:
-

Nhm Align: canh chnh v tr ca cc i tng. Theo th t cc biu tng t


tri sang phi l canh tri, canh gia theo chiu ngang, canh phi, canh trn,
canh gia theo chiu dc v canh di. Nu nh du kim vo ty chn Align
to Stage th n s canh chnh theo khung son tho, ngc li, n s can chnh
theo v tr tng i ca cc i tng.
Nhm Distribute: canh chnh theo trc tng i ca cc i tng. Theo th
t cc biu tng t tri sang phi l: canh chnh theo trc pha mp trn,
theo trc i xng ngang, theo trc pha mp di, theo trc pha mp
tri, theo trc i xng dc v theo trc pha mp phi.

- 29 -

CHNG 1. GII THIU V FLASH

Nhm Match Size: hiu chnh cng kch thc ca i tng theo chiu ngang,
chiu dc, hoc theo c chiu ngang v chiu dc. Nu chn ty chn Align to
Stage, n s canh chnh kch thc i tng theo khung son tho.
Nhm Space: hiu chnh khong cch gia cc i tng theo chiu dc v
ngang.

Hnh 19 Vng canh chnh v tr v kch thc Align

Vng Transform (Ctrl+T): hiu chnh gc cnh cho i tng. Vic hiu chnh
gc cnh ny bao gm:

Hnh 20 Vng Transform

Nhm u tin: ko gin chiu di v chiu rng (tnh theo t l %), nu bn


nhp chn ty chn cui cng trong nhm ny (biu tng mc xch b phn
i), th ko gin ca i tng theo chiu ngang v chiu dc s din ra
ng thi, ngc li vic hie u chnh kch thc theo chiu di v chiu rng l
c lp.

- 30 -

CHNG 1. GII THIU V FLASH

Nhm th hai: Rotate (hiu chnh gc quay), Skew (hiu chnh gc dch chuyn
xing hay ko trt theo hai pha).
Nhm th 3: lin quan n ta 3D v im trng tm 3D. Chc nng ny ch
hot ng i vi biu tng MovieClip. Chng ti s trnh by k hn v biu
tng ny trong chng 3.

Vng History (Ctrl+F10): qun l lch s cc thao tc ca bn khi sng tc.

Hnh 21 Vng History

Bn ch vic chn thi im c ch nh trong vng History ny phc hi cc


thao tc c nh du ti thi im . Theo ma c inh, Flash se a n inh 100 la n
undo (phu c ho i la i thao ta c trc o ) cho ta i lie u (hoa c cho o i tng). Ne u ba n
muo n ta ng so la n Undo th ha y thc hie n thao ta c sau: va o Edit > Preferences;
cho n General va sau o thay o i tho ng so Undo (hoa c Document Level Undo hoa c
Object Level Undo). Ba n cu ng ca n lu y ra ng, ne u so la n Undo ca ng ln, th ta i
nguye n bo nh c s du ng e lu cu ng se ln va co the la m gia m hie u na ng
la m vie c.
Vng Color: qun l mu sc. Bn c th hiu chnh trc tip mu sc cho i
tng (chn i tng, sau bm vo bng mu) hoc c th kt hp vi cng
c mu m ta s tm hiu trong chng tip theo.
Trong bng mu chun ny, ta c th chn mu mu RGB thng dng hoa c mu
mu HSL bng cch bm chut vo biu tng qu cu pha trn bn phi; hoc
chn khng mu bng cch bm vo biu tng hnh vung gch cho. Bn cng
c th chn ch Transparent bng cch iu chnh thng s Alpha. Bng mu
chun cn cung cp cho chng ta mt s mu mu Gradient c sn. Nu nhu cu
s dng mu trong bng mu chun khng p ng , bn c th s dng bng
mu nng cao (t hp phm Alt+Shift+F9).

- 31 -

CHNG 1. GII THIU V FLASH

Hnh 22 Bng mu chun

Trong bng mu nng cao ny, nu bn mun hiu chnh mu cho vin th bm
chn stroke, nu mun hiu chnh cho mu nn th chn fill. Trong hp thoi th
xung, c cc ch mu sau y:
+ None: cho n che o khng mu.
+ Solid Color: chn mu n (hay mu c). Bn c th chn mu mu theo ch
RGB hoc HSL. C th hiu chnh thuc tnh Alpha ca n. Ni chung, ch
Solid hon ton ging vi bng mu chun trn.
+ Linear Gradient: pha trn mu theo dng cu vng vi cc cu vng phn b
theo ng thng.

Hnh 23 Ch mu Solid Color

Hnh 24 Ch mu Linear Gradient

- 32 -

CHNG 1. GII THIU V FLASH

Khc vi solid, ch Linear Gradient cho ta cc hiu chnh mu sc hp dn hn


vi dng thc cu vng. Bn c th hiu chnh thuc tnh Flow l mt di mu
bin thin theo thang mu bn di (Extend color) hoc ch mu phn x
(Reflect) hoc ch mu lp (Repeat). Nu bn mun thay i mu trong thang
Gradient, bn ch vic bm chn nt nh du mi mu trong thang mu bn
di, sau chn li mu mi (hoc kch i chut vo nt ny, ri chn li mu
mi). Nu bn mun b sung thm mt mu trong thang mu Gradient, bn ch
vic bm chn vo mt v tr bt k trn thang mu bn di. Ngc li, nu bn
mun loi b mt mu ra khi thang mu Gradient, bn ch vic ko th n ra
khi thang mu ny. Bn thy y, vic s dng mu Gradient rt n gin.
+ Radial Gradient: hon ton tng t Linear Gradient, ch c duy nht mt s
khc bit l Radial Gradient to mu cu vng theo dng xoy trn khc vi
Linear Gradient theo dng ng thng.
+ Fill Bitmap: vi chc nng ny, bn c th mu cho i tng bng cc bc
nh. y l mt cch to hiu ng mu kh th v, rt hu dng trong nhiu tnh
hung.
Vng Common Library (Buttons, Classes v Sounds): qun l cc dng button
(Simple Button), cc lp th vin v m thanh.

Vng Component (Ctrl+F7): qun l cc thnh phn GUI (Graphics User


Interface Giao die n ngi du ng) trong Flash. Bn c th s dng cc i tng
ny to mt giao din web, mt trnh ng
dng...
Vng Library (Ctrl+L): qun l cc i tng
c import v convert. Chng ta s i vo chi
tit v vng ny trong cc chng sau.

Vng Motion Presets: vng cung cp cc ch


to hot hnh c sn ca Flash. Bn ch vic chn
i tng, sau chn hiu ng v nhp Apply.
Lp tc bn s c mt hiu ng hot hnh nh
mong i.

Vng Code Snippets: tng t nh Motion


Presets, y l vng to ActionScript c sn ca
Flash. Ta ch vic chn i tng, sau nhp vo
chc nng tng ng, lp tc mt on m

ActionScript s c pht sinh tng ng vi

- 33 -

Hnh 25 Vng Motion Presets

CHNG 1. GII THIU V FLASH

i tng c chn theo chc nng m bn chn. Chc nng ny cng rt


hu ch cho nhng ngi dng ph thng, mun to cc ActionScript iu
khin i tng nhng li ngi tm hiu v ngn ng lp trnh ny bi nhiu l do
khch quan ln ch quan. Tuy nhin, bn cng cn lu rng, chc nng ny ch
cung cp mt vi tnh nng ch khng phi l tt c, bi vy, nu bn mun to
mt thc phim chuyn nghip, bn cn c s hiu bit tng i y v ngn
ng lp trnh ActionScript mnh m ny c tch hp trong Flash.

Hnh 26 Vng Code Snippets

Chng ta s tm hiu v vng chc nng ny sau khi tm hiu v ngn ng lp


trnh ActionScript. Trong vng chc nng Code Snippets c cc nhm hiu ng
Action sau y:

Actions: to sn cc hiu ng lin quan n cc hnh ng ca i tng.


Timeline Navigation: iu khin qu trnh chi phim. N cng tng t nh
thanh PlayBack khi iu khin mt thc phim. Trong gio trnh ny, chng ta
s tho lun vic to mt thanh PlayBack bng ActionScript m khng cn s
dng chc nng Code Snippets. Sau khi tm hiu v cch to thanh PlayBack
ma khng cn dng n chc nng Code Snippets, ti ngh bn hy s dng
chc nng ny to la i thanh PlayBack. Chi tit chng ta s tm hiu trong
chng 6.
Animation: to cc hiu ng ng cho cc i tng MovieClip.
Audio and Video: cc chc nng ca thanh PlayBack iu khin video v
audio khi cc i tng ny c s dng trong Flash.

- 34 -

CHNG 1. GII THIU V FLASH

Load and Unload: to mt mn hnh Splash khi phim c ti. Ti v hy ti


cc bc nh, on phim, trong phim Flash c to.
Event Handlers: qun l vic thc thi cc Event. Event l cc s kin tng
ng vi mt hnh ng no ca i tng. N c th l hnh ng
ON_ENTER, ON_LOAD cu a stage; hnh ng MOUSE_UP, MOUSE_DOWN
tng ng vi s kin ca chut; ha nh o ng KEY_UP, KEY_DOWN tng ng
vi s kie n ca bn phm... Cc Event s c qun l bi cc lp tng ng.
Cc lp ny cung cp cc chc nng lng nghe cc die n bie n s kie n din ra
trn mi i tng. Khi c mt Event no xy ra, tng ng vi cc hm
c triu gi, n s thc thi cc chc nng tng ng.
Ca c nho m chc na ng la m vie c vi ca c do ng ie n thoa i ca m ng tho ng minh, va
nho m chc na ng la m vie c vi AIR (phie n ba n CS5.5).

Chi tit v cc nhm chc nng ny, ta s tm hiu thm trong chng
ActionScript.

Vng String: cho php bn ty chn ngn ng cho thc phim ca mnh. Nu
bn mun phim ca bn hin th ng ngn ng trn cc my tnh khc nhau, bn
hy hiu chnh trong vng String ny.

Thay i phm tt trong Adobe Flash: vo Insert > KeyBoard Shortcuts.

Hnh 27 Hp thoi qun l phm tt

Nu mun thay i phm tt tng ng vi mt chc nng no , bn hy chn


chc nng tng ng trn vng Commands (da u +), sau mc ShortCuts, bn
b sung t hp phm tt. Nu mun loi b mt phm tt no , bn ch vic bm

- 35 -

CHNG 1. GII THIU V FLASH

vo du tng ng vi chc nng . Khi , phm tt s b loi b. Nu mun


thay i phm tt, bn s dng nt lnh Change.
Remarks: bn khng nn thay i qu nhiu cc phm tt. Nu bn s dng cc
phm tt theo mc nh, s c mt vi li th khi bn s dng Flash trn nhiu my
tnh khc nhau. Bi v, khng phi my tnh no bn cng c quyn thay i cc
thit lp ny. c bit i vi cc my b gii hn quyn truy cp hoc nhng my
tnh khng cho php bn lu li nhng thit lp phm tt.
To cc mu mu t nh vo d n Adobe Kuler: Adobe Kuler l mt d n
trc tuyn h tr qun l cc mu mu t. Ta c th to, s dng v chia s cho
cng ng tham gia vo d n Kuler ny. Mt yu cu quan trng khi mun s
dng Adobe Kuler l my tnh phi c kt ni internet. m ca s Kuler, ta vo
Windows, chn Extensions, v chn tip Kuler.
Ca s Project (Windows>Project): hon ton tng t nh chc nng New
Project v Open Project trong menu File. Tuy nhin, khi s dng ca s ny, ta c
th xem cu trc, cc tp tin trong d n ca Flash.

- 36 -

CHNG 1. GII THIU V FLASH

Tng kt chng 1
Trong chng ny, chng ta lm quen vi mt s khi nim c bn v ha,
ci khi nim lie n quan e n Flash. Chng ta cng tm hiu v mt s vng chc
nng ca Flash. Cc vng chc nng ny c b tr trong menu Windows.
Chng ti hi vng, sau khi kt thc chng ny, bn khng cn ng ngng trc
giao din ca Flash. Bn s ty bin giao din cho ph hp vi chnh bn.
Mt iu gip bn tr nn chuyn nghip hn l bn nn nh cc phm tt khi
thao tc. Nu cc phm tt c b tr khng thun tin, bn c th thay i n
nh vo Keyboard Shortcuts.

- 37 -

CHNG 1. GII THIU V FLASH

Blank Page

- 38 -

CHNG 2. CC CNG C V C BN

CHNG 2. CC CNG C V C BN
2.1. Cc cng c Pencil, Brush v Erase
Cng c Pencil

Hnh 28 Cng c Pencil

i vi cng c Pencil, bn c th dng v cc i tng bng tay. Cc thuc


tnh tng ng vi cng c Pencil m bn c th hiu chnh l:
- Stroke color: mu sc ca nt v.
- Stroke: kch thc ca nt v.
- Style: dng thc ca nt v - ng lin nt, t nt
- Scale: ko dn ca hnh c v. N c th l None, Normal, Horizontal hoc
Vertical tng ng vi khng ko gin, ko gin bnh thng, ko gin theo
chiu ngang v theo chiu dc.
- Hinting: gip bo v nt v ng cong khi b m.
- Cap: thit lp dng thc cho ng kt thc.
- Join: xc nh cch m hai phn on ca i tng ni vi nhau.
- Mitter: iu khin sc nt ca Mitter, khi Cap c chn l Mitter.
Cng c Brush

CHNG 2. CC CNG C V C BN

Cng tng t cng c Pencil, Brush cng c dng v. Ch c mt khc bit


l nt v ca Brush khng bao gm vin ch c mu nn, cn Pencil th ngc li
ch c mu vin khng c mu nn. Cc thuc tnh ca Brush bao gm:
- Fill color: chn mu cho nt v brush.
- Smoothing: mm do cho nt v.

Hnh 29 Cng c Brush

Cng c Spray Brush


Khi bn bm vo biu tng tam gic nh trn biu tng Brush, th s xut
hin biu tng ca Spray Brush.
y l cng c phun mu tuyt vi ca Flash. Bn c th nh ngha mu mu
phun, cc ch phun mu: gc nghing, rng, cao, ch xoay cc biu
tng theo gc ngu nhin,
t nh ngha mt mu mu t, bn phi to mt biu tng hoc l Graphic,
Button hoc MovieClip. Chng ta s tho lun chi tit v chng trong chng 3.
y, minh ha cho mt mu t mu, chng ta s s dng biu tng MovieClip
m khng tho lun thm v n.
to mt kiu phun mu nh trong hnh minh ha, hy lm theo cc bc sau:
Bc 1: nh ngha mt mu mu. Bn hy v mt hnh i din. V d trong
trng hp ca ti, ti s dng hnh ngi sao 10 cnh c chiu di ca cc cnh
xen k nhau tc l cnh di, cnh ngn lin tip nhau.

- 40 -

CHNG 2. CC CNG C V C BN

Bc 2: Hiu chnh kch thc ca n sao cho ph hp. Kch chut phi vo n,
chn Convert to Symbol > MovieClips v nhp Ok.
Bc 3: Bm chn cng c Spray Brush. Trong bng Properties, chn mc
Symbol, chn nt Edit, v chn biu tng m ta va to. Sau , bn hy hiu
chnh cc thuc tnh trn bng Properties ny nh: ko rng ca biu tng
khi phun (scale width), ko theo chie u cao ca biu tng khi phun (scale
height), rng ca ng phun (width), cao ca ng phun (height), gc
phun (Brush angle). Cc ch to mu ngu nhin: ko gin ca biu tng
(random scaling), gc xoay ca biu tng (rotate symbol), gc phun (random
rotation).

Hnh 30 Cng c Spray Brush

Cng c Erase
Cng c dng ty xa cc nt v.

2.2. Cng c v hnh c bn

Cng c Line
L cng c v ng thng. Khi bm vo biu tng cng c ny trn thanh
cng c, trong bng thuc tnh Properties s hin ra cc thng tin lin quan.

- 41 -

CHNG 2. CC CNG C V C BN

Hnh 31 Cng c Line

Cng nh cng c Pencil, i vi cng c Line, thuc tnh Fill khng tn ti. Ch c
cc thuc tnh sau:
- Stroke color: chn mu cho ng thng.
- Stroke: kch thc ca nt v.
- Style: dng thc ca nt v.
- Scale: ko dn ca hnh c v. N c th l None, Normal, Horizontal hoc
Vertical tng ng vi khng ko gin, ko gin bnh thng, ko gin theo
chiu ngang v theo chiu dc.
- Hinting: gip bo v nt v ng cong khi b m.
- Cap: thit lp dng thc cho ng kt thc.
- Join: xc nh cch m hai phn on ca i tng ni vi nhau.
- Mitter: iu khin sc nt ca Mitter, khi Cap c chn l Mitter.
Cng c Rectangle
L cng c s dng v hnh ch nht v cc dng bin th ca n. Dng bin
th ny c th l hnh ch nht c gc trn. Hnh vung hay hnh bnh hnh cng
l cc trng hp ring khi s dng cng c ny. Khi mun v hnh c t l chiu
ro ng v chiu cao bng nhau (hnh vung chng hn), ta nhn phm Shift.
Khi bm vo biu tng cng c Rectangle, trong bng thuc tnh Properties ca
n, ta ch n cc thuc tnh sau y:
- Stroke color: chn mu vin cho nt v.
- Fill color: chn mu nn cho nt v.
- Stroke: kch thc ca nt v.

- 42 -

CHNG 2. CC CNG C V C BN

- Style: dng thc ca nt v.


- Scale: ko dn ca hnh c v. N c th l None, Normal, Horizontal hoc
Vertical tng ng vi khng ko gin, ko gin bnh thng, ko gin theo
chiu ngang v theo chiu dc.

Hnh 32 Cng c Rectangle

- Hinting: gip bo v nt v ng cong khi b m.


- Cap: thit lp dng thc cho ng kt thc.
- Join: xc nh cch m hai phn on ca i tng ni vi nhau.
- Mitter: iu khin sc nt ca Mitter, khi Cap c chn l Mitter.
- Rectangle Option: cho php hiu chnh gc trn cho hnh ch nht. Nu bn chn
Lock Corner Radius Controls to one Control cho php chnh gc trn ca hnh
ch nht theo dng 4 gc ng thi hay ring l - tc l khi bn hiu chnh
cong ca mt gc, cc gc khc cng s sao chp s liu ca gc hiu chnh ny.
Cc s liu 4 gc pha trn tng ng vi cong ca cc gc. Bn c th nhp
s liu vo cc c cung cp sn, hoc s dng thanh trt pha bn di
hiu chnh cong cc gc cho hnh ch nht go c tro n ny.
- Reset: a v cc s liu ty chnh mc nh cho cc gc trn.
Cng c Oval
V cc hnh Oval. Khi bm chn vo biu tng tam gic nh pha di biu
tng Rectangle, s xut hin biu tng Oval ny.

- 43 -

CHNG 2. CC CNG C V C BN

Hnh 33 Cng c Oval

Khi s dng cng c Oval, ta ch n im sau y: nu mun t l chiu ro ng v


chiu cao lun cn bng nhau (v d khi v hnh trn) th ta gi phm Shift v v,
ngc li, ne u kho ng nha n Shift th t l s khng cn bng (v d khi v hnh
Eclipse).
Trong bng thuc tnh Properties, ta c cc ty chn sau y:
- Stroke color: chn mu cho nt v.
- Fill color: chn mu nn cho hnh th.
- Stroke: chn kch thc ca nt v.
- Scale: ko dn ca hnh c v. N c th l None, Normal, Horizontal hoc
Vertical.
- Hinting: gip bo v nt v ng cong khi b m.
- Cap: thit lp dng thc cho ng kt thc.
- Join: xc nh cch m hai phn on ca i tng ni vi nhau.
- Mitter: iu khin sc nt ca Mitter, khi Cap c chn l Mitter.
- Oval Option: gc m Start Angle v gc ng End Angle gip to hnh Oval nh
vo s gii hn ca hai gc ny. Gc m Start Angle quay theo chiu kim ng h,
ly v tr gc l v tr gc 900, s o ca gc chnh l s o gc ca phn b khuyt.
Gc ng End Angle quay theo chiu ngc kim ng h, s o gc phn b
khuyt l gc b 2 ca gc ny (tc 360-gc ng).
V d, khi thit lp gc m Start Angle l 600, ta thu c hnh nh sau

- 44 -

CHNG 2. CC CNG C V C BN

Hnh 34 Hnh to bi gc m

Trong hnh ny, gc khuyt c s o l 600. Gc khuyt s c ly t v tr 900 v


quay theo chiu kim ng h. Nu ta thit lp gc ng End Angle l 600, ta s thu
c hnh nh sau

Hnh 35 Hnh to bi gc ng

Trong hnh ny, gc khuyt c s o l 3600-600=3000, hay phn hnh th chim


600. Gc khuyt s c ly t v tr 900 v quay theo chiu ngc kim ng h.
Tng t nh trn, ta c th kt hp hnh th c s o gc ng 600 v gc m
1200. Ta s thu c hnh th bn di. Phn hnh th c v ra l s kt hp
ca c hai hnh to bi gc ng v gc m nh trn
Gc m
Gc ng

Hnh 36 Hnh to bi gc ng v gc m

- Inner Radius: ln bn knh ca ng trn bn trong. y l cch thc to


hnh vnh khn. Hnh vnh khn l hnh c to bi hai ng trn ng tm,
nhng phn chng kht nhau s b loi b.

- 45 -

CHNG 2. CC CNG C V C BN

- Close Path: c tc dng i vi hnh th to bi gc ng v gc m. N s t


ng lm cho cc ng kt ni tr nn lin mch.
Hnh bn tri khng kch hot Close Path. Hnh bn phi kch hot Close Path.
Nh ta thy, vi ty chn Close Path, hnh th s c khp knh v thuc tnh
Fill Color mi c tc dng.

Hnh 37 Hnh to bi gc m 600 v kt hp vi ty chn Close Path.

Cng c Rectangle Primitive


Khi bm vo biu tng hnh tam gic nh trn cng c Rectangle, ta s thy
xut hin cng c Rectangle Primitive. Tng t cng c Rectangle, nhng vi
cng c ny, ta c th hiu chnh gc trn ca n sau khi n c to ra. y l
mt u im ca cng c ny.

Hnh 38 Cng c Rectangle Primitive

- 46 -

CHNG 2. CC CNG C V C BN

Nu mun thay i gc trn, ta ch cn dch chuyn cc nt nhn nh vo cng c


Selection sang tri hoc phi (i vi nt nhn nm ngang) hoc ln xung (i
vi nt nhn nm dc). Chi tit v cng c Selection ta s tho lun trong cc
phn tip theo. Cng c Selection ny c biu tng hnh con tr chut, mu en,
nm pha trn cng ca thanh cng c. Cc ty chnh thuc tnh trong bng thuc
tnh Properties hon ton tng t vi cng c Rectangle.
Bn cng cn lu rng, cng c Rectangle Primitive da trn c s ca
Rectangle. iu ny bn c th nhn thy c khi pht ha hnh bng cng c
ny: c mt hnh ch nht gc cnh bao quanh hnh th ca chng ta.

Cng c Oval Primitive


Hon ton tng t cng c Oval. Bn c th hiu chnh cc thuc tnh gc m,
gc ng, bn knh ca hnh vnh khn. V cng tng t cng c Rectangle
Primitive, ta c th hiu chnh cc thuc tnh ca hnh v nh vo cc nt nhn
nhn. Nt nhn trung tm dng iu chnh kch thc bn knh vnh khn. Nt
nhn bin ngoi dng iu chnh gc ng, gc m.
Vic hiu chnh cc gc ng, gc m, bn knh vnh khn cng nh vo cng c
Selection m chng ta s lm quen trong mc tip theo.

Hnh 39 Cng c Oval Primitive

- 47 -

CHNG 2. CC CNG C V C BN

Bn cng cn lu , cng ging cng c Oval, to dng cc hnh th sao cho


chiu ro ng v chiu cao (nh hnh trn) bng nhau nh vo Oval Primitive, ta
cng nhn v gi Shift khi v hnh.
Vi cng c ny, ta c th to ra cc hnh dng phc tp m khng cn hiu chnh
cc thng s ban u nh cng c cng loi Oval. Ch cn hiu chnh cc nt iu
khin trn cc khi hnh c s l ta nhn c nhng hnh bin th c o.
Hnh c s ca n cng l hnh ch nht (hnh Oval c bin ngoi ni tip hnh
ch nht ny).
Cng c PolyStar
Dng v a gic v hnh sao. Khi bm chn cng c ny, ta ch cc ty chn
trong bng thuc tnh Propeties.
- Fill color: chn mu nn cho vt th.
- Stroke color: chn mu vin cho nt v.

Hnh 40 Cng c PolyStar

- Stroke: chn kch thc cho nt v.


- Style: chn dng thc cho nt v.
- Cap: thit lp dng thc cho ng kt thc.
- Join: xc nh cch m hai phn on ca i tng ni vi nhau.
- Hinting: gip bo v nt v ng cong khi b m.
- Mitter: iu khin sc nt ca Mitter, khi Cap c chn l Mitter.
- Tool Setting: thit lp cc ty chn nng cao. Khi bm vo nt Option, s hin ra
hp thoi sau

- 48 -

CHNG 2. CC CNG C V C BN

Hnh 41 Thit lp PolyStar

Trong ,
+ Style: la chn hnh dng ca a gic l a gic li hay hnh sao.
+ Number of Sides: s lng cc cnh a gic (hay s lng cnh hnh sao).
+ Star point size (SPS): t l gia khong cch t tm ca hnh sao n nh lm
ca hnh sao v khong cnh t tm ca hnh sao n nh li ca hnh sao. T l
ny nm trong di t 0...1. Nu t l ny cng ln (cng gn 1) th hnh sao cng
mp, ngc li, nu t l ny cng nh th hnh sao cng gy.

Hnh 42 Hnh sao mp (t l SPS = 0.9) v hnh sao gy (t l SPS = 0.1)

2.3. Cng c Text

L cng c dng son tho ni dung vn bn trong Flash.


- Text Tool: c ba loi Static Text (vn bn c nh nh ni dung ca label
trong lp trnh hng i tng), Dynamic Text (vn bn c th chn, copy
nhng khng th thay i nh ni dung ca TextBox khi hiu chnh thuc tnh
Readonly=True), Input Text (ni dung vn bn c th thay i nh ni dung ca
TextBox khi thuc tnh Readonly=False).
- Character: Family (chn loi phng ch), Style (chn dng thc cho phng ch in m, in nghing), Size (chn kch thc cho phng ch), Letter Spacing (chn

- 49 -

CHNG 2. CC CNG C V C BN

rng cho k t trng gia cc ch ci), Color (chn mu cho phng ch), Auto
Kern (t ng co gin), Anti-Alias (lm cho nt ch tr nn mt m hn).

Hnh 43 Cng c Text


- Show Border around Text: hin th ng vin xung quanh vn bn.
- SubScript v SuperScript: to ch vit di (kiu x2) v vit trn (kiu x2).
- Format: can chnh v tr vn bn (tri, phi, gia, hai pha).
- Spacing v Margin: Spacing hiu chnh khong cch ca cc t trong vn bn
hoc cc dng vn bn. Margin hiu chnh khong cch bn tri hoc bn phi ca
ni dung vn bn so vi vin bn ngoi.
- Behavior: Single Line (ch cho php vn bn hin th trn mt dng tc khng
chp nhp k t xung dng hay ni cch khc, phm Enter s khng c hiu lc
khi son vn bn dng ny), MultiLine (cho php vn bn hin th trn nhiu
dng, nu ni dung vn bn di hn khung son tho, n s t ng xung dng
m khng cn phi nhn phm Enter), MultiLine no Wrap (cho php vn bn hin
th trn nhiu dng, nu ni dung vn bn di hn khung son tho, n khng t
ng xung dng), Password (ni dung vn bn s b n di mt k t c
chn lm mt n nh ca c cha m en hie n thi trong ca c nhp password).
- Orientation: thay i chiu hin th ca vn bn.
Ngoi ra, khi ni dung vn bn c son tho, ngoi nhng thuc tnh nu
trn, vn bn cn c thm mt s thuc tnh sau y:
- Options: cc ty chn nh to lin kt trong trang html. Link ng dn n
mt lin kt no . Target cch thc m lin kt, bao gm _blank, _parent, _self
v _top.

- 50 -

CHNG 2. CC CNG C V C BN

- Filter: to cc hiu ng nng cao nh to bng, hiu ng bng m, hiu ng


cu vng s dng cc hiu ng ny, bn ch bm vo biu tng u tin
trong vng cng c c t vng, t bn tri sang. Nu bn thay i mt hiu ng
no , v mun lu li thit lp ny, bn nhp vo biu tng th ba t tri
sang. Nu bn mun quay li thit lp mc nh, hy nhp biu tng th hai t
tri sang. Biu tng con mt cho php bn tm n hiu ng c chn. Biu
tng mi tn quay li, cho php bn quay li thit lp cc thng s trc .
Biu tng thng rc cui cng, cho php bn xa b mt hiu ng c chn.

Hnh 44 Thit lp vn bn nng cao

2.4. Cng c chn Selection v Lasso


Cng c Selection

Hnh 45 Cng c Selection


Vi cng c ny, bn c th chn i tng, mt phn i tng bng cch kch
i chut vo n hoc bi en mt phn ca n. Bn c th ko gin, un cc bin

- 51 -

CHNG 2. CC CNG C V C BN

ca hnh th (khi con tr chut t cc bin ca hnh v n c dng nh biu


tng Selection b sung thm ng cong mu en).

Cng c Lasso
Tng t cng c Selection, cng c Lasso cng cho php chn. im khc bit l
cng c Selection dng chn ton b mt hay nhiu i tng (bng cch gi
phm Shift) hoc mt phn i tng theo khung chn l hnh ch nht. Cn cng
c Lasso c th chn theo hnh dng phc tp. Chng ta chn Lasso v v ra
khung chn. N khng nhanh bng Selection nhng t ra hiu qu trong nhiu
trng hp, nu cc i tng c chn nm phn tn hoa c buc phi chn mt
phn i tng. Cng tng t Selection, ta c th gi phm Shift chn theo
nhiu vng khc nhau. Cng c Lasso khng th dng tinh chnh i tng.
Khi bm vo biu tng ny, s xut hin thm cc cng c con bao gm Magic
Wand, Magic Wand Setting v Polygon Mode.

Hnh 46 Cng c Lasso


Magic Wand la co ng cu cho n nhanh. Khi s du ng co ng cu na y ta ca n hie u chnh
mo t so tho ng so trong mu c Magic Wand Setting: threshold so pixel cho phe p sai
so khi cho n, smoothing ca ch thc la m mt ne t cho n (bao go m: pixel, rough,
normal va smoothing).
Polygon Mode la co ng cu cho phe p cho n theo ca c ng ga p khu c phc ta p. a y
la co ng cu du ng e cho n trong nhng tnh huo ng o i ho i o chnh xa c cao. Khi s
du ng co ng cu na y, o i ho i ngi s du ng pha i ra t t m e x ly .
Ba n cu ng ca n lu y ra ng, ca c co ng cu cho n na y ch co ta c du ng o i vi ca c o i
tng c ve ba ng Flash (hay nhng o i tng o ho a vector no i chung). No
kho ng co ta c du ng o i vi ca c o i tng o ho a ie m. Muo n a p du ng ca c co ng cu

- 52 -

CHNG 2. CC CNG C V C BN

na y cho ca c o i tng o ho a ie m, ba n ca n chuye n o i t o ho a ie m sang o


ho a vector. Tuy nhie n, hie n nay cha co mo t thua t toa n na o hu hie u e chuye n
o i mo i a nh ie m sang a nh vector mo t ca ch hoa n ha o. Flash cu ng ho tr chc
na ng chuye n o i na y nhng ch hie u qua o i vi nhng a nh co nhng a c trng
de chuye n o i (nh co nhie u vu ng ma u o ng nha t). e s du ng chc na ng na y, ta
cho n o i tng o ho a ie m, sau o cho n Modify > Bitmap > Trace Bitmap.

2.5. Cc cng c mu Paint Bucket, Ink Bottle v bt mu


EyeDropper
Cng c Paint Bucket
y l cng c dng mu nn cho vt th. Khi kch vo biu tng ny trn
thanh cng c, trn bng thuc tnh Properties s hin ra cc thng s lin quan:

Hnh 47 Cng c Paint Bucket


- Fill color: mu nn cho i tng. mu bn trong i tng, bn cn
lu rng khung vin bao quanh n cn phi kn. Nu c mt khong h trn
ng vin ny, th cng c khng hot ng (khc vi cc trnh bin tp khc,
thng th trong trng hp ny, cng c s mu ln c nhng phn lin k
n). cng chnh l u im ca cng c ny trong Flash ca Adobe. Vi cng c
ny, bn c th to ra nhng hiu ng mu phc tp. N h tr cc ch mu
RGB, HSL, ch mu Alpha, ch khng mu, mu dng kiu cu vng. Bng
mu ca Paint Bucket khng cho php bn hiu chnh di mu cu vng vi cc
mu ty chn, lm iu ny bn cn kt hp vi bng mu y
(Windows>Color). Trong hp thoi mu ny, cho php bn c th s dng cc

- 53 -

CHNG 2. CC CNG C V C BN

kiu pattern, bitmap v di mu cu vng ty chn mu nn cho i tng.


Nhng bn cng lu rng, n cn kt hp vi cng c Paint Bucket ny.

Cng c Ink Bottle


y l cng c dng mu vin. Khi bm chn vo biu tng tam gic en
nh trn biu tng Paint Bucket, s xut hin biu tng cng c Ink Bottle.

Hnh 48 Cng c Ink Bottle

Khi bm vo biu tng ny, trn vng thuc tnh Properties s xut hin cc
thuc tnh lin quan:
- Stroke color: chn mu vin.
- Stroke: chn kch thc cho vin.
- Style: chn dng thc cho vin.
- Cap: thit lp dng thc cho ng kt thc.
- Join: xc nh cch m hai phn on ca i tng ni vi nhau.
- Mitter: iu khin sc nt ca Mitter, khi Cap c chn l Mitter.

Cng c EyeDropper
y l cng c dng ly thng s mu ti mt v tr trn i tng. Ta ch vic
chn biu tng, sau kch vo mt v tr no trn bc nh (v tr m ta cn
ly thng s mu), khi , thng s mu nn mc nh s l mu ca v tr m bn
va kch chuo t vo.

2.6. Cng c Free Transform v Gradient Transform


Cng c Free Transform

- 54 -

CHNG 2. CC CNG C V C BN

Hnh 49 Cng c Free Transform

y l cng c tinh chnh gc cnh, xoay i tng. e s du ng co ng cu na y, ta


bm chn biu tng co ng cu tre n thanh co ng cu , sau chn i tng ca n hie u
chnh. Ta c th thay i s dch chuyn tng i ca cc phn i tng ne u ta
t tr chut theo cch cnh ca i tng v dch chuyn n. Nu mun phng
to, thu nh i tng, ta ch t tr chut vo cc nt ca i tng, v ko ra
ngoi nu mun tng kch thc, v ko vo trong nu mun lm gim kch
thc. Nu mun xoay i tng, ta nhn vo nt cc gc ca i tng, v
xoay i tng.
Khi lm vic vi cc i tng bng cng c ny bn cn lu n chc nng
xoay i tng.

Hnh 50 Thay i tm xoay ca i tng

- 55 -

CHNG 2. CC CNG C V C BN

Mc nh, khi ta to mt i tng th i tng tn ti mt tm xoay (khi


xoay i tng, i tng s quay quanh tm xoay ny). Bn c th hiu chnh v
tr ca tm xoay ny bng cch bm chn n v di chuyn.
Trn hnh v trn, bn c th thy s thay i v tr ca tm xoay trn i tng.
i tng bn tri, tm xoay nm chnh gia ca ng thng, cn hnh
bn phi, tm xoay c dch chuyn xung gc pha di. Bn c th xoay i
tng nhn ra s khc bit: ng thng bn tri xoay theo kiu chong chng
(tm quay chnh gia ca cnh chong chng), cn ng thng bn phi th
xoay theo kiu kim ng h (tm quay mt u ca kim quay).
Bt k mt i tng no i xng tm, th theo mc nh, tm i xng ca i
tng chnh l tm xoay ca n.
Tm xoay ca i tng khng nht thit phi nm trn i tng. N c th nm
bt k, ty thuc vo mc ch s dng ca bn.
Xoay mt i tng l mt hiu ng to kh n gin trong Flash. Bn s c
tm hiu k hn khi hc v cch to chuyn ng bng k thut Tween v
ActionScript.
Cng c Gradient Transform
Nh vo cng c ny, ta c th hiu chnh cc thng s khi mu cu vng cho
i tng. Sau khi to mu cu vng cho i tng, ta bm chn vo biu tng
tam gic en trn cng c Free Transform, va lu c na y s xut hin cng c
Gradient Transform, bn ch vic bm chn n.

Hnh 51 Cng c Gradient Transform


Sau , bm chuo t vo vng mu cu vng. Trn vng mu ny, s hin ra mt
dng thc mu nh hnh bn trn. Bn ch vic hiu chnh hnh bao cu a khung

- 56 -

CHNG 2. CC CNG C V C BN

mu ny nh: ko to (tng kch thc vng sng), thu nh (gim kch thc vng
sng), hiu chnh v tr ca tam gic (thay i tm ca vng sng), bm vo nt
trn v dch chuyn n (thay i v tr vng mu).

2.7. Cc cng c lm vic vi ng Bezier

Nh ti gii thiu trn, Flash l mt chun ha vector. Mi i tng


trong Flash u da trn c s ca ng Bezier. Cc ng Bezier c to
dng da trn phng php ni suy Spline. Mt ng Bezier c c trng
bi im v ng iu khin ca im . im y c th l im un, im
gc cnh, im i xng ta s gi chung l im iu khin (v tng ng vi
ng iu khin). Nu bn tng lm quen vi Microsoft Word, chc hn bn
cng bit n ng Bezier ny. lm vic vi cc i tng ny, Flash cung
cp cho ta mt tp hp cc cng c lm vic vi ng Bezier: cng c
SubSelection, Pen, Add Anchor Point, Delete Anchor Point v Convert Anchor
Point. Cng c SubSelection nm ring, cc cng c cn li c b tr chung vo
mt v tr trn thanh cng c. Sau y, chng ta s ln lt tm hiu v cc cng c
ny.
Cng c SubSelection

Hnh 52 Cng c SubSelection


Nhp chn biu tng SubSelection, sau bm vo i tng. Khi , ng
vin ca i tng s hin ra cc ng Bezier cu thnh nn vt th. Cc im
c nh du bng chm trn c gi l cc im iu khin ng Bezier.
Vi cng c ny, ta c th hiu chnh v tr ca cc im ny. im iu khin
trong ng Bezier cng chia lm hai nhm: nhm im gc cnh v nhm im

- 57 -

CHNG 2. CC CNG C V C BN

un cong. Bn c th nhn thy chng hnh vung, ch nht to nn t cc im


gc cnh; ng trn, eclipse c to t cc im un cong.

Cng c Pen
Cng c ny dng v cc ng a gic bng cch to cc im iu khin, sau
, t ng ni cc im ny li vi nhau.
Cc thng s lin quan n cng c ny hon ton tng t vi cng c Line.
Khi s dng cng c Pen, bn cng lu rng, nu bn to hnh th c dng
ng thng, bn ch vic nhp vo nt u v nt cui. Nu bn mun to dng
ng cong, ba n cn r chut lin tip hiu chnh ng iu khin ca n.

Hnh 53 Cng c Pen

Cng c Add Anchor Point


v Delete Anchor Point
Cng c Add Anchor Point dng b sung thm im iu khin cho ng
Bezier, ngc li, Delete Anchor Point xa bt i cc im iu khin cho ng
Bezier.
b sung thm im iu khin, ta ch vic chn cng c Add Anchor Point, sau
bm vo mt v tr trn ng bin.
xa i im iu khin, ta ch vic chn cng c Delete Anchor Point, sau
bm vo mt im iu khin cn xa b.
Vic b sung v xa b cc im iu khin rt hu ch trong vic to cc ng
un. Vi cc ng un c th, ta cn b sung vo mt s lng im iu khin
ti u cho vic hiu chnh. Ta c th ly v d: i vi ng Parabol, ta ch cn
ba im iu khin; vi ng th hm s a thc bc ba ta cn bn im iu
khin.

- 58 -

CHNG 2. CC CNG C V C BN

Cc im iu khin l cc im nm trn ng bin. Nhng im khng nm


trn ng bin l cc im thuc ng iu khin.

Hnh 54 Hnh cc im iu khin

Cng c Convert Anchor Point


Dng chuyn i im iu khin gc cnh thnh im iu khin un cong.
Ngoi ra n cn c chc nng hiu chnh gc un nh vo cc ng iu khin.
Chc nng ny tng i ging vi chc nng hiu chnh gc cnh ca cng c
SubSelection. Nhng im khc bit ch, cng c Convert Anchor Point hiu
chnh cc ng iu khin mt cch c lp (ti mt im iu khin c hai
ng iu khin bn tri v bn phi. Cng c ny hiu chnh cc ng iu
khin bn tri v bn phi mt cch ring bit.), trong khi cng c
SubSelection hiu chnh ng thi hai ng iu khin ny (im un i
xng).
chuyn i im iu khin gc cnh thnh im un cong, ta ch vic chn
cng c v nhp vo im cn chuyn i. hiu chnh gc xoay cho cc ng
iu khin, ta ch vic xoay cc ng iu khin.

Hnh 55 Cng c Convert Anchor Point

2.8. Lm vic vi cc i tng

Khi thao tc vi cc i tng, ta thng s dng cc chc nng sau y:

- 59 -

CHNG 2. CC CNG C V C BN

- Nhm vin v nn ca i tng thnh mt nhm: c hai cch nhm s dng


chc nng Group v chc nng Union. Chn i tng nn v vie n (nhp i
chut vo i tng), sau vo Modify, chn Group (Ctrl+G) hoc Combine
Object > Union. nhm nhiu i tng thnh mt nhm, ta s dng chc nng
Group: chn cc i tng cn nhm, nhn t hp phm Ctrl+G.
- V hiu ha vic chnh sa mt i tng: chn i tng cn kha, vo Modify,
chn Arrange > Lock (Ctrl+Alt+L).
- Kch hot vic chnh sa mt i tng tr li: Modify > Arrange > Unlock All
(Ctrl+Shift+Alt+L).
- Sp xp th t i tng: chn i tng, vo Modify > Arrange. Sau , ta c
th hiu chnh th t sp xp nh i vi ca c o i tng o ho a trong Microsoft
Word.
- Canh chnh v tr v kch thc ca i tng: vo Modify > Align (Ctrl+K).

Hnh 56 Vng Align

Cc chc nng trong nhm vng ny, chng ta tm hiu trn.


- Lm vic vi Shape: vo Modify > Shape. Sau ta chn chc nng cn hiu
chnh.
- Lm vic vi Bitmap: Bitmap l mt i tng ha im. Flash cng h tr
ha im. lm vic vi Bitmap, ta vo Modify > Bitmap. Tng ng vi
Bitmap, s c hai chc nng l Swap Bitmap (thay i hnh Bitmap) hay Trace
Bitmap (chuyn i Bitmap thnh dng vector). Vic chuyn i mt Bitmap
thnh mt dng ha vector l rt phc tp. a s nh vector thu c vn
khng gi gn nguyn trng nh i vi i tng nh Bitmap ban u.
- Xy dng cc i tng trn cc Layer khc nhau: vic s dng layer l mt k
thut hu ch trong ha my tnh. Trong Flash, k thua t Layer na y cu ng ra t
quan tro ng. Nh va o Layer, ma ta co the ta o ra ca c chuye n o ng rie ng bie t cho
tng o i tng tre n khung sa ng ta c. Khi ke t hp Layer vi Timeline, ca c o i
tng se co ca c khung die n hoa t cu a rie ng mnh. S hoa t o ng cu a mo i o i tng,
ch die n ra trong layer cu a no va kho ng ga y a nh hng ti ca c o i tng tre n ca c
layer kha c.

- 60 -

CHNG 2. CC CNG C V C BN

Hnh 57 Distribute to Layers

Ta co the la y mo t v du nh sau: bn hy tng tng, trn mt ca nh quay cu a


ba n, c mt ch cu n, mt ch mo v mt khung cnh pha sau. Khi xy dng
hot cnh, chu cu n hnh ng theo thao tc ring ca n, mo hnh ng theo
thao tc ring ca mo, khung cnh c th ng yn hoc c nhng hiu ng
ring. R rng, mi i tng c mt cch thc thc hin hnh ng ring. Nu ta
xy dng tt c chng trn cng mt layer, th vic xy dng hnh ng khc
nhau l iu khng th. Do , trong trng hp ny, ta cn s dng layer. xy
dng tng layer cho tng i tng, bn ch vic chn ton b i tng cn xy
dng layer, sau kch chut phi v chn Distribute to Layers. Khi , cc i
tng khc nhau s nm trn cc layer khc nhau.

- 61 -

CHNG 2. CC CNG C V C BN

Tng kt chng 2
Trong chng ny, chng ta lm quen vi cc cng c v hnh c bn trong
Flash. Vi cc cng c thie t ke na y, chng ti hi vng bn s s dng n mt cch
thun thc. Khi s dng cc cng c thie t ke , bn cng cn quan tm n cc thao
tc ng hnh vi n: ta o hnh ca n o i ba ng ca ch gi phm shift, ke o hnh va nha n
phm Ctrl e sao che p, gi phm shift e cho n nhie u o i tng....
Vic s dng thnh tho cc cng c trong Flash s gip bn to cc i tng
ha p mt, phc v cho mc ch to hot hnh v sau. Mt iu hin nhin l
s cng c ny c th khng phi chuyn dng cho vic thit k ha. Nu bn
mun mt trnh thie t ke ha vector chuyn dng, bn c th s dng Adobe
Illustrator c nh km trong b sn phm Adobe Design. Tuy nhin, vi cc
cng c h tr trong Flash, bn hon ton c th to dng nhng i tng
ha nh cao phu c vu cho co ng vie c thie t ke hoa t hnh, game....

- 62 -

CHNG 2. CC CNG C V C BN

Blank Page

- 63 -

CHNG 3. CC BIU TNG TRONG FLASH

CHNG 3. CC BIU TNG TRONG FLASH


Biu tng l mt i tng c to trong Flash v c th ti s dng. Mt biu
tng c th c s dng trong mt movie hoc import vo th vin v s dng
trong mt movie khc. C ba loi biu tng l: Graphics, Buttons v MovieClips.
Biu tng l i tng c to v lu vo trong th vin. Nu mt bn sao ca
biu tng c s dng trong movie th n c gi l mt s th hin ca
biu tng (instance). Mi s th hin ca mt biu tng c mt thuc tnh
ring (mu sc, kch thc, chc nng) khc vi biu tng to ra n. Mi s
th hin ca i tng c th c to nh vo chc nng ko th biu tng t
th vin vo khung thie t ke . Khi mt biu tng c chnh sa th mi s th
hin ca n cng c cp nhp theo.
Vic s dng biu tng l phng php hiu qu gim kch thc ca movie.
Nhng biu tng khng c s dng trong movie, d nm trong th vin th
n cng khng c tnh vo kch thc ca movie .

3.1. Biu tng Graphic

Biu tng Graphic l mt hnh nh tnh c th c ti s dng to ra chuyn


ng. Bt k mt nh im, vector hay vn bn u c th chuyn i thnh
Graphic. Chng ch c mt Frame trn thanh TimeLine (ie u o co ngha la ne u ta
a t no tre n mo t frame duy nha t th no luo n duy tr mo t tra ng tha i na o o ma
kho ng bao gi ta o ra c nhng hie u ng o ng). Bie u tng graphic cu ng kho ng
ho tr Actionscript.
to mt Graphic, bn thao tc nh sau:
- Chn i tng cn chuyn i sang biu tng Graphic.
- Nhn phm F8 (hoc kch chut phi, chn Convert to Symbol). Trong hp thoi
Convert to Symbol, c cc ty chn sau

Hnh 58 Chuyn i sang biu tng Graphic

+ Name: tn ca biu tng s c to.


+Type: loi biu tng cn to. y, chng ta chn l Graphic.

CHNG 3. CC BIU TNG TRONG FLASH

Tip n, bn nhp Ok. Mt biu tng Graphic s c to v a vo th vin.


Cc thuc tnh ca biu tng Graphic

Hnh 59 Bng thuc tnh ca biu tng Graphic

- Thanh ty chn th xung: cho php chuyn i qua li gia cc loi biu tng.
- Instance of: khi kch chut vo ty chn swap, bn c th thay i biu tng
ca i tng th hin c chn.
- Position and Size: cho php hiu chnh v tr theo ta ca i tng th hin
(x v y), v kch thc (w width v h height). Ty chn Lock width and height
values together cho php thay i kch thc chiu rng v cao ng thi hay
ring le .
- Color effect: vi ty chn Style, bn c th hiu chnh cc thuc tnh Brightness,
Tint, Advanced v Alpha cho i tng.
- Looping: ty chn lin quan n s ln lp li hnh ng ca biu tng
Graphic. N c th l Loop, Play Once v Single Frame.
To hiu ng ng n gin bng biu tng Graphic
Trong v du na y, ta se ta o hie u ng o ng ba ng ca ch s du ng bie u tng Graphic.
Trong v du na y, to i co e ca p e n ba kha i nie m: TimeLine, frame va keyframe.
Chu ng ta ch minh ho a cho v du s du ng bie u tng Graphic ma kho ng tha o lua n
the m ve chu ng. Chi tie t ta se tha o lua n trong chng tie p theo.
(1) Ba n ha y s du ng co ng cu Rectangle e ta o mo t hnh ch nha t ma u xanh blue
va sau o chuye n o i no sang bie u tng graphic.

- 65 -

CHNG 3. CC BIU TNG TRONG FLASH

(2) Nha p o i chuo t va o bie u tng graphic na y e m thanh Timeline cu a no .


Trong thanh Timeline na y, ta cho n frame th 2 va nha n phm F6 e ta o mi mo t
keyframe. Tre n keyframe na y, ta thay o i ma u sa c cho hnh ch nha t tha nh ma u
o .
(3) Quay tr la i vi khung sa ng ta c, ta i frame th 2 nha n phm F5.
Khi kie m tra movie, ba n ca n cho n o i tng graphic va hie u chnh ca c tho ng so
trong mu c Looping la n lt: loop, play one, single frame e quan sa t ke t qua . Khi
cho n hie u ng loop, th s bie n o i t ma u xanh blue sang ma u o va ngc la i se
die n ra mo t ca ch lie n tu c (la p lie n tu c); khi cho n hie u ng play one th s bie n o i
o ch die n ra mo t la n duy nha t; khi cho n single frame th kho ng co s bie n o i
na o die n ra (bi no ch s du ng mo t frame n duy nha t).
Hai tu y cho n loop va play one thng s du ng khi muo n ta o ra ca c hnh a nh o ng
nh o i vi ca c a nh o ng gif. Ngha la s du ng chc na ng thay the tng khung
hnh n gia n. Co n o i vi single frame, no thng c s du ng khi ta muo n to i
u khung thie t ke . Ba n co the thie t ke nhie u hnh a nh tre n o i tng graphics
na y. Mo i hnh a nh c thie t ke tre n mo i keyframe rie ng bie t. Khi ca n s du ng
hnh a nh tre n frame na o, ta ch ca n cho n thuo c tnh looping tng ng vi tu y
cho n single frame va ch inh tu y cho n first tng ng vi keyframe ma hnh a nh
cu a o i tng ca n du ng ang thie t la p. Ca ch la m na y giu p ta qua n ly ca c o i tng
o ho a n gia n hn. Ba n ha y th tng tng, ba n co mo t khung ca nh. Khung
ca nh na y se thay the theo 4 mu a: xua n, ha , thu, o ng. Khi thie t ke ca nh, ta co the
ta o mo t bie u tng graphic co te n la landcape. Tre n landcape na y se co 4
keyframe tng ng vi s bie n o i ca nh sa c theo 4 mu a. Trong phim, ne u ta ca n
hie n thi theo ca nh sa c cu a mu a na o, th ta ch vie c thay o i tham so first t 1 4
(khi looping c cho n la single frame) ma kho ng pha i thay o i qua nhie u ca c lp
o i tng hay tu y chnh la i trn thanh Timeline.

3.2. Biu tng Button

Biu tng Button dng b sung mt tng tc vi movie, p tr cc s kin


kch chut, n phm, ko cc thanh ko v cc hnh ng khc. Mt biu tng
Button s c bn Frame tng tc: Up, Down, Over v Hit. Bie u tng Button co
the c ca i a t va ie u khie n ba ng ActionScript. ie u na y hoa n toa n kha c so vi
bie u tng Graphic tre n. Ba n cu ng ca n lu y ra ng, trong Flash co hai lp o i
tng Button: Simple Button va Button. Lp Simple Button la lp Button do
ngi du ng thie t ke va s du ng chc na ng Convert to Symbol. Lp Button co n la i
na m trong th vie n fl.Controls c s du ng trong vie c thie t ke giao die n GUI cho
ca c ng du ng. Chu ng la hai lp o i tng hoa n toa n kha c bie t. Ma c du chu ng co

- 66 -

CHNG 3. CC BIU TNG TRONG FLASH

nhie u ie m tng o ng. Trong mu c na y, ne u ta ch e ca p e n Simple Button ma


kho ng quan ta m e n o i tng fl.Controls.Button.
to mt Button, bn thao tc nh sau:
- Chn i tng cn chuyn i sang Button.
- Nhp phm F8 hoc kch chut phi, chn Convert to Symbol. Khi , s xut
hin hp thoi sau:

Hnh 60 Chuyn i sang biu tng Button

Trong mc Type, chn Button v nhp Ok.


To hiu ng cho Button
y, ta ch thao tc to hiu ng cho Button. Ta khng tho lun thm v
vic s dng TimeLine v cch to hiu ng ng. Chi tit v phn ny to i se trnh
ba y trong chng tip theo.
Mi biu tng Button c 4 Frame trn TimeLine. Tng ng vi Frame Up l
hiu ng khi tr chut c th ra (sau khi bm xung), Frame Down tng ng
vi hiu ng khi tr chut nhn xung, Frame Over tng ng vi hiu ng khi
tr chut di chuyn qua i tng v Frame Hit to mt vng tng tc o cho
Button (ngha l khi thao tc trn vng ny hon ton tng t vi thao tc trn
chnh Button ). Vng tng tc ny gi l o bi n khng hin th trn movie.
Sau y, ta s thao tc to hiu ng cho Button.
(1) Kch i chut vo Button va to.
(2) Nhp chn Frame Up, nhn phm F6 v thay i thuc tnh ma u sa c, to a o x
va y, ma u vie n, o ro ng, o cao cho Button ny. Hon ton tng t cho Frame
Down v Frame Over.
(3) Nu bn mun to vng tng tc o, bn hy s dng cng c v to mt
vng tng tc ny trong Frame Hit: chn Frame Hit, nhp F6 v v mt hnh th
trong Frame Hit ny.
(4) Quay tr li Scene, nhp Ctrl+Enter kim tra.
Vie c ta o Button va ie u khie n no trong Flash la he t sc n gia n. So vi lp
fl.Controls.Button, th Simple Button n gia n hn nhie u. Ta cu ng ca n lu y ra ng,
Simple Button kho ng ho tr thuo c tnh label (pha n va n ba n hie n thi tre n Button)

- 67 -

CHNG 3. CC BIU TNG TRONG FLASH

nhng ta hoa n toa n co the ta o c va n ba n cho Button ba ng co ng cu Text ke t


hp vi tng frame Up, Down, Over va Hit.
Cc thuc tnh ca biu tng Button
- Instance Name: tn hin th ca biu tng.
c dng khi lm vic vi ActionScript.
- Thanh ty chn th xung: cho php chuyn
i qua li gia cc loi biu tng.
- Instance of: chn swap thay i biu tng
cho i tng hin th.
- Position and Size: thay i v tr v kch thc
cho i tng.
- Color effect: chn hiu ng mu sc cho i
tng, bao gm:Brightness, Tint, Advanced v
Alpha.
- Display: vi thuc tnh Blending, cho php ta
chn cc ch pha trn mu sc cho Button.
- Tracking: vi Options, bn c th chn Track
as Button hoc Track as MenuItem.
- Filter: hon ton tng t vi Filter khi lm
vic vi cng c Text.

Hnh 61 Bng thuc tnh ca biu tng Button


To biu tng Button nhanh chng: bn c th s dng mt trong cc chc nng
sau y to mt biu tng Button ht sc nhanh chng:
+ S dng cc Button c to sn: vo Windows > Common Libraries > Button.
+ S dng Commands: bn hy to mt khi hnh th, nhp chn n. Sau vo
Commands > Make Button.

3.3. Biu tng MovieClip

L mt mu hot hnh ca Flash c th c ti s dng. Khc vi Graphic v


Button, MovieClip c ring mt TimeLine vi v s Frame co the du ng e ta o hoa t
hnh. Mt MovieClip c th bao gm mt hoc nhiu biu tng Graphic, Button
hoc thm ch l MovieClip. Cng tng t nh Button, bn c th ci t mt tn
hin th cho n iu khin n bng ActionScript.

- 68 -

CHNG 3. CC BIU TNG TRONG FLASH

To hiu ng cho Movieclip: chng ta s tm hiu v cch to hot hnh cho mt


MovieClip trong chng tip theo.
Cc thuc tnh ca biu tng MovieClip
- Instance Name: tn hin th ca biu
tng. c dng khi lm vic vi
ActionScript.
- Thanh ty chn th xung: cho php
chuyn i qua li gia cc loi biu tng.
- Instance of: chn swap thay i biu
tng cho i tng hin th.
- Position and Size: thay i v tr v kch
thc cho i tng.
- 3D Position and View: hiu chnh v tr
trong khng gian v khung nhn 3D.
- Perspective Angle: hiu chnh gc phi
cnh theo xa gn.
- Vanishing Point: hiu chnh ta ca
im trit tiu.
- Color effect: chn hiu ng mu sc cho
i tng, bao gm:Brightness, Tint,
Advanced v Alpha.

Hnh 62 Bng thuc tnh ca biu tng MovieClip

- Display: vi thuc tnh Blending, cho php ta chn cc ch pha trn mu sc


cho Button.
- Tracking: vi Options, bn c th chn Track as Button hoc Track as MenuItem.
a y la ca ch thc tng ta c vi Button. No co the ta o hie u ng theo ca ch cu a mo t
Button truye n tho ng hay theo ca ch cu a mo t MenuItem.
- Filter: hon ton tng t vi Filter khi lm vic vi cng c Text.

3.4. Lm vic vi Library

Library l th vin qun l cc i tng c import v convert. convert mt


i tng ta kch chut phi vo i tng v chn Convert to Symbol. Khi ,

- 69 -

CHNG 3. CC BIU TNG TRONG FLASH

biu tng ny s xut hin trong Library. Kch thc ca mt movie khng bao
gm ton b cc i tng trong Library, n ch bao gm cc i tng c s
dng trong movie.
import mt i tng t bn ngoi vo Libray, ta chn File > Import > Import
to Library. Sau , cc i tng c chn s c a vo trong Library.

Hnh 63 Khu vc qun l th vin Library

Cc i tng nm trong th vin c t chc v qun l theo cu trc cy th


mc. t chc v qun l theo cy th mc, ta cn to mi th mc theo cu trc
cy ca Windows Explorer. Cc i tng trong th vin c th c cha trong
cc th mc ca cy th mc ny. Th vin ca Flash cho php bn thc hin
thao tc ko th cc i tng t v tr ny trong cy th mc sang v tr khc.
pha trn ca cu trc cy th mc ny l khung Preview, cho php bn c th
xem qua cc i tng trong th vin chng trnh ca Flash.

- 70 -

CHNG 3. CC BIU TNG TRONG FLASH

Tng kt chng 3
Trong chng ny, chng ta lm quen vi ba loi biu tng trong Flash.
Chng c mt vi im tng ng v mt vi im khc bit. Mt im khc bit
nht gia chng l s Frame h tr cho mi biu tng l khc nhau: Graphic 1
Frame, Button 4 Frame v MovieClip nhiu Frame. Ch co bie u tng Button
va MovieClip mi co the c ca i a t e s du ng trong ActionScript. Bie u tng
Graphic c du ng e to i u vie c qua n ly ca c o i tng o ho a; bie u tng
Button du ng e ta o ra ca c nu t nha n tng ta c trong phim; bie u tng MovieClip
du ng e ta o hoa t hnh va ca c tng ta c na ng cao kha c. MovieClip la linh ho n cu a
Flash bi ta kho ng the ta o ra hoa t hnh ma kho ng s du ng e n no .
Hi vng sau khi hc xong chng ny, bn s hiu c cch s dng cc loi
biu tng cu a Flash. Cch chuyn i mt i tng ha sang cc biu tng.
Cch chuyn i cc i tng hie n thi cho mi biu tng.

- 71 -

CHNG 3. CC BIU TNG TRONG FLASH

Blank Page

- 72 -

CHNG 4. TO HOT CNH

CHNG 4. TO HOT CNH


4.1. Tm hiu v TimeLine
TimeLine l vng tng tc to ra chuyn ng trong movie ca Flash. to
ra chuyn ng, TimeLine thay th tng Frame mt theo thi gian.

Hnh 64 Vng TimeLine

Trong TimeLine, bn c th d dng thy c ba phn chnh: Phn qun l Layer


(bn tri), Phn qun l Frame (pha trn bn phi) v Phn qun l Cng c
(pha di bn phi).
- Layer: qun l cc lp i tng. Mi mt i tng trn Layer s c mt thanh
TimeLine ca ring mnh. Trong trng hp minh ha trn, th i tng trn
Layer 1 nm trn TimeLine pha di v i tng trn Layer 2 nm trn
TimeLine pha trn.
- Thanh TimeLine: cha nhiu Frame. Khi to ra chuyn ng, cc Frame s ln
lt thay th cho nhau. Frame sau s thay th cho Frame trc . Ta c th xem
qua hnh ng bng cch ko Frame hin ti (Frame nh du mu ) sang tri
hoc phi trn TimeLine.
- Cc chc nng hin th trn thanh Timeline: Trong bie u tng menu tha xuo ng
na m pha tre n be n pha i co ca c chc na ng sau: Tiny (sie u nho ), Small (nho ),
Normal (bnh thng), Medium (trung bnh), Large (ln), Preview (xem ro hnh),
Preview in Context (xem ro hnh theo ng ca nh).
- Vng thanh cng c - gm cc cng c sau y:
+ Center Frame: xc nh Frame trung tm.

CHNG 4. TO HOT CNH

+ Onion Skin: cho php hin th ton b hnh nh ca i tng trn vng Frame
c chn. S hin th ny bao gm ton b i tng.

Hnh 65 Onion Skin

+ Onion Skin Outlines: cho php hin th ton b hnh nh ca i tng trn vng
Frame c chn. S hin th ny ch bao gm vin ca i tng.

Hnh 66 Onion Skin Outlines

+ Edit Multiple Frames: cho php hin th i tng gc trn ton b i tng
hin th theo hai chc nng Onion Skin trn. Khi , ta c th chnh sa i
tng (Hnh 44).
+ Cc thng s khc: Current Frame v tr ca Frame hin ti (Frame c a nh
da u o ). Frame rate tc chuyn ng (tnh bng s Frame trn giy). Tho ng
so Frame rate ca ng ln, th phim se ca ng die n ra nhanh. Theo chua n cu a k thua t
24 hnh tre n gia y th to c o na y la 24fps. Hie n nhie n, ba n co the thay o i gia tri
na y. Tuy nhie n, ie u na y kho ng c khuye n khch v no la chua n quo c te .
Elapsed Time thi gian thc thi t vi tr a u tie n (frame 1) cho e n Frame hie n
ta i (current Frame) trn thanh TimeLine.

- 74 -

CHNG 4. TO HOT CNH

Hnh 67 Onion Skin v Onion Skin Outlines kt hp vi Edit Multiple Frames

Mt s chc nng khi lm vic vi TimeLine


Khi lm vic vi TimeLine, ta thng xuyn s dng n hai phm tt sau y:
+ Phm F5: chn Frame vo thanh TimeLine (tng ng vi Insert Frame). Nu
vng TimeLine trong thanh TimeLine c to Tween, th n s t ng gin
vng Tween ny (chn thm Frame vo trong vng Frame to Tween, cc
Frame mi to ny cng k tha Tween). Ne u cha ta o Tween, th no n thua n
sao che p toa n bo ca c o i tng tre n keyframe lie n ngay trc vi tr cu a frame
c che n. Khi thay o i ca c o i tng cu a ba t k mo t frame na o trong khoa ng na y
th ca c ca c o i tng tre n ca c frame kha c cu ng se c ca p nha t theo.
+ Phm F6: chn KeyFrame vo thanh TimeLine (tng ng vi Insert KeyFrame).
Frame cui cng khi chn l mt KeyFrame. Vi KeyFrame ny, ta c th to im
cht cho hnh ng trong mt movie. Khi kt hp vi Tween, n s to mt
chuyn ng mm mi cho movie ca Flash. ie m kha c bie t khi s du ng
Keyframe so vi frame tho ng thng la frame tho ng thng ch n thua n sao
che p ca c o i tng cu a keyframe trc o e ta o ra mo t da y ca c khung hnh
gio ng nhau. Trong khi o , keyframe se ta o ra ie m cho t. No cu ng sao che p toa n bo
ca c o i tng cu a keyframe trc o sang ca c frame lie n ngay trc keyframe
ta o ra ie m cho t. Nhng khi ta thay o i o i tng keyframe mi ta o ra na y, th
ca c ca c o i tng tre n ca c frame kha c kho ng thay o i.
Chng ta c th tham kho v d sau y, hiu r hn v hai phm tt ny.
Trong v d ny, chng ta s to mt hnh ch nht c nn trng v vin en
(Hnh 68). Ti Frame th 5, bn nhp vo Frame ny, nhn phm F5. Sau , bn
thay i ln ca vin (thuc tnh Stroke = 5) xem Hnh 69. Gi bn hy kim
tra ln ca vin trn mi Frame. Nh bn thy, vin ca tt c hnh ch nht
trn mi Frame u thay i thnh 5.

- 75 -

CHNG 4. TO HOT CNH

By gi, bn hy lm lm li v d trn bng cch thay phm F5 bng phm F6. Bn


s thy rng thuc tnh Stroke s khng thay i trn mi Frame, ch thay i duy
nht KeyFrame cui cng (KeyFrame m bn hiu chnh).

Hnh 68 Khi to mt hnh th trn KeyFrame u tin.

Hnh 69 Chn cc Frame bng phm F5

- 76 -

CHNG 4. TO HOT CNH

Hnh 70 Chn KeyFrame bng phm F6

Nh vy, bn c th thy rng, nu bn mun sao chp mt Frame cho cc Frame


tip theo, bn s dng phm F5. Ngc li, nu bn mun to mt s thay i,
bn cn s dng phm F6.
Sao chp v ct dn mt nhm Frame: thc hin chc nng ny, bn hy bi
en nhm Frame m bn mun sao chp hoc ct dn, sau bn kch chut phi
v chn Copy Frames hoc Cut Frames.

Hnh 71 Sao chp hoc Ct dn nhm Frame

- 77 -

CHNG 4. TO HOT CNH

thc hin chc nng dn, bn hy chn v tr cn dn nhm Frame copy


trn TimeLine. Sau , kch chut phi v chn Paste Frames.

Hnh 72 Da n mt nhm Frame c copy hoc cut

Clear Frames, Clear KeyFrame v Remove Frames: chc nng Clear Frames s lm
cho cc i tng trn Layer ca Frame c chn s b xa i. Hay ni cch
khc, Clear Frames s to ra hai KeyFrame v tr bt u v kt thc ca nhm
Frame c nh du. Tng ng vi v tr u tin, n s chn mt Blank
KeyFrame (l mt KeyFrame nhng khng cha i tng no trn n) v
KeyFrame tng ng vi v tr kt thc. Clear KeyFrame cng tng t nh Clear
Frame, nhng n p dng cho mt KeyFrame. Cn Remove Frames s xa sch
cc Frame ny ln i tng trn n.
Convert to KeyFrames v Convert to Blank KeyFrames: chuyn i mt Frame
thnh KeyFrame hoc Blank KeyFrame.
Insert Blank KeyFrame: chn mt Blank KeyFrame.
Reverse Frames: cho php lt ngc th t ca mt nhm Frame. thc hin
chc nng ny, bn bi n nhm Frame, kch chut phi v chn Reverse Frame.
Vi chc nng ny, bn c th to ra mt chuyn ng mang tnh i xng.
To chuyn ng nh vo k thut Frame by Frame
y l k thut to chuyn ng da trn c s ca k thut 24 hnh/giy. Cc
Frame s hie n th tun t trn Scene. S hin th tng Frame mt ny to ra
chuyn ng cho i tng.

- 78 -

CHNG 4. TO HOT CNH

Ta s minh ha k thut Frame by Frame. V d sau y s minh ho a ca ch to


hiu ng ng cho cc k t trong t Flash.
Bc 1. S dng cng c Text, to mt dng vn bn c ni dung l Flash.
Bc 2. Chn cng c Selection. Bm vo dng vn bn sau kch chut phi v
chn Break Apart.
Bc 3. Nhp chn Frame th hai trong TimeLine. Nhp phm F6. Sau bm
chn k t u tin k t F, v dch chuyn n ln trn so vi cc k t cn li hoc
thay i mu sc ca n.

Hnh 73 K thut Frame by Frame

Chn Frame th ba trong TimeLine. Nhp phm F6. Sau tip tc vi k t th hai
k t l. Qu trnh ny c tip din cho n k t cui cng l k t h.
Bc 4. Nhp Ctrl+Enter kim tra sn phm.
Vi k thut Frame by Frame, bn hon ton c th to ra hot cnh. Nhng mt
nhc im ca k thut ny l nu bn mun to mt hiu ng mm mi th bn
phi thao tc rt mt thi gian. Flash cung cp cho bn cc phng php sau y
to chuyn ng vi tn gi l Tween. C ba phng php Tween: Classic
Tween, Motion Tween v Shape Tween. V c bn, chng c nhiu im tng
ng va nhie u ie m kha c bie t a c trng. Chng ta s ln lt kho st ba loi
Tween ny.

- 79 -

CHNG 4. TO HOT CNH

4.2. Classic Tween


Classic Tween l mt k thut to chuyn ng c cung cp trong cc phin bn
t Flash CS3 tr v trc. Trong phin bn Flash CS5+, Adobe vn cn duy tr k
thut ny. V c bn, khi thao tc vi k thut Classic Tween ta cn phi s dng
n hai KeyFrame khi u v KeyFrame kt thc. K t n bn CS4, Adobe
a vo mt k thut mi gi l Motion Tween mt k thut m theo Adobe l s
dng n gin, khng cn to KeyFrame rc ri nh Classic Tween. Mc ch to
ra k thut Classic Tween l to ra chuyn ng cho i tng. Khi s dng
Classic Tween, i tng s c chuyn i thnh hai biu tng Graphic (mt
biu tng cho KeyFrame u tin v mt biu tng cho KeyFrame kt thc).
Bn khng th s dng cc hiu ng 3D cho Classic Tween cng nh khng th
s dng chc nng swap symbol cho i tng th hin. Nhng s d Adobe vn
lu li k thut ny trong phin bn CS5 d k thut Motion Tween c nhiu u
im hn l v k thut Classic Tween c nhng u im ring m Motion Tween
khng th thay th c. Mt trong nhng u im l k thut Classic Tween
cho php cha Frame ActionScript.
Cc bc s dng Classic Tween to hiu ng ng
V d sau y s trnh by cho bn phng php to qu bng ri nh vo k
thut Classic Tween.
Bc 1. Trn khung sng tc, bn hy s dng cng c Oval to mt hnh qu
bng v trang tr cho n theo hnh qu bng chuyn.
Bc 2. Kch chut vo Frame th 10, nhp phm F6 chn KeyFrame kt thc.
Ti Frame th 10 ny, bn hy thay i v tr ca qu bng (chm mt t). Sau khi
chm t, qu bng s ny ln. to iu ny, bn bm vo Frame th 20, nhp
phm F6 chn KeyFrame kt thc. Ti KeyFrame ny, bn hy thay i v tr ca
qu bng ln na (v tr qu bng ny n). Bn hy tip tc qu trnh ny cho n
khi bn cm thy ph hp (thi im m qu bng dng). Bn c th quan st qu
trnh ny trong hnh 74 bn di.
Bc 3. Bm chut vo khong cch gia KeyFrame m u v KeyFrame kt
thc, kch chut phi v chn Classic Tween. Bn hy lp li iu ny cho cc
khong KeyFrame cn li.
Bc 4. Nhn Ctrl+Enter kim tra kt qu.
y l mt v d c trng s dng Classic Tween dng to chuyn ng ca
i tng. Bn hon ton c th s dng n hiu chnh thuc tnh ca i
tng, d rng vic ny khng phi l chc nng chnh yu dnh cho n. Bn cng
cn lu rng, trong v d trn, mi ln bn nhn phm F6 l bn to mi
mt KeyFrame kt thc v KeyFrame k tip ca KeyFrame kt thc cng

- 80 -

CHNG 4. TO HOT CNH

ng chc nng l KeyFrame m u ca KeyFrame kt thc sau. Ngha l mi


ln bn nhp F6, bn to ra thm mt khong nh du KeyFrame to
Classic Tween.

Hnh 74 K thut Classic Tween

Trong hnh minh ha trn, Layer 1 cha qu bng, Layer 2 cha o i tng minh
ho a cho sa n nha (hnh ch nht mu xanh). Cc nt en trn TimeLine ca Layer
1 l cc KeyFrame. Cc khong gia cc nt ny l cc khong nh du
KeyFrame ca Classic Tween.

4.3. Shape Tween

K thut Shape Tween dng nh c nhng tnh nng ring bit. Mc d n cng
c th dng chuyn i mu sc, hnh dng ca vt th nh hai loi Tween cn
li. Nhng chc nng chnh ca n l bin hnh. to s bin hnh, cng tng
t Classic Tween, bn phi to hai KeyFrame m u v kt thc. Shape Tween
khng h tr hiu ng 3D, khng h tr chc nng swap symbol thay i biu
tng ngun cho mt i tng th hin. Khi to Shape Tween, i tng s
chuyn i thnh hai i tng Graphic. Hai biu tng ny tng ng vi hai
Keyframe u tin v Keyframe cui cng ca Shape Tween. V c ch ca Shape
Tween, n s dng thut ton Transform ngha l s dch chuyn cc im c

- 81 -

CHNG 4. TO HOT CNH

nh du theo mt ch s no Frame u tin n v tr c nh du cng


ch s trong Frame cui cng.
Cc bc s dng Shape Tween to hiu ng ng
Trong v d ny, chng ta s to hiu ng bin ng thng thnh ng cong.
Bn khng th to c hiu ng ny bng cc Tween cn li. y cng l mt v
d in hnh s dng Shape Tween.

Hnh 75 K thut Shape Tween

Bc 1. Dng cng c Line v mt ng thng trn khung sng tc.


Bc 2. Vi cng c Shape Tween, bn c th to Tween trc khi chn KeyFrame
hoc sau khi chn KeyFrame. Ta s minh ha bng vic to Tween trc. Bn hy
dng cng c Selection, bm chn i tng, kch chut phi v chn Create Shape
Tween.
Bc 2. Bm chn vo Frame 30 trn TimeLine, nhp phm F6 chn KeyFrame
kt thc. Bn bm chn cng c Add Anchor Point v bm vo v tr gia ng
thng b sung im iu khin. Tip n, bn chn cng c Convert Anchor Point
to im un. Bn hy bm chn im m bn va to v un ng thng ny
thnh ng cong nh trn.
Bc 3. Nhn t hp Ctrl+Enter kim tra sn phm.
Bn lu rng, trong hnh minh ha trn, ti s dng chc nng Onion Skin.
S dng Shape Hint iu khin s bin hnh

- 82 -

CHNG 4. TO HOT CNH

Khi s dng Shape Tween, n s t ng to ra s bin hnh theo mt thut ton


c nh sn. Nu bn mun iu khin s bin hnh ny, Flash cng cung cp
cho bn cng c l Shape Hint.
Shape Hint l mt im iu khin khi s dng Shape Tween. s dng chc
nng ny, bn cn to mt Shape Tween cho mt i tng, sau vo menu
Modify > Shape > Add Shape Hint (phm tt l Ctrl+Shift+H). Shape Hint s xut
hin theo cp: mt im Frame u tin trn TimeLine ca Tween v mt im
Frame cui cng. Cc Shape Hint ny c nh ch s l a, b, c. Bn hy quan
st hai hnh v sau y

Hnh 76 Cc cp Shape Hint Frame u (bn tri) v Frame cui (bn phi)

Khi s dng Shape Hint, cc im cng cp (cng ch s) s to ra s bin hnh


tng ng, nhng lun m bo im cng cp ca Frame th u tin s chuyn
thnh im cng cp ca Frame cui cng (im a hnh bn tri s bin thnh
im a hnh bn phi, tng t im b v c).
Bng cch b sung cc Shape Hint ny, bn c th iu khin chuyn ng ca i
tng.
g b mt Shape Hint, bn ch vic chn n, kch chut phi v chn Remove
Hint.

4.4. Motion Tween

Nh nu trn, k thut Motion Tween cng c dng to chuyn ng.


N cng tng t nh k thut Classic Tween, nhng n n gin hn k thut
Classic Tween nhiu. N khng i hi bn phi to cc KeyFrame. Mt u im
ca Motion Tween m trong phin bn Flash CS4 mi c b sung vo l h tr
hiu ng 3D. C hai hiu ng 3D l Translation v Rotation. Chi tit v hai chc
nng ny ta s tm hiu thm trong mc cui cng ca chng ny.

- 83 -

CHNG 4. TO HOT CNH

Hnh 77 K thut Motion Tween

Nu so snh vi k thut Frame by Frame v Classic Tween, th bn cng nn bit


rng, vi k thut Motion Tween, bn c th ti u kch thc ca file Flash khi
xut bn. Vi Motion Tween, bn cn c th hiu chnh ng dch chuyn, ta
, gc xoay, Filter, Blending Nh vo cng c Selection v thuc tnh trong
bng Motion Editor.
Cc bc s dng Motion Tween to hiu ng ng
Trong v d ny, ta to hiu ng chuyn ng theo hnh cnh cung cho i tng
c v. Trong hnh minh ha, ng mu xanh minh ha cho ng chuyn
ng ca i tng.
Bc 1. Dng cng c Brush v mt hnh nh bt k trn khung sng tc.
Bc 2. Bm vo cng c Selection, nhp chn i tng va v. Kch chut phi
chn Create Motion Tween. Flash s t ng to mt khong Frame mc nh
to chuyn ng. Nu s lng Frame ny khng tha mn nhu cu s dng, bn
c th thay i n bng cch t con tr chut vo v tr cui cng cng vng
Frame c nh du. Khi tr chut c dng
, bn hy nhp chut v ko sang
tri hoc sang phi.
Bc 2. Di chuyn hnh c v sang v tr mi. Khi , bn s thy trn khung
sng tc xut hin mt thanh m t chuyn ng ca i tng (thanh mu xanh
trong hnh minh ha). Bn c th s dng cng c Selection thay i dng thc
ca ng chuyn ng.

- 84 -

CHNG 4. TO HOT CNH

Bc 3. Nhn t hp Ctrl+Enter kim tra sn phm.


Hiu chnh chuyn ng v cc hiu ng nng cao vi Motion Editor
y l mt cng c mnh m c tch hp vi k thut Motion Tween. s
dng chc nng ny, u tin bn hy to mt Motion Tween. Sau , vo
Windows>Motion Editor. Khi , ca s Motion Editor xut hin.
Hp thoi Motion Editor ny c chia lm hai phn: phn bn tri v phn bn
phi. Phn bn tri cha cc chc nng v cc thng s lin quan, phn bn phi
l biu minh ha. Ta c th hiu chnh mt trong hai phn ny. Cc nhm chc
nng trong Motion Editor m bn cn quan tm l:
- Basic Motion: dch chuyn v tr ca vt trong khng gian ba chiu (theo ta x,
ta y v gc z).

Hnh 78 Bng thuc tnh Motion Editor

- Transformation: xoay chuyn (skew) theo chiu x, y hoc ko gin (scale) theo
chiu x, y.
- Color Effect: bm vo biu tng du cng b sung vo ca c hie u ng. C cc
hiu ng Alpha, Tint, Brightness v Advanced color. Nu mun loi b, ta ch vic
nhp vo du tr, v chn hiu ng cn xa.
- Filter: cng tng t nh Filter cho vn bn. Ta c th b sung bng cch bm
vo du cng, v loi b bng cch bm vo du tr.
- Eases: b sung thm cc hiu ng khc.
To chuyn ng nh vo Motion Presets

- 85 -

CHNG 4. TO HOT CNH

Flash CS5 cung cp sn cho ta cc hiu ng chuyn ng c sn trong vng chc


nng Motion Presets. s dng chc nng ny, ta vo Windows > Motion
Presets.
Vng chc nng Motion Presets ny cung cp cho chng ta rt nhiu hiu ng lm
sn. Khi s dng cc hiu ng trong vng chc nng ny, cc i tng ca bn
khng cn phi chuyn i sang biu tng. Bn c th thao tc trc tip trn cc
i tng. D nhin, bn cng c th p dng cc hiu ng ny cho cc biu tng
nh Graphic, Button hay MovieClip.
minh ha cho vng chc nng ny, ta s cng nhau xy dng mt vi hiu ng
hot hnh sau y:
Hiu ng qu bng chuyn ng: bn hy to mt khi cu dng 3D nh trn
hnh v. Sau , bn hy bm chn i tng, bm tip vo khung Motion Presets
v chn la hiu ng chuyn ng tng ng.

Hnh 79 Chc nng Motion Presets: chn hiu ng bounce-in-3D


trong v d ny, ti s dng loi chuyn ng bounce-in-3D. Sau khi chn la
hiu ng chuyn ng, bn nhp nt Apply. Ne u kt hp vi Onion Skin, chng ta
s thy dng chuyn ng ca n nh hnh minh ha be n di.
Khi s dng dng thc chuyn ng c to sn ca Motion Presets, bn s
nhn thy rng vic to chuyn ng trong trng hp ny cng s quy v vic
s dng Motion Tween. Bn s d dng kim tra c iu ny khi quan st
thanh Timeline. Trn Timeline bn s nhn thy c dng Tween c s dng
l Motion Tween (hay bn c th nhn thy ng chuyn ng ca i tng

- 86 -

CHNG 4. TO HOT CNH

y l du hiu ca Motion Tween). Nu bn quan st trong th vin Library, bn


cng s thy rng mt movieClip mi c to ra. iu ny c ngha Flash
CS5+ lm sn cho bn t A-Z.

Hnh 80 Chc nng Motion Presets: Motion Path


Hiu ng ch chy 3D: thng thng, khi kt thc mt b phim thi trung c,
cc thng tin v phim s c hin th theo dng thc ch chy t di ln v thu
nh dn. Chng ta s s dng chc nng Motion Presets to hiu ng ny.

Hnh 81 Chc nng Motion Presets: hiu ng text-scroll-3D

- 87 -

CHNG 4. TO HOT CNH

Bn hy nhp mt on ni dung vn bn, sau chn hiu ng text-scroll-3D


trong vng chc nng Motion Presets. Nhp Apply.
Cui cng, bn hy nhn t hp Ctrl+Enter kim tra.
Bi tp ngh: Hy s dng k thut Tween kt hp vi cc cng c to hiu
ng 3D to dng cc hiu ng nh trong Motion Presets cho hai hiu ng nu
trn:
a) Hiu ng qu bng di chuyn trong khng gian.
b) Ch chy 3D.

4.5. Cng c Bone v Bind

Cng c Bone
Vi cng c Bone, bn c th to ra cc chuyn ng da trn cc khp ni. Cc
chuyn ng ny c th ly v d nh cc khp xng tay chn, cc khp ni ca
cn cu, hnh rng un ln, rn trn, Cng c ny rt hu ch v n gin.
y l cng c mi c b sung vo trong Adobe Flash CS4. Khi s dng cng c
ny, ta cn phn bit cc trng hp sau:
- Trng hp 1: Nu i tng cn to khp ni l i tng lin tc (hnh rn
trn, rng ln), ta s s dng cng c ny mt cch trc tip. Trng hp
na y thng s du ng khi ta thao ta c trc tie p tre n ca c o i tng o ho a vector
c thie t ke ba ng ca c co ng cu cu a Flash hoa c import t ca c trnh x ly o ho a
vector nh Illustrator.
- Trng hp 2: Nu i tng cn to khng lin tc, cn c khp ni (nh
khp xng, khp ni cn cu), ta s s dng cng c ny sau khi convert cc
phn ca n thnh cc biu tng. Trng hp na y thng s du ng khi ta import
ca c o i tng o ho a ie m va s du ng Photoshop e ca t tha nh ca c pha n kha c
nhau.
Tip theo, ta s minh ha cho vic s dng cng c Bone trong hai trng hp
ny.
Cng c Bone trong trng hp 1

- Bc 1. Bn hy s dng cng c Pencil hoc Brush to hnh mt ch rn.


- Bc 2. Bm chn cng c Bone, sau v cc ng khp ni nh trong hnh
minh ha.
- Bc 3. Hy s dng cng c Selection kim tra cc mi ni. to hiu ng
ng, bn hy nhp chn vo mt Frame no (v d Frame 20), nhn phm F6.
C ch lm vic t ng ca cng c Bone s gip to ra chuyn ng nu bn hiu
chnh cong ca i tng ti Frame ny nh vo cc khp ni. Bn hon ton
khng cn s dng n k thut Tween.

- 88 -

CHNG 4. TO HOT CNH

- Bc 4. Nhp t hp Ctrl+Enter kim tra kt qu.


Bn thy chuyn ng ca ch rn nh th no? Rt mm mi phi khng? Vi
cng c ny kt hp vi ActionScript, bn hon ton c th to ra tr chi Rn
tm mi. D nhin ch l nh hng m thi, nu bn mun thc s tm hiu
v k thut lp trnh game trong Flash, bn hy tm cc gio trnh chuyn v ch
ny. Trong phm vi gio trnh ny, chng ti khng a ra nhng d n game
tm c, chng ta ch tp trung vo k thut to hot hnh, cch iu khin i
tng (y l mt trong nhng chc nng nn tng ca lp trnh game) v mt s
hiu ng thng c s dng trong k xo (c k xo truyn hnh ln k xo in
nh). To i cu ng a va o mo t so hng da n e ta o ne n ca c game nho vi mu c ch
giu p ba n inh hnh c ca ch thc la p trnh game tre n Flash. Ne u ba n hie u c
c che na y, ba n hoa n toa n co the ta o ra ca c game theo kich ba n cu a ba n.

Hnh 82 Cng c Bone trng hp 1


Cng c Bone trong trng hp 2

- Bc 1. Bn hy to ba khi hnh ch nht (tng trng cho cc phn ca cn


cu) v sau convert chng thnh cc i tng Graphic.
- Bc 2. Bm chn cng c Bone, sau v cc ng khp ni nh trong hnh
minh ha.
- Bc 3. Hy s dng cng c Selection kim tra cc mi ni. Chn Frame 20,
nhn phm F6, sau thay i hnh dng ca cn cu bng cch iu chnh cc mi
ni.
- Bc 4. Nhn t hp Ctrl+Enter kim tra.

- 89 -

CHNG 4. TO HOT CNH

Hnh 83 Cng c Bone trng hp 2


Nu bn gp kh khn trong vic iu khin cc b phn ca chic cn cu ny,
bn hy dnh cht thi gian tm hiu v cc thuc tnh ca cc on ni trong
cng c Bone ny ngay di y.
Bng thuc tnh ca cc on ni bi cng c Bone
Khi bn nhp chut vo mt on thng ni cc mi ni, trong bng thuc tnh
Properties s hin ra cc thng s trong hnh 84.

Hnh 84 Bng thuc tnh ca mi ni to bi cng c Bone

- 90 -

CHNG 4. TO HOT CNH

- Location: Position X v Y (ta ca thanh ni), Length ( di ca thanh ni),


Angle (gc nghing ca thanh ni), Speech (tc xoay ca thanh ni).
- Joint Rotation: cho php hoc khng cho php thanh ni c th xoay tng
ng vi Enable c chn hay khng c chn.
- Rotation Constrain: cho php mi ni gc ca thanh ni dch chuyn trong vng
t Min n Max.

Hnh 85 Thuc tnh Constrain


- Joint x Translation v Joint y Translation: cho php thanh ni dch chuyn theo
chiu x hay chiu y. Thuc tnh constraint cho hai trng hp ny hon ton
tng t thuc tnh constraint ca Rotation.
- Spring: l mt chc nng mi ca IK Bone, n c hai thuc tnh Strength (s
lng ca Spring. Khi gi tr ny ln hn 0, khung sn s phn ng li vi mt
chuyn ng vt l c t l thun gia gi tr Strength v chuyn ng tng th)
v Damping (gi tr khng Strength). Ty chn ny nh hng n tt dn
ca chuyn ng, ln lt xc nh bng khong thi gian gia s chuyn ng
ban u v thi gian khi IK Bone tr li v tr dng ca n). y l mt tnh nng
mi i vi cng c ny trong phin bn Flash CS5+ ny m Adobe b sung
vo.

Cng c Bind
Cng c ny phi dng kt hp vi cng c Bone. Khi s dng cng c Bone trong
trng hp 1, ta c th kt hp vi cng c Bind. Vi cng c Bind, bn c th p
buc cc thanh ni ph thuc ln nhau. Khi s dng cng c Bind, v bm vo
mt thanh ni, s hin ra bn im iu khin i vi thanh ni (trong hnh
minh ha bn di, l cc nt c nh du vng).

Hnh 86 Cng c Bind


Tng ng vi cc im iu khin ny l cc vin ca phn i tng c iu
khin bi thanh ni. cho mi mi ni lin kt vi mt mi ni khc, ta s dng

- 91 -

CHNG 4. TO HOT CNH

cng c Bind, bm chn cc nt iu khin ny v ko th vo v tr thanh ni


khc (thanh ni m cc im ny ph thuc vo).

4.6. Cng c Deco


L cng c trang tr ngh thut. Vi cng c ny, ta c ca c hiu ng ty chn:
Vine Fill, Grid Fill, Symmetry Brush, 3D Brush, Building Brush, Decorated Brush,
Fire Animation, Flame Brush, Flower Brush, Lightning Brush, Particle System,
Smoke Animation v Tree Brush.
Hiu ng Vine Fill
To hiu ng ngh thut dng cy nho. Khi bm chn dng biu tng ny, s
xut hin bng thuc tnh sau
Leaf: biu tng tng ng vi biu tng l. Nu bn mun thay i, bn
ch vic nhp vo Edit v chn dng symbol tng ng. Nu bn mun i
mu l, bn nhp vo biu tng Color tng ng vi Leaf. Nu mun s
dng hnh mc nh, bn bm chn Default Shape.

Hnh 87 Cng c Deco vi hiu ng Vine Fill

Flower: hon ton tng t nhng n tng ng vi biu tng hoa. Nu


bn mun thay i mu hoa, bn nhp vo biu tng Color tng ng vi
Flower. Nu mun s dng hnh mc nh, bn bm chn Default Shape.
Advanced Option: Branch Angle (gc xoay ca cc cnh nho), Color (mu ca
cnh nho), Pattern Scale (ko gin mu cnh nho) v Segment Length ( di
ca cc cnh nho).

- 92 -

CHNG 4. TO HOT CNH

Animate Pattern: xy dng mt nhm (go m ca nh, la va hoa) ln tng Frame


mo t. Chc nng ny gip to hiu ng ng. Bn c th hiu chnh tc nh
vo Frame Step.

Hiu ng Grid Fill


Ta o hie u ng nghe thua t da ng li. Khi bm chn hiu ng Grid Fill, trong bng
thuc tnh c cc thuc tnh sau:
Fill: nhp chn edit thay i biu tng. Bm vo biu tng color i
mu cho biu tng. Bm vo Default Shape chn hnh mc nh.
Advanced Options: Horizontal Spacing (khong cch theo chiu ngang),
Vertical Spacing (khong cch theo chiu dc) v Pattern Scale ( phng to
ca biu tng).

Hnh 88 Cng c Deco vi hiu ng Grid Fill


Hiu ng Symmetry Brush
Hie u ng na y giu p ta o ca c ma u nghe thua t co tnh cha t o i xng. Khi bm chn
hiu ng Symmetry Brush, trong bng thuc tnh Properties s hin ra cc thuc
tnh sau y:
Module: bm edit thay i biu tng. Bm color i mu cho biu
tng. Chn Default Shape chn hnh mc nh.
Advanced Options: Reflect Across Line (to cp im i xng qua ng
chun), Reflect Across Point (to cp im i tng qua im chun), Rotate
Around (to cc im dng vng), Grid Translation (to mt mng cc im).
Test Collisions: cho php trnh hin tng cc biu tng va chm vo nhau.

- 93 -

CHNG 4. TO HOT CNH

Hnh 89 Cng c Deco vi hiu ng Symmetry Brush


Hiu ng 3D Brush
Hiu ng 3D Brush c s dng to cc kiu phi mu t nhiu i tng.
Mi mt thao tc phun mu bng hiu ng ny cn s dng ti a 4 i tng.

Hnh 90 Cng c Deco vi hiu ng 3D Brush

- 94 -

CHNG 4. TO HOT CNH

Vi hiu ng ny, cc i tng s c phun theo hiu ng 3D (ta o to a o nga u


nhie n trong kho ng gian 3 chie u). thay i cc i tng, bn ch vic nhp
vo nt Edit, v chn mt i tng khc thay th. Cc i tng thay th
phi l cc biu tng ca Flash (MovieClip, Button hoc Graphic). Cc tnh nng
trong mc Drawing Effect ny hon ton tng t trong hiu ng Vine v Grid.
Trong mc Advanced Options c cc ty chn sau y:
Max objects: s lng i tng c to cc i trong mi ln phun.
Spray area: vng c phun (tnh theo pixel).
Perspective: cho php to hiu ng phi cnh hay khng.
Distance scale: ko gin theo khong cch ( phng to zoom).
Random scale range: T l ko gin ngu nhin (bao nhiu trong s cc biu
tng chu tc ng ca ko gin ngu nhin).
Random rotation range: to cc gc quay ngu nhin cho cc biu tng.

Hiu ng Building Brush


Vi hiu ng Building Brush, bn c th to dng cc ta nh cao tng. Cng c
ny rt hu ch trong cc tc v mun xy dng mt th sm ut.

Hnh 91 Cng c Deco vi hiu ng Building Brush


Trong mc Advanced Options, c hai chc nng:
Ty chn th xung: cho php bn la chn cc mu nh cao tng. Bn c 4
la chn mu nh cao tng skyscraper 1, skyscraper 2, skyscraper 3 v

- 95 -

CHNG 4. TO HOT CNH

skyscraper 4. Nu bn mun to cc mu nh ngu nhin, bn c th chn


Radom Building.
Building size: kch thc (theo chiu ngang) ca ta nh.
Khi xy dng cc ta nh, bn cn lu : sau khi chn cng c Deco v chn mu
nh, bn hy nhp chut v ko dc theo hng ln pha trn. Nu cao ca ta
nh ph hp, bn th chut.
Vi hiu ng ny bn c th d dng to dng cc ngi nh cao tng. Bn lu
rng, cc ngi nh cao tng ny c to bng cch lp ghp cc phn li vi nhau
to nn mt ta nh hon chnh. Nu bn mun to hiu ng cho mt i
tng ngi nh hon chnh, bn cn nhm cc phn ca ngi nh thnh mt i
tng.
Hiu ng Decorated Brush
Vi cng c Decorated Brush, bn c th to cc ng vin ngh thut theo cc
mu c cung cp sn.

Hnh 92 Cng c Deco vi hiu ng Decorated Brush


Trong mc ty chn Advanced Option, bn c 3 ty chn:
Ty chn th xung: c 20 dng ng vin ngh thut cho bn chn la.
Pattern color: chn mu cho ng vin ngh thut.
Pattern size: kch thc ca biu tng ngh thut.
Pattern width: rng ca biu tng ngh thut.
Hiu ng Fire Animation

- 96 -

CHNG 4. TO HOT CNH

Hiu ng Fire Animation s to ra mt ngn la chy sng. N rt hu dng trong


cc tc v cn to dng ngn la.
i vi hiu ng ny, mc Advanced Options c cc ty chn sau:
Fire size: kch thc ngn la.
Fire speech: tc chy ca la.
Fire duration: hiu ng ng ca la s din ra trong bao nhiu frame. Bn
s thy chnh l s keyframe hin th trn thanh TimeLine. Nhng iu
ny ch ng trong trng hp ty chn End Animation khng c chn.
End Animation: ngn la tn dn (nu c chn), hoc din tin mi mi
(nu khng c chn).
Flame color: mu pha ra ngoi ca ngn la.
Flame core color: mu ca li ngn la.
Fire spark: s ngn la.

Hnh 93 Cng c Deco vi hiu ng Fire Animation


Thng thng, khi to dng mt hot cnh c s dng n ngn la, bn nn kt
hp vi hiu ng to khi (Smoke Animation) m chng ta s tm hiu phn
tip theo.
Hiu ng Flame Brush
Hiu ng ny gip to dng cch phun mu theo hnh dng ngn la.
Trong mc Advanced Options c 2 ty chn:
Flame size: kch thc ca ngn la.
Flame color: mu ca ngn la.

- 97 -

CHNG 4. TO HOT CNH

Hiu ng ny tng i n gin. N khng c nhiu ng dng trong cc d n


thit k phim hot hnh.

Hnh 94 Cng c Deco vi hiu ng Flame Brush


Hiu ng Flower Brush
Hiu ng ny qu tht rt th v. Nh vo n, chng ta c th to cc cnh hoa.
Vi mc Advanced Options, ta c cc ty chn sau:
Ty chn th xung: cho php bn chn la cc loi hoa sau: Garden
Flower, Rose, PoinSettia v Berry.

Hnh 95 Cng c Deco vi hiu ng Flower Brush

- 98 -

CHNG 4. TO HOT CNH

Flower color: mu cho hoa.


Flower size: kch thc ca hoa.
Leaf color: mu cho l.
Leaf size: kch thc ca l.
Fruit color: mu ca qu.
Ty chn branch: cho php hin th cnh cy hay khng. Nu ty chn ny
c kch hot, bn c th chn tu y cho n be n di Branch color.
Branch color: mu ca cnh cy.

Hiu ng Lightning Brush


Hiu ng Lightning dng to cc tia sng. N c ng dng trong vic to cc
tia st, hoc cc hiu ng phng in khc.
Vi mc Advanced Options, bn c cc ty chn sau y:
Lightning color: mu ca tia sng.
Lightning scale: ko gin ca tia sng.
Ty chn Animation: nu mun to hiu ng ng cho tia sng.
Beam width: rng ca tia sng.
Complexity: ri ( phc tp) ca chm tia sng.

Hnh 96 Cng c Deco vi hiu ng Lightning Brush

Hiu ng Particle System

- 99 -

CHNG 4. TO HOT CNH

Hiu ng ny to mt chm ht c phng ra t mt ngun pht. Bn s thy n


cng rt hu ch trong nhiu tc v: phun bong bng nc, phun cc ht bi.

Hnh 97 Cng c Deco vi hiu ng Particle System

Mc Drawing Effect c hai ty chn cho cc loi ht. Bn c th thay i chng


nh i vi hiu ng vine, grid v 3D brush.
Mc Advanced options c cc ty chn sau:
Total length: din tin hnh ng trn bao nhiu frame.
Particle generation: ngun pht cc ht s din ra trn bao nhiu frame.
Rate per frame: tc trn mi frame.
Life span: mi mt ht s c thi gian tn ti trn bao nhiu frame.
Initial speech: tc khi to.
Initial size: kch thc khi to.
Min initial direction: gc phun nh nht.
Max initial direction: gc phun ln nht.
Gravity: trng lng ca ht.
Rotation rate: tc quay vng ca ht.

Hiu ng Smoke Animation


Hiu ng ny tng t vi hiu ng Fire Animation. N dng to hiu ng bc
khi. Thng hiu ng ny s dng kt hp vi hiu ng Fire Animation.

- 100 -

CHNG 4. TO HOT CNH

Hnh 98 Cng c Deco vi hiu ng Smoke Animation

Trong mc Advanced options c cc ty chn sau y:


Smoke size: kch thc ca khi.
Smoke speed: tc khi.
Smoke duration: din tin ca hiu ng khi trn bao nhiu frame. Cng
tng t Fire Animation, s keyframe trn Timeline s chnh l gi tr ca
Smoke duration trong trng hp ty chn End Animation khng c
chn.
End Animation: hiu ng khi bc ln v tan bin vo khng kh (nu ty
chn ny c chn) v khng tan bin vo khng kh (trong trng hp
ty chn ny khng c chn).
Smoke color: mu ca khi.
Background color: mu ca khi khi khi dn tan vo khng kh.

Hiu ng Tree Brush


Hiu ng ny s dng to cc loi cy khc nhau. Flash cung cp cho ta kh
nhiu dng cy s dng.
Trong mc Advanced options c cc ty chn sau y:
Ty chn th xung: cho php bn chn la cc loi cy. Flash cung cp sn
cho chng ta 20 loi cy khc nhau.
Tree scale: ko gin ca cy.

- 101 -

CHNG 4. TO HOT CNH

Hnh 99 Cng c Deco vi hiu ng Tree Brush

Branch color: mu ca cnh cy.


Leaf color: mu ca l cy.
Flower/Fruit color: mu ca hoa hoc qu.
Vi cng c Deco, bn th sc sng tc cc kch bn cho cc thc phim hot
hnh ca bn cng nh cho game. D rng cng c Deco ny c trong phin
bn CS4, nhng vi phin bn CS5+ ny, cng c ny hon thin hn, cung cp
cho ta nhiu ty chn hn sng tc. Mc tiu ca Adobe t ra qua mi phin
bn l lm sao n gin ha cng vic thit k cho ngi dng, m rng
phm vi i tng s dng khng ch dnh cho ngi dng chuyn nghip m
cn hng n ngi dng ph thng.

4.7. Cng c 3D Translation v 3D Rotation

Cng c 3D Translation
Cng c ny cho php chng ta c th to chuyn ng 3D cho i tng. Nh
chu ng ta tho lun trn, cng c ny ch hot ng i vi i tng c
to Motion Tween.
V d sau y s minh ha cho vic s dng cng c 3D Translation. Trong v d
ny, ta s to mt mt phng v cho php n chuyn ng trong khng gian 3
chiu. lm c iu ny, chng ta s thao tc theo cc bc sau y:

- 102 -

CHNG 4. TO HOT CNH

- Bc 1. Trn Layer 1, bn hy mt hnh bnh hnh (s dng cng c hnh ch


nht v cng c Free Transform) tng trng cho mt phng v trn Layer 2
bn hy to mt h ta Descartes 3 chiu nh hnh minh ha.
- Bc 2. Chn hnh bnh hnh, kch chut phi v chn Create Motion Tween Sau
, bm chn cng c 3D Translation. Bn c th s dng cng c ny di chuyn
mt phng theo cc chiu x (trc ngang), y (trc ng) v z (im chm trung
tm).
- Bc 3. m bo rng trc ta m ta to tn ti song song vi cc layer
ca mt phng, ta cn chn Frame cui cng trn TimeLine mt phng ca Layer
ny v nhn phm F5.
- Bc 4. Nhn t hp Ctrl+Enter kim tra kt qu.

Hnh 100 Cng c 3D Translation

Cng c 3D Rotation
Cng c ny cho php chng ta c th xoay chuyn 3D cho i tng. Nh ta
tho lun trn, cng c ny cng ch hot ng i vi i tng c to
Motion Tween.

- 103 -

CHNG 4. TO HOT CNH

Bn thao tc hon ton tng t v d sau trn. Nhng y, mt phng s xoay


chuyn 3D trong khng gian. lm c iu ny, chng ta s thao tc theo cc
bc sau y:
- Bc 1. Trn Layer 1, bn hy mt hnh bnh hnh (s dng cng c hnh ch
nht v cng c Free Transform) tng trng cho mt phng v trn Layer 2
bn hy to mt h ta Descartes 3 chiu nh hnh minh ha.
- Bc 2. Chn hnh bnh hnh, kch chut phi v chn Create Motion Tween Sau
, bm chn cng c 3D Rotation. Bn c th s dng cng c ny xoay chuyn
mt phng theo cc chiu x (trc ngang), y (trc ng) v z (vng trn bn trong) .

Hnh 101 Cng c 3D Rotation


- Bc 3. m bo rng trc ta m ta to tn ti song song vi cc layer
ca mt phng, ta cn chn Frame cui cng trn TimeLine mt phng ca Layer
ny v nhn phm F5.
- Bc 4. Nhn t hp Ctrl+Enter kim tra kt qu.

- 104 -

CHNG 4. TO HOT CNH

Tng kt chng 4
Trong chng ny, chng ta tm hiu cch to chuyn ng cho cc i tng.
y, chng ta cng nhau tm hiu v k thut Frame by Frame, k thut
Tween, cc cng c to hot hnh nh Bone, Bind, 3D, Deco.
K thut Frame by Frame tuy c, nhng n vn rt hu ch trong nhiu tc v.
K thut Tween c chia lm ba loi: Classic Tween, Motion Tween v Shape
Tween. Mi k thua t u c nhng nt c trng ring. Classic Tween v Motion
Tween tuy c nhiu im tng ng, nhng chng khng phi lc no cng c
th thay th cho nhau: Classic Tween h tr Frame cha ActionScript cn Motion
Tween th khng; Motion Tween khng cn to KeyFrame nn n gin hn, hiu
qu hn Classic Tween; Motion Tween h tr cc hiu ng 3D cn Classic Tween
th khng.
Cc cng c to hot hnh nh Bone, Bind, 3D v Deco cng rt hu ch. Chng c
th s dng c lp hay kt hp vi k thut Tween. Nh nhng cng c mi ny,
vic to hot hnh cho i tng tr nn n gin hn rt nhiu.

- 105 -

CHNG 4. TO HOT CNH

Blank Page

- 106 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

CHNG 5. LP TRNH VI ACTIONSCRIPT


ActionScript l mt ngn ng lp trnh hng i tng c dng pht trin
cc ng dng cha y tre n Adobe Flash Player, Flash Plugin, Flash Lite, Shockwave
v Adobe AIR. Ngn ng lp trnh ActionScript c th c bin dch bi:
- Adobe Flex Builder.
- Adobe Flash Professional.
- Command Line nh vo b SDK.
Cng tng t nh Java, sau khi c bin dch, cc ActionScript s c chuyn
thnh dng bytecode m ch c my o ActionScript (AVM) mi hiu c. My
o ActionScript ny c tch hp bn trong Flash Player, Flash Plugin, Flash
Lite, Shockwave v Adobe AIR.
Ngn ng lp trnh ActionScript (AS) l ngn ng c c php ra t gio ng Java. Nu
bn tng lm quen vi ngn ng lp trnh Java, th khi lm quen vi ngn ng
lp trnh ActionScript s cm thy n gin hn rt nhiu. Cc ton t, cc cu
lnh tng t nh Java. Dng nh Adobe thit k nn ngn ng ActionScript
theo chun ca Java to nn s n gin v quen thuc vi a s ngi dng.
Bn cng cn lu rng, chng ta ang tho lun v phin bn 3.0 ca AS. y l
phin bn mi nht cho n thi im ny. AS l ngn ng hng i tng nh
Java, Delphi, hay C++. Tuy nhie n, no mang nhie u a c trng cu a mo t ngo n ng kich
ba n nh Javascript. AS l ngn ng phn bit ch hoa v ch thng.
Mt v d kinh in khi hc mt ngn ng lp trnh l v d Hello, world !.
Thng qua v d kinh in ny, chng ta s c c ci nhn tng quan v cu pha p
chng trnh cu a ngn ng o . Bn hy quan st v d minh ha be n di c
vit trn ngn ng lp trnh ActionScript.
Trong v d ny, ta c th thy nhiu im tng ng gia AS vi Java l: du
comment (// - comment trn mt dng v /**/ - comment trn nhiu dng), cch
vit ni dung hm (nm trong cp du {}) v ch c mt khi nim l hm (tr v
kiu d liu hoc khng tr v kiu d liu), mo t so kie u d lie u....
Mt im khc bit ca AS so vi Java l chng trnh chnh nm t do trong
vng son tho (khng ging Java ca n thie t pha i co mo t ha m main e thc thi).
N c th nm trc hay sau cc hm khai bo. quy c v trt t s dng, ta
s s dng c php tun t (lnh trc thc hin trc, lnh sau thc hin sau)
ngha l phn chng trnh chnh lun nm pha sau cng v ta s nh du n
bng dng comment /*Chng trnh chnh*/.
Trong AS, ta s du ng t kho a function e khai ba o phng thc. Kie u d lie u tra
ve cu a function c a t ngay sau ca p da u ngoa c cha danh sa ch tham so . Trong

CHNG 5. LP TRNH VI ACTIONSCRIPT

AS, e in ra mo t ca u tho ng ba o, ta s du ng ha m trace. Ha m trace tng t ha m


printf cu a C/C++.

Hnh 102 Giao din ActionScript 3.


Bn cng cn lu rng, AS l ngn ng kch bn (scripting language), nn n
cng mang nhiu c trng ca mt ngn ng kch bn. Cc cu lnh nm t do,
khng nht thit phi c t trong mt hm c th no, y chnh l t trng
d nhn thy ca mt ngn ng kch bn (nh JavaScript, Jscript).
Ne u ba n a tng ho c la p trnh Java, th cha c cha n s tm thy nhiu im tng
ng v khc bit so vi ActionScript. Chng ta s ln lt tm hiu c php ca
ngn ng lp trnh ActionScript ny. Xin nhc li l phin bn ActionScipt m ta
ang tho lun l ACTIONSCRIPT 3.0. Ta kho ng tha o lua n g the m ve ca c phie n
ba n AS2.0 va AS1.0.

5.1. Cc kiu d liu

y ta tho lun v cc kiu d liu trn h Windows 32 bit. Cc kiu d liu


m ta tho lun l kiu nguyn thy. Trong AS, mi kiu d liu u tng ng
vi mt lp o i tng to ra n: kiu int v lp int, kiu Number v lp Number...
a. Kiu s nguyn
C hai dng s nguyn c h tr trong AS l kiu s nguyn c du int v s
nguyn khng du uint. C hai loi s nguyn ny iu chim 4byte, ngha l vng

- 108 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

gi tr ca int l -231 n 231-1 v gi tr ca uint l 0232-1. Bn lu rng, trong


cc kiu d liu, th ch c kiu s nguyn c ch ci u tin vit thng (int ch
kho ng pha i la Int).
b. Kiu s thc
S thc du chm ng theo chun IEEE-754. S thc trong AS chim 32 bit. T
kha khai bo l Number. Bn lu Number vit hoa ch ci u tin.
c. Kiu Boolean
Kiu Boolean trong AS c hai gi tr l true v false. Bn lu Boolean vit hoa
ch ci u tin, true v false vit thng mi ch ci.
d. Kiu xu String
Xu k t c nh du t 0. Phn t cui cng trong xu c ch s l xu.lengh1. Kiu xu c khai bo nh t kha String. Bn cng cn lu rng String vit
hoa ch ci u tin.
e. Kiu mng Array
Vic nh du trong Array hon ton tng t String. Kiu Array cng vit hoa
ch ci u tin.
f. Kiu i tng Object
Tng t kiu Struct ca C, o ng thi cu ng gio ng kie u enum trong Java. Nhng
mm do hn rt nhiu. Chng ta s thy r iu ny qua cc chng trnh trong
gio trnh ny.
x l cc d liu lin quan n cc kiu d liu nguyn thy ny ta phi lm
vic vi cc lp i tng tng ng: kiu int v uint vi lp int v uint, kiu
Number vi lp Number, kiu String vi lp String, kiu Array vi lp Array v
kiu i tng Object. Chi tit v cc phng thc x l ca cc lp ny ta s
tho lun sau khi tm hiu v lp trong AS.

5.2. Bin v Hng


a. Bin: c gi tr thay i c. Khi khai bo mt bin ta khai bo theo c php
sau:
var tn_bin:Kiu_D_Liu [= gi_tr_khi_to];
Khi khai bo mt bin, bn phi s dng t kha var. Ta c th ly mt vi v d
v khai bo bin trong AS
var a:int = 1;
var b:Number;
b = 1.5;
//Cc dng khai bo sau tng ng

- 109 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

var s:String = Hello;


var s:String = new String(Hello);
var s:String = String(Hello);
//Kt thc tnh tng ng

//Cc dng khai bo sau tng ng


var ar:Array = new Array(a, b);
var ar:Array = new Array(3);
//Kt thc tng ng

var myAssocArray:Object = {fname:"John", lname:"Public"};


trace(myAssocArray.fname); // John
trace(myAssocArray["lname"]); // Public
myAssocArray.initial = "Q";
trace(myAssocArray.initial); // Q
Bn c th khi to gi tr cho bin ti thi im khai bo bin hoc khai bo bin
v khi to gi tr cho bin sau. o i vi kie u Array (kie u ma ng) ba n ca n lu y :
ba n pha i s du ng toa n t new e ca p pha t bo nh cho bie n ma ng. Ba n co the ca p
pha t so lng o nh new Array(so lng o nh) hoa c khai ba o theo da ng gia tri
ha ng new Array(ca c pha n t).
b. Hng: c gi tr khng thay i. Trong AS, khai bo hng ta thay t kha var
trong khai bo bin bng t kha const. Bn lu rng khi khai bo hng bn cn
phi b sung gi tr cho n. Ngha l c php khai bo hng phi tun theo quy tc
sau
const tn_hng:Kiu_D_Liu = gi_tr_khi_to;
Gi tr khi to cho ha ng khng ging vi khi to cho bin. o i vi bie n th c
th c hoc khng, i vi hng la bt buc phi c.
Cc bn c th quan st cc khai bo hng sau y
const a:int = 1;
const s:String = abc;
Remarks: Bin v hng c mt im khc bit ln: gi tr ca bin c th thay i
ty vo kin ch quan ca ngi lp trnh; gi tr ca hng th khng c php
thay i. Gi tr ca hng quy nh khi khai bo th no th n gi nguyn nh th
. Nu c tnh thay i gi tr ca hng th s nhn c thng bo li t trnh
bin dch ca Flash.

- 110 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

5.3. Ton t v Biu thc


Ton t l cc php ton c s dng trong AS. Cc gi tr c s dng cho
ton t gi l ton hng. Biu thc l tp hp cc ton t v ton hng c sp
xp theo mt trt t c ngha.
Ton t gn
Ton t gn dng gn gi tr cho mt bin. V d a = 5;
Cu lnh gn s thc hin gn gi tr bn phi cho bin bn tri. Bn cng c
th gn gi tr ca hai bin cho nhau. V d a = b;
a = b + 2;
Gi tr ca a bng gi tr ca b cng thm 2
a = a + 1;
Tng gi tr ca a ln 1
Gn ng thi nhiu gi tr. N tng ng vi tp cc
lnh sau:
a = b = c = 5;
c = 5;
b = c;
a = b;

Ton t thc hin php ton s hc


Ngn ng lp trnh AS h tr cc ton t s hc sau y
Ton t
ngha
+
Php cng
Php tr
*
Php nhn
/
Php chia (chia nguyn i vi s nguyn)
%
Chia ly d (ch vi s nguyn)
Bn lu rng, php chia c th thc hin trn s nguyn hoc s thc. Nu thc
hin php chia trn hai s nguyn th y chnh l kt qu ca php chia ly phn
nguyn. Cn nu n thc hin trn hai s thc, th n l kt qu ca php chia
bnh thng. Trong ca c ngo n ng ho nha C, theo mc nh, hai s nguyn (hoc
thc) thc hin php ton tng ng th n s tr v kt qu nguyn (hoc thc).
Nu php ton thc hin trn mt s nguyn v mt s thc, n s t ng
chuyn i v kiu cao hn (thnh s thc). Tuy nhie n, AS co c che chuye n o i
kha me m de o. Ne u ta thc hin php chia 3 cho 2, th ta se nha n c ke t qua
mong muo n tu y thuo c va o kie u d lie u quy inh tra ve . Co ngha la ne u ta ga n gia
tri tra ve cho mo t bie n nguye n, th ta nha n c gia tri la 1; ngc la i, ne u ga n gia
tri cho mo t bie n thc th ta nha n c gia tri l 1.5.
var a:int = 3/2;//Cho kt qu l 1
var b:Number = 3/2;//Cho kt qu l 1.5

- 111 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

ie u na y cu ng kha de hie u. Bi ne u thc hie n phe p chia 3/2 th theo ma c inh gia
tri nha n c la 1.5. Ne u gia tri na y ga n cho mo t bie n thc th ke t qua kho ng co g
thay o i. Tuy nhie n, ne u ga n cho mo t so nguye n th co s thay o i ln. S d nh
va y la v bie n so nguye n kho ng ho tr da u cha m o ng. Do o , nhng pha n na m
sau da u cha m o ng se c ca t bo .
Ton t logic
Ton t
Php ton
a
b
Kt qu
true
false
Ton t ph
Php ton
nh !
mt ngi !a
false
true
true
true
true
Php ton hai
true
false
false
ngi
Ton t v &&
false
true
false
a&&b
false
false
false
true
true
true
Php ton hai
true
false
true
Ton t hoc
ngi
false
true
true
||
a||b
false
false
false
Quy tc ghi nh: Php ton v && nhn gi tr ng ch khi c hai cng ng. Php
ton hoc || ch nhn gi tr sai khi c hai cng sai.
Ton t dch bit
Cc ton t ny c s dng e tnh ton trn cc s nguyn bng cch s dng
cc bit.
Ton t
Tn gi
V d
210=102
310=112
&
Php v bit
2&3=2
210=102
210=102
310=112
|
Php hoc bit
2|3=3
310=112
210=102
Php hoc loi
310=112
^
2^3=1
bit
110=012
<<
Dch tri bit
2<<3=16
2*23=2*8=16
>>
Dch phi bit
2>>3=0
2/23=2/8=0
210=102
~
Ph nh bit
~2=1
110=012

- 112 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Cc ton t v bit, hoa c bit, hoc loi bit v ph nh bit c tnh nh sau: ta
chuyn i cc s thp phn sang nh phn tng ng, sau s dng cc php
ton tng ng cho tng bit theo v tr ca n. V d nh trn 210=102, 310=112
v ta s thc hin cc php ton tng ng vi tng bit. Bit th nht (t phi
sang tri) l 0&1=1, bit th hai 1&1=1, nh vy kt qu ca php ton 2&3 l 102
hay 210. Tng t cho cc php ton cn li. y bn lu rng php ton
tuyn loi s c chn tr l 1 nu hai bit tng ng l khc nhau, nu ging nhau
th tng ng l 0(1^1=0^0=0, 1^0=0^1=1).
Cc ton t << v >> s c tnh nh sau: a<<b=a*2b v a>>b=a/2b.
Ton t gn hp nht
Khi mun thay i gi tr ca mt bin, chng ta c th s dng cch vit
thng thng, tuy nhin AS cng h tr cc ton t vit tt.
Ton t
V d
ngha
Phm vi
+=
a+=b
a=a+b
Php ton s hc
-=
a-=b
a=a-b
Php ton s hc
*=
a*=b
a=a*b
Php ton s hc
/=
a/=b
a=a/b
Php ton s hc
%=
a%=b
a=a%b
Php ton s hc
&=
a&=b
a=a&b
Php ton bit
|=
a|=b
a=a|b
Php ton bit
^=
a^=b
a=a^b
Php ton bit
>>=
a>>=b
a=a>>b
Php ton bit
<<=
a<<=b
a=a<<b
Php ton bit
Ton t tng v gim
Mt cch vit thu gn hn na, l s dng ton t tng v gim. Nu
trong biu thc a+=b, vi b = 1 th ta c th vit thnh a++. Tng t, nu a-=b, b
= 1 th ta c th vit a--.
Ca n lu rng, ton t ny c mo t ie m a c bie t. N c th nm trc hoc
nm sau ton hng. C ngha l c th vie t a++ hoc ++a (tng ng a-- hoc --a).
Php ton
ngha
a++;
Thc hin php ton trc, sau mi thc hin ton t
++a;
Thc hin ton t trc, sau mi thc hin php ton
a--;
Tng t a++;
--a;
Tng t ++a;
V d

Cch thc thi

- 113 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

var a:int = 1;

a = 1, b cha khi to

a+=b++;

Thc hin php ton a+=b trc, sau


mi thc hin php ton b++. Tc
l a=2, b=2.

a = 1, b = 1

var b:int = 1;

Thc hin php ton ++b trc, sau


mi thc hin php ton a+=b.
Tc l b=3, a=5.

a+=++b;

Ton t so snh
thc hin vic so snh gi tr ca hai bin, biu thc; ta c th s dng
ton t so snh. Gi tr ca php ton so snh tr v kiu bool.
Gi tr biu thc a Ton t b
Ton t
Tn gi
ng
Sai
==
Bng
Nu a bng b
Nu a khc b
!=
Khc
Nu a khc b
Nu a bng b
>
Ln hn
Nu a ln hn b
Nu a nh hn hoc
bng b
<
B hn
Nu a nh hn b
Nu a ln hn hoc
bng b
>=
Ln hn hoc bng Nu a ln hn hoc Nu a nh hn b
bng b
<=
B hn hoc bng
Nu a nh hn hoc Nu a ln hn b
bng b

Bn hy cn thn khi s dng ton t so snh bng. Hy ch rng ton t


so snh bng l ==, khc vi ton t gn =.
Ton t iu kin
Ton t iu kin c dng c php nh sau:
iu_kin?kt_qu_1:kt_qu_2;

Toa n t ie u kie n tr v gi tr kt_qu_1 nu iu_kin l ng, ngc li, nu


iu_kin l sai, th tr v gi tr kt_qu_2.
V d
Kt qu

- 114 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

var a:int = 1;
var b:int = 2;
var c:int;
c = (a>b)?a:b;
trace(c);

Ton t phn tch


Ton t ny k hiu l du phy. N dng phn tch hai hay nhiu biu
thc cha trong mt biu thc tng ng.
V d
Kt qu
var a:int;
3
var b:int;
var c:int;
c = (a=1, b=2, a+b);
trace(c);

Ton t chuyn i kiu d liu


Ton t ny dng chuyn i mt bin hay hng thuc kiu d liu ny
sang kiu d liu khc. Cch biu din s chuyn i mt bin thuc kiu d liu
ny, sang kiu khc ch c th thc hin nu kiu ca chng tng ng. Bn c
th chuyn s thnh s (sau ny khi hc v hng i tng, bn c th chuyn
gia cc i tng co chung pha he ). Bn khng th chuyn i t s thnh xu,
hay ngc li ba ng ca ch s du ng toa n t chuye n o i kie u. Khi chuyn i, bn s
dng mt trong cc c php sau:
(kiu_d_liu)bin hoc
(kiu_d_liu)(bin) hoc
kiu_d_liu(bin).
AS co c che chuye n o i linh ho a ne n ta luo n co the thc hie n phe p chia gia hai
so nguyn ma kho ng ca n pha i quan ta m e n kie u d lie u cu a no . ie u o co ngha
la toa n t chuye n o i kie u ch ne n s du ng khi ca n chuye n o i ca c o i tng co
chung huye t tho ng trong ca y pha he ma kho ng ca n a p du ng cho vie c chuye n o i
so nguye n tha nh so thc trong ca c phe p tnh.
Th t u tin ca cc ton t
Trong ton hc, chng ta bit rng khi tnh gi tr ca mt biu thc, th
lun c s u tin ca cc ton t nh: php nhn thc hin trc php cng,
php chia v nhn thc hin ng thi, u tin t tri sang phi Trong lp trnh
C++ cng vy, cc ton t cng c nhng u tin nht nh. Trong mt biu
thc phc tp, bn nn ch n u tin ca cc ton t, iu ny rt d gy

- 115 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

ra sai st. Trong bng sau y, chng ti xin a ra th t u tin ca cc ton t


trong lp trnh AS
Mc u tin Ton t
u tin cng loi
1
::
Tri-sang-phi
2
() [] . -> ++ -- (hu t) dynamic_cast Tri-sang-phi
static_cast reinterpret_cast const_cast
typeid
3
++ -- (tin t) ~ ! sizeof new delete
Phi-sang-tri
*&
+ - (du dng m)
4
(type) (chuyn i kiu)
Phi-sang-tri
5
.* ->*
Tri-sang-phi
6
*/%
Tri-sang-phi
7
+ - (php ton cng, tr)
Tri-sang-phi
8
<< >>
Tri-sang-phi
9
< > <= >=
Tri-sang-phi
10
== !=
Tri-sang-phi
11
&
Tri-sang-phi
12
^
Tri-sang-phi
13
|
Tri-sang-phi
14
&&
Tri-sang-phi
15
||
Tri-sang-phi
16
?:
Phi-sang-tri
17
= *= /= %= += -= >>= <<= &= ^= |=
Phi-sang-tri
18
,
Tri-sang-phi

Cc ton t c thc hin theo mc u tin t trn xung. Nu cc ton t


cng mc, n s c thc hin theo u tin cng loi.

5.4. Kiu d liu mng Array

Mng. Ma ng la mo t kie u d lie u nguye n thu y. Ma ng bao go m ca c pha n t co cu ng


kie u d lie u va cu ng te n go i, c sa p xe p lie n tie p tre n bo nh ma y tnh.
Khai bo mng. Trong AS, co nhie u ca ch khai ba o ma ng. Sau a y la hai ca ch khai
ba o tho ng du ng nha t:
Ca ch 1.
Ca ch 2.
var mang:Array = new Array(kch var mang:Array = new Array(ca c
thc);
pha n t);

- 116 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

hoa c
var mang:Array = [ca c pha n t];
Ca ch khai ba o 1 thng a p du ng khi ta cha bie t chnh xa c gia tri cu a ca c pha n t
trong ma ng. Trong khi ca ch khai ba o 2 c a p du ng ne u gia tri cu a ca c pha n t
a c bie t. Trong ca ch khai ba o mo t, tham so kch thc co the kho ng to n ta i.
Kch thc ma ng co the thay o i. No co the ta ng le n hoa c gia m xuo ng so vi kch
thc c ca p pha t ban a u.
V d: Khai bo mng
var mang:Array = new Array(3);
var mang2:Array = new Array(2, 4, 6);
var mang1:Array = [1, 3, 5, 6];
Ba n cu ng ca n lu y ra ng, ca ch khai ba o th 2 co the a p du ng cho ma ng ha ng (co
ngha la co the bo sung const). Trong khi o , ca ch khai ba o th nha t th kho ng.
Ma c du trnh bie n dich kho ng tho ng ba o lo i, nhng ne u quy inh no la ma ng ha ng,
trong khi ch mi ca p pha t bo nh cho ca c pha n t cu a no ma cha a n inh gia tri
cu a ca c pha n t th ma ng na y se kho ng the s du ng c (kho ng the thay o i gia
tri ca c pha n t ve sau).
Truy cp vo cc phn t ca mng.
Ma ng c truy ca p theo ch so . Ch so cu a ma ng c a t trong ca p da u mo c
vuo ng [ch so ].
V d: Truy cp cc phn t ca mng
V d
Kt qu
var mang:Array = new Array(3);
undefined
var mang1:Array = new Array(2, 4, 6);
2
var mang2:Array = [1, 3, 5, 6];
1
trace(mang[0]);
trace(mang1[0]);
trace(mang2[0]);
Bie n mang ch mi c ca p pha t bo nh, cha c khi ta o gia tri, do o , khi in
ra mang[0] th ta nha n c la undefined. o i vi mang1 va mang2 th pha n t
a u tie n co ch so 0 la n lt co gia tri la 2 va 1.
B sung v loi b phn t ca mng.
Kha c vi ca c ngo n ng la p trnh kha c, ma ng trong AS la mo t ca u tru c o ng co the
c s du ng nh danh sa ch lie n ke t. Ba n co the thay o i kch thc cu a ma ng.
Ba n co the m pha n t hoa c loa i bo mo t pha n t na o o . e the m mi mo t pha n t
va o ma ng (the m va o cuo i ma ng) th ta s du ng phng thc push. Ngc la i, e
loa i bo mo t pha n t cuo i ma ng th ta s du ng phng thc pop.

- 117 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

V d: Thm/xa phn t trong mng.


var mang:Array = new Array();
mang.push(1);//Gia tri cu a ma ng hie n gi la 1
mang.push(5);//Gia tri cu a ma ng hie n gi la 1 va 5
mang.pop();//Gia tri cu a ma ng hie n gi la 1
Lu y , ba n ch co the the m hoa c xo a pha n t cuo i cu ng cu a ma ng. Ba n kho ng c
phe p the m hoa c xo a mo t pha n t co ch so ba t k cu a ma ng. Chi tie t ve ca c phng
thc cu a lp Array se c trnh ba y sau khi tm hie u ve lp.

5.5. Cc cu trc lnh iu khin


5.5.1. Cu lnh if
C php

if (biu_thc_iu_kin_ng){
Thc hin lnh 1;
}else{
//biu thc iu kin sai
Thc hin lnh 2;
}
Gii thch: Kie m tra ie u kie n cu a bie u thc ie u kie n, ne u no nha n gia tri u ng
th thc hie n pha n le nh tng ng vi if (le nh 1); ngc la i, se thc hie n pha n
le nh tng ng vi else (le nh 2).
V d: V d in ra kt lun s a l s dng chn hay khng l s dng chn.
V d
Kt qu
var a:int = 5;
5 khng l s dng chn
if ((a%2==0)&&(a>0)){
trace(a+ l s dng chn);
}else{
//biu thc iu kin sai
trace(a+ khng l s dng chn);
}
Bn cng lu rng cc cu lnh if cng c th lng vo nhau, ngha l bn trong
cu lnh if cn c th cha cu lnh if khc. y cng l tnh hung rt thng
gp.
V d: Gii phng trnh bc hai
V d
Kt qu

- 118 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

var a:Number = 2, b:Number = 3,


Phng trnh co hai nghie m:
c:Number = -5, delta:Number;
1 va -2.5
delta = b*b - 4*a*c;
if(delta>0)
trace("Phng trnh co hai nghie m:
"+ ((-b+Math.sqrt(delta))/2/a).toString()
+ " va " + ((-bMath.sqrt(delta))/2/a).toString());
else
if(delta==0)
trace("Phng trnh co
nghie m ke p: " + (-b/2/a).toString());
else
trace("Phng trnh vo
nghie m");
Ca c ca u le nh if co the c vie t lie n tie p nhau. Khi o , ta se co mo t ca u tru c if
else lie n tu c.
C php

if(iu_kin_1)
Lnh_1;
else if(iu_kin_2)
Lnh_2;
....
else if(iu_kin_n)
Lnh_n;
Bi tp.
1. Ha y vie t oa n chng trnh cho phe p tnh gia tri tuye t o i cu a |a-b|.
Hng dn: Ba n ca n xe t gia tri cu a a-b. Ne u a-b>=0 th |a-b|=a-b. Ngc la i, a-b<0
th |a-b|=b-a.
2. Ha y vie t oa n chng trnh cho phe p xa c inh so ln nha t trong ca c so a, b, c
ba ng ca ch s du ng ca u le nh if.
Hng dn: Ba n ha y so sa nh a va b. Cho n ra so ln nha t t hai so na y va tie p tu c
so sa nh vi c.
3. Ha y vie t oa n chng trnh cho phe p in ra tho ng ba o so nga y trong mo t tha ng.
Trong o , tha ng la mo t so nguye n cho trc.
Hng dn: Ne u tha ng la 2 th co 28 hoa c 29 nga y. Ne u tha ng la 1, 3, 5, 7, 8, 10, 12
th co 31 nga y. Ne u tha ng 4, 6, 9, 11 th co 30 nga y.

- 119 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

5.5.2. Cu lnh switch


C php
switch(biu_thc){
case gi_tr_1:
Lnh 1;
break;

case gi_tr_(n-1):
Lnh n-1;
break;
default:
Lnh n;
}
Gii thch: Kie m tra gia tri cu a bie u thc, ne u no nha n gia tri 1 th Le nh 1 se c
thc thi, , ne u no nha n gia tri n-1 th Le nh n-1 se c thc thi. Trong trng
hp, bie u thc kho ng nha n t gia tri 1 cho e n gia tri n-1 th no se thc hie n Le nh
n. Sau mo i ca u le nh trong ca c trng hp case, ca n co ca u le nh break e thoa t
kho i vo ng la p case. Ne u kho ng co break, ca c trng hp case tie p theo cu ng se
c thc hie n.
V d: Cho a l mt s nguyn cho trc. Nu a l 0 th in ra S Khng; nu a l s
1 th in ra S Mt. Trong cc trng hp cn li th in ra thng bo Khng bit.
V d
Kt qu
var a:int = 2;
Khng bit
switch(a){
case 0:
trace(S Khng);
break;
case 1:
trace(S Mt);
break;
default:
trace(Khng bit);
}
Bi tp.
1. Ha y vie t oa n chng trnh cho phe p in ra tho ng ba o so nga y trong mo t tha ng.
Trong o , tha ng la mo t so nguye n cho trc. Ha y s du ng le nh switch thay v s
du ng ca u le nh if tre n.

- 120 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Hng dn: Ne u tha ng la 2 th co 28 hoa c 29 nga y. Ne u tha ng la 1, 3, 5, 7, 8, 10, 12


th co 31 nga y. Ne u tha ng 4, 6, 9, 11 th co 30 nga y
2. Ha y vie t oa n chng trnh cho phe p kie m tra mo t k t cho trc la quo c gia
thuo c cha u lu c na o. Ca c k t bao go m: a Anh, m My , v Vie t nam, n Nam phi.
Trong trng hp nha p va o mo t k t kha c a, m, v, n th a ra tho ng ba o la
Kho ng bie t.
5.5.3. Cc cu lnh lp for, while v dowhile

Ngn ng AS cung cp cho chng ta ba dng vng lp for: for, forin v for
eachin.
a. Cu lnh lp for
C php
for(var i:int = bt_khi_to; bt_gii_hn; bt_tng){
Lnh;
}
Gii thch: Le nh se c thc hie n vi so la n chnh la so la n la p cu a i. So la n la p
cu a i se la (bt_gii_ha n bt_khi_ta o)/bt_ta ng + 1.
V d: Vit on chng trnh in ra cc s t 0 n 5
V d
Kt qu
for(var i:int = 0; i<6; i++){
0
trace(i);
1
}
2
//hoc
3
for(var i:int = 0; i<=5; i++)
4
trace(i);
5
Gia tri cu a bie n i se c la p t 0 e n 5 (nho hn 6) vi bc nha y la 1 (v i++).
ie u o co ngha la bie n i nha n ca c gia tri la 0, 1, 2, 3, 4, 5 va 6. Ca u le nh trace se in
ra gia tri cu a bie n i tng ng vi tng vo ng la p.
V d: Vit on chng trnh tnh tng cc s t 1 n 100
V d
Kt qu
var S:int = 0;
for(var i:int = 1; i<=100; i++)
S+=i;
trace("To ng la : "+S);

To ng la : 5050

- 121 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Gia tri cu a bie n i se c la p t 1 e n 100 vi bc nha y la 1 (v i++). Sau mo i


vo ng la p, gia tri cu a i se c co ng do n va o bie n S. Ca u le nh trace se in ra gia tri
cu a bie n S.
V d: Vit on chng trnh tnh tng cc s chn t 1 n 100
V d
Kt qu
var S:int = 0;
To ng ca c so cha n la : 2550
for(var i:int = 1; i<=100; i++)
if(i%2==0)
S+=i;
trace("To ng ca c so cha n la : "+S);
Gia tri cu a bie n i se c la p t 1 e n 100 vi bc nha y la 1 (v i++). Sau mo i
vo ng la p, ca u le nh if se kie m tra gia tri cu a i, ne u gia tri cu a i la cha n th no se
c co ng do n va o bie n S. Ca u le nh trace se in ra gia tri cu a bie n S.
V d: Vit on chng trnh cho php tnh tng cc phn t dng ca mng.
V d
Kt qu
var mang:Array = new Array();
123
for(var i:int = 0; i<100; i++)
mang.push(Math.round(10*(Math.random()-0.5)));
var S:int = 0;
for(i = 0; i<100; i++)
if(mang[i]>0)
S+=mang[i];
trace(S);
Trong v du na y, ta ta o ra mo t mo t ma ng cha co inh kch thc. Vo ng la p for
th nha t bo sung 100 pha n t va o ma ng. Gia tri cu a ca c pha n t se c la y nga u
nhin. Vo ng la p for th hai se tnh to ng ca c pha n t dng cu a ma ng.

b. Cu lnh lp forin
Khi ch so cu a ma ng kho ng lie n tu c hoa c kho ng tua n theo mo t quy ta c na o o , th
ca ch s du ng vo ng la p for tre n to ra kho ng co n hie u qua . e kha c phu c nhc
ie m na y, AS bo sung vo ng la p forin. Be n ca nh o , o i vi trng hp Object, th
pha n a nh ch so co the kho ng n thua n la so ma co the la kie u d lie u ba t k.
Khi o , ta ba t buo c pha i s du ng vo ng la p forin na y (hoa c foreachin trong
mu c tie p theo).
C php

for(var index in Array/Object){

- 122 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Lnh;
}
Gii thch: Trong vo ng la p forin na y, ch so index se c ve t trong ta p ch so
cu a Array hoa c Object. Tng ng vi ch so na y, ta co the thu c gia tri cu a
ca c pha n t tng ng.
V d: V d s dng forin kt hp vi Array
V d
Kt qu
var items:Array = new Array(1, 2, 3);
Pha n t th 0 la 1
for(var index in items){
Pha n t th 1 la 2
trace("Pha n t th " + index + " la " +
Pha n t th 2 la 3
items[index]);
}
Trong cu lnh forin ny, th bin index l mt ch s. N c khai bo trc
tip trong vng lp for. Bie n index na y se nha n ca c gia tri la 0, 1, 2 (tng ng vi
ch so cu a ba pha n t 1, 2, 3 cu a ma ng). Khi in ra gia tri, th ta se in ra gia tri cu a
pha n t co ch so tng ng.
V d: V d s dng forin kt hp vi Object
V d
Kt qu
var mang:Object = {'b': "Nam", 'g': "N",
'u': "Kho ng bie t"};
for(var i in mang)
trace(mang[i]);

N
Nam
Kho ng bie t

Ba n co the nha n tha y trong trng hp na y, ch so tng ng vi ca c pha n t la


b, g va u. Ta kho ng the du ng vo ng la p for trong trng hp na y. Khi s du ng
forin, bie n i se nha n ca c gia tri tng ng vi ch so la b, g va u. Tng ng
vi ca c ch so na y, ta thu c gia tri tng ng la Nam, N va Kho ng bie t.
Lu y , kie u Object c s du ng trong v du na y tng t nh kie u enum trong
Java.

c. Cu lnh lp for eachin


Tng t nh ca u le nh forin, ca u le nh for eachin cu ng co the s du ng cho
ma ng co ch so kho ng lie n tu c hoa c Object. Tuy nhie n, for eachin truy ca p e n
ca c pha n t trc tie p ma kho ng ca n tho ng qua ch so .
C php
for each(var item in Array/Object){

- 123 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Lnh;
}
V d: V d s dng for eachin kt hp vi Array
V d

Kt qu

var items:Array = new Array(1, 2, 3);


for each (var item in items){
trace(item);
}

1
2
3

var mang:Object = {'b': "Nam", 'g': "N",


'u': "Kho ng bie t"};
for(var item in mang)
trace(item);

N
Nam
Kho ng bie t

Khc vi cu lnh forin, bin item trong cu lnh for eachin se nha n gia tri cu a
ca c phn t ca mng ch khng phi l ch s nh trong trng hp trn. N
cng c khai bo trc tip trong vng lp for.
V d: V d s dng for eachin kt hp vi Object
V d
Kt qu

Ba n co the nha n tha y, ta hoa n toa n kho ng ca n quan ta m e n ch so nhng va n


nha n c d lie u cu a ca c pha n t cu a Array hoa c Object.
Bi tp.
Cho mo t ma ng ca c so nguye n vi gia tri cho trc. Ha y thc hie n ca c ye u ca u sau
a y ba ng ca ch s du ng 3 vo ng la p for, forin, for eachin tre n.
a) Lit k cc phn t l s chn ca mng.
b) Tnh tng cc phn t chia ht cho 3 v 5.
c) Sp xp li th t ca mng.
d. Cu lnh lp while
Nu biu thc iu kin ng th lp li qu trnh thc thi lnh. Ngha l cu lnh
while lun kim tra biu thc iu kin trc khi thc hin lnh. Nu biu thc
iu kin sai ngay t u th lnh s khng c thc hin.
C php
while(biu_thc_iu_kin){
Lnh;
}
V d: In ra cc s gim dn t 3 n 1.

- 124 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

V d

Kt qu

var i:int = 3;
3
while (i>0){
2
trace(i);
1
i--;
}
Trong v du na y, bie u thc i>0 la u ng ne n ca u le nh trace va i-- se c thc hie n.
Gia tri cu a i se la n lt c in ra. o ng thi gia tri cu a i se gia m xuo ng. e n khi
bie n i nha n gia tri 0 th bie u thc i>0 kho ng co n u ng va vo ng la p ke t thc.
V d: Tnh tng cc phn t c gi tr dng ca mng.
V d
Kt qu
var mang:Array = new Array();

var i:int = 0;
while(i<100)
{
mang.push(Math.round(10*(Math.random()-0.5)));
i++;
}
var S:int = 0;

116

i=0;
while(i<100)
{
if(mang[i]>0)
S+=mang[i];
i++;
}
trace(S);
V du na y hoa n toa n tng t nh v du tnh to ng ca c pha n t co gia tri dng cu a
ma ng ba ng ca ch s du ng vo ng la p for tre n.

e. Cu lnh lp dowhile
Kha c vi ca u le nh while, khi s du ng le nh dowhile th lnh se c thc hie n
trc, sau kim tra biu thc iu kin, nu biu thc iu kin cn ng th

- 125 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

lnh s tip tc c thc hin. Khc vi lnh while, i vi lnh dowhile th


lnh bn trong n c thc hin t nht mt ln.
C php
do{
Lnh;
} while(biu_thc_iu_kin);
V d: Vit on chng trnh in ra cc s theo th t gim dn t 3 n 1.
V d
Kt qu
var i:int = 3;
3
do{
2
trace(i);
1
i--;
} while (i>0);
Trong oa n chng trnh na y, ca u le nh trace se c th hie n va gia tri cu a bie n i
se c in ra, bie n i gia m xuo ng 1 n vi, sau o kie m tra ie u kie n i>0. Ne u i >0
u ng, th quay la i vo ng la p. Do o , gia tri c in ra la 3, 2, 1.
Bi tp.
Ha y la m la i ba i ta p trong pha n ca u le nh for, forin va for eachin ba ng ca ch s
du ng hai vo ng la p while va dowhile.
5.5.4. Cc lnh continue, break v return

Lnh continue: lnh ny cho php bo qua mt vng lp hin ti v thc hin
vng lp tip theo.
V d
Kt qu
for (var i:int = 0; i<4; i++){
1
if(i%2==0) continue;
3
trace(i);
};
Du bie n i c xe t duye t t 0 e n 4 nhng ne u gia tri cu a i la cha n th le nh
continue c thc hie n va ca c le nh tie p theo trong bc la p hie n ta i se bi bo
qua. Ne u i nha n gia tri le , th le nh continue kho ng c thc hie n, le nh trace se
tie n ha nh in ra gia tri cu a i (ch gia tri le 1, 3).
Lnh break: cho php thot khi vng lp.
V d

- 126 -

Kt qu

CHNG 5. LP TRNH VI ACTIONSCRIPT

var i:int = 0;
0
do{
1
trace(i);
2
if (i>=5) break;
3
i++;
4
} while (true);
5
Trong v du na y, vo ng la p dowhile kho ng co tnh dng v no se la p ma i (do iu
kin lp l true). Vo ng la p na y se tie n ha nh in ra gia tri cu a i sau o ta ng gia tri i
le n 1. Ne u gia tri i vt qua 5 th lnh break c thc hin v vo ng la p bi b qua.
Trong trng hp na y, trace na m trc vie c kie m tra gia tri i>=5, ne n no va n in
ra gia tri 5. Ke t qua thu c nh tre n.

Lnh return: tr v gi tr cho hm (nu return nm trong hm) v kt thc


chng trnh (nu lnh return nm trong chng trnh chnh). Khi ga p le nh
return, th ta t ca ca c ca u le nh tie p theo trong ha m (tc nhng le nh na m trong
ha m nhng na m sau return) se kho ng c thc hie n.
Bng so snh chc nng ca ba lnh continue, break, return
Lnh
Chc nng
continue
Bo qua bc la p hie n ta i va thc hie n bc la p tie p theo.
break
Thoa t kho i vo ng la p.
return
Thoa t kho i vo ng la p, thoa t kho i ha m, thoa t kho i chng trnh.
Xe t ve mc o ma nh ye u, ta co the sa p xe p nh sau:
continue < break < return

5.6. Hm
AS la ngo n ng kich ba n ne n va n ho tr vie c khai ba o ha m ngoa i lp. Ha m la mo t
nho m ca c ca u le nh c xc nh ba ng mo t te n go i va ta go i o la te n ha m. Vie c s
du ng ha m se giu p gia m ta i so lng le nh ne u ca c le nh o ca n c vie t la i nhie u
la n. Ne u ta quy inh ca c le nh na y di mo t te n go i th ta ch ca n go i la i te n go i
ha m na y khi muo n thc thi nho m ca u le nh o . Ngoa i ra, ha m co n co c che truye n
tham so , giu p cho chng trnh tr ne n go n ga ng hn. Ta co the hie u ha m trong
AS gio ng vi ca c ha m toa n ho c.
a. Khai bo v s dng
C php
function tn_hm(ds_tham_s):kiu_d_liu_tr_v{
thn hm;

- 127 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

}
V d
V d

Kt qu

function showMsg():void{
Hello
trace(Hello);
3
}
function Add(a:int, b:int):int{
return a+b;
}
showMsg();
trace(Add(1,2));
Trong v du na y, ta khai ba o hai ha m la showMsg va Add. Ha m showMsg kho ng co
tham so truye n va o va no la ha m kho ng tra ve gia tri ne n ta quy inh no la ha m
void. Ha m showMsg ch n thua n in ra ca u tho ng ba o Hello. Ha m Add co hai
tham so la a va b. Ca c tham so trong ha m c pha n ta ch ba ng da u pha y. Ha m
Add tra ve gia tri. No la da ng ha m int ha m tra ve gia tri nguye n. e tra ve gia tri
cho ha m, ta s du ng le nh return. Ha m Add du ng e co ng hai so nguye n.
Khi go i ha m, ta go i ha m theo te n go i cu a no va truye n tham so va o cho ha m. Ne u
ha m kho ng co tham so , th ta e tro ng nhng ba t buo c pha i co da u ngoa c n.
Cc bc xy dng hm. e xa y dng mo t ha m trong AS hay trong ba t k ngo n
ng la p trnh na o, ta ca n thc hie n ca c bc sau a y:
Bc 1. Xc nh Tn hm. Tn hm do ngi lp trnh quy nh n c th c tn
bt k nhng bt buc phi tun theo quy tc nh danh: khng c bt u
bng s, khng c cha k t c bit v k t trng, khng c trng vi t
kha.
Bc 2. Xc nh cc tham s ca hm.
Bc 3. Xc nh kiu d liu m hm tr v.
Bc 4. Vit ni dung ca hm.
Ne u la mo t ngi mi la m quen vi la p trnh, th a c ha n se ga p nhie u tr nga i khi
xa y dng ha m. Khi o , ha y tua n thu ca c bc tre n e inh hng cho vie c xa y
dng ha m ca n du ng.
Bi tp.
Ha y thc hie n ca c ba i ta p sau a y ba ng ca ch s du ng ha m:
a) Kie m tra mo t so nguye n to .
b) Gia i phng trnh ba c hai.
c) Tnh die n tch cu a hnh tro n.
d) Tnh to ng ca c so nguye n to t 1 e n 100.

- 128 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

e) Tnh the tch hnh ca u.


f) Tnh to ng ca c pha n t dng cu a mo t ma ng so nguye n cho trc.
Hng dn.
a) S nguyn t l s ch c ng hai c s l 1 v chnh n (ngha l n khng
chia ht cho bt k s no khc ngoi 1 v chnh n). S 0 v 1 khng phi l s
nguyn t; s 2 l s nguyn t b nht.
b) Lp delta v bin lun theo delta. Bi tp ny khng yu cu xt nghim phc.
c) S dng cng thc tnh din tch hnh trn = 2 .
d) Tng t bi tp tnh tng trn. Tuy nhin, ta ch cng gi tr ca i vo tng S
nu i l s nguyn t.
4

e) S dng cng thc tnh th tch hnh cu = 3 .


3

f) Tng t bi tp tnh tng trn.

b. Vn tham bin v tham tr


Tham so trong ha m c truye n theo hai hnh thc: tham bie n va tham tri. Ne u
tham so c truye n theo tham tri, th gia tri cu a tham so o se kho ng thay o i
sau khi thoa t kho i ha m. Ngc la i, ne u tham so c truye n theo tham bie n, th
gia tri cu a no se bi thay o i khi thoa t ra kho i ha m. Trong AS cc tham s c
truyn theo tham tr nu chng thuc kiu d liu nguyn thy. Nu mun truyn
tham s theo tham bin, bn cn s dng mt kiu d liu tham chiu nh kiu
i tng Object.
Tham tr
Tham bin
function noSwap(a:int, b:int):void{
function Swap(Obj:Object):void{
c:int = a;
var a:Object = new Object();
a = b;
a = Obj.x;
b = c;
Obj.x = Obj.y;
}
Obj.y = a;
var a:int = 1;
}
var b:int = 2;
var myObj:Object = {x:1, y:2};
noSwap(a, b);
Swap(myObj);
trace(a+, +b);
trace(myObj.x+", "+myObj.y);
//Kt qu l: 1, 2
//Kt qu l: 2, 1
Ba n chu y v du trong trng hp tham tri. Gia tri ban a u cu a a va b la n lt la 1
va 2. Sau khi go i ha m noSwap(a, b) th gia tri nha n c cu a a va b kho ng thay
o i. Ngc la i, trong trng hp tham bie n th gia tri ban a u cu a x va y la 1 va 2.
Sau khi go i ha m Swap(myObj) th gia tri cu a x va y thay o i va la n lt co gia tri la
2 va 1.

- 129 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

c. Hm vi tham s mc nh
Khi xa y dng ha m, o i lu c, ta muo n a n inh gia tri ma c inh cho ca c tham so ne u
tham so o la tu y cho n (co ngha la co the co hoa c kho ng khi go i ha m) th ta s
du ng khai ba o ha m vi tham so ma c inh.
V d
Kt qu
function Add(a:int, b:int = 0, c:int = 0):int{ 1
return a+b+c;
3
}
6
trace(Add(1));
trace(Add(1,2));
trace(Add(1,2,3));
Vi nhng tham s c quy nh l mc nh, khi gi hm chng c th khng
cn xut hin trong tham s ca hm, v khi tham s s nhn gi tr mc
nh m ta quy c.
d. Hm vi s lng tham s khng xc nh
Khi xa y dng ha m, co the co nhng ha m ma ta cha xa c inh c so lng tham
so cu a no . lm vic vi loi hm cha tham s dng ny, AS cung cp cho ta
cng c gi l (rest) tham s.
V d
Kt qu

function Add(...args):int{
1
var sum:int = 0;
3
for (var i:int = 0; i<args.length;i++)
6
sum+=args[i];
return sum;
}
trace(Add(1));
trace(Add(1,2));
trace(Add(1,2,3));
Nh ba n tha y trong v du tre n, ha m tnh to ng co so lng tham so kho ng ha n
inh. Ta co the go i bao nhie u tham so tu y y . Gia tri tra ve cu a ha m la to ng ca c
tham so o .
e. Con tr void

- 130 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Cng tng t C++, actionscript cu ng ho tr con tro void. Con tro void co the
du ng e ga n cho mo t o i tng cha xa c inh kie u d lie u. Trong nhie u tnh
huo ng thc te , ta muo n xa y dng ca c ha m nhng cha bie t chnh xa c kie u gia tri
cu a ha m hay cu a ca c tham so la g hay ta muo n xa y dng mo t ha m to ng qua t co
the a p du ng cho nhie u kie u d lie u kha c nhau, khi o , ta co the s du ng con tro
void. Con tro void co nhie u ng du ng trong thc te va no la mo t ca ch thc me m
de o e chuye n o i kie u d lie u cho ca c o i tng khi ca n thie t. Trong
actionscript, con tro void ch n thua n khai ba o vi toa n t *.
V d
Kt qu
function Add(a:*, b:*):*
4
{
abcd
return a+b;
}
trace(Add(1, 3));
trace(Add("ab", "cd"));
Trong v du na y, ta co the tha y: ha m Add cha hai tham so a va b cha xa c inh
kie u, gia tri tra ve cu a ha m cu ng cha co kie u xa c inh. Trong trng hp na y, ta
s du ng con tro void. Ha m Add co the du ng e co ng hai so vi nhau hoa c du ng e
co ng hai xa u k t. Khi ta go i ha m, tu y thuo c va o gia tri truye n va o ma no cho ta
ca c ca ch tnh toa n kha c nhau: Add vi tham so la so th no se thc hie n phe p toa n
co ng so ho c; Add vi tham so la xa u th no se thc hie n phe p no i hai xa u.

f. Kiu d liu hm
Bn c th khi gn mt bin cho mt hm c khai bo. Vic ny s gip bn
to ra hai hm c chc nng ging nhau.
V d
Kt qu
var Cong = function Add(a:int, b:int):int{
3
return a+b;
3
}
trace(Cong(1,2));
trace(Add(1,2));
Actionscript co n cho phe p ba n vie t ta t. Ba n co the va khai ba o ha m va ke t hp
go i ha m. Ba n ch ne n s du ng da ng cu pha p na y khi ba n s du ng kha tha nh tha o
ngo n ng na y, bi le no co the ga y ra nha m la n hoa c kho hie u. V du tre n co the
vie t ta t nh sau:
V d
Kt qu

- 131 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

trace(( function Add(a:int, b:int):int{


3
return a+b;
})(1,2));
Ba n lu y ra ng, ha m c khai ba o c bo c trong toa n t ngoa c n (). Khi bo c
trong toa n t ngoa c n, no co the c s du ng nh mo t li go i ha m.

5.7. Lp v i tng
5.7.1. Xy dng lp

Nga y nay, k thua t la p trnh hng o i tng c ng du ng ro ng ra i trong co ng


nghe pha t trie n pha n me m. So vi ca c k thua t trc o , k thua t la p trnh hng
o i tng co nhie u u ie m vt tro i. Ha t nha n cu a k thua t la p trnh hng o i
tng o la lp va o i tng. Lp la kha i nie m c a va o trong k thua t la p
trnh hng o i tng nha m mo ta o i tng. Mo t o i tng tng ng vi mo t
thc the trong the gii thc. Mo t o i tng go m co ca c thuo c tnh va phng thc
e thc thi ha nh o ng. Ca c thuo c tnh va phng thc na y c mo ta trong lp.
Trong actionscript, lp c xy dng da theo c php sau y
public class Tn_class{
//Khai bo thuc tnh ca lp
//Phng thc khi to
//Phng thc getter v setter
//Cc phng thc khc
}
Trong , class l t kha bt buc khai bo lp. Mt lp i tng bao gm
cc phng thc v thuc tnh ca n. Cc thuc tnh bao gm cc tnh cht m t
i tng. Cc phng thc gip i tng thc thi hnh ng ca mnh. Khi
khi to mt i tng, thng thng ta s xy dng mt hm to hoc s dng
phng thc setter khi gn gi tr khi ta o cho ca c thuo c tnh cu a i tng.
Phng thc getter gip ta nhn c cc gi tr t cc thuc tnh ca i tng.
V d sau y m t vic xy dng mt lp c tn l SinhVin.
V d
public class SinhVien{
private var ten:String;
private var tuoi:uint;
public function SinhVien(ten:String, tuoi:uint){
this.ten = ten;
this.tuoi = tuoi;

- 132 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

public function toString():String{


return Ti l: +ten+, +tuoi+ tui.;
}

}
Trong v d ny, bn lu rng ca c phng thc v thuc tnh c khai bo
ba ng mo t trong ca c t kho a sau: public, protected v private. Vi t kha private
th thuc tnh v phng thc ch cho php truy cp bi cc phng thc ni ti
ca lp . Ngc li, vi t kha protected th phm vi truy xut l tt c cc lp
trong cng mt package. Vi public th phm vi truy xut l tt c cc lp d l
trong hay ngoi package. Ca c t kho a na y go i la t kho a ch mc truy ca p cho
phng thc va thuo c tnh cu a o i tng.
Vi class c cc t kha ch nh sau:
- dynamic: cc thuc tnh c th c b sung vo trong th hin lp ti thi
im runtime.
- internal: c th c nhn thy trong cng mt package.
- final: khng cho php tha k.
- public: c th c nhn thy bt k u.
Hm to
Trc khi s du ng mo t o i tng, ta ca n khi ta o no . e khi ta o mo t o i tng,
lp cu a o i tng o ca n co ha m khi ta o. Trong actionscript, te n cu a ha m ta o
pha i tru ng vi te n cu a lp.
V d
public class MyClass {
public function MyClass() {
// constructor code
}
}
Actionscript kho ng ho tr cho ng cha t ha m. ie u o co ngha la ta ch co the khai
ba o duy nha t mo t ha m ta o. Trong trng hp kho ng khai ba o ha m ta o na o, th no
se s du ng ha m ta o ma c inh. Trong nhie u tnh huo ng thc te , o i lu c ta co the
ca n pha i s du ng nhie u da ng ha m ta o. Khi o , ta co the s du ng da ng rest tham so
hoa c phng thc vi tham so ma c inh nh tre n.
V d
public class MyClass
{

- 133 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

private var a:int;


private var b:int;

public function MyClass(...arg)


{
this.a = arg[0];
this.b = arg[1];
}

}
public class MyClass
{
private var a:int;
private var b:int;

public function MyClass(a:int=0, b:int=0)


{
this.a = a;
this.b = b;
}

}
Sau na y, ta co the go i mo t trong so ca c da ng ha m ta o kha c nhau cu a lp MyClass
du ra ng ta ch khai ba o mo t ha m ta o duy nha t cho lp na y. Chi tie t ve ca ch s
du ng o i tng se c trnh ba y trong mu c tie p theo.

Tnh tha k
AS l ngn ng n tha k, ngha l mt lp ch c th tha k t mt lp c s.
khai ba o tnh tha k, AS cung cp cho ta t kha extends.
V d sau y s minh ha cho tnh tha k. Lp Human c hai thuc tnh l tn
v tui. Lp SinhVien k tha t lp Human ny, n b sung thm thuc tnh ids.
Phng thc toString trong lp SinhVien ghi chng ln phng thc toString ca
lp c s Human nh t kha override.
V d
//Lp c s Human
public class Human{
protected var ten:String;
protected var tuoi:uint;
public function toStrings():String{

- 134 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

return "Ti l: "+ten+", "+tuoi+" tui.";

}
//Lp tha k SinhVien
public class SinhVien extends Human{
private var ids:int;
public function SinhVien(ten:String, tuoi:uint, ids:int) {
this.ten = ten;
this.tuoi = tuoi;
this.ids = ids;
}
override public function toString():String{
return this.ten+", "+this.tuoi+", "+this.ids;
}
}

Giao din interface


D tnh n tha k phn nh ng vi thc t ca mi thc th, tuy nhin tnh
a tha k mang li cho ta sc mnh trong lp trnh hng i tng. Do vy,
cng nh a s ngn ng lp trnh n tha k khc, AS cng b sung khi nim
giao din interface. Tuy nhin, theo nh ngha ca giao din trong cc ngn ng
lp trnh hng i tng khc, n l mt lp abstract hon toa n (abstract hon
ton), cn trong AS dng nh ta cn thay i khi nim ny. S d nh vy, v
trong AS khng h tr lp abstract. Ta c th hiu giao din trong AS nh sau:
giao din l mt lp ch cha khai bo phng thc, khng cha thuc tnh. Mt
lp ch tha k mt lp c s, nhng n c th thc thi nhiu giao din.
V d sau y s minh ha vic to hai giao din l Animal v Meo. Lp MeoDen
s thc thi hai giao din ny.
V d
//Giao din Animal
public interface Animal {
function Go():void;
function Eat():void;
}
//Giao din Meo
public interface Meo {
function Sound():void;

- 135 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

}
//Lp MeoDen thc thi hai giao din Animal v Meo
public class MeoDen implements Animal, Meo{
public function MeoDen() {
trace("Ti l Mo en.");
}
public function Go():void{
trace("Ti i !");
}
public function Eat():void{
trace("Ti n !");
}
public function Sound():void{
trace("Ti ku !");
}
}
5.7.2. Lm vic vi i tng
a. To s th hin ca lp
Khi hc v lp trnh hng i tng, ta bit rng: mt thc th trong th gii
thc c cc hnh ng v tnh cht. Khi xy dng lp m t thc th ta s
dng phng thc v thuc tnh m t. Mt i tng l mt s th hin ca
lp. V d ta c lp i tng SinhVien nh trn, th khi to i tng ta c th
s dng c php sau
SinhVien sv = new SinhVien();
y, sv l mt i tng th hin ca lp SinhVien. C l sau khi lm quen vi
cch khai bo lp trn, bn s thc mc: lm th no kim tra cc lp trn
vit ng hay cha? Cu tr li l chng ta cn ci t debug. Nhng mi
trng Flash khng cho php chng ta bin dch cc file ActionScript mt cch
ring l, cc file ny mun thc thi c cn s dng bn trong mo t d a n ca
phim Flash. V d, bn c th to mi mt d n Flash, gi s bn t tn cho n
l MainPrj.fla. Bn tip tc to mi mt lp ActionScript 3.0 v t tn cho n l
SinhVien, sau lu file ny li vi tn SinhVien.as. Trong file ActionScript ny,
bn hy vit mt class nh trn. Bn quay tr li vi file MainPrj.fla, nhn F9
quay tr li vi giao din vit Action ca Flash. Trong giao din ny, bn hy to
mt i tng. Gi y, bn hon ton c th debug phim bng cch nhn
Ctrl+Enter.

- 136 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Vi nhng d n phc tp, ta cn t chc cc lp theo cc package. e s du ng


package, ba n hy to cc th mc vi tn gi khc nhau (tn ca chng cng
chnh l tn ca package). Khi to lp, bn hy t n trong package vi c php
sau:
package Tn_Package{
//Khai bo lp
}
iu ny s gip bn qun l tt hn cc lp ca mnh. Package hon ton ging
namespace trong NET. Bn cng lu rng trong Action ca Flash, bn cn
import cc lp ny vo s dng nh t kha import.
import Tn_Package.Tn_Lp;
Bn hy th hon tt cc v d minh ho a trn ba ng ca ch qua n ly theo package.
b. i tng ca lp s nguyn int v uint
Tn hm
Chc nng
Hm to int(Number)
Hm khi to cho lp int.
toExponential(Number) Tr v nh dng s dng 3.1e+5. Ngoi l RangeError
toString()
Tr v nh dng xu ca s
valueOf()
Tr v gi tr nguyn thy ca i tng int.

c. i tng ca lp s thc Number


Tn hm
Chc nng
Hm to int(Number)
Hm khi to cho lp int
toExponential(Number) Tr v nh dng s dng 3.1e+5. Ngoi l RangeError
toFixed(Number)
C nh s ch s thp phn
toPrecision(Number)
Tr v chnh xc n num
toString()
Tr v nh dng xu ca s
valueOf()
Tr v gi tr nguyn thy ca i tng Number.
Ngoi ra, trong lp ny c xc nh thm cc tham s NaN v nh,
NEGATIVE_INFINITY s m v cc, POSITIVE_INFINITY s dng v cc.
d. i tng ca lp String
Tn hm
Chc nng
Hm to String(String)
Hm khi to cho lp String.
charAt(Number)
Tr v k t ti num.
concat(String)
Ghp ni cc xu thnh mt xu.
indexOf(String,
Tr v v tr u tin tm thy xu String k t v th
Number=0)
cho. Phng thc c nh ngha l danh sch
hng, ngha l c th c mt hoc hai i s.

- 137 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

lastIndexOf(String,
Number)
localeCompare(String)
replace(pattern, Obj)
search(pattern)
split(pattern)
substring(Number,
Number)
toLowerCase(String)
toUpperCase(String)
valueOf()

e. i tng ca lp Array
Tn hm
Thuc tnh length
Array(Number) v
Array(values)
concat(args)
pop()
push()
reverse()
sort()
toString()
5.7.3. Lp s kin Event

Tng t indexOf, nhng tm kim t phi sang


tri.
So sanh hai xu. Nu bng nhau th kt qu tr v 0.
Nu xu ban u c di ln hn th tr v 1,
ngc li tr v -1.
Thay pattern bng cc Obj trong xu cho.
Tr v ch s u tin ca pattern trong xu cho.
Phn tch xu thnh cc xu con. Kt qu tr v mt
mng cc xu.
Tr v xu con t v tr Number u vi di
Number sau.
Chuyn tt c k t hoa thnh k t thng. Xu
ngun khng thay i.
Chuyn tt c cc k t thng thnh k t hoa. Xu
ngun khng thay i.
Tr v gi tr ca xu dng kiu nguyn thy.
Chc nng
Tr v di ca xu.
Hm to.

Ghp ni cc mng thnh mt.


Phng php pop cho Stack.
Phng php push cho Stack.
o mng.
Sp xp mng.
Chuyn sang xu.

Lp Event na m trong go i flash.events la lp qua n ly ca c s kie n cu a ca c o i tng.


No c s du ng e la ng nghe s kie n cu a ca c o i tng tho ng qua phng thc
addEventListener. Ne u s kie n c la ng nghe bi o i tng stage th ca c ha nh
o ng se c die n tie n theo stage.
C php:
i_tng.addEventListener(Event.S_kin_lng_nghe, fl_func,
useCapture=false, priority=0, useWeakReference=false);

- 138 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

function fl_fun(e:Event):void
{

}
Trong o ,
a) Ha m fl_func la ha m thc thi khi s kie n c pha t sinh.
b) Tham so useCapture co kha na ng nha n mo t trong hai gia tri la true/false. Gia tri
nga m inh la false. Ne u nha n gia tri true, th thc thi theo mo hnh 1 (capture
phase), ngc la i nha n gia tri false th thc thi theo mo hnh 2 (bubbling phase).

Mo hnh 2 Bubbling phase


Mo hnh 1 Capture phase
Trong hai mo hnh tre n, co hai o i tng lo ng va o nhau. Ne u thc thi theo mo
hnh capture phase (mo hnh 1) th s kie n cu a o i tng ngoa i se thc thi trc
va sau o mi e n s kie n cu a o i tng trong. o i vi mo hnh bubbling phase
(mo hnh 2) th ngc la i.
Ne u ma c inh, mo t o i tng kho ng co o i tng kha c lo ng be n trong no , ta ca n
s du ng tham so na y theo ma c inh la false.
c) Tham so priority nha n gia tri la so nguye n. Ma c inh no nha n gia tri 0. No la th
t x ly s kie n. Ne u o i tng co priority ln hn th no se c x ly trc.
Ne u ca c o i tng co cu ng priority, th chu ng se c x ly theo th t ma chu ng
c bo sung va o.
d) Tham so useWeakReference nha n mo t trong hai gia tri true/false. Ne u true th
no s du ng che o tham chie u ye u (tc kho ng co n be n vng khi thc thi che o
do n ra c garbage collection); ngc la i, ne u false th no s du ng che o tham chie u
ma nh. Ma c inh, no s du ng gia tri false.
e) Tham so S_kin_lng_nghe. Trong lp Event, co ca c s kie n la ng nghe sau a y:
S KIN LNG NGHE
GII THCH
ACTIVATE : String = "activate"
Khi o i tng ang hoa t o ng.
ADDED : String = "added"
Khi o i tng c the m va o.
ADDED_TO_STAGE : String = Khi o i tng c the m va o stage.
"addedToStage"
CANCEL : String = "cancel"
Khi o i tng bi hu y.
CHANGE : String = "change"
Khi o i tng thay o i.
CLEAR : String = "clear"
Khi o i tng c clear (phng thc clear

- 139 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

cu a thuo c tnh graphics).


CLOSE : String = "close"
Khi o i tng a c o ng la i.
CLOSING : String = "closing"
Khi o i tng ang o ng la i.
COMPLETE : String = "complete" Khi o i tng a c ta i xong.
CONNECT : String = "connect"
Khi o i tng c ke t no i tho ng qua ma ng.
COPY : String = "copy"
Khi o i tng c copy.
CUT : String = "cut"
Khi o i tng c cut.
DEACTIVATE
:
String
= Khi o i tng kho ng co n hoa t o ng.
"deactivate"
DISPLAYING
:
String
= Khi o i tng ang hie n thi.
"displaying"
ENTER_FRAME : String = Khi o i tng tie n va o khung hnh (tc la
"enterFrame"
frame hie n ta i ang trong vu ng frame cu a
o i tng).
EXIT_FRAME
:
String
= Khi o i tng thoa t kho i khung hnh (tc la
"exitFrame"
frame hie n ta i ra kho i frame cu a o i tng).
EXITING : String = "exiting"
Khi thoa t kho i o i tng.
FRAME_CONSTRUCTED : String Khi khi ta o khung hnh.
= "frameConstructed"
FULLSCREEN
:
String
= Khi o i tng che o fullscreen (che o tra n
"fullScreen"
ma n hnh).
HTML_BOUNDS_CHANGE
: Khi khung cha the html thay o i.
String = "htmlBoundsChange"
HTML_DOM_INITIALIZE : String Khi mo t o i tng DOM (document object
= "htmlDOMInitialize"
mode) c khi ta o.
HTML_RENDER : String = Khi ca c the html c hie n thi (sau khi khi
"htmlRender"
ta o, sau khi ta i tha nh co ng).
ID3 : String = "id3"
Khi o c c the ID3. ID3 la thuo c tnh lu
tr trong the metadata cu a file mp3.
INIT : String = "init"
Khi frame a u tie n cu a movie c ta i.
LOCATION_CHANGE : String = Khi no i dung tre n o i tng StageWebView
"locationChange"
thay o i.
MOUSE_LEAVE : String = Khi tro chuo t di chuye n ra kho i o i tng.
"mouseLeave"
NETWORK_CHANGE : String = Khi thay o i ke t no i ma ng.
"networkChange"
OPEN : String = "open"
Khi mo t o i tng trie u go i phng thc open

- 140 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

cu a no nh: Sound, URLLoader, URLStream


PASTE : String = "paste"
Khi o i tng c paste.
REMOVED : String = "removed"
Khi o i tng c xo a kho i khung cha.
REMOVED_FROM_STAGE : String Khi o i tng c xo a kho i stage.
= "removedFromStage"
RENDER : String = "render"
Khi o i tng c hie n thi.
RESIZE : String = "resize"
Khi o i tng thay o i kch thc.
SCROLL : String = "scroll"
Khi o i tng c ke o la n (ba ng ca ch quay
chuo t gia).
SELECT : String = "select"
Khi o i tng c cho n.
SELECT_ALL : String = "selectAll" Khi ta t ca ca c o i tng c cho n.
SOUND_COMPLETE : String = Khi a m thanh ta i hoa n ta t.
"soundComplete"
STANDARD_ERROR_CLOSE
: Khi lo i a c o ng la i.
String = "standardErrorClose"
STANDARD_INPUT_CLOSE
: Khi d lie u va o a c o ng la i (v du khi o c
String = "standardInputClose"
file).
STANDARD_OUTPUT_CLOSE
: Khi d lie u ra a c o ng la i (v du khi ghi
String = "standardOutputClose" ra file).
TAB_CHILDREN_CHANGE
: Khi ca c ca c o i tng trong the thay o i.
String = "tabChildrenChange"
TAB_ENABLED_CHANGE : String Khi ca c o i tng trong the cho phe p thay o i.
= "tabEnabledChange"
TAB_INDEX_CHANGE : String = Khi thay o i the cho n.
"tabIndexChange"
TEXT_INTERACTION_MODE_CH Khi che o hie n thi va n ba n thay o i.
ANGE
:
String
=
"textInteractionModeChange"
UNLOAD : String = "unload"
Khi ha nh o ng unload (hu y bo vie c ta i) die n
ra.
USER_IDLE : String = "userIdle"
Khi ngi du ng chuye n sang che o idle (che
o ch).
USER_PRESENT : String = Khi ngi du ng che o hie n die n.
"userPresent"
Ca c ba n cu ng ca n lu y ra ng, ca c s kie n la ng nghe c ho tr tu y thuo c va o o i
tng va tu y thuo c va o phie n ba n ma y a o AVM s du ng. o i vi AIR phie n ba n

- 141 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

mi nha t se ho tr a y u ca c s kie n la ng nghe tre n. o i vi phie n ba n Flash


Plugin cho trnh duye t web, se co nhie u s kie n la ng nghe kho ng c ho tr.
Chu ng ta se tha o lua n mo t v du ve s kie n la ng nghe la ENTER_FRAME. S kie n
na y se die n tie n khi frame hie n ta i ang va o vu ng frame c trnh chie u (tc
no se die n ra ngay sau khi phim c khi ta o cho e n khi na o ke t thu c trnh
chie u phim). Hie n nhie n no se die n ra ma i trong trng hp phim c la p la i vo
ha n. V du ta se ta o ra mo t qua bo ng ma u en va cho no di chuye n lie n tu c sang
pha i.
import flash.display.Shape;
import flash.events.Event;
var sh:Shape = new Shape();
sh.graphics.beginFill(0x000000);
sh.graphics.drawCircle(20, 20, 10);
sh.graphics.endFill();
addChild(sh);
stage.addEventListener(Event.ENTER_FRAME, fl_moveRight);
function fl_moveRight(e:Event):void
{
sh.x += 1;
}
Ta lu y ra ng, ENTER_FRAME la s kie n la ng nghe co the a p du ng cho nhie u o i
tng. Trong trng hp na y, ta co the a p du ng cho stage hoa c chnh o i tng
sh. Ve hie u qua , trong trng hp na y kho ng co s kha c bie t na o v movie ch co
mo t frame duy nha t ne n frame hie n ta i luo n trong vu ng frame trnh chie u (cu a
stage cu ng gio ng nh cu a o i tng sh).
5.7.4. S kin chut

Khi lm vic vi s kin chuo t trong AS, ta cn ci t tn hin th cho i tng.


Chi tit v iu ny, chng ta s tm hiu k hn trong mc 5.7. minh ha cho
vic x l s kin chut trong AS, ta s minh ha s kin ny trn i tng stage
(khung trnh chiu). V du sau a y se in ra do ng ch Hello khi nha p chuo t tra i
ln stage.
import flash.events.MouseEvent;
stage.addEventListener(MouseEvent.CLICK, func);
function func(e:MouseEvent):void{

- 142 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

trace("Hello");
}
Ca ch x ly s kie n chuo t hoa n toa n gio ng nh x ly s kie n mu c 5.7.3. S kie n
chuo t c qua n ly bi lp MouseEvent. S kie n chuo t la ng nghe (tham so a u
tie n trong phng thc addEventListener) co the nha n mo t trong ca c gia tri sau:
S KIN CHUT LNG NGHE
GII THCH
CLICK : String = "click"
Khi kch n chuo t tra i le n o i tng.
CONTEXT_MENU : String =
"contextMenu"

Khi menu ng ca nh hie n ra (menu ng ca nh


hie n ra sau khi ta kch chuo t pha i le n o i
tng).
Khi kch o i chuo t tra i le n o i tng.

MIDDLE_CLICK : String =
"middleClick"

Khi kch chuo t gia (con la n) le n o i tng.

MIDDLE_MOUSE_UP : String =
"middleMouseUp"

Khi chuo t gia (con la n) c tha ra kho i o i


tng.

DOUBLE_CLICK : String =
"doubleClick"

MIDDLE_MOUSE_DOWN : String
= "middleMouseDown"

Khi chuo t gia (con la n) c nha n le n o i


tng.

MOUSE_DOWN : String =
"mouseDown"

Khi chuo t tra i c nha n le n o i tng.

MOUSE_MOVE : String =
"mouseMove"

Khi tro chuo t di chuye n tre n o i tng.

MOUSE_OVER : String =
"mouseOver"

Khi tro chuo t a t tre n o i tng.

MOUSE_WHEEL : String =
"mouseWheel"

Khi chuo t gia (con la n) la n tre n o i tng.

MOUSE_OUT : String =
"mouseOut"

Khi tro chuo t di chuye n ra kho i o i tng.

MOUSE_UP : String = "mouseUp"

Khi chuo t tra i c tha ra kho i o i tng.

RIGHT_CLICK : String =

Khi nha p chuo t pha i le n o i tng.

- 143 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

"rightClick"

RIGHT_MOUSE_DOWN : String =
"rightMouseDown"
RIGHT_MOUSE_UP : String =
"rightMouseUp"

Khi chuo t pha i nha n le n o i tng.


Khi chuo t pha i c tha ra kho i o i tng.

ROLL_OUT : String = "rollOut"

Ne u mouseEnabled = false th tng t


MOUSE_OUT, ngc la i, ne u true th no se
kha c ch duy nha t mo t ie m khi no co o i
tng con trong (nga n vie c xa y ra s kie n
cu a o i tng con).
ROLL_OVER : String = "rollOver" Tng t nh tre n khi so sa nh vi
MOUSE_OVER.
Cu ng tng t nh Event, MouseEvent vi ca c tham so s kie n chuo t la ng nghe
tre n c ho tr hoa n toa n vi phie n ba n AIR mi nha t. Tu y theo ca c phie n ba n
AVM kha c nhau ma mc ho tr ca c tham so s kie n chuo t la ng nghe kha c nhau.
5.7.5. S kin bn phm

Hon ton tng t s kin chut, e nm bt c cc s kin ba n phm ta s


du ng lp KeyboardEvent. Khi la m vie c vi ca c s kie n ba n phm, ta ca n la m vie c
vi ca c phm. Cc phm na y c qun l bi lp Keyboard trong AS.
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
stage.addEventListener(KeyboardEvent.KEY_UP, func);
function func(e:KeyboardEvent):void{
if(e.keyCode==Keyboard.ENTER)
trace("Hello ");
}

Trong v du tre n, khi ta nha n phm Enter th se in ra do ng tho ng ba o Hello. S


kin ca phm KeyboardEvent ch bao gm KEY_UP (khi phm c nha ra) v
KEY_DOWN (khi phm c a n xuo ng). Trong lp KeyboardEvent co ca c thuo c
tnh sau:
THUC TNH
GII THCH
altKey:Boolean
Phm a n la phm Alt
ctrlKey:Boolean
Phm a n la phm Ctrl

- 144 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

shiftKey:Boolean
commandKey:Boolean
controlKey:Boolean
charCode:uint
keyCode:uint
KeyLocation:uint

Phm a n la phm Shift


Phm a n la ca c phm le nh
Phm a n la ca c phm ie u khie n
K t c nha n
Ma cu a k t c nha n
Vi tr cu a phm c a n (Shift tra i/pha i, Ctrl
tra i/pha i,
Alt
tra i/pha i)

KeyLocation.LEFT/KeyLocation.RIGHT, phm
chua n KeyLocation.STANDARD, phm so
KeyLocation.NUM_PAD.
Lp KeyBoard co ca c thuo c tnh sau:
THUC TNH
GII THCH
capsLock:Boolean
Ba t che o CapsLock hay kho ng.
hasVirtualKeyboard:Boolean
Co s du ng ba n phm a o hay khng.
numLock:Boolean
Co ba t che o NumLock hay kho ng.
Ngoa i ra, trong lp KeyBoard na y co inh ngha mo t so ha ng so tng ng vi ca c
phm nha n tre n ba n phm (cho ca he ma y Windows, MacOS, Linux). Ba ng sau a y
lie t ke ca c phm cu ng vi ma hoa c no i dung tng ng.
A : uint = 65
M : uint = 77
ALTERNATE : uint = 18
MINUS : uint = 189
B : uint = 66
N : uint = 78
BACKQUOTE : uint = 192
NUMBER_0 : uint = 48
BACKSLASH : uint = 220
NUMBER_1 : uint = 49
BACKSPACE : uint = 8
NUMBER_2 : uint = 50
C : uint = 67
NUMBER_3 : uint = 51
CAPS_LOCK : uint = 20
NUMBER_4 : uint = 52
CharCodeStrings : Array
NUMBER_5 : uint = 53
COMMA : uint = 188
NUMBER_6 : uint = 54
COMMAND : uint = 15
NUMBER_7 : uint = 55
CONTROL : uint = 17
NUMBER_8 : uint = 56
D : uint = 68
NUMBER_9 : uint = 57
DELETE : uint = 46
NUMPAD : uint = 21
DOWN : uint = 40
NUMPAD_0 : uint = 96
E : uint = 69
NUMPAD_1 : uint = 97
END : uint = 35
NUMPAD_2 : uint = 98
ENTER : uint = 13
NUMPAD_3 : uint = 99
EQUAL : uint = 187
NUMPAD_4 : uint = 100
ESCAPE : uint = 27
NUMPAD_5 : uint = 101
F : uint = 70
NUMPAD_6 : uint = 102
F1 : uint = 112
NUMPAD_7 : uint = 103

- 145 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

F10 : uint = 121


F11 : uint = 122
F12 : uint = 123
F13 : uint = 124
F14 : uint = 125
F15 : uint = 126
F2 : uint = 113
F3 : uint = 114
F4 : uint = 115
F5 : uint = 116
F6 : uint = 117
F7 : uint = 118
F8 : uint = 119
F9 : uint = 120
G : uint = 71
H : uint = 72
HOME : uint = 36
I : uint = 73
INSERT : uint = 45
J : uint = 74
K : uint = 75
KEYNAME_BEGIN : String = "Begin"
KEYNAME_BREAK : String = "Break"
KEYNAME_CLEARDISPLAY : String =
"ClrDsp"
KEYNAME_CLEARLINE : String = "ClrLn"
KEYNAME_DELETE : String = "Delete"
KEYNAME_DELETECHAR : String =
"DelChr"
KEYNAME_DELETELINE : String =
"DelLn"
KEYNAME_DOWNARROW : String =
"Down"
KEYNAME_END : String = "End"
KEYNAME_EXECUTE : String = "Exec"
KEYNAME_F1 : String = "F1"
KEYNAME_F10 : String = "F10"
KEYNAME_F11 : String = "F11"
KEYNAME_F12 : String = "F12"
KEYNAME_F13 : String = "F13"
KEYNAME_F14 : String = "F14"
KEYNAME_F15 : String = "F15"
KEYNAME_F16 : String = "F16"

NUMPAD_8 : uint = 104


NUMPAD_9 : uint = 105
NUMPAD_ADD : uint = 107
NUMPAD_DECIMAL : uint = 110
NUMPAD_DIVIDE : uint = 111
NUMPAD_ENTER : uint = 108
NUMPAD_MULTIPLY : uint = 106
NUMPAD_SUBTRACT : uint = 109
O : uint = 79
P : uint = 80
PAGE_DOWN : uint = 34
PAGE_UP : uint = 33
PERIOD : uint = 190
Q : uint = 81
QUOTE : uint = 222
R : uint = 82
RIGHT : uint = 39
RIGHTBRACKET : uint = 221
S : uint = 83
SEMICOLON : uint = 186
SHIFT : uint = 16
SLASH : uint = 191
SPACE : uint = 32
STRING_BEGIN : String = "$"
STRING_BREAK : String = "$"
STRING_CLEARDISPLAY : String = "$"
STRING_CLEARLINE : String = "$"
STRING_DELETE : String = "$"
STRING_DELETECHAR : String = "$"
STRING_DELETELINE : String = "$"
STRING_DOWNARROW : String = "$"
STRING_END : String = "$"
STRING_EXECUTE : String = "$"
STRING_F1 : String = "$"
STRING_F10 : String = "$"
STRING_F11 : String = "$"
STRING_F12 : String = "$"
STRING_F13 : String = "$"
STRING_F14 : String = "$"
STRING_F15 : String = "$"
STRING_F16 : String = "$"
STRING_F17 : String = "$"
STRING_F18 : String = "$"

- 146 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

KEYNAME_F17 : String = "F17"


KEYNAME_F18 : String = "F18"
KEYNAME_F19 : String = "F19"
KEYNAME_F2 : String = "F2"
KEYNAME_F20 : String = "F20"
KEYNAME_F21 : String = "F21"
KEYNAME_F22 : String = "F22"
KEYNAME_F23 : String = "F23"
KEYNAME_F24 : String = "F24"
KEYNAME_F25 : String = "F25"
KEYNAME_F26 : String = "F26"
KEYNAME_F27 : String = "F27"
KEYNAME_F28 : String = "F28"
KEYNAME_F29 : String = "F29"
KEYNAME_F3 : String = "F3"
KEYNAME_F30 : String = "F30"
KEYNAME_F31 : String = "F31"
KEYNAME_F32 : String = "F32"
KEYNAME_F33 : String = "F33"
KEYNAME_F34 : String = "F34"
KEYNAME_F35 : String = "F35"
KEYNAME_F4 : String = "F4"
KEYNAME_F5 : String = "F5"
KEYNAME_F6 : String = "F6"
KEYNAME_F7 : String = "F7"
KEYNAME_F8 : String = "F8"
KEYNAME_F9 : String = "F9"
KEYNAME_FIND : String = "Find"
KEYNAME_HELP : String = "Help"
KEYNAME_HOME : String = "Home"
KEYNAME_INSERT : String = "Insert"
KEYNAME_INSERTCHAR : String =
"InsChr"
KEYNAME_INSERTLINE : String =
"InsLn"
KEYNAME_LEFTARROW : String = "Left"
KEYNAME_MENU : String = "Menu"
KEYNAME_MODESWITCH : String =
"ModeSw"
KEYNAME_NEXT : String = "Next"
KEYNAME_PAGEDOWN : String = "PgDn"
KEYNAME_PAGEUP : String = "PgUp"
KEYNAME_PAUSE : String = "Pause"

STRING_F19 : String = "$"


STRING_F2 : String = "$"
STRING_F20 : String = "$"
STRING_F21 : String = "$"
STRING_F22 : String = "$"
STRING_F23 : String = "$"
STRING_F24 : String = "$"
STRING_F25 : String = "$"
STRING_F26 : String = "$"
STRING_F27 : String = "$"
STRING_F28 : String = "$"
STRING_F29 : String = "$"
STRING_F3 : String = "$"
STRING_F30 : String = "$"
STRING_F31 : String = "$"
STRING_F32 : String = "$"
STRING_F33 : String = "$"
STRING_F34 : String = "$"
STRING_F35 : String = "$"
STRING_F4 : String = "$"
STRING_F5 : String = "$"
STRING_F6 : String = "$"
STRING_F7 : String = "$"
STRING_F8 : String = "$"
STRING_F9 : String = "$"
STRING_FIND : String = "$"
STRING_HELP : String = "$"
STRING_HOME : String = "$"
STRING_INSERT : String = "$"
STRING_INSERTCHAR : String = "$"
STRING_INSERTLINE : String = "$"
STRING_LEFTARROW : String = "$"
STRING_MENU : String = "$"
STRING_MODESWITCH : String = "$"
STRING_NEXT : String = "$"
STRING_PAGEDOWN : String = "$"
STRING_PAGEUP : String = "$"
STRING_PAUSE : String = "$"
STRING_PREV : String = "$"
STRING_PRINT : String = "$"
STRING_PRINTSCREEN : String = "$"
STRING_REDO : String = "$"
STRING_RESET : String = "$"

- 147 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

KEYNAME_PREV : String = "Prev"


STRING_RIGHTARROW : String = "$"
KEYNAME_PRINT : String = "Print"
STRING_SCROLLLOCK : String = "$"
KEYNAME_PRINTSCREEN : String =
STRING_SELECT : String = "$"
"PrntScrn"
STRING_STOP : String = "$"
KEYNAME_REDO : String = "Redo"
STRING_SYSREQ : String = "$"
KEYNAME_RESET : String = "Reset"
STRING_SYSTEM : String = "$"
KEYNAME_RIGHTARROW : String =
STRING_UNDO : String = "$"
"Right"
STRING_UPARROW : String = "$"
KEYNAME_SCROLLLOCK : String =
STRING_USER : String = "$"
"ScrlLck"
T : uint = 84
KEYNAME_SELECT : String = "Select"
TAB : uint = 9
KEYNAME_STOP : String = "Stop"
U : uint = 85
KEYNAME_SYSREQ : String = "SysReq"
UP : uint = 38
KEYNAME_SYSTEM : String = "Sys"
V : uint = 86
KEYNAME_UNDO : String = "Undo"
W : uint = 87
KEYNAME_UPARROW : String = "Up"
X : uint = 88
KEYNAME_USER : String = "User"
Y : uint = 89
Z : uint = 90
LEFT : uint = 37
LEFTBRACKET : uint = 219
Trong o , "$" bie u die n cho gia tri di da ng xa u cu a k t kho ng the bie u die n
tng minh (a so chu ng la ca c k t tre n ne n MacOS).
5.7.6. Lm vic vi Timer

Timer la mo t lp o i tng du ng e qua n ly ca c s vie c die n tie n theo thi gian.


Timer c to chc trong package flash.utils. Timer co nhie u ne t tng o ng vi
s kie n la ng nghe ENTER_FRAME. Ta co the du ng no e ta o chuye n o ng cho o i
tng. Tuy nhie n, Timer co u ie m hn ENTER_FRAME ie m no co the c
ie u khie n (ba t a u, dng, qua n ly theo vie c nga t).
Trong ActionScript 3, e ta o mo t o i tng the hie n cu a lp Timer, ta s du ng
ha m ta o sau:
var myTimer:Timer = new Timer(delay:Number, repeatCount:int = 0);
Trong o :
- Tham so delay: o tre ca p nha p cu a Timer (sau bao nhie u mili gia y th no se ca p
nha t la i ha nh o ng).
- Tham so repeatCount: ha nh o ng se la p la i bao nhie u la n. Theo ma c inh la 0
tc la p vo ha n.
e a mo t ha nh o ng ca n thc thi va o Timer, ta ca n thc hie n theo hai bc
sau:
Bc 1. Bo sung bo la ng nghe s kie n cho Timer.
myTimer.addEventListener(TimerEvent.TIMER, update);

- 148 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

function update(e:TimerEvent):void
{

}
S kie n la ng nghe cu a Timer trong trng hp na y la TIMER. Ha nh o ng se ca p
nha t tng ng vi ha m update.
Bc 2.Trie u go i phng thc start cu a o i tng myTimer: myTimer.start().
Khi ca n cha m dt ha nh o ng cu a Timer, ta trie u go i phng thc stop:
myTimer.stop().
Sau a y, ta se tham kha o v du minh ho a cho vie c s du ng Timer e ca p nha t thi
gian. Trong trng hp na y, ta co 2 nu t le nh: nu t Start e cho o ng ho cha y, nu t
Stop e dng la i. Thi gian se c ca p nha t le n o i tng Label. o i vi ca c nu t
le nh, ta s du ng Button. Ca c o i tng na y na m trong vu ng qua n ly Component
(phm ta t Ctrl+F7). Ca c o i tng na y c bo tr tre n stage nh hnh minh ho a
be n di:

mu c Instace Name (trong ca so Properties) cu a ca c o i tng Label, Button


Start va Stop ta la n lt a t te n cho chu ng la : lbDongHo, btStart, btStop. La n lt
cho n ca c o i tng btStart va btStop, cho n ca so Code Snippets, cho n nho m
Event Handlers va kch hoa t chc na ng Mouse Click Event. Trong chc na ng cu a
btStart, ta nha p le nh myTimer.start() va trong chc na ng cu a btStop, ta nha p le nh
myTimer.stop(). e la y thi gian, ta s du ng lp Date cu ng vi ca c phng thc
getHours la y gi, getMinutes la y phu t, getSeconds la y gia y. Toa n bo ma
nguo n cu a v du c cho be n di:
import flash.utils.Timer;
import flash.events.TimerEvent;
var myTimer:Timer = new Timer(100);
myTimer.addEventListener(TimerEvent.TIMER, update);

- 149 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

function update(e:TimerEvent):void
{
var t:Date = new Date();
lbDongHo.text = t.getHours() + ":" + t.getMinutes() + ":" + t.getSeconds();
}
btStart.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
function fl_MouseClickHandler(event:MouseEvent):void
{
myTimer.start();
}
btStop.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler_2);
function fl_MouseClickHandler_2(event:MouseEvent):void
{
myTimer.stop();
}
Ca n lu y , trong ha m khi ta o cu a Timer, ta s du ng mo t tham so . ie u na y co
ngha la tham so th hai c hie u nga m inh tc la 0.
5.7.7. Lm vic vi cc thnh phn h tr giao din ngi dng GUI

Ke t khi Adobe pha t trie n Flash theo hng xa y dng ng du ng (Desktop va


Web) va kho ng co n n thua n ch phu c vu cho co ng nghe multimedia th ho a
bo sung ca c th vie n ho tr giao die n ngi du ng. Ca c tha nh pha n na y chu ye u
phu c vu cho ca c ng du ng cha y tre n AIR va RIA cho web. Ca c o i tng cu ng vi
ca c thuo c tnh va phng thc cu a chu ng co the tham kha o the m trong mu c tr
giu p cu a Adobe. Trong trnh soa n tha o ActionScript, ta co the tham kha o ca c
phng thc va thuo c tnh cu a ca c lp o i tng ho tr GUI. Tuy nhie n, se kho ng
co the m ba t tr ho tr gia i thch na o. Ca c tha nh pha n na y chu ye u na m trong
package fl.controls. Trong pha m vi gia o trnh phu c vu cho co ng nghe gia i tr a
phng tie n, chu ng to i kho ng tha o lua n chi tie t ve ca c tha nh pha n na y. Ne u ba n
muo n tm hie u k hn, ba n co the tham kha o the m trong pha n ho tr t Adobe.
Hnh minh ho a be n di ch ra ca c lp o i tng na m trong package fl.controls
phu c vu cho vie c thie t ke giao die n ngi du ng cho ng du ng Desktop va Web
theo phong ca ch co ie n.

- 150 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Trong package na y go m co ca c lp o i tng


quan tro ng sau:
- Lp Button: ta o ca c nu t nha n.
- Lp CheckBox: ta o o i tng cho phe p cho n (co
the cho n nhie u o i tng CheckBox ne u chu ng
na m trong cu ng mo t nho m).
- Lp RadioButton: ta o o i tng cho phe p cho n
(ch c cho n mo t o i tng RadioButton duy
nha t ne u chu ng na m trong cu ng mo t nho m).
- Lp ColorPicker: ho p thoa i e cho n ma u.
- Lp ComboBox: ta o mo t danh sa ch tha xuo ng.
- Lp DataGrid: ta o mo t ba ng e cha d lie u
c to chc theo ba ng.
- Lp Label: ta o mo t nha n.
- Lp List: ta o mo t danh sa ch.
- Lp NumericStepper: ta o mo t o i tng e
cho n gia tri so . Ca c gia tri thay o i ba ng ca ch
nha p trc tie p va o hoa c nha n va o ca c nu t le n
xuo ng.
- Lp ProgressBar: ta o thanh bie u die n cho tie n
o thc hie n co ng vie c.
- Lp RadioButtonGroup: ta o mo t danh sa ch
RadioButton.

Hnh 103 Ca c o i tng ho tr GUI trong ActionScript 3.


- Lp ScrollBar: ta o thanh cuo n.
- Lp Slider: ta o o i tng e cho n gia tri so ba ng ca ch ke o nu t a nh da u e n ca c
vi tr tre n thanh trt.
- Lp TextArea: ta o mo t o i tng nha p va hie n thi va n ba n tre n nhie u do ng.
- Lp TextInput: ta o o i tng nha p va n ba n tre n mo t do ng.
- Lp TitleList: ta o o i tng hie n thi da ng Windows Explorer.
e xem chi tie t ve ca c phng thc, thuo c tnh va s kie n ho tr, ha y ba t ca c chc
na ng ca c lp tng ng.

5.8. a mt i tng vo ActionScript

Flash cho php bn to mt i tng bng cc cng c v. a cc i tng ny


v cc i tng c cung cp sn (nh cc thnh phn GUI e ca p tre n) vo
AS. e a mo t o i tng ngoa i va o trong mo i trng runtime cu a Flash, bn cn

- 151 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

chuyn i cc i tng ca bn thnh cc biu tng MovieClip hoc Button.


i tng Graphic khng c h tr bi actionscript.
Sau , bn hy kch chn i tng. Trong bng thuc tnh, bn hy nhp tn
ca i tng th hin cn to ra vo mc <Instance Name>, sau nhp Enter.
Gi y, i tng ca bn c khi to v bn c th thao tc vi n bn
trong AS theo tn th hin m bn va ci t.

Hnh 104 To mt tn th hin cho i tng

Nu bn import mt i tng t bn ngoi vo trong th vin Library, bn cng


c th to mt lp cha n (tc l lp to ra i tng ny).
Chng ta s xy dng on chng trnh sau y: Import mt file m thanh vo
trong Library. Khi bm chut vo nt Play th n s chi file m thanh ny.
- Trong Stage, bn hy to mt nt Play (l biu tng Button) v ci t tn th
hin cho n l btPlay.
- Thc hin import file m thanh vo trong th vin. Trong ca s th vin
Library, bm chn file m thanh, kch chut phi v chn Properties.

Hnh 105 Thao tc vi thuc tnh Properties ca i tng trong th vin

- 152 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

- Khi , s xut hin hp thoi Properties nh sau:

Hnh 106 Hp thoai Properties ca i tng file m thanh

Bn cn nh du tch vo Export for ActionScript. Trong Class, bn nhp vo tn


lp s c xy dng cho i tng m thanh ny (v d l myMusic). Ngay bn
di l Base Class ca n tc lp c s m n tha k. Sau nhp Ok.
Kt thc cc thao tc trn, bn nhn c mt i tng btPlay v mt lp
myMusic. Tip theo, bn s bt tay vo vit m lnh cho chng trnh.
- Nhn F9 m khung son tho ActionScript. Bn hy b sung s kin kch
chut cho i tng btPlay nh sau
import flash.events.MouseEvent;
btPlay.addEventListener(MouseEvent.CLICK, func);
var Player:flash.media.Sound = new myMusic();
function func(e:MouseEvent):void{
Player.play();
}

i tng Player l mt s th hin ca lp myMusic. Khi bm chut vo nt


btPlay, hm func s c gi n. Kt qu l phng thc play ca i tng
Player c thc thi. Ne u muo n bo sung the m phng thc, thuo c tnh cho lp
myMusic, ta ch vie c the m ma le nh va o trong lp myMusic thu c tre n. Ba n
cu ng ca n lu y ra ng, trong trng hp na y, lp myMusic ke tha lp
flash.media.Sound ne n no co phng thc play e chi nha c.

- 153 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

5.9. Lm vic vi XML


a. i tng XML
lm vic vi xml, ta s dng i tng XML. i tng ny c hm khi to
nh sau:
var xml:XML = new XML(
<books>
<book>Ton</book>
<book>L</book>
</books>
);
trace(xml.children()[0]);

Trong v d ny, ta c mt cu trc xml n gin. Phng thc children s tr v


mt mng cc i tng con ca books tc l mng cc book. Ta c th truy cp
chng theo ch s - ch s c nh s t 0.
Ta c th tri nghim vi mt cu trc xml theo nh dng khc c s dng
rng ri hin nay.
var xml:XML = new XML(
<books>
<book name=Ton description=Lp 12>book1</book>
<book name=L description=Lp 11>book2</book>
</books>
);
trace(xml.children()[0]. attribute(name));

b. c file xml bng URLLoader


Trong trng hp trn, ta lm vic vi mt cu trc xml bn trong AS. c
mt file xml t bn ngoi, bn phi s dng mt i tng URLLoader. Bn hy
quan st m ngun sau:
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
var xmlloader:URLLoader = new URLLoader();
var xml;
xmlloader.load(new URLRequest("book.xml"));
xmlloader.addEventListener(Event.COMPLETE, success);
function success(e:Event):void{

- 154 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

xml = new XML(e.target.data);


trace(xml.children()[0].attribute("name"));

i tng URLLoader c khi to nh vo phng thc load t mt


URLRequest. i tng URLRequest ny khi to nh hm to t mt file xml ch
nh. Chng ta ch c th thao tc vi file xml khi n c ti xong nh vo s
kin Event.COMPLETE. D liu t file xml c c s lu vo target.data ca
Event .

5.10. Vng chc nng Code Snippets

Chng ta s tm hiu chi tit v cc nhm chc nng c t chc trong vng
Code Snippets ny. Nhng trc tin, chng ta s tm hiu v chng thng qua
cc v d minh ha.
To chic ng h treo tng
Trong v d ny, chng ta s tm hiu cch to mt chic ng h treo tng. Bn
hy s dng cc cng c v to cho mnh mt chic ng h theo thch ca
bn. Nhng bn cn lu mt vi im sau y:

Cc kim quay phi nm trn cc Layer ring bit. Chng phi l cc MovieClip.
Tm xoay ca cc kim quay ny phi nm mt u ca n.
Cc phn cn li ca ng h, ty thuc vo mc ch ca bn, bn c th to
trn cc Layer khc nhau, hoc trn cng mt Layer.

Trong chic h m ti to, ti s dng cc Layer sau y:

Layer Oclock: chc phn khung ca chic ng h, b mt ng h.


Layer Node: cha cc mc thi gian (4 mc thi gian).
Layer Hours (cha kim gi), Layer Minutes (cha kim pht), Layer Seconds
(cha kim giy).
Layer Center: nt gc ca cc kim quay.
Bn lu n trt t ca cc Layer. Layer Node trn Layer Oclock, Layer cc
kim quay trn Layer Node, Layer center trn Layer cc kim quay che i
phn gc quay ca cc kim quay.

- 155 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Hnh 107 To ng h kim quay bang chc nng Code Snippets


Chc bn s thc mc Layer Action trong trng hp ny dng lm g. Chng
ta s bit ngay sau y.
i vi cc kim quay, bn cn ci t tn th hin cho n. V d ti t tn cho cc
i tng kim quay nh sau: kim gi l hourobj, kim pht l minobj, kim giy l
secobj.

Hnh 108 Ci t tn th hin cho cc MovieClip kim quay

Tip theo, bn hy chn mt i tng kim quay, bm vo khung Code Snippets


(hoc Windows > Code Snippets). Trong ca s ny, bn chn nhm Animation >
Rotate Continuously.

- 156 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Hnh 109 Vng Code Snippets: Rotate Continuously

Khi , Flash s chn t ng mt Action Frame vo trong TimeLine v khi to


ni dung Action cho bn nh sau.
minobj.addEventListener(Event.ENTER_FRAME, fl_RotateContinuously);
function fl_RotateContinuously(event:Event)
{
}

//Son tho m chng trnh y


minobj.rotation += 10;

By gi bn hy thay on m trong hm fl_RotateContinuously bng on m


sau
var dd:Date = new Date();
hourobj.rotation = ((dd.getHours()>=12)?(dd.getHours()):(dd.getHours()12))*30;
minobj.rotation = dd.getMinutes()*6;
secobj.rotation = dd.getSeconds()*6;
Trc khi thay th hai on m ny, bn nn kim tra xem chic ng h ca bn
hot ng nh th no nh. R rang n ch xoay duy nht chic kim pht m
thi. Bn cng lu rng hiu ng ny ca Code Snippets l hiu ng quay lin
tc (Rotate Continuously), do , bn khng cn tng tc vi i tng Timer.
Gii thch: cho chic ng h hot ng ng, ta cn b sung s kin thi gian
cho n. Bin dd thuc kiu Date. Ta s dng hm khi to Date() khi to gi

- 157 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

tr cho bin dd. i tng thuc kiu Date c nhiu hm to khc nhau, nhng
y ta s dng hm to khng i s. Vi hm to ny, i tng dd s nhn gi
tr l thi gian hin ti. Ta s s dng cc phng thc getHours, getMinutes,
getSeconds ly gi, pht, giy tng ng. y, Flash s dng bin c
Event.ENTER_FRAME. Vi bin c ny, hnh ng s lin tc c cp nhp trn
tng frame. Bn lu rng mc nh, s Frame trn mt giy l 24fps. Do , bn
hon ton yn tm rng thi gian trn ng h ca bn s c cp nht n
tng 1/24 giy.
Tip theo, chng ta s tho lun v cc cng thc tnh gc quay. Chng ta bit
rng khi kim pht v kim giy quay ng mt vng l 60 pht hoc 60 giy. N
tng ng vi s o l 3600. Nh vy, tng ng vi 1 pht hoc 1 giy s c s
o l 60. Nu c s pht v s giy hin ti, ta ch vic nhn vi 6 l nhn c kt
qu ca gc o tng ng vi pht v giy hin ti.
Vi gi th kt qu s khc. Mt vng quay 3600 ch tng ng vi 12 gi, do ,
mi gi chim n mt gc l 300. Nn gc quay ca kim gi s l s gi nhn vi
30. Mt iu lu na, nu thi gian h thng c nh dng 24h th s c mt
vi sai st xy ra. Do , m bo chic ng h hot ng tt, bn nn kim
tra iu kin: nu s gi vt ngng 12, th s gi s l s gi tr i 12, ngc
li th gi nguyn kt qu . y chnh l gi tr ca ton t iu kin m ta s
dng.
n y, bn s thc mc l ti sao addEventListener li ch p dng cho kim
pht. Cu tr li khng phi nh vy. Bn c th p dng cho mt i tng bt
k. Bn c th hiu chnh ba i tng trn cc Action Frame khc nhau. Nhng
cch thc thi nh th ch lm cho bn tn thi gian, v vic qun l nhiu Frame
s lm cho bn cm thy ri. Bn hon ton c th lm th nu bn mun. Nhng
bn cn lu n mt phng chm khi lp trnh l Cng n gin, nh gn
nhng vn m bo y cc ni dung th cng tt.
To Menu iu khin cc cnh quay trong Game
Trong v d ny, chng ta s tho lun cch to mt Menu iu khin Game.
Bn hy to 4 cnh quay Scene v t tn cho chng ln lt l: Menu, Result,
Play v Help. Cc Scene ny c sp xp theo th t nh sau

- 158 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Hnh 110 Th t ca cc Scene

Bn c th trang tr cho cc Scene ny ty . Trn Scene Menu cha ba MenuItem


l Result, Play v Help nh hnh bn di. Khi bn nhn vo Play, chng trnh s
chuyn sang Scene Play chi game. Khi bn nhn vo Result, chng trnh s
chuyn n Scene Result xem kt qu. Khi bn nhn vo Help, chng trnh s
chuyn n Scene Help xem hng dn chi game. Bn cng lu trn mi
Scene Result, Play v Help c Menu Back tr li Menu chnh.

Hnh 111 Scene Menu

Trong cc Scene cn li, cha ni dung lin quan v menu Back quay tr li
Scene Menu ny.
By gi, chng ta s s dng chc nng Code Snippets to cc hiu ng m
chng ta tho lun trn.
Trc tin, ta s to hiu ng Button cho cc MenuItem ny. Bn hy ln lt
chn Play, sau vo Commands > Make Button. Lp li iu ny cho Help v
Result. cc Scene Play, Help, Result bn b sung vo dng lnh
stop();
vo v tr cui cng ca m lnh ( y dng lnh ny l duy nht v ti khng
xy dng mt chng trnh hon chnh).
Tip theo, bn hy nhp vo nt Play trn Scene Menu, bm chn chc nng Code
Snippets. Bn chn nhm TimeLine and Navigation. Tip n, bn chn chc
nng Click to Go to Scene and Play. Khi , Flash s sinh on m sau
btPlay.addEventListener(MouseEvent.CLICK, fl_ClickToGoToScene);
function fl_ClickToGoToScene(event:MouseEvent):void
{
MovieClip(this.root).gotoAndPlay(1, "Play");

- 159 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Bn cn thay i tn ca Scene cho ph hp vi Scene s chuyn n trong dng


lnh
MovieClip(this.root).gotoAndPlay(1, "i tn Scene");
Bn hy thc hin thao tc ny cho nhng chc nng cn li. Cui cng, bn nhn
t hp Ctrl+Enter kim tra kt qu.
Nu bn mun xy dng mt d n game hon chnh, bn hy lp trnh game ca
bn vo trong Scene Play.

Actions

Bng chc nng trong vng Code Snippets.


Nhm Chc nng
Code
movieClip_1.addEventListener(
MouseEvent.CLICK,
fl_ClickToGoToWebPage);
function
fl_ClickToGoToWebPage(event:
MouseEvent):void
{
navigateToURL(new
Click to go
URLRequest("http://www.ado
to Web
be.com"), "_blank");
page
}

Custom
Mouse
Cursor

//on m 1
stage.addChild(movieClip_1);
movieClip_1.mouseEnabled =
false;
movieClip_1.addEventListener(
Event.ENTER_FRAME,
fl_CustomMouseCursor);

- 160 -

Gii thch
Cho php m mt lin
kt khi nhp chut vo
i tng.

movieClip_1: l i
tng khi ta nhp
chut ln n.
navigateToURL:
phng thc m lin
kt. N gm hai tham
s - URLRequest
(c khi to t
mt tham s String)
v tham s String quy
nh cch m lin kt
(_blank,
_parent,
_selft, _top).

on m 1: thay i
hnh dng ca tr chut
sang hnh dng nh ca
i tng moveClip_1.
Thuc
tnh
mouseEnabled
=
false: khng cho php
kch hot chut trn

CHNG 5. LP TRNH VI ACTIONSCRIPT

function
i
tng
fl_CustomMouseCursor(event:
moveClip_1.
Event)
Thuc tnh x, y ca
{
movieClip_1: honh
movieClip_1.x
=
x v tung y ca
stage.mouseX;
i
tng
movieClip_1.y
=
movieClip_1.
stage.mouseY;
stage.mouseX,
}
stage.mouseY:
Mouse.hide();
phng thc ca i
tng stage (khung
trnh din) xc
nh v tr ca tr
chut trn khung
trnh chiu ny.
//on m 2
movieClip_1.removeEventListe Mouse.hide: phng
thc hide ca i
ner(Event.ENTER_FRAME,
tng Mouse cho
fl_CustomMouseCursor);
php n i hnh dng
stage.removeChild(movieClip_
ca tr chut.
1);
Mouse.show();

on m 2: thay i
hnh dng ca tr chut
sang dng mc nh ban
u.
removeEventListener
: hy s kin chut
i vi i tng
movieClip_1.
removeChild: xa i
tng trn khung
trnh chiu stage.
Mouse.show: phng
thc show ca i
tng Mouse cho
php hin hnh dng

- 161 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Drag &
Drop

movieClip_1.addEventListener(
MouseEvent.MOUSE_DOWN,
fl_ClickToDrag);
function
fl_ClickToDrag(event:MouseEv
ent):void
{
movieClip_1.startDrag();
}
stage.addEventListener(Mouse
Event.MOUSE_UP,
fl_ReleaseToDrop);
function
fl_ReleaseToDrop(event:Mouse
Event):void
{
movieClip_1.stopDrag();
}

ca tr chut theo
mc nh.

Thc hin thao tc ko


th mt i tng. i
tng c ko th l
movieClip_1. thc
hin thao tc ko i
tng, ta kt hp vi s
kin MOUSE_DOWN ln
i tng v triu gi
phng thc startDrag
ca n. Ngc li,
dng vic ko i tng
(th i tng) ta kt
hp s kin MOUSE_UP
ca i tng v triu
gi
phng
thc
stopDrag.

Bt u trnh din
movieClip_1.
Dng vic trnh din
Stop a MC movieClip_1.stop();
movieClip_1.
movieClip_1.addEventListener( Khi nhp chut vo i
MouseEvent.CLICK,
tng movieClip_1 th
fl_ClickToHide);
i tng movieClip_2
s n i. Thuc tnh
function
visible quy nh vic
Click to hide
fl_ClickToHide(event:MouseEv n/hin ca mt i
an Object
ent):void
tng. Nu mun i
{
tng movieClip_2 hin
movieClip_2.visible
= tr li, ta thay i gi tr
false;
ca movieClip_1.visible =
}
true.
Show an
movieClip_1.visible = true;
Hin
i
tng
Object
movieClip_1.
Play a MC

movieClip_1.play();

- 162 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Click to
Position an
Object

Click to
Display a
TextField

Generate a
Random
Number

movieClip_1.addEventListener(
MouseEvent.CLICK,
fl_ClickToPosition);
function
fl_ClickToPosition(event:Mous
eEvent):void
{
movieClip_2.x = 200;
movieClip_2.y = 100;
}
movieClip_1.addEventListener(
MouseEvent.CLICK,
fl_ClickToPosition);
var fl_TF:TextField;
var fl_TextToDisplay:String =
"Lorem ipsum dolor sit amet."
function
fl_ClickToPosition(event:Mous
eEvent):void
{
fl_TF = new TextField();
fl_TF.autoSize
=
TextFieldAutoSize.LEFT;
fl_TF.background = true;
fl_TF.border = true;
fl_TF.x = 200;
fl_TF.y = 100;
fl_TF.text
=
fl_TextToDisplay;
addChild(fl_TF);
}
function
fl_GenerateRandomNumber(li
mit:Number):Number
{
var
randomNumber:Number
=

- 163 -

Thay i v tr ca i
tng movieClip_2 khi
nhp chut vo i
tng
movieClip_1.
Thuc tnh x v y gii
thch trn.

Hin th on vn bn ti
mt v tr ch nh khi ta
nhp chut vo mt i
tng.

movieClip_1: i m
ta nhp chut ln n.
fl_TF: l i tng
TextField. TextField
trong trng hp ny
s dng cc thuc
tnh

autoSize,
background, border,
x, y, text. Bn c th
tham kho thm cc
thuc
tnh
ca
TextField trong lp
flash.text.TextField.

Khi to mt s ngu
nhin. to s ngu
nhin, ta s dng lp
Math.

Phng
thc
random: khi to s

CHNG 5. LP TRNH VI ACTIONSCRIPT

Math.floor(Math.random()*(li
mit+1));
return randomNumber;
}
trace(fl_GenerateRandomNum
ber(100));

Bring
Object to
the Front

Simple
Timer

for (var fl_ChildIndex:int = 0;


fl_ChildIndex
<
this.numChildren;
fl_ChildIndex++)
{
this.getChildAt(fl_ChildI
ndex).addEventListener(Mouse
Event.CLICK,
fl_ClickToBringToFront);
function
fl_ClickToBringToFront(event:
MouseEvent):void
{
this.addChild(event.curr
entTarget as DisplayObject);
}
var fl_TimerInstance:Timer =
new Timer(1000, 30);
fl_TimerInstance.addEventList
ener(TimerEvent.TIMER,
fl_TimerHandler);
fl_TimerInstance.start();
var fl_SecondsElapsed:Number
= 1;
function
fl_TimerHandler(event:TimerE
vent):void
{
trace("Seconds elapsed:
" + fl_SecondsElapsed);
fl_SecondsElapsed++;

- 164 -

ngu nhin.
Phng thc floor
ly sn ca mt s
thc. Bi phng
thc random khi to
mt s thc.
Chuyn i tng c
chn ln trn cc i
tng khc. Cc i
tng ny cn c
chuyn
i
thnh
movieClip hoc Button.

To b m thi gian.
i
tng
fl_TimerInstance thuc
lp Timer. N s dng
phng thc khi to c
hai tham s delay v
repeatCount.
delay: tr (tnh
theo
mili
giy,
1ms=1/1000s).
repeatCount: s lc
lp (s dng nu b
m t n gi tr
ny).

CHNG 5. LP TRNH VI ACTIONSCRIPT

TimeLine Navigation

Countdown
Timer

Stop at this
Frame
Click to Go
to Frame
and Stop

var
fl_SecondsToCountDown:Num
ber = 10;
var
fl_CountDownTimerInstance:Ti
mer = new Timer(1000,
fl_SecondsToCountDown);
fl_CountDownTimerInstance.a
ddEventListener(TimerEvent.T
IMER,
fl_CountDownTimerHandler);
fl_CountDownTimerInstance.st
art();
function
fl_CountDownTimerHandler(ev
ent:TimerEvent):void
{
trace(fl_SecondsToCount
Down + " seconds");
fl_SecondsToCountDown
--;
}
stop();

Phng thc start


ca
i
tng
fl_TimerInstance: i
tng bt u thi
hnh. Ngc li vi
phng thc ny l
phng thc stop.
Hon ton tng t nh
b m xui. Gi tr
fl_SecondsToCountDown
l gi tr bt u khi to
khi m ngc.

Dng trnh din movie


ti Frame ny.
movieClip_1.addEventListener( Dng movie ti mt
MouseEvent.CLICK,
Frame c ch nh.
fl_ClickToGoToAndStopAtFram Trong trng hp ny
Frame c ch nh l
e);
function
Frame 5.
fl_ClickToGoToAndStopAtFram

- 165 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Click to Go
to Frame
and Play

Click to Go
to Next
Frame and
Stop

Click to Go
to Previous
Frame and
Stop

Click to Go
to Next
Scene and
Play

e(event:MouseEvent):void
{
gotoAndStop(5);
}
movieClip_1.addEventListener(
MouseEvent.CLICK,
fl_ClickToGoToAndPlayFromFr
ame);
function
fl_ClickToGoToAndPlayFromFr
ame(event:MouseEvent):void
{
gotoAndPlay(5);
}
movieClip_1.addEventListener(
MouseEvent.CLICK,
fl_ClickToGoToNextFrame);
function
fl_ClickToGoToNextFrame(eve
nt:MouseEvent):void
{
nextFrame();
}
movieClip_1.addEventListener(
MouseEvent.CLICK,
fl_ClickToGoToPreviousFrame)
;
function
fl_ClickToGoToPreviousFrame(
event:MouseEvent):void
{
prevFrame();
}
movieClip_1.addEventListener(
MouseEvent.CLICK,
fl_ClickToGoToNextScene);
function

- 166 -

Trnh din movie nhy


n Frame c ch
nh. Trong trng hp
ny Frame c ch nh
l 5.

Dng trnh din movie


Frame k tip.

Dng trnh din movie


Frame pha trc.

Bt u trnh din n
cnh quay k tip trong
danh sch Scene.

CHNG 5. LP TRNH VI ACTIONSCRIPT

Click to Go
to Previous
Scene and
Play

Animation

Click to Go
to Scene
and Play

Move with
Keyboard
Arrows

fl_ClickToGoToNextScene(even
t:MouseEvent):void
{
MovieClip(this.root).nex
tScene();
}
movieClip_1.addEventListener(
MouseEvent.CLICK,
fl_ClickToGoToPreviousScene);
function
fl_ClickToGoToPreviousScene(
event:MouseEvent):void
{
MovieClip(this.root).pre
vScene();
}
movieClip_1.addEventListener(
MouseEvent.CLICK,
fl_ClickToGoToScene);
function
fl_ClickToGoToScene(event:Mo
useEvent):void
{
MovieClip(this.root).got
oAndPlay(1, "Scene 3");
}
stage.addEventListener(Keybo
ardEvent.KEY_DOWN,
fl_PressKeyToMove);
function
fl_PressKeyToMove(event:Key
boardEvent):void
{
switch (event.keyCode)
{
case Keyboard.UP:
{

- 167 -

Bt u trnh din t
cnh quay trc
trong danh sch Scene.

Bt u trnh din n
mt cnh quay c ch
nh trong danh sch
Scene. Tham s th nht
l Frame c ch nh
trong Scene tham s
th 2.
Di chuyn i tng
theo cc phm mi tn
trn bn phm.

CHNG 5. LP TRNH VI ACTIONSCRIPT

Move
Horizontall
y
Move
Vertically

movieClip_1.y -= 5;
break;
}
case Keyboard.DOWN:
{
movieClip_1.y += 5;
break;
}
case Keyboard.LEFT:
{
movieClip_1.x -= 5;
break;
}
case Keyboard.RIGHT:
{
movieClip_1.x += 5;
break;
}
}

}
movieClip_1.x -= 100;

movieClip_1.y -= 100;

Di chuyn i tng
theo chiu ngang.

Di chuyn i tng
theo chiu dc.
movieClip_1.rotation += 45;
Quay i tng 1 ln vi
Rotate Once
gc c ch nh (tnh
theo ).
movieClip_1.addEventListener( Quay i tng lin tc.
Event.ENTER_FRAME,
Mi ln quay mt gc 10
fl_RotateContinuously);
.
function
Rotate
fl_RotateContinuously(event:E
Continously
vent)
{
movieClip_1.rotation +=
10;

- 168 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Animate
Horizontall
y

Animate
Vertically

Fade in a
Movie Clip

}
movieClip_1.addEventListener(
Event.ENTER_FRAME,
fl_AnimateHorizontally);
function
fl_AnimateHorizontally(event:E
vent)
{
movieClip_1.x -= 10;
}
movieClip_1.addEventListener(
Event.ENTER_FRAME,
fl_AnimateVertically);
function
fl_AnimateVertically(event:Eve
nt)
{
movieClip_1.y -= 10;
}
movieClip_1.addEventListener(
Event.ENTER_FRAME,
fl_FadeSymbolIn);
movieClip_1.alpha = 0;
function
fl_FadeSymbolIn(event:Event)
{
movieClip_1.alpha
+=
0.01;
if(movieClip_1.alpha >=
1)
{
movieClip_1.removeEve
ntListener(Event.ENTER_FRA
ME, fl_FadeSymbolIn);
}
}

- 169 -

i tng chuyn ng
theo chiu ngang.

i tng chuyn ng
theo chiu dc.

Cch xut hin ca i


tng theo dng thc
hin r dn (tng dn
alpha)

CHNG 5. LP TRNH VI ACTIONSCRIPT

Load and Unload

Fade out a
Movie Clip

movieClip_1.addEventListener( Cch thc bin mt ca


Event.ENTER_FRAME,
i tng theo cch m
fl_FadeSymbolOut);
dn (gim dn alpha).
movieClip_1.alpha = 1;
function
fl_FadeSymbolOut(event:Event
)
{
movieClip_1.alpha
-=
0.01;
if(movieClip_1.alpha <=
0)
{

movieClip_1.removeEve
ntListener(Event.ENTER_FRA
ME, fl_FadeSymbolOut);
}
}
movieClip_1.addEventListener(
MouseEvent.CLICK,
fl_ClickToLoadUnloadSWF);
var fl_Loader:Loader;
var fl_ToLoad:Boolean = true;
function
fl_ClickToLoadUnloadSWF(eve
Click to
nt:MouseEvent):void
Load/Unloa {
d SWF or
if(fl_ToLoad)
Image
{
fl_Loader = new
Loader();
fl_Loader.load(new
URLRequest("http://www.help
examples.com/flash/images/i
mage1.jpg"));
addChild(fl_Loader);

- 170 -

Ti v hy ti mt tp tin
swf hoc mt tp tin nh
khi nhp chut vo i
tng movieClip_1. Bin
fl_Loader c s dng
ti dng tp tin k
trn. Bin fl_ToLoad
lu trng thi ( ti
true hoc cha ti
false).
Phng thc load ca
i tng Loader s ti
v tp tin theo mt a
ch c ch nh trong
i tng URLRequest.
hy ti, ta s dng
phng thc unload.
Sau khi ti xong tp tin,

CHNG 5. LP TRNH VI ACTIONSCRIPT

}
else
{
fl_Loader.unload();
removeChild(fl_Loader);
fl_Loader = null;
}
fl_ToLoad = !fl_ToLoad;

movieClip_1.addEventListener(
MouseEvent.CLICK,
fl_ClickToLoadImageFromLibra
ry);
function
fl_ClickToLoadImageFromLibra
Click to
ry(event:MouseEvent):void
Load Image
{
from
var libImage:MyImage =
Library
new MyImage(0,0);
var holder:Bitmap = new
Bitmap(libImage);
addChild(holder);
}
Add
Instance
from Stage
Remove
Instance

var
fl_MyInstance:LibrarySymbol =
new LibrarySymbol();
addChild(fl_MyInstance);
removeChild(movieClip_1);

- 171 -

ta b sung i tng
Loader ny vo khung
trnh chiu.
Sau khi hy b vic ti, ta
xa i tng Loader
khi khung trnh chiu
v gii phng bin n
(gn cho gi tr null).
Mi ln nhp chut ln
i tng, ta thay i gi
tr ca bin fl_ToLoad t
true thnh false (nu
ti ri th ln nhp chut
tip theo s l hy ti) v
ngc li.
Ti hoc hy ti mt tp
tin nh trong th vin
c xut bn cho
ActionScript. Trc tin,
ta cn import cc tp tin
nh vo trong th vin
ca Flash. Sau , t cc
tp tin nh ny, ta s to
ra cc lp i tng
tng ng (Tng t
xut bn tp tin m
thanh trong mc 5.7).
i tng nh ny s tr
thnh tham s trong i
tng ca lp Bitmap.
B sung mt biu tng
(Graphic,
MovieClip,
Button). Cc i tng
ny cng phi xut bn
cho ActionScript.
Xa
i
tng
movieClip_1 ra khi

CHNG 5. LP TRNH VI ACTIONSCRIPT

from Stage

Audio and Video

Load
External
Text

Click to
Play/Stop
Sound

var fl_TextLoader:URLLoader =
new URLLoader();
var
fl_TextURLRequest:URLReques
t
=
new
URLRequest("http://www.help
examples.com/flash/text/lore
mipsum.txt");
fl_TextLoader.addEventListene
r(Event.COMPLETE,
fl_CompleteHandler);
function
fl_CompleteHandler(event:Eve
nt):void
{
var textData:String =
new
String(fl_TextLoader.data);
trace(textData);
}
fl_TextLoader.load(fl_TextURL
Request);
movieClip_1.addEventListener(
MouseEvent.CLICK,
fl_ClickToPlayStopSound);
var fl_SC:SoundChannel;
var fl_ToPlay:Boolean = true;
function
fl_ClickToPlayStopSound(evt:M
ouseEvent):void
{
if(fl_ToPlay)
{
var s:Sound = new
Sound(new
URLRequest("http://www.help

- 172 -

khung trnh chiu.


Ti mt on vn bn t
bn ngoi. Chc nng
ny tng t nh vic
ti mt tp tin XML. Bn
c th xem li li gii
thch trn.

Trnh din hoc dng


mt tp tin m thanh.
Bin fl_ToPlay lu trng
thi cho php trnh din
hoc khng (tng ng
true v false). i tng
Sound s dng phng
thc khi to t mt
URLRequest. Cch thc
thi mt tp tin m thanh
chng ta tm hiu
mc 5.7.

CHNG 5. LP TRNH VI ACTIONSCRIPT

examples.com/flash/sound/so
ng1.mp3"));
fl_SC = s.play();
}
else
{
fl_SC.stop();
}
fl_ToPlay = !fl_ToPlay;
}
movieClip_1.addEventListener(
MouseEvent.CLICK,
fl_ClickToStopAllSounds);
function
Click to Stop
fl_ClickToStopAllSounds(event:
All Sounds
MouseEvent):void
{
SoundMixer.stopAll();
}
import fl.video.MetadataEvent;
movieClip_1.addEventListener(
MetadataEvent.CUE_POINT,
fl_CuePointHandler);
function
On Cue
fl_CuePointHandler(event:Meta
Point Event dataEvent):void
{
trace(event.info.name);
}

Dng chi tt c m
thanh trong movie.

Thc thi mt event khi


c n mt Cue Point
c ch nh. Cue Point
l mt cch thc chia
nh tp tin m thanh
hoc video (nh dng
flv, f4v) ln trong Flash
(c theo stream). Nh
tp tin s c ti
nhanh hn (ti n cue
point no th trnh chiu
n ).
movieClip_1.addEventListener( Tng t nh nt Play
MouseEvent.CLICK,
trong cc trnh iu
Click to Play fl_ClickToPlayVideo);
khin nhc/phim. i
Video
function
tng
fl_ClickToPlayVideo(event:Mou video_instance_name l
seEvent):void
tn th hin ca thnh

- 173 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

{
video_instance_name.play();
}

phn iu khin vic thi


hnh tp tin video hoc
m thanh (thng l FLV
playback).
movieClip_1.addEventListener( Tm dng.
MouseEvent.CLICK,
fl_ClickToPauseVideo);
function
Click to
fl_ClickToPauseVideo(event:M
Pause Video
ouseEvent):void
{
video_instance_name.pause();
}
movieClip_1.addEventListener( Quay tr li v tr ban
MouseEvent.CLICK,
u trn trnh iu khin
fl_ClickToPauseVideo);
media playback.
Click to
function
Rewind
fl_ClickToPauseVideo(event:M
Video
ouseEvent):void
{
video_instance_name.seek(0);
}
video_instance_name.addEvent Thit lp tp tin ti
Listener(MouseEvent.CLICK,
nguyn cho trnh media
fl_ClickToSetSource);
playback thng qua
function
thuc tnh source.
Click to Set fl_ClickToSetSource(event:Mou
Video
seEvent):void
Source
{
video_instance_name.source =
"http://www.helpexamples.co
m/flash/video/water.flv";
}
movieClip_1.addEventListener( Di chuyn n mt Cue
Click to
MouseEvent.CLICK,
Point c ch nh
Seek to Cue
fl_ClickToSeekToCuePoint);
(trong trng hp ny l
Point
function
Cue Point c tn l Cue

- 174 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Event Handlers

fl_ClickToSeekToCuePoint(eve
nt:MouseEvent):void
{
var cuePointInstance:Object =
video_instance_name.findCueP
oint("Cue Point 1");
video_instance_name.see
k(cuePointInstance.time);
}

Point 1. Phng thc


seek ca i tng
media playback ch hot
ng vi tham s time
(nhy n mt thi
im), do , ta cn
chuyn t i tng cue
point sang tham s time
tng ng nh thuc
tnh time.
var fl_NC:NetConnection = new c mt tp tin video t
NetConnection();
mt Media Server nh
fl_NC.connect(null);
vo
i
tng
var fl_NS:NetStream = new NetStream. Phim sau khi
NetStream(fl_NC);
c ti s trnh chiu
Create a
fl_NS.client = {};
trc tip trn stage
NetStream
var fl_Vid:Video = new Video(); khng dng n trnh
Video
fl_Vid.attachNetStream(fl_NS); FLV playback.
addChild(fl_Vid);
fl_NS.play("http://www.helpex
amples.com/flash/video/water
.flv");
movieClip_1.addEventListener( Hnh ng thc thi khi
MouseEvent.CLICK,
chut c nhn ln i
fl_MouseClickHandler);
tng movieClip_1.
function
Mouse Click
fl_MouseClickHandler(event:M
Event
ouseEvent):void
{
trace("Mouse clicked");
}
movieClip_1.addEventListener( Hnh ng thc thi khi
MouseEvent.MOUSE_OVER,
chut di chuyn qua i
Mouse Over fl_MouseOverHandler);
tng movieClip_1.
function
Event
fl_MouseOverHandler(event:M
ouseEvent):void

- 175 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

trace("Moused over");

}
movieClip_1.addEventListener(
MouseEvent.MOUSE_OUT,
fl_MouseOutHandler);
function
Mouse Out
fl_MouseOutHandler(event:Mo
Event
useEvent):void
{
trace("Moused out");
}
stage.addEventListener(Keybo
ardEvent.KEY_DOWN,
fl_KeyboardDownHandler);
function
Key Pressed fl_KeyboardDownHandler(eve
Event
nt:KeyboardEvent):void
{
trace("Key
Code
Pressed: " + event.keyCode);
}
addEventListener(Event.ENTE
R_FRAME,
fl_EnterFrameHandler);
Enter
function
Frame
fl_EnterFrameHandler(event:E
Event
vent):void
{
trace("Entered frame");
}

Hnh ng thc thi khi


chut di chuyn ra khi
i tng movieClip_1.

Hnh ng thc thi khi


mt phm c nhn (c
th
l
KEY_DOWN,
KEY_UP. Trong trng
hp ny, ta s dng
KEY_DOWN.

Hnh ng din ra khi


phim c trnh chiu.

Mobile
Touch

Nhm chc nng nng cao h tr cho cc dng in thoi thng mnh chy
Android, iOS
Multitouch.inputMode =
Ha nh o ng die n ra khi
Tap
MultitouchInputMode.TOUCH_POINT; du ng tay (hoa c bu t ca m
Event
movieClip_1.addEventListener(Touch ng) cha m le n o i tng

- 176 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Event.TOUCH_TAP, fl_TapHandler);
function
fl_TapHandler(event:TouchEvent):voi
d
{
movieClip_1.alpha *= 0.5;
}
Multitouch.inputMode =
MultitouchInputMode.TOUCH_POINT;

Touch
and
Drag
Event

movieClip_1.
Trong
trng hp na y, no thay
o i o trong suo t cu a o i
tng (ch so alpha). S
kie n ch co ta c du ng vi
thie t bi ho tr ma n hnh
ca m ng.
Ha nh o ng die n ra khi ta
du ng tay (hoa c bu t ca m
ng) nha n le n o i tng
movieClip_1.addEventListener(Touch movieClip_1, sau o di
Event.TOUCH_BEGIN,
chuye n ngo n tay (o ng
fl_TouchBeginHandler);
thi la m di chuye n o i
movieClip_1.addEventListener(Touch tng
movieClip_1).
Event.TOUCH_END,
Ha nh o ng na y se ke t
fl_TouchEndHandler);
thu c khi ta ngng nha n
le n o i tng. Thao ta c
var fl_DragBounds:Rectangle = new na y tng t nh ke o
Rectangle(0, 0, stage.stageWidth, tha chuo t le n o i tng.
stage.stageHeight);
No ch co ta c du ng vi
ma n hnh ca m ng cu a
function
thie t bi di o ng.
fl_TouchBeginHandler(event:TouchEv
ent):void
{
event.target.startTouchDrag(ev
ent.touchPointID,
false,
fl_DragBounds);
}
function
fl_TouchEndHandler(event:TouchEve
nt):void
{
event.target.stopTouchDrag(ev
ent.touchPointID);
}

- 177 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

var fl_PressTimer:Timer = new


Timer(1000);
fl_PressTimer.addEventListener(Time
rEvent.TIMER, fl_PressTimerHandler);

Long
Press
Event

Mobile
Gesture
Events

Two
finger
Tap
Event

Ha nh o ng die n ra khi
nha n ngo n tay (hoa c bu t
ca m ng) le n o i tng
movieClip_1 trong mo t
thi gian kha da i (cha m
function
hn so vi ha nh o ng
fl_PressTimerHandler(event:TimerEv cha m). Trong trng
ent):void
hp minh ho a na y, o i
{
tng se pho ng to le n
// Start your custom code
ga p o i (theo chie u da i
// This example code doubles la n chie u cao).
the object's size
movieClip_1.scaleX = 2;
movieClip_1.scaleY = 2;
// End your custom code
}
Multitouch.inputMode
=
MultitouchInputMode.TOUCH_POINT;

movieClip_1.addEventListener(Touch
Event.TOUCH_BEGIN,
fl_PressBeginHandler);
movieClip_1.addEventListener(Touch
Event.TOUCH_END,
fl_PressEndHandler);
movieClip_1.addEventListener(Touch
Event.TOUCH_OUT,
fl_PressEndHandler);
movieClip_1.addEventListener(Touch
Event.TOUCH_ROLL_OUT,
fl_PressEndHandler);
Multitouch.inputMode
= Ha nh o ng die n ra khi
MultitouchInputMode.GESTURE;
du ng hai ngo n tay cha m
va o ma n hnh ca m ng
stage.addEventListener(GestureEvent. cu a thie t bi di o ng.
GESTURE_TWO_FINGER_TAP,
Trong trng hp na y,

- 178 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

fl_TwoFingerTapHandler);

Pinch
to
Zoom
Event

Pan
Event

o i tng movieClip_1
se pho ng to le n.

function
fl_TwoFingerTapHandler(event:Gestu
reEvent):void
{
// Start your custom code
// This example code zooms in
on the object upon each two finger tap
event
// The object should be a
background the size of the stage
movieClip_1.scaleX *= 2;
movieClip_1.scaleY *= 2;
// End your custom code
}
Multitouch.inputMode
= Ha nh o ng die n ra khi
MultitouchInputMode.GESTURE;
du ng tay pho ng to o i
tng (hai ngo n tay
stage.addEventListener(TransformGe chu m la i cha m va o cu ng
mo t ie m, sau o ni
stureEvent.GESTURE_ZOOM,
ro ng hai ngo n tay ra).
fl_ZoomHandler);
Trong trng hp na y,
o i tng se c pho ng
function
fl_ZoomHandler(event:TransformGest to le n. Ha nh o ng na y ch
co ta c du ng vi ma n hnh
ureEvent):void
ca m ng.
{
movieClip_1.scaleX
*=
event.scaleX;
movieClip_1.scaleY
*=
event.scaleY;
}
Multitouch.inputMode
= Ha nh o ng die n ra khi
MultitouchInputMode.GESTURE;
du ng hai ngo n tay vuo t
nhe le n o i tng
movieClip_1.addEventListener(Transf movieClip_1.
Trong
ormGestureEvent.GESTURE_PAN,
trng hp na y, o i

- 179 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

fl_PanHandler);

Rotate
Event

Swipe
Event

tng se di chuye n. e
tha y ro ha nh o ng na y,
function
o i tng ca n ln hn
fl_PanHandler(event:TransformGestur kch thc cu a khung
eEvent):void
nhn. Ha nh o ng na y ch
{
co ta c du ng o i vi ca c
event.currentTarget.x
+= thie t bi co ma n hnh ca m
event.offsetX;
ng.
event.currentTarget.y
+=
event.offsetY;
}
Multitouch.inputMode
= Ha nh o ng die n ra khi
MultitouchInputMode.GESTURE;
xoay o i tng. S kie n
na y ch co ta c du ng o i
movieClip_1.addEventListener(Transf vi thie t bi ho tr ma n
ormGestureEvent.GESTURE_ROTATE, hnh ca m ng.
fl_RotateHandler);
function
fl_RotateHandler(event:TransformGes
tureEvent):void
{
event.target.rotation
+=
event.rotation;
}
Multitouch.inputMode
= Ha nh o ng die n ra khi
MultitouchInputMode.GESTURE;
ha t nhe o i tng. S
kie n co ta c du ng o i vi
thie t bi ho tr ma n hnh
stage.addEventListener
(TransformGestureEvent.GESTURE_S ca m ng.
WIPE, fl_SwipeHandler);
function
fl_SwipeHandler(event:TransformGest
ureEvent):void
{
switch(event.offsetX)

- 180 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

custom code

// swiped right
case 1:
{
//
Start

your

// This example
code moves the selected object 20
pixels to the right.
movieClip_1.x +=
20;
//
End
your
custom code
break;
}
// swiped left
case -1:
{
//
Start
your
custom code
// This example
code moves the selected object 20
pixels to the left.
movieClip_1.x -=
20;
//
End
your
custom code
break;
}
}
switch(event.offsetY)
{
// swiped down
case 1:
{
//
Start
custom code

- 181 -

your

CHNG 5. LP TRNH VI ACTIONSCRIPT

Mobile Actions

// This example
code moves the selected object 20
pixels down.
movieClip_1.y +=
20;
//
End
your
custom code
break;
}
// swiped up
case -1:
{
//
Start
your
custom code
// This example
code moves the selected object 20
pixels up.
movieClip_1.y -=
20;
//
End
your
custom code
break;
}
}
}
Multitouch.inputMode
= Du ng tay e vuo t nhe le n
MultitouchInputMode.GESTURE;
ma n hnh ca m ng sang
pha i chuye n sang
Swipe
stage.addEventListener
Frame pha trc; sang
to go to
(TransformGestureEvent.GESTURE_S tra i chuye n sang Frame
next/pr
WIPE,
tie p theo. Ha nh o ng na y
evious
fl_SwipeToGoToNextPreviousFrame); ch co ta c du ng vi ma n
frame
hnh ca m ng.
and
function
stop
fl_SwipeToGoToNextPreviousFrame(e
vent:TransformGestureEvent):void
{

- 182 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

if(event.offsetX == 1)
{
// swiped right
prevFrame();
}
else if(event.offsetX == -1)
{
// swiped left
nextFrame();
}

}
Multitouch.inputMode
MultitouchInputMode.GESTURE;

Swipe
to go to
next/pr
evious
scence
and
play

= Du ng tay vuo t nhe le n


ma n hnh sang pha i e
chuye n sang scene tie p
stage.addEventListener
theo va sang tra i e
(TransformGestureEvent.GESTURE_S chuye n sang scene trc
WIPE,
o .
fl_SwipeToGoToNextPreviousScene);

function
fl_SwipeToGoToNextPreviousScene(e
vent:TransformGestureEvent):void
{
if(event.offsetX == 1)
{
// swiped right
prevScene();
}
else if(event.offsetX == -1)
{
// swiped left
nextScene();
}
}
Move var fl_Accelerometer:Accelerometer = Di chuye n o i tng
with new Accelerometer();
theo ca m bie n kho ng
Acceler fl_Accelerometer.addEventListener(Ac gian (ca m bie n theo o

- 183 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

ometer celerometerEvent.UPDATE,
fl_AccelerometerUpdateHandler);

function
fl_AccelerometerUpdateHandler(even
t:AccelerometerEvent):void
{
movieClip_1.x
-=
event.accelerationX*30;
movieClip_1.y
+=
event.accelerationY*30;
}
stage.addEventListener(Event.ACTIVA
TE, fl_Activate);
stage.addEventListener(Event.DEACTI
VATE, fl_Deactivate);

function fl_Activate(event:Event):void
{
Deactiv
// Start timers and add event
ate/Act
listeners here.
ivate
}
Event

nghing ca m ng con
quay).

Ha nh o ng die n ra khi
ng du ng ang che o
a t tie u c (activate) va
kho ng c a t tie u c
(deactivate).

function
fl_Deactivate(event:Event):void
{
// Stop timers and remove
event listeners here.
}
stage.addEventListener(KeyboardEve Hie n thi chc na ng khi
nt.KEY_UP,
nha n phm menu tre n
Menu fl_OptionsMenuHandler_2);
ba n phm cu a thie t bi di
Key
o ng. Trong v du na y,
Pressed function
ne u nha p va o phm
Event fl_OptionsMenuHandler_2(event:Keyb menu, tre n ma n hnh se
oardEvent):void
hie n ra mo t hnh ch
{
nha t.

- 184 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

if( (event.keyCode == 95) ||


(event.keyCode == Keyboard.MENU) )
{
// Start your custom
code
// This example code
displays a gray rectangle.
var grayRectangle:Sprite
= new Sprite();
grayRectangle.graphics.lineStyl
e(3, 0x888888, 0.95);

grayRectangle.graphics.beginFil
l(0xececec, 0.95);

grayRectangle.graphics.drawRe
ct(1,
stage.stageHeight
100,
stage.stageWidth-3, 100);
);

grayRectangle.graphics.endFill(

addChild(grayRectangle);
// End your custom code

AIR for mobile

}
var fl_GeolocationDisplay:TextField =
new TextField();
fl_GeolocationDisplay.autoSize
=
TextFieldAutoSize.LEFT;
Show
fl_GeolocationDisplay.text
=
geoloca
"Geolocation is not responding. Verify
tion
the device's location settings.";
addChild(fl_GeolocationDisplay);
if(!Geolocation.isSupported)

- 185 -

Hie n thi tho ng tin vi tr


ia l cu a thie t bi. Chc
na ng na y ch hoa t o ng
vi ca c thie t bi ho tr
GPS va co ke t no i
internet. Trong v du
tre n, no se hie n thi v o
(latitude),
tung
o
(longitude), o cao so
vi nc bie n (altitude).

CHNG 5. LP TRNH VI ACTIONSCRIPT

fl_GeolocationDisplay.text
=
"Geolocation is not supported on this
device.";
}
else
{
var fl_Geolocation:Geolocation
= new Geolocation();
fl_Geolocation.setRequestedUp
dateInterval(1000);
fl_Geolocation.addEventListene
r(GeolocationEvent.UPDATE,
fl_UpdateGeolocation);
}

function
fl_UpdateGeolocation(event:Geolocati
onEvent):void
{
fl_GeolocationDisplay.text
=
"latitude: ";
fl_GeolocationDisplay.appendTe
xt(event.latitude.toString() + "\n");
fl_GeolocationDisplay.appendTe
xt("longitude: ");
fl_GeolocationDisplay.appendTe
xt(event.longitude.toString() + "\n");
fl_GeolocationDisplay.appendTe
xt("altitude: ");
fl_GeolocationDisplay.appendTe
xt(event.altitude.toString() + "\n");
}
Revar
fl_initialRotation
= T o ng xoay o i tng
orient movieClip_1.rotation;
// Save the cho phu hp vi khung
nhn. Ch ho tr o i vi
objects initial rotation value
nhng thie t bi co ca m
on

- 186 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Device stage.addEventListener(StageOrientat
Rotatio ionEvent.ORIENTATION_CHANGE,
fl_OrientationChange);
n

function
fl_OrientationChange(event:StageOrie
ntationEvent):void
{
switch
(stage.deviceOrientation)
{
case
StageOrientation.DEFAULT:
{
//
Re-orient
display objects on default (right-side
up) orientation.

movieClip_1.rotation
=
fl_initialRotation; // Restore the
initial rotation value
break;
}
case
StageOrientation.ROTATED_RIGHT:
{
//
Re-orient
display objects based on right-hand
orientation.
movieClip_1.rotation += 90;
break;
}
case
StageOrientation.ROTATED_LEFT:
{
//
Re-orient
display objects based on left-hand

- 187 -

bie n t o ng xoay. Ne u
bie n dich che o ke t
no i vi thie t bi tho ng qua
co ng USB, ta ca n hie u
chnh AIR setting: Va o
File > AIR Setting, cho n
the General, cho n Auto
Rotation.

CHNG 5. LP TRNH VI ACTIONSCRIPT

orientation.

movieClip_1.rotation -= 90;
break;
}
case
StageOrientation.UPSIDE_DOWN:
{
//
Re-orient
display objects based on upside-down
orientation.

movieClip_1.rotation += 180;
break;
}
}

AIR

Cc chc nng dnh ring cho AIR (trn c Windows, Linux, MacOS, Android,
iOS)
movieClip_1.addEventListener(Mouse Ha nh o ng nha p le n o i
Event.CLICK, fl_CloseWindow);
tng movieClip_1 e
Click to
o ng ca so ng du ng.
close
function
AIR
fl_CloseWindow(event:Event):void
Windo
{
w
stage.nativeWindow.close();
}

- 188 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Click to
minimi
ze AIR
Windo
w

movieClip_1.addEventListener(Mouse
Event.CLICK, fl_MinimizeWindow);

Ha nh o ng nha p le n o i
tng movieClip_1 e
thu nho ca so .

function
fl_MinimizeWindow(event:Event):voi
d
{
stage.nativeWindow.minimize()
;
}
movieClip_1.addEventListener(Mouse Ha nh o ng nha p le n
Event.MOUSE_DOWN,
tng movieClip_1
fl_MaximizeWindow);
pho ng to hoa c phu c
la i tra ng tha i trc
function
thu nho ca so .
fl_MaximizeWindow(event:Event):voi
d
{
if(stage.nativeWindow.displayS
Click to
tate
!=
maximi
NativeWindowDisplayState.MAXIMIZ
ze or
ED)
restore
{
Windo
w
stage.nativeWindow.maximize(
);
}
else
{
}

stage.nativeWindow.restore();
}

- 189 -

o i
e
ho i
khi

CHNG 5. LP TRNH VI ACTIONSCRIPT

movieClip_1.addEventListener(Mouse
Event.MOUSE_DOWN,
fl_MoveWindow);

Drag to
move
function
AIR
fl_MoveWindow(event:Event):void
windo
{
w
stage.nativeWindow.startMove(
);
}

- 190 -

Di chuye n o i tng
movieClip_1
e
di
chuye n ca so cu a ng
du ng AIR. Tho ng thng,
o i tng movieClip_1
se la thanh tie u e cu a
ca so .

CHNG 5. LP TRNH VI ACTIONSCRIPT

import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;

movieClip_1.addEventListener(Mouse
Event.CLICK, fl_OpenFile);

var fl_OpenFileStream:FileStream =
new FileStream(); // FileStream used
to read from the file
var
fl_OpenFileChooser:File
=
File.documentsDirectory; // Default to
the documents directory
fl_OpenFileChooser.addEventListener(
Event.SELECT, fl_FileOpenSelected);
// Main function for opening a file
function
fl_OpenFile(event:MouseEvent):void
{
fl_OpenFileChooser.browseFor
Open("Select a text file.");
}

// Opens a FileStream object to read


the file
function
Click to fl_FileOpenSelected(event:Event):void
read {
fl_OpenFileChooser
=
from
text file event.target as File;
fl_OpenFileStream
=
new
FileStream();
fl_OpenFileStream.addEventList
ener(Event.COMPLETE,
fl_FileReadHandler);
fl_OpenFileStream.openAsync(fl
_OpenFileChooser, FileMode.READ);
}
- 191 -

// Write data from the file to the


Output Panel

M mo t file va n ba n
ba ng ho p thoa i. Trong v
du na y, ho p thoa i m file
se hie n ra khi ta nha p
chuo t va o movieClip_1.

CHNG 5. LP TRNH VI ACTIONSCRIPT

import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;

movieClip_1.addEventListener(Mouse
Event.CLICK, fl_SaveFile);

var fl_FileDataToSave:String = "Text to


save to file.";

var fl_SaveFileStream:FileStream =
new FileStream(); // FileStream used
to write to the file
var
fl_SaveFileChooser:File
=
File.documentsDirectory; // Default to
the documents directory
fl_SaveFileChooser.addEventListener(
Event.SELECT, fl_WriteFileHandler);

// Opens a Save As dialog box for user


to specify a file name
Click to function
write fl_SaveFile(event:MouseEvent):void
to a
{
text file
fl_SaveFileChooser.browseForS
ave("Save As:");
}
// Write data in fl_FileDataToSave
variable
function
fl_WriteFileHandler(event:Event):void
{
fl_SaveFileChooser
=
event.target as File;
fl_SaveFileStream
=
new
FileStream();
fl_SaveFileStream.openAsync(fl
- 192 _SaveFileChooser, FileMode.WRITE);

fl_SaveFileStream.writeMultiBy

Lu file va n ba n ba ng
ho p thoa i lu file. Ho p
thoa i na y se hie n thi khi
ta nha p va o movieClip_1.

CHNG 5. LP TRNH VI ACTIONSCRIPT

import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;

// Defines the name of the file in local


storage to write the preferences to
var fl_ConfigFile:File = new File("appstorage:/AppConfig.cfg");

// On Windows 7:
C:\Users\<username>\AppData\Roami
ng\<Name of Air Application>\Local
Store\AppConfig.cfg
// On Windows XP: C:\Documents and
Settings\<username>\Application
Data\<Name of Air Application>\Local
Store\AppConfig.cfg
// On Mac:
/Users/<username>/Library/Preferenc
es/<Name of Air Application>/Local
Store/AppConfig.cfg

// Creates TextField to display the


string saved in preferences
var
fl_AppPreference
=
new
TextField();
addChild(fl_AppPreference);

fl_LoadPreferences();
// Call to Load Preferences
fl_SavePreferences();
// Call to Save Preferences (move this
where you want to save your
preferences)
// Write preferences to the
configuration file
function fl_SavePreferences():void
{
// Open preference
- 193 - file for
writing
var fs:FileStream = new
FileStream();

Lu tr va ta i la i ca c
tho ng tin ca n thie t cu a
ng du ng va o/t file ca u
hnh config.

CHNG 5. LP TRNH VI ACTIONSCRIPT

bit thm thng tin v cc i tng, ba n hy xem thm bng tham kho v
cc lp i tng trong a ch tr gip v ActionScript 3 ca Adobe
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/.

- 194 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Tng kt chng 5
Trong chng ny, chng ta tm hiu v ngn ng lp trnh ActionScript. y
l mt ngn ng lp trnh hng i tng. V c bn n cng ging nh Java. N
cng c bin dch thnh m bytecode v c mt my o AVM c th hiu c.
My o AVM c tch hp trong Flash Player v AIR.
Bn c cung cp cc kin thc nn tng v AS 3.0: v c php, cu lnh c
bn, v c bit, bn c cung cp cc kin thc v hng i tng. Bn cng
tm hiu v cch a mt i tng m bn xy dng hay mt i tng
tn ti vo ngn ng ActionScript.
Ngoi ra, chng ti cng hi vng rng, bn s bit cch iu khin i tng bng
cc s kin event. D rng, chng ti ch a ra mt vi s kin c bn. c bit,
mt chc nng cao cp cng c gii thiu trong chng ny l vng chc
nng Code Snippet. Vng chc nng ny qu tht rt hu ch cho nhng ngi
mi lm quen vi AS.

- 195 -

CHNG 5. LP TRNH VI ACTIONSCRIPT

Blank Page

- 196 -

CHNG 6. CC HIU CHNH NNG CAO

CHNG 6. CC HIU CHNH NNG CAO


6.1. X l m thanh, hnh nh v video
a. Import m thanh, hnh nh v video vo th vin
Mc d chc nng Import to Library h tr c chc nng Import Video, nhng
bn nn s dng chc nng ny ch cho m thanh v hnh nh. Ring vi video,
bn nn s dng chc nng Import Video.
C hai chc nng ny u c t chc trong menu File>Import.
b. X l m thanh
Sau khi import mt file m thanh vo trong th vin, ta c th hiu chnh thuc
tnh ca n. Bn hy chn file m thanh va nhp vo, kch chut phi v chn:
- Properties.
- Hoc Edit with Soundbooth.
Bng thuc tnh ca m thanh s c dng nh sau

Hnh 112 Bng thuc tnh m thanh

Bn c th nghe qua m thanh nh vo chc nng Test, dng chi nh chc nng
Stop, thay i file ngun nh chc nng Import, c bit, bn c th thay i
nh dng nn cho file m thanh nh vo Compression.
x l m thanh trong Flash, Adobe cung cp cho ta mt trnh tin ch ring
dnh cho nhim v ny l Adobe SoundBooth. Vi SoundBooth, bn c th
thay i nh dng m thanh (bao gm c video), trch tch m thanh khi video,
b sung cc hiu ng cho m thanh, trch tch mt phn ca file m thanh, v
nhiu tnh nng khc.

CHNG 6. CC HIU CHNH NNG CAO

Hnh 113 Giao din SoundBooth CS5

Chng ta s tho lun qua mt vi chc nng trong SoundBooth.


- Trch xut mt phn file m thanh: bn hy dng tr chut v bi en phn m
thanh trn biu ph ca n. Kch chut phi v nhp chn Crop. Sau nhp
Save As v chn nh dng xut bn. kim tra phn m thanh c chn c
ng hay khng, bn hy ko thanh biu din trng thi hin ti n cc v tr cn
kim tra, sau nhp Play.
- To hiu ng cho m thanh: bn hy chn mc effect bn cnh, v chn hiu ng
cn p dng.
Khi s dng m thanh trong phim Flash, bn cn to ring mt Layer cho n. Bn
cn m bo cc phn m thanh ca bn phi tng ng vi cc hot cnh trong
phim. iu s gip phim ca bn tht hn, sinh ng hn.
c. X l hnh nh
Sau khi import mt file hnh nh vo trong th vin, ta c th hiu chnh thuc
tnh ca n. Bn hy chn file m thanh va nhp vo, kch chut phi v chn:
- Properties.
- Hoc Edit with PhotoShop.
Bng thuc tnh ca hnh nh s c dng nh sau

- 198 -

CHNG 6. CC HIU CHNH NNG CAO

Hnh 114 Bng thuc tnh hnh nh

Chc nng trong bng thuc tnh ny tng t vi chc nng thuc tnh ca m
thanh. i vi hnh nh khi nn bng JPEG, bn c th chn nn cho hnh nh
gim kch thc tp tin sau khi xut bn.
x l hnh nh trong Flash, Adobe cho php ta chnh sa chng bi chng
trnh chuyn dng l Adobe Photoshop. C l, y l chng trnh m bn qu
quen thuc.

- 199 -

CHNG 6. CC HIU CHNH NNG CAO

Hnh 115 Giao din Adobe PhotoShop CS5

d. X l video
y c th l chc nng th v ca Flash. Bn hon ton c th s dng Flash
to cc k xo in nh (d rng y khng phi l chng trnh chuyn dng
Nu bn quan tm, bn c th tham kho chng trnh Adobe Premier v Adobe
After Effect trong cng gi Master CS5 ny).
lm vic vi video, Flash cung cp cho ta tin ch Adobe Media Encoder
chuyn cc tp tin video thnh tp tin cho php s dng trong Flash l flv hoc
f4v.
chuyn i, bn ch vic chn Export Setting v hiu chnh cc thng s cn
thit. Vi tin ch ny, bn c th hiu chnh mt vi thuc tnh cho cc on
video ca bn.

Hnh 116 Giao din Adobe Media Encoder CS5

- 200 -

CHNG 6. CC HIU CHNH NNG CAO

Ngoi ra, Flash cn cho php bn hiu chnh nng cao vi hai chng trnh h tr
k xo in nh l Adobe Premier v Adobe After Effect.
Khi import mt video vo Flash, bn c th cho php video m bn import vo s
nm trn mt khung hnh c lp hay c nhng vo mt trnh media playback
(ngha l chng trnh c cc thnh phn iu khin ch chi). Vi vic to
mt khung hnh c lp, ta c th to cc mt n vi hnh th phc tp, to cc
khung trnh chiu rt hp dn. Bn s c tm hiu iu ny khi chng ta tm
hiu k hn v mt n.

6.2. To k xo in nh vi Flash
Trong phn ny, chng ti s hng dn cho bn cch to mt s k xo thng
c dng trong cc chng trnh truyn hnh hin nay. Trc khi tho lun chi
tit, chng ta s tm hiu s qua v k xo in nh l g ?
K xo in nh l nhng hiu ng c to dng nh cng c my tnh lm
cho cc b phim, cc chng trnh truyn hnh tr nn hp dn hn. K xo in
nh c th phn lm hai dng c bn:
+ K xo dnh ring cho cc chng trnh truyn hnh: nh cc hiu ng chuyn
cnh, hiu ng vn bn, hiu ng trong cc chng trnh gameshow,
+ K xo dnh ring cho cc thc phim in nh: cc hiu ng to sng, to my
m, php thut,
S phn loi ny c quy nh trong gio trnh ny. Chng ta s khng i vo
tho lun chi tit v cc dng k xo ny. Chng ta ch s dng Flash nh l cng
c to ra mt s k xo thng dng.
K xo bin hnh (k xo in nh)
Mt k xo bin hnh (v d mt nhn vt A dng php thut bin thnh nhn
vt B) thc cht l mt k thut bm my. Ngi quay phim s quay hai hnh
nh ny trong cng mt hnh nn, hai nhn vt c cng mt th ng nh nhau.
Vic bin hnh ch n thun l s tip din ca hai cnh quay ny. cho phim
c thm hiu ng c sc, bn c th s dng hiu ng ng ca Flash (nh bc
khi, to mt lung sng,) lm cho hiu ng thm p mt. Vic xy dng cc
hiu ng ny bn c th tm hiu trong cc v d tip theo sau.
Bn lu rng, nu bn mun to mt hiu ng ghp hnh, th Flash khng h tr
cho bn. Bn c th dng chng trnh chuyn dng l Adobe After Effect.
K xo ch gu thi la
Trong v d ny, chng ta s s dng mt thc phim c hnh ch gu. Ch gu s
h ming. Khi , mt lung nh sng mu (m ta gi l la) s phng ra. K

- 201 -

CHNG 6. CC HIU CHNH NNG CAO

xo mong ch trong thc phim cui cng l thc phim ch gu ny s thi ra


la.
u tin, bn hy to mt d n mi. Bn hy import Video hnh ch gu vo
(File Bear.flv trong th mc Video ca CD nh km). Bn hy hiu chnh cc
thuc tnh khi import d liu theo hnh m t ca hnh bn di y

Hnh 117 Hiu chnh thng s khi import d liu

Sau , bn nhp vo Next. Trong ca s tip theo, bn chn Embbed Video v


nhp Finish.
Gi y, video m bn import vo nm trong th vin (nu bn chn import to
Library), nm trong Stage (nu bn chn import to Library). to k xo in
nh nh chng ta tho lun trn, cc bn hy thc hin cc bc sau y
Bc 1 Bn hy ko video trong th vin vo trong Stage, s dng chc nng
Align hiu chnh kch thc cho video trng vi kch thc ca Stage v t n
trng khp ln Stage.

Hnh 118 Hiu chnh thuc tnh Align cho Video ch gu trn Stage

- 202 -

CHNG 6. CC HIU CHNH NNG CAO

Video hnh ch gu c t vo Layer 1. Bn hy sa tn Layer 1 ny thnh


Bear.
Bc 2. To mi mt Layer, t tn cho n l Fire. Bn hy v ln Layer ny mt
hnh ch nht mu , loi b vin. Tip theo, bn hy convert n thnh
MovieClip. Trong bng thuc tnh ca MovieClip ny, bn chn Filter l Blur, hiu
chnh BlurX v BlurY l 41.
Bc 3. Bn hy ko thanh nh du Frame hin ti trn TimeLine, xem v tr cn
to qu cu la xut hin. Bn hy bm vo Frame tng ng trn Layer Fire,
nhn phm F6 to mt KeyFrame. Kch chut phi ln qu cu la, chn Create
Motion Tween.

Hnh 119 Hiu chnh v tr phng la

Chn Frame kt thc vic phng la v ko v tr kt thc ca Tween v ti v tr


Frame ny. Ti Frame ny bn hy ko gin qu cu la ny di ra. Trn cc v tr
bn trong Tween, bn hy hiu chnh v tr ca cu la khp vi ming ch gu
(cc v tr nh du en trn TimeLine).

- 203 -

CHNG 6. CC HIU CHNH NNG CAO

Gi y, bn c th kim tra thnh qu ca mnh. Nhn Ctrl+Enter kim tra.


Bn c th kt hp vi nhng video m bn xy dng nn. Vic xy dng mt
video v s dng Flash to k xo l mt tri nghim kh th v ang ch i
bn y. Hi vng bn s thc hin k xo ny mt cch thnh tho.
K xo cuc chin trn khng ca hai ch chim

Hnh 120 K xo cuc chin trn khng trung

Bn s dng video c tn Bird.flv trong th mc Video ca CD nh km. Cng


tng t nh trng hp trn. Bn to Layer Bird cha video m bn import
vo. Layer Light cha qung sng bao quanh ch chim. Bn cn to mt
Motion Tween hiu chnh v tr ca qung sng lun di chuyn v bao quanh
ch chim. Bn cn hiu chnh v tr bt u v kt thc ca qung sng ph hp
vi v tr xut hin v bin mt ca ch chim.
Ti v tr ch chim th hai xut hin, bn to mt lung sng xanh phng ra (tc
ch chim ny phng la v pha ch chim th nht), n nm trn Layer One.
Lung sng phng v pha trc. Do khng phng trng ch chim 1, nn lung
sng s b vt tt khi st bin mn hnh. Khi vt tt, n to ra mt qung sng ln.
Bn hy hiu chnh cc v tr cho thch hp trong Motion Tween dnh cho lung
sng xanh ny. Bn hy nhn Ctrl+Enter kim tra kt qu.

- 204 -

CHNG 6. CC HIU CHNH NNG CAO

K xo ngi bay trn nhng ch nga


y cng l mt k xo tng i n gin. Bn ch cn to hai Layer: Layer 1
cha ni dung video, Layer 2 cha hnh ngi. Bn t ngi vo mt v tr thch
hp trn cnh quay, v s dng Motion Tween (hay Classic Tween) to qu
o bay ca nhn vt ny.

Hnh 121 K xo ngi bay

6.3. To thc phim Flash ta 3D

Flash mc nh khng h tr cc i tng ha 3D. N khng cung cp cho


chng ta cc cng c to v phi mu 3D. Flash ch cung cp cho ta cng c to
ra s dch chuyn 3D v quay theo cc gc trong khng gian. Nu bn tht s
mun to mt i tng ng 3D, ti khuyn bn nn s dng n cc chng
trnh chuyn dng: Autodesk Maya l mt s la chn hon ho nht. Tuy nhin,
nu bn l ngi yu thch Flash, bn cng c th s dng Plugin h tr 3D
FreeSpin3D. y cng l mt Plugin kh th v h tr 3D hon ho. Nhng Plugin

- 205 -

CHNG 6. CC HIU CHNH NNG CAO

ny c gi khng r cht no. Nu bn mun tri nghim mt cm gic min ph


vi ha 3D trong Flash, bn c th to dng n nh vo ngn ng lp trnh
ActionScript. to mt thc phim 3D trn ActionScript, s thun li hn nu
chng ta xy dng trn th vin m ngun m PaperVision3D. Chng ti s trnh
by kh chi tit v th vin ny trong chng cui ca gio trnh. Mt kh khn l
bn cn c mt lng kin thc ton hc kh vng chc to dng cc i
tng ha 3D. Th vin m ngun m PaperVision3D c cung cp cho hu
ht cc trnh son tho ActionScript, nhng chng ti s trnh by trn Flex
Buider bi y l trnh son tho ActionScript chuyn nghip nht.
D khng cung cp cho ta cc cng c chuyn dng thit k 3D, nhng vi k
thut phi mu Gradient v k thut Layer, chng ta c th to dng mt thc
phim c cch nhn 3D. Trong v d sau y, ti s trnh by cch xy dng on
phim nh golf. Khi ngi nh golf nh vo qu bng, th qu bng s ln v ri
vo l golf trn sn c.
Bc 1. To mi mt Layer c tn l Glass. Bn hy phi mu Linear Gradient, v
chn ch mu nh hnh bn di.

Hnh 122 Tr chi golf: sn golf trn lp glass.

Bc 2. To l golf trn sn golf. To mt Layer mi tn l hole. Trn Layer ny,


bn hy to mt hnh Eclipse nh sau.

- 206 -

CHNG 6. CC HIU CHNH NNG CAO

Hnh 123 Tr chi golf: Cc bc to l golf

Sau khi to xong l golf, bn b sung thm mt thanh dc lm c cm trn l golf.


Sau khi hon tt bc ny, bn hy t l golf vo mt v tr thch hp trn khung
trnh din ca bn. Bn cng lu rng, khung trnh din trong trng hp ny
rng hn theo chiu ngang s thch hp hn so vi khung trnh din c chiu dc
gn bng hoc ln hn chiu ngang. Ti khuyn co bn trong trng hp ny,
nn chn t l theo chun HD l 8:3 (trng hp ca ti l 850px theo chiu
ngang, 400px theo chiu dc.

- 207 -

CHNG 6. CC HIU CHNH NNG CAO

Hnh 124 Tr chi golf: Hon tt lp Hole

Bc 3. To qu bng golf. Hy s dng cng c v hnh Eclipse, to mt khi


hnh trn (gi Shift v ko chut). Sau hiu chnh thuc tnh mu Gradient nh
bn di. Qu bng golf ny nm trn Layer ball.

Hnh 125 Tr chi golf: To qu bng chi golf

Bc 4. To thanh chi golf. Thanh chi golf ny s nh vo qu bng to


hiu ng nh golf. Thanh chi golf c t trn Layer line.

- 208 -

CHNG 6. CC HIU CHNH NNG CAO

Hnh 126 Tr chi golf: To thanh nh golf

Lu : bn cn t Layer thanh nh bng vo sau Layer qu bng chi golf.


Tip theo, bn s s dng k thut Motion Tween to hiu ng cy nh golf
nh vo qu bng chi golf. Trong trng hp bn di, ti s dng kt hp
cng c 3D Rotation.

Hnh 127 Tr chi golf: To cnh nh bng

Khi s dng Motion Tween, bn hiu chnh v tr kt thc ca n l ti Frame th


5. Trn cc Layer cn li, bn bi en Layer th 5 tng ng (nhn thm phm

- 209 -

CHNG 6. CC HIU CHNH NNG CAO

Ctrl), sau nhn phm F5 sao chp Frame 1 n cc Frame cn li (quan st


khung TimeLine trn).
Bc 5. To hiu ng qu bng ln. Ti Frame th 5 trn Layer ball, bn nhn
phm F6 to mi mt KeyFrame. Sau , s dng Motion Tween to chuyn
ng cho qu bng tin v pha l nh golf.

Hnh 128 Tr chi golf: To cnh qu bng di chuyn

ng di chuyn ca qu bng c chia lm hai phn: Phn 1 t v tr ban u


n l golf (Frame 5 n Frame 60). Phn 2 T v tr b mt l golf xung di
l golf (Frame 60 n Frame 65).
Bc 6. Theo cch quan st ca chng ta, th t giai on qu bng trn b mt
xung n y ca l golf, th qu bng s bin mt. thc hin iu ny, ta s
s dng k thut Layer. Bn s dng cng c Lasso, chn trn Layer Glass mt
phn nh hnh minh ha bn di.

Hnh 129 Tr chi golf: K thut Layer

Lu : Bn nn s dng thuc tnh Lock cho cc Layer cn li (tr Layer glass v


Layer hole).
Sau khi chn c vng chn nh trn, bn s dng chc nng Distribute to
Layers. Khi , s xut hin mt s Layer mi, bn hy nhm cc Layer ny thnh

- 210 -

CHNG 6. CC HIU CHNH NNG CAO

mt nhm bng mt Folder mi (bn t tn cho n l LayerTech). Sau , ko


Folder ny ln trn tt c cc Layer cn li.

Hnh 130 Tr chi golf: Thanh TimeLine trong k thut Layer

n y, hu nh bn hon tt thc phim. Tuy nhin cho phim c tht


hn, chng ta s b sung thm hiu ng bng. Sau y l d n hon chnh.

Hnh 131 Tr chi golf: D n hon chnh

Vi d n golf ny, hi vng bn s c cm gic 3D sng ng. Chng ta ch n


thun s dng nhng k thut n gin c cung cp trong Flash: hiu ng
Shadow, hiu ng Gradient v k thut Frame, v kt qu thu c l mt thc
phim ta 3D.
Nu bn mun to mt hiu ng 3D ta nh tri t quay, bn cng hon ton c
th da vo cc hiu ng ny. Khi , bn cn mt bc nh v hnh nh tri t
c pht ha trn mt mt phng (ch khng phi l trn mt cu). Bn kt hp
vi cng c Fill Color (bn chn l kiu Bitmap) vi k thut Shape Tween. Lc
ny, bn s dng cng c Gradient Transform to s dch chuyn nh trong
mt khi hnh trn. y cng l mt cch thc kh th v v cc k n gin. Bn
hy thc hin d n ny xem nh bi tp.

- 211 -

CHNG 6. CC HIU CHNH NNG CAO

Nu bn mun to mt thc phim 3D vi nhng hiu ng phc tp (cc nhn


vt, i tng quay trong khng gian) th dng nh vic p dng nhng k thut
nu trn l qu kh khn. Khi , bn nn chuyn sang mt chng trnh nh
Autodesk Maya, bi l Adobe Flash cng khng h tr cch xy dng dng phim
3D hon chnh nh th (tr phi bn lp trnh hon ton trn ActionScript).

6.4. Ghp ni nhiu hot cnh

Khi bn xy dng mt b phim hot hnh, bn cn n nhiu hot cnh. Vic ghp
ni nhiu hot cnh trong Flash c thc hin t ng. Bn hy to cc cnh
quay khc nhau trn cc Scene khc nhau. Cc hot cnh s c ghp ni t
ng theo dy cc Scene c sp xp.

6.5. K thut mt n mask

Hnh 132 K thut mt n Mask


Mt n l mt k thut cho php bn to ring mt khung trnh chiu vi hnh
dng phc tp. Mi hot ng ch c th trnh chiu bn trong mt n.
to mt mt n, bn cn to mt khung trnh chiu. to khung ny, bn ch
n thun v mt hnh th no trn mt Layer tm gi l Layer Mask. Bn tip
tc to thm mt Layer th hai to hot cnh. to mt n, bn hy t
Layer Mask ln trn layer hot cnh, kch chut phi vo Layer Mask ny, v chn
Mask. Nu bn c nhiu Layer hot cnh cn to bi mt Layer Mask, bn ch vic
ko chn Layer ny vo trong Layer Mask khung Layer.

- 212 -

CHNG 6. CC HIU CHNH NNG CAO

n y, chc bn tng tng lm th no to khung hnh phc tp cho


cc video ? Layer Mask bn hy to khung trnh chiu, Layer video l layer hot
cnh. Th l cng vic ca bn hon tt ri !
Remarks: vic s dng mt n khng buc bn phi p dng cho ton cnh quay.
Bn c th s dng nhiu mt n ng thi trong mt cnh quay. Mt mt n c
tc dng cho mt lp Layer cha i tng.
Mt vi v d s dng k thut mt n Mask
V d v vic s dng mt n ng: trong v d ny, bn s to mt mt n ng
cho mt lp i tng. Bn s s dng hai lp: Layer Art v Layer Mask.

Hnh 133 Mt n ng

Bn hy s dng Motion Tween (hoc Classic Tween) to hiu ng dch


chuyn lp mt n dc theo ng ngh thut. Tip theo, bn hy kch chut phi
ln lp Mask, chn Mask. Lp tc lp mt n chuyn ng ny s to hiu ng
xut hin tng phn cho i tng hnh ngh thut.
V d v vic s dng mt n bin hnh: trong v d ny, bn s to mt mt n
bin hnh. Hon ton tng t nh v d trn, nhng ch khc mt im l trong
v d trn, bn s dng Motion Tween (hoc Classic Tween), cn trong v d ny,
bn s dng Shape Tween.

- 213 -

CHNG 6. CC HIU CHNH NNG CAO

Hnh 134 Mt n bin hnh

Mt n ng to ra mt hiu ng kh th v. Mt n bin hnh c chc nng cng


khng km th v. Bn hon ton c th s dng hai loi mt n ny to ra cc
hiu ng hay khi trnh chiu mt Album nh.
V d v vic s dng mt n c th di chuyn c (draggable mask). to loi
mt n ny, chng ta cn to mt i tng lm mt n. i tng ny phi l
biu tng movieclip hoc button. Thng thng, ngi ta s s dng biu tng
movieclip.
u tin, bn hy to hai Layer: Layer 1 cha nh nn (tm gi l background),
Layer 2 to mt hnh ng gic lm mt n (tm gi l mask).

- 214 -

CHNG 6. CC HIU CHNH NNG CAO

Hnh 135 To mt draggable mask Bc 1

to c hiu ng ny, bn cn s dng ActionScript. y, chng ta s s


dng ActionScript nh vo Code Snippets. Bn chn i tng hnh ng gic, bm
vo biu tng Code Snippets.

Hnh 136 To mt draggable mask Bc 2

Bn chn nhm Actions > Drag and Drop. Sau , bn hy nhp i chut vo
biu tng ny. Bn hy nhn Ctrl+Enter kim tra. Ti thi im ny, bn c
th di chuyn i tng hnh ng gic ny.

- 215 -

CHNG 6. CC HIU CHNH NNG CAO

Tip theo, chng ta s s dng k thut Mask. Bn hy chn Layer Mask, kch
chut phi, v chn Mask. Bn s thu c kt qu nh hnh bn di.

Hnh 137 To mt draggable mask Bc 3

Bn hy kim tra movie mt ln na bng cch nhn t hp Ctrl+Enter. Bn s


thy rng, hiu ng mask hot ng. Tuy nhin, bn khng th di chuyn c
i tng dng lm mt n ny. S d nh vy l v, khi bn s dng hiu ng
mask, i tng movieclip c lm mt n s c t ng n nh thuc tnh
buttonMode l false. Chng ta cn thay i thuc tnh ny. Bn hy nhn phm F9
quay li vi khung son tho ActionScript. Sau , b sung dng lnh
movieClip_1.buttonMode = true;
Bn c th tham kho ton b m lnh ca chng trnh nh bn di.
movieClip_1.addEventListener(MouseEvent.MOUSE_DOWN, fl_ClickToDrag);
function fl_ClickToDrag(event:MouseEvent):void{
movieClip_1.startDrag();
}
stage.addEventListener(MouseEvent.MOUSE_UP, fl_ReleaseToDrop);
function fl_ReleaseToDrop(event:MouseEvent):void{
movieClip_1.stopDrag();
}
movieClip_1.buttonMode = true;
To SlideShow nh: Trong v d ny, ti s hng dn cho bn cch to mt
SlideShow nh nh vo k thut Mask. to c SlideShow nh ny, bn hy
s dng mt vi bc nh v import vo th vin. Trong v d ny, ti s dng 3
nh. Bn to 6 Layer, 3 Layer cha nh, v 3 Layer dng to mt n. Mi mt
n s c t ngay trn bc nh. Bn c th tham kho hnh minh ha bn di.

- 216 -

CHNG 6. CC HIU CHNH NNG CAO

Hnh 138 To Slide nh Bc 1

Hiu ng cho mt n Mask 1. Bn hy to mt hnh ch nht c kch thc nh,


nm gc trn bn phi ca khung trnh chiu.

Hnh 139 To Slide nh Bc 2

- 217 -

CHNG 6. CC HIU CHNH NNG CAO

Chn i tng hnh vung ny, kch chut phi v chn Create Motion Tween.
Bn hiu chnh rng ca Tween ny, sao cho v tr kt thc ca n nm
Frame 15. Sau , bn hiu chnh kch thc ca hnh vung sao cho n chim
ton khung trnh chiu. Ti Frame th 19 ca Layer Pic1, nhn phm F5 (hoc F6)
sao chp ton b nh trn Frame th nht ln cc Frame 2 n 19. Chn Layer
Mask 1 ny, kch chut phi v chn Mask.
Hiu ng cho mt n Mask 2. Hon ton tng t vi mt n Mask1. Ln ny, bn
hy to mt dy cc ngi sao. Ti Frame 20 ca Layer Mask2, bn nhn phm F6,
s dng cng c PolyStar to cc ngi sao.

Hnh 140 To Slide nh Bc 3

Kch chut phi ln cc i tng ngi sao ny, chn Create Motion Tween. Hiu
chnh rng ca Tween ny sao cho v tr kt thc ca n nm Frame 35 ca
Layer Mask 2. Ti Frame 39 ca Layer Pic2, nhn phm F5 hoc F6 sao chp
Frame 20 ln cc Frame t 21 n 39. Kch chut phi ln Layer Mask 2, chn
Mask.
Hiu ng cho mt n Mask 3. Tng t nh hai mt n trn. Ln ny chng ta s
to hiu ng ct lt. Trn Layer Mask 3, bn hy to cc hnh ch nht (khng
vin), rng 1 pixel. Hy sao chp hnh ch nht ny thnh nhiu hnh v sp
xp chng gn nhau (khng dnh lin nhau). Chng bao ph ton khung trnh
chiu. Trong hiu ng mt n ln ny, ta s dng loi mt n bin hnh. Bn hy
chn Layer Mask 3, kch chut phi v chn Shape Tween. Ti Frame 55 ca

- 218 -

CHNG 6. CC HIU CHNH NNG CAO

Layer Mask3, nhn phm F6. Bn tip tc bn vo KeyFrame ny (Frame th 55


ca Layer Mask 3 ny), chn tt c cc hnh ch nht. Gi phm Ctrl v r
chut sao chp tt c chng v sp xp chng st vi cc hnh ch nht trc.
Bn tip tc cng vic ny cho n khi cc hnh ch nht chng kht nhau v che
khut khung trnh chiu. Ti Frame th 60 ca Layer Pic3, nhp phm F5 hoc F6.
Chn Layer Mask 3, kch chut phi v chn Mask.

Hnh 141 To Slide nh Bc 4

Bn hy quan st li cch b tr cc Frame trn TimeLine theo hnh bn di.

Hnh 142 To Slide nh Bc 5

kim tra kt qu cui cng. Bn hy nhp t hp phm Ctrl+Enter. Hi vng bn


s hi long vi cc hiu ng ny. Bn hon ton c th to ra cc hiu ng ca
ring bn bng cch s dng hai loi mt n nu trn.

- 219 -

CHNG 6. CC HIU CHNH NNG CAO

6.6. To cc nt nhn iu khin


Trong th vin ca Flash cung cp cho ta rt nhiu template ca cc nt iu
khin: nt iu khin c kiu dng chun ca Windows, nt iu khin to sn.
Bn cng c th t to mt kiu nt iu khin cho ring mnh. Trong phn ny,
chng ta s tm hiu v cch s dng cc nt iu khin to sn iu khin
phim trong Flash.
To nt Play v Stop
Bt hp thoi Library Button: Windows>Common Libraries>Button. Tip n
bn hy chn mt loi Button m bn cho l ph hp.

Hnh 143 To nt nhn iu khin


Tip n, bn hy ci t tn hin th cho n. Trong Action, bn hy s dng chc
nng qun l s kin kch chut. Trong hm s kin tng ng, vi hnh ng
play, bn hy dng hm play (nhng bn cn hiu chnh cho on phim khng
c chi t ng nh vo hm stop), vi hnh ng dng phim bn s dng
hm stop.
To thanh PlayBack
Bn hy to mt Movie, sau bn hy s dng thanh Slider lm thanh
playback nh hnh minh ha

- 220 -

CHNG 6. CC HIU CHNH NNG CAO

Hnh 144 To thanh Playback


Bn ci t tn hin th cho i tng Slider l playbar. Trong khung son tho
Action, bn vit ni dung nh sau
stop();
playbar.maximum = 300;
var allowed:Boolean = false;
playbar.addEventListener(MouseEvent.MOUSE_MOVE, playbacknow);
function playbacknow(e:MouseEvent):void{
if (allowed)
gotoAndPlay(playbar.value);
}
playbar.addEventListener(MouseEvent.MOUSE_DOWN, PlayIt);
function PlayIt(e:MouseEvent):void{
allowed = true;
}
playbar.addEventListener(MouseEvent.MOUSE_UP, StopIt);
function StopIt(e:MouseEvent):void{
allowed = false;
}

trong on chng trnh ny, playbar.maximum c gn bng s Frame trong


Scene. Bin allowed tng ng vi s kin chut c n xung hay th ra. Khi

- 221 -

CHNG 6. CC HIU CHNH NNG CAO

kt hp s kin n chut v di chuyn chut trn thanh Slider ny, s nhy n


Frame c ch nh v tip tc trnh din nh vo hm gotoAndPlay.

6.7. Xut bn mt Movie

Sau khi bn hon chnh mt video, cng vic tip theo l bn cn xut bn n.
Trc khi xut bn, bn cn hiu chnh mt vi thng s lin quan trong mc
Publish Setting. xut bn phim, bn hy chn chc nng Export Movie. Trong
hp thoi xut hin, bn hy chn nh dng *.swf.
Vi nh dng swf ny, bn c th chi n trong trnh Flash Player hoc trong
mt file html vi trnh duyt c ci t plugin flash. u ny i lc cng phin
nhiu. Bn hon ton c th chn nh dng video khc, tuy nhin n khng gi
li nhng hiu ng tng tc vi cc nt nhn. n gin, Flash Player cung
cp cho ta chc nng to trnh movie kh thi *.exe. to mt movie dng ny,
bn hy m movie va xut bn bng Flash Player, sau chn File >Create
Projector, v nhp tn movie ca bn.
Xut bn tp tin cho thit b di ng. xut bn tp tin cho thit b di ng,
chng ta c hai hng tip cn:
- Nu thit b di ng ch h tr flash lite di dng plugin: chng ta cn chn la
khi to mi mt d n trong flash (chn phin bn flash lite ph hp). Bn cng
cn lu rng, khng phi dng in thoi no cng h tr ActionScript 3, v vy
bn cng cn lu . S h tr ny ph thuc vo phin bn flash lite. Vic xut
bn mt tp tin cho thit b di ng l hon ton t ng, hoc bn c th s dng
chc nng Export Movie nh trn.
- Nu thit b di ng h tr Adobe AIR (nh cc dng my tnh bng tablet): khi
to mt d n, chng ta cn chn d n Adobe AIR. Vic xut bn tp tin ng gi
ci t trn Adobe AIR khng din ra t ng. Chng ta cn thit lp cc thng
s cu hnh cho n. Mt tp tin ci t cho AIR c phn m rng l *.air (nu
c nh km tp tin chng thc) hoc *.airi (nu cha nh km tp tin chng
thc). Chng ta ch c th ci t ln AIR i vi tp tin chng thc *.air.
thit lp cc thng s cho tp tin ci t trn AIR, ta chn File > Adobe Air 2
Settings.
a) Mc General

- 222 -

CHNG 6. CC HIU CHNH NNG CAO

Hnh 145 Thit lp tp tin ci t trn air Mc General

Output file: Tn tp tin ci t s xut bn.


Windows Installer (*.exe): Tn tp tin ci t xut bn dng *.exe.
File name: Tn tp tin sau khi ci t.
Apps name: Tn ca ng dng.
Version: Tn phin bn.
Apps ID: ID ca ng dng.
Description: mt vi t t v ng dng.
Copyright: bn quyn.
Windows Style: dng hin th ca ca s Windows dnh cho ng dng AIR.
C ba dng hin th: System Chrome (theo h thng), Custom Chrome (ty
chnh) v Transparent (trong sut).

b) Mc Signature

- 223 -

CHNG 6. CC HIU CHNH NNG CAO

Hnh 146 Thit lp tp tin ci t trn air Mc Signature


To mt tp tin chng thc. Nu cha c mt tp tin chng thc, chng ta bm
vo nt Create.

Publisher name: tn nh xut bn to ra tp tin.


Organization unit: n v t chc.
Organization name: tn t chc.
Country: quc gia.
Password/Confirm password: mt khu bo v v nhp li mt khu.
Type: thut ton m ha.
Save as: v tr lu tp tin chng thc.

Hnh 147 To tp tin chng thc.


c) Mc Icon: chn biu tng cho chng trnh. Chng ta cn to ra 4 kch thc
cho biu tng: 16x16, 32x32, 48x48 v 128x128.

- 224 -

CHNG 6. CC HIU CHNH NNG CAO

d) Mc Advanced

Hnh 148 Thit lp tp tin ci t trn air Mc Advanced.

Associated file type: chng trnh s qun l tp tin no.


Initial Windows Settings: cc thng s v ca s Windows chiu rng
(width), chiu cao (height), ta x, ta y, rng ti a (maximum
width), cao ti a (maximum height), rng ti thiu (minimum
width), cao ti thiu (minimum height), cho php hin th ch cc
i (maximizable), cho php hin th ch ti thiu (minimizable), cho
php thay i kch thc (resizable), cho php hin th (visible).
Other settings: cc thit lp khc install folder (th mc ci t), program
menu folder (th mc hin th trong menu program).

Sau khi thit lp xong cc thng s, bn chn Publish xut bn (hoc nhp Ok).
Xut bn tp tin ci t trn AIR cho Android. Cng tng t nh vic xut bn
tp tin AIR chy trn Windows, nhng tp tin AIR trn Android c phn m rng
l *.apk. Nu khng c iu kin s hu mt thit b chy Android, ta c th s
dng Android SDK to mi trng gi lp cho cc thit b. Sau y, ti s gii
thiu cho bn, cch ci t Android SDK, ci t AIR trn h iu hnh gi lp ny
cng nh cc ng dng chy trn AIR.
Bc 1. Chua n bi
+ He ie u ha nh ho Windows (co the MacOS hoa c Linux, Windows 7).

- 225 -

CHNG 6. CC HIU CHNH NNG CAO

+ Flash Professional CS5 full tr le n (ye u ca u Flash Professional CS5.5)


+ Adobe Device Central CS5 tr le n (ye u ca u CS5.5).
+ Android SDK (ta i ta i http://developer.android.com/sdk/index.html )
+ Adobe AIR 2 tr le n (AIR 2.6 c tch hp sa n trong CS5.5)
Bc 2. Gia i ne n bo Android SDK, sau o cha y ta p tin SDKManager.exe trong th
mu c gia i ne n. Chng trnh qua n ly se t o ng que t e tm ca c ca p nha t mi nha t.
Co ng oa n na y tie n ha nh kha mt thi gian. Ta ch cn chn Accept v nha p Ok.
Bc 3. Ta c th mu c ca i a t co da ng nh be n di:

Hnh 149 Cu trc th mc Android SDK

Bc 4. Quay la i vi SDK Manager, cho n the Virtual Devices

Hnh 150 - Th Virtual Devices

Nha p va o New e ta o mi mo t Emulator du ng e Test. V du trong trng hp


na y to i s du ng SamSung Galaxy S. e xem he ie u ha nh c ca i a t tre n thie t bi
na y la Android phie n ba n na o, ta ca n kie m tra trong Adobe Device Central.
+ Khi o ng Adobe Device Central.
+ Va o File > New Project.
+ Ch i chng trnh t o ng que t ca c thie t bi ho tr, sau o nha p va o o tm
kie m go thie t bi ca n tm. V du trong trng hp na y, to i tm SamSung Galaxy S.

- 226 -

CHNG 6. CC HIU CHNH NNG CAO

Hnh 151 - Tm kim Device Samsung Galaxy S

+ Nha p o i va o thie t bi tm c e xem tho ng so trc khi ta o thie t bi gia la p


Emulator. Trong ca s hin ra, ta c th c cc thng s lin quan n thit b
Samsung Galaxy S.
V du , trong ba ng tho ng tin na y, to i o c cc tham so : kch thc ma n hnh
(Display size) 480x800 va h iu hnh (OS) Android 2.2, c bit, thit b
ny h tr ch a chm (cm ng a im Multitouch). Ta cn lu thng s
a chm ny lp trnh s kin tng ng trn ActionScript. Nu thit b no
khng h tr a chm, th ta khng th s dng cc gi s kin lin quan n a
chm ny.

Hnh 152 - Cc thng s ca Samsung Galaxy S

Quay tr la i SDK Manager. Nha p va o nu t New, mo t ca so se hie n ra.

- 227 -

CHNG 6. CC HIU CHNH NNG CAO

Hnh 153 - To mi mt Emulator

+ Mu c Name: nha p te n thie t bi Emulator. Te n na y do chu ng ta a t nhng kho ng


c cha k t a c bie t (nh k t tra ng,).
+ Mu c Target: cho n u ng phie n ba n cu a he ie u ha nh Android trn thit b cn gi
lp. V du to i cho n Android 2.2 tng ng vi h iu hnh c ci t trn
Samsung Galaxy S.
+ Tho ng so Resolution: nha p va o kch thc ma n hnh o c c trong Adobe
Device Central, v du 480x800.
Ca c mu c kha c, e tham so ma c inh. Cuo i cu ng nha p va o nu t Create AVD.
Khi o , trong ca so SDK Manager se xua t hie n thie t bi m ba n va mi ta o.
Bc 5. Nha p cho n thie t bi va ta o, sau o nha p nu t Start e khi o ng Emulator.
Ch i trong gia y la t cho e n khi mo i trng gia la p cu a thie t bi a hoa n chnh.

- 228 -

CHNG 6. CC HIU CHNH NNG CAO

Hnh 154 - Mn hnh cho n ca Samsung Galaxy S

Bc 6. M th mu c ca i a t Adobe Flash CS5.5:


..\Adobe\Adobe Flash CS5.5\AIR2.6\runtimes\air\android\emulator\
va copy ta p tin Runtime.apk sang th mu c:
..\platform-tools\
be n trong th mu c ca i a t cu a Android SDK.
Bc 7. Khi o ng Command Promt (va o Run, nha p cmd va nha n Enter), du ng
le nh
>CD ng_dn
(nhn Enter)
trong ,
ng_dn: l ng dn ch n th mc ..\platform-tools
e nha y e n th mu c hie n thi la ..\platform-tools\ tre n.
Bc 8. Go va o le nh
adb install Runtime.apk (nhn Enter)
va ch i qua trnh ca i a t mo i trng AIR cho Emulator hoa n ta t. Ne u tha nh
co ng, th se nha n c tho ng ba o success.
Bc 9. Ta o mo t go i ca i a t cho phe p cha y tre n AIR. Khi o ng Flash CS5.5

- 229 -

CHNG 6. CC HIU CHNH NNG CAO

Hnh 155 - To d n AIR cho Android

Cho n AIR for Android. Sau , ha y thie t ke va la p trnh cho ng du ng cu a ba n (lu


y trong trng hp na y, Android 2.2 a ho tr ActionScript 3).
Co ng vie c xua t ba n ta p tin cho Android hoa n toa n tng t nh xua t ba n ta p tin
cho AIR c gii thie u phn trn. Nhng ke t qua , ta kho ng thu c ta p tin
*.air ma la *.apk. Gia s to i a t te n cho ta p tin ng du ng la apps.apk.
Bc 10. Copy ta p tin apps.apk va o th mu c ..\platform-tools\ tre n.
Bc 11. Go va o do ng le nh sau trong Command Promt:
adb install apps.apk
(nhn Enter)
Sau khi ca i a t hoa n ta t, ta nha n c tho ng ba o success nh bc 7.
Bc 12. Quay la i mo i trng gia la p Emulator, trong ma n hnh chnh, ta cho n
ng du ng ma ta va ca i a t.
V du , ng du ng cu a to i va ca i a t co te n la Android01 nh tre n. Ta s du ng tro
chuo t e nha p o i va o no , hoa c ca c phm mu i te n e di chuye n va Enter e cho
ng du ng. Phm Esc e quay la i ma n hnh trc o .

Hnh 156 - ng dng sau khi c ci t

- 230 -

CHNG 6. CC HIU CHNH NNG CAO

g b ng dng ra khi mi trng gi lp, ta truy cp vo Settings >


Application > Manage Applications. Sau , nhp i vo ng dng cn g b v
chn Uninstall v Ok.
Xut bn tp tin cho cc thit b s dng h iu hnh iOS. Hon ton tng
t nh xut bn tp tin cho AIR trn, tuy nhin trong trng hp ny, ta cn c
thm tp tin *.mobileprovision. Bn c th tm thy tp tin ny trong b gi lp
iOS SDK ca Apple. Cng cn lu rng, tp tin s dng trong trng hp ny l
*.ipa mt dng tp tin ci t s dng trn iOS.

6.8. Xut bn mt tp tin Flash trong sut trn trnh duyt

Nu thng xuyn duyt web, chng ta c th thy trn nhiu website c nhng
thc phim Flash ng c th di chuyn trn trang web nhng khng che khut
cc ni dung trn trang web v c bit khng c khung hnh bao quanh cc i
tng trong phim Flash .
Trong movie bn di, trn stage (mu xanh nc bin) c cc i tng: my,
chim hi u, cy da v hoa. Khi xut bn tp tin Flash, ta cho php mu ca stage
tr nn trong sut th ta s nhn c ng dng ch c cc i tng nu trn.
Nu ng dng s dng trn web (chy trn Flash Plugin) th phn trong sut ca
stage s hin th ni dung trn web; nu ng dng chy trn AIR (nh cc ng
dng AIR cho Desktop chn hn) th ta ch thy cc i tng m khng thy
khung vin bao quanh. Trong trng hp ny, i tng dng nh ang hot
ng trn mn hnh ch khng phi ang hot ng trn ca s ca AIR. i vi
trng hp ny, ta tm hiu mc xut tp tin cho AIR. Trong trng hp ny,
ta s tm hiu cch lm trong sut phn nn cho cc ng dng chy trn web. Hy
quan st movie sau y vi y mu nn ca stage v cc i tng khc.

- 231 -

CHNG 6. CC HIU CHNH NNG CAO

Hnh 157 Phim Flash vi cc i tng my, chim hi u, cy da v hoa

Hnh 158 Phim Flash trong sut trn trnh duyt

to mt thc phim Flash trong sut nh th ny, ta ch thay i phn thit


lp Publish Settings khi xut bn mt tp tin Flash. D mu nn ta c thit lp l

- 232 -

CHNG 6. CC HIU CHNH NNG CAO

mu no i na, th vi ty chnh bn di y, mu nn ca phim s lun trong


sut.
Bc 1. Hy thit k mt phim Flash vi mu nn ty chnh, nhng cn lu
rng, ta khng c php s dng mt i tng, mt hnh nn lm hnh nn
cho thc phim.
Bc 2. Vo File > Publish Settings. Trong hp thoi hin ra, chn th Flash, chn
chc nng Windows Mode l Transparent Windowsless.

Hnh 159 Hp thoi Publish Settings

Bc 3. Nhn Publish xut bn tp tin.


Nu mun a phim ny vo trong cc website, ta ch cn m tp tin htm ln v
sao chp on m sau:
<div id="flashContent" style= width:100%; height:100%; margin-top:330px;
margin-left:0px;>

- 233 -

CHNG 6. CC HIU CHNH NNG CAO

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550"


height="400" id="index" align="middle">
<param name="movie" value="index.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#0066ff" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="wmode" value="transparent" />
<param name="scale" value="showall" />
<param name="menu" value="false" />
<param name="devicefont" value="false" />
<param name="salign" value="" />
<param name="allowScriptAccess" value="sameDomain" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="index.swf" width="550"
height="400">
<param name="movie" value="index.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#0066ff" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="wmode" value="transparent" />
<param name="scale" value="showall" />
<param name="menu" value="false" />
<param name="devicefont" value="false" />
<param name="salign" value="" />
<param name="allowScriptAccess" value="sameDomain" />
<!--<![endif]-->
<a href="http://www.adobe.com/go/getflash"><img
src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.g
if" alt="Get Adobe Flash player" /></a>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</div>
Cn lu n cc th c in m.

- 234 -

CHNG 6. CC HIU CHNH NNG CAO

6.9. Tng tc gia ActionScript v JavaScript


to tng tc gia AS v JS, ta s dng i tng ExternalInterface. Khi to
mi tng tc t JS, ta s dng phng thc callBack v ngc li, ta s dng
phng thc call.
V d sau y cho php thc hin vic gi qua li gia AS v JS.
a) To mt movieClip trong Flash nh sau:

Hnh 160 Gi tho ng tin t ActionScript sang JavaScript.

t tn cho TextArea l theText v Button l button. Sau , vit AS cho nt nhn


ny nh sau:
import flash.external.*;
import flash.events.MouseEvent;
var methodName:String = "sendTextFromHtml";
var method:Function = recieveTextFromHtml;
ExternalInterface.addCallback(methodName, method);
var wasSuccessful:Boolean = ExternalInterface.available;
function recieveTextFromHtml(t) {
theText.text = t;
}
button.addEventListener(MouseEvent.CLICK, buttonClick);
function buttonClick(e:MouseEvent) {
ExternalInterface.call("recieveTextFromFlash", theText.text);
theText.text = "";
}

- 235 -

CHNG 6. CC HIU CHNH NNG CAO

b) Vit mt trang html nh sau:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>AS comunicates JS</title>
<script language="javascript" >
function recieveTextFromFlash(Txt) {
document.getElementById('htmlText').value = Txt;
}
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<textarea
name="htmlText"
id="htmlText"
style="width:450px;
height:200px;"> </textarea>
<br />
<input style="margin-left:175px;" type="button" name="sendToFlash"
id="sendToFlash"
value="Send
Text
To
AS"
onclick="getElementById('flash').sendTextFromHtml(htmlText.value);
document.getElementById('htmlText').value = ''" />
</form>
<div align="left">
<embed src="myFlash.swf" id="flash" quality="high" scale="exactfit"
width="450"
height="250"
name="squambido"
align="middle"
allowscriptaccess="always"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer"/>
</div>
</body>
</html>
Trong , myFlash.swf l tp tin Flash to bc trn. Khi chy chng trnh,
ta thu c kt qu nh sau:

- 236 -

CHNG 6. CC HIU CHNH NNG CAO

Hnh 161 Gi d lie u qua la i gia ActionScript va JavaScript.

Khi nhp ni dung vo TextArea v nhp nt Send Text To AS ca trang Html


th ni dung trn s c chuyn sang TextAre ca Flash. V ngc li, khi g ni
dung vo TextArea ca Flash v nhp nt Send To JS th ni dung s hin th ln
TextArea ca trang Html.

6.10. Lp trnh Socket trn Adobe AIR

Tho ng thng, trong ca c ng du ng Game trc tuye n ca c tha nh vie n co the gi ca c


tho ng ie p cho nhau. Ca c tho ng ie p na y c gi trc tie p tho ng qua Socket. Mo
hnh ma ng c s du ng trong trng hp na y la client server. Ca c tha nh vie n
co the gi trc tie p e n nhau ma kho ng ca n tho ng qua mo t server trung gian.
Nhng d a n game ln, thng se s du ng mo t server trung gian e thc hie n
nhie m vu na y. Tuy nhie n trong gia o trnh na y, to i se minh ho a mo t v du n gia n
la gi tho ng ie p trc tie p gia hai ma y. Thng trng hp na y a p du ng cho ca c
game co 2 ngi chi (chi qua bluetooth, wifi, lan).

- 237 -

CHNG 6. CC HIU CHNH NNG CAO

Trong v du na y, ta se ta o ra hai lp o i tng tng ta c hai pha theo mo hnh


client server nu trn:
a) Lp Server Socket.
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.ProgressEvent;
import flash.events.ServerSocketConnectEvent;
import flash.net.ServerSocket;
import flash.net.Socket;
import flash.text.TextField;
import flash.text.TextFieldType;
import flash.utils.ByteArray;
public class ServerSocketExample extends Sprite
{
private var serverSocket:ServerSocket = new ServerSocket();
private var clientSocket:Socket;
private var localIP:TextField;
private var localPort:TextField;
private var logField:TextField;
private var message:TextField;
public function ServerSocketExample()
{
setupUI();
}
private function onConnect( event:ServerSocketConnectEvent ):void
{
clientSocket = event.socket;
clientSocket.addEventListener(
ProgressEvent.SOCKET_DATA,
onClientSocketData );
log( "Connection from " + clientSocket.remoteAddress + ":" +
clientSocket.remotePort );

- 238 -

CHNG 6. CC HIU CHNH NNG CAO

}
private function onClientSocketData( event:ProgressEvent ):void
{
var buffer:ByteArray = new ByteArray();
clientSocket.readBytes( buffer, 0, clientSocket.bytesAvailable );
log( "Received: " + buffer.toString() );
}
private function bind( event:Event ):void
{
if( serverSocket.bound )
{
serverSocket.close();
serverSocket = new ServerSocket();
}
serverSocket.bind( parseInt( localPort.text ), localIP.text );
serverSocket.addEventListener(
ServerSocketConnectEvent.CONNECT,
onConnect );
serverSocket.listen();
log( "Bound to: " + serverSocket.localAddress + ":" + serverSocket.localPort );
}
private function send( event:Event ):void
{
try
{
if( clientSocket != null && clientSocket.connected )
{
clientSocket.writeUTFBytes( message.text );
clientSocket.flush();
log( "Sent message to " + clientSocket.remoteAddress + ":" +
clientSocket.remotePort );
}
else log("No socket connection.");
}
catch ( error:Error )

- 239 -

CHNG 6. CC HIU CHNH NNG CAO

{
log( error.message );
}
}
private function log( text:String ):void
{
logField.appendText( text + "\n" );
logField.scrollV = logField.maxScrollV;
trace( text );
}
private function setupUI():void
{
localIP = createTextField( 10, 10, "Local IP", "0.0.0.0");
localPort = createTextField( 10, 35, "Local port", "0" );
createTextButton( 170, 60, "Bind", bind );
message = createTextField( 10, 85, "Message", "Lucy can't drink milk." );
createTextButton( 170, 110, "Send", send );
logField = createTextField( 10, 135, "Log", "", false, 200 )
this.stage.nativeWindow.activate();
}
private function createTextField( x:int, y:int, label:String, defaultValue:String =
'', editable:Boolean = true, height:int = 20 ):TextField
{
var labelField:TextField = new TextField();
labelField.text = label;
labelField.type = TextFieldType.DYNAMIC;
labelField.width = 100;
labelField.x = x;
labelField.y = y;
var input:TextField = new TextField();
input.text = defaultValue;
input.type = TextFieldType.INPUT;
input.border = editable;

- 240 -

CHNG 6. CC HIU CHNH NNG CAO

input.selectable = editable;
input.width = 280;
input.height = height;
input.x = x + labelField.width;
input.y = y;
this.addChild( labelField );
this.addChild( input );
return input;
}
private
function
createTextButton(
x:int,
y:int,
clickHandler:Function ):TextField
{
var button:TextField = new TextField();
button.htmlText = "<u><b>" + label + "</b></u>";
button.type = TextFieldType.DYNAMIC;
button.selectable = false;
button.width = 180;
button.x = x;
button.y = y;
button.addEventListener( MouseEvent.CLICK, clickHandler );
this.addChild( button );
return button;
}
}
}
b) Lp Client Socket.
package {
import flash.display.Sprite;
public class SocketExample extends Sprite {
private var socket:CustomSocket;
public function SocketExample() {
socket = new CustomSocket("localhost", 80);

- 241 -

label:String,

CHNG 6. CC HIU CHNH NNG CAO

}
}
}
import flash.errors.*;
import flash.events.*;
import flash.net.Socket;
class CustomSocket extends Socket {
private var response:String;
public function CustomSocket(host:String = null, port:uint = 0) {
super();
configureListeners();
if (host && port) {
super.connect(host, port);
}
}
private function configureListeners():void {
addEventListener(Event.CLOSE, closeHandler);
addEventListener(Event.CONNECT, connectHandler);
addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
addEventListener(SecurityErrorEvent.SECURITY_ERROR,
securityErrorHandler);
addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
}
private function writeln(str:String):void {
str += "\n";
try {
writeUTFBytes(str);
}
catch(e:IOError) {
trace(e);
}
}

- 242 -

CHNG 6. CC HIU CHNH NNG CAO

private function sendRequest():void {


trace("sendRequest");
response = "";
writeln("GET /");
flush();
}
private function readResponse():void {
var str:String = readUTFBytes(bytesAvailable);
response += str;
}
private function closeHandler(event:Event):void {
trace("closeHandler: " + event);
trace(response.toString());
}
private function connectHandler(event:Event):void {
trace("connectHandler: " + event);
sendRequest();
}
private function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}
private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}
private function socketDataHandler(event:ProgressEvent):void {
trace("socketDataHandler: " + event);
readResponse();
}
}
Trong v du na y, ta s du ng hai lp o i tng la ServerSocket va Socket.
ServerSocket du ng e ta o mo t socket pha server. Socket du ng e ta o mo t
socket tng ta c t pha client. Trong v du na y, lp ServerSocketExample cha

- 243 -

CHNG 6. CC HIU CHNH NNG CAO

ca hai o i tng bi ta ang thc thi giao tie p gia hai ma y ma kho ng ca n co
server trung gian. Khi o , mo t trong hai ma y se co chc na ng la m server ie u
khie n. e hie u ro hn ve v du minh ho a tre n, ta ca n tm hie u ca c phng thc,
thuo c tnh va s kie n tng ng cu a mo i lp.
LP SERVERSOCKET
THUO C TINH
bound:Boolean
Kim tra socket c c rng buc vi mt a ch ip v
mt cng hay khng.
isSupported:Boolean
Kim tra mi trng runtime c h tr ServerSocket
khng.
listening:Boolean
Kim tra server socket c ang lng nghe s kt ni t
pha client hay khng.
localAddress:String
a ch ip m socket ang lng nghe.
localPort:int
Cng kt ni m socket ang lng nghe.
PHNG THC
ServerSocket()
Hm khi to mt i tng ServerSocket.
bind(port:int=0,
Rng buc socket vi mt a ch ip v cng xc
localAddress:String=0.0.0.0) nh.
close
ng socket v dng cc kt ni n server.
listen(backlog:int)
Lng nghe cc kt ni TCP trn a ch ip v cng
ch nh phng thc bind.
S KIE N
close
c gi i khi h iu hnh ng cc socket.
connect
c gi i khi c mt socket kt ni n server.

bytesAvailable:uint
connected:Boolean
endian:String
localAddress:String
localPort
objectEncoding
remoteAddress
remotePort

LP SOCKET
THUO C TINH
S byte thun li cho vic c t b m vo.
Kim tra socket ny c ang c kt ni hay cha.
Ch ra th t c d liu.
Ch ra a ch ip m socket rng buc.
Ch ra cng m socket rng buc.
iu khin phin bn AMF (Action Message Format)
dnh cho c/ghi d liu.
a ch ip m socket ny kt ni n.
Cng kt ni m socket ny kt ni n.

- 244 -

CHNG 6. CC HIU CHNH NNG CAO

Socket(host:String=null,
port:int=0)
close()
connect(host:String=null,
port:int=0)
flush()

PHNG THC
Hm khi to ca lp Socket vi a ch ip v cng
ch nh.
ng socket.
Kt ni socket vi mt a ch ip v cng ch nh.

Lm sch d liu tn ng trong b m ra ca


socket.
readBoolean()
c d liu dng boolean ca socket.
readByte()
c d liu dng byte n ca socket.
readBytes(bytes:ByteArray,
c d liu di dng dy cc byte lin tc t offset
offset:uint=0, length:uint=0) vi di length ca socket.
readDouble()
c d liu dng Double.
readFloat()
c d liu dng Float.
readInt()
c d liu dng Int.
readMultiByte(length:uint,
c mt chui cc byte bng cch s dng mt tp
charset:String)
cc k t ch nh.
readObject()
c mt i tng theo cch tun t ha dng
AMF.
readShort()
c d liu di dng Short.
readUnsignedByte()
c d liu di dng UnsignedByte.
readUnsignedShort()
c d liu di dng UnsignedShort.
readUnsignedInt()
c d liu di dng UnsignedInt.
readUTF()
c d liu di dng xu UTF-8.
readUTFBytes(length:int)
c mt dy byte d liu di dng UTF-8 vi
di c ch nh length.
writeBoolean(value:Boolean) Ghi d liu dng boolean vo socket.
writeByte()
Ghi d liu dng byte n vo socket.
writeBytes(bytes:ByteArray, Ghi d liu di dng dy cc byte lin tc t offset
offset:uint=0, length:uint=0) vi di length vo socket.
writeDouble()
Ghi d liu dng Double.
writeFloat()
Ghi d liu dng Float.
writeInt()
Ghi d liu dng Int.
writeMultiByte(length:uint,
Ghi mt chui cc byte bng cch s dng mt tp
charset:String)
cc k t ch nh.
writeObject()
Ghi mt i tng theo cch tun t ha dng AMF.
writeShort()
Ghi d liu di dng Short.

- 245 -

CHNG 6. CC HIU CHNH NNG CAO

writeUnsignedByte()
writeUnsignedShort()
writeUnsignedInt()
writeUTF()
writeUTFBytes(length:int)

close
connect
ioError
securityError

socketData

Ghi d liu di dng UnsignedByte.


Ghi d liu di dng UnsignedShort.
Ghi d liu di dng UnsignedInt.
Ghi d liu di dng xu UTF-8.
Ghi mt dy byte d liu di dng UTF-8 vi
di c ch nh length.
S KIE N
c gi i khi server ngt kt ni.
c gi i khi server sn sng chp nhn kt ni.
c gi i khi li xut nhp trong qu trnh gi/nhn
xut hin.
c gi i khi triu gi phng thc connect n mt
Server b ngn cm do mc bo mt c thit lp trn
server.
c gi i khi nhn c d liu.

6.11. Lm vic vi c s d liu trong AIR


Trong ra t nhie u ng du ng tre n Desktop cu ng nh ca c thie t bi di o ng, ta ca n qua n
ly d lie u. D lie u na y co the c lu tr di da ng *.db hoa c lu tr mo t
server d lie u na o o . Ne u ca c thie t bi na y ho tr mo i trng AIR, th ta co the de
da ng qua n ly chu ng theo ca ch thc la m vie c vi d lie u nh trong mo i trng
SQLServer, Oracle, mySQL e la m vie c vi d lie u tre n mo i trng AIR, ta s
du ng ca c lp o i tng sau: SQLConnection, SQLStatement, SQLResult va
SQLError. Ba lp o i tng na y c to chc trong package flash.data. Ta la n
lt kha o sa t ca c lp o i tng na y tho ng qua v du minh ho a (ch s du ng nhng
phng thc ca n thie t, co n nhng phng thc kha c t s du ng hn, ba n co the
tham kha o ta i lie u trc tuye n do Adobe cung ca p1.
a) V du ta o mi mo t c s d lie u lu tr tre n ma y.
import flash.data.SQLConnection;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;
import flash.filesystem.File;
var conn:SQLConnection = new SQLConnection();
conn.addEventListener(SQLEvent.OPEN, openHandler);
http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/flash/data/packagedetail.html
1

- 246 -

CHNG 6. CC HIU CHNH NNG CAO

conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);
var folder:File = File.applicationStorageDirectory;
var dbFile:File = folder.resolvePath("DBSample.db");
conn.openAsync(dbFile); //hoc conn.open(dbFile)
function openHandler(event:SQLEvent):void
{
trace(" to thnh cng Database");
}
function errorHandler(event:SQLErrorEvent):void
{
trace("Li: ", event.error.message);
}
V du na y giu p ta ta o mi mo t c s d lie u lu va o file vi te n la DBSample.db.
Sau o , m no ra. e m d lie u, ta co the s du ng phng thc open hoa c
openSync cu a o i tng conn (la o i tng cu a lp SQLConnection). Khi m
tha nh co ng, th no se la ng nghe s kie n SQLEvent.OPEN; ngc la i s kie n c
la ng nghe se la SQLEvent.ERROR ne u pha t sinh lo i trong qua trnh m.
b) V du ta o mi mo t ba ng d lie u trong c s d lie u.
import flash.data.SQLConnection;
import flash.data.SQLStatement;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;

var createStmt:SQLStatement = new SQLStatement();


createStmt.sqlConnection = conn;
var sql:String =
"CREATE TABLE IF NOT EXISTS employees (" +
" empId INTEGER PRIMARY KEY AUTOINCREMENT, " +
" firstName TEXT, " +
" lastName TEXT, " +
" salary NUMERIC CHECK (salary > 0)" +
")";
createStmt.text = sql;

- 247 -

CHNG 6. CC HIU CHNH NNG CAO

createStmt.addEventListener(SQLEvent.RESULT, createResult);
createStmt.addEventListener(SQLErrorEvent.ERROR, createError);
createStmt.execute();
function createResult(event:SQLEvent):void
{
trace("Bng d liu c to");
}
function createError(event:SQLErrorEvent):void
{
trace("Li: ", event.error.message);
}
e ta o mo t ba ng d lie u trong SQL, ta s du ng le nh create table. No la mo t truy
va n. Khi thc thi mo t truy va n trong ActionScript 3.0, ta s du ng SQLStatement
tho ng qua mo t ca u no i la SQLConnection. Trnh t thc thi truy va n nh sau:
- M mo t ke t no i e n c s d lie u: s du ng phng thc open/openSync cu a o i
tng Connection.
- Ga n ca u no i cho o i tng SQLStatement la ke t no i Connection tre n.
- e xa y dng mo t truy va n, ta s du ng thuo c tnh text cu a o i tng
SQLStatement.
- e thc thi truy va n, ta s du ng phng thc execute() cu a o i tng
SQLStatement.
Hoa n toa n tng t v du a, khi thc thi truy va n co the pha t sinh lo i hoa c kho ng
lo i. Do o , ta s du ng ca c bo la ng nghe s kie n tng ng vi s kie n la ng nghe la
SQLEvent.RESULT (ne u co ke t qua sau khi thc thi truy va n) va SQLEvent .ERROR
(ne u pha t sinh lo i). e thc thi ca c truy va n da ng select, insert, update, delete ta
cu ng thc thi theo trnh t ne u tre n.
c) V du thc thi truy va n da ng select.

var selectStmt:SQLStatement = new SQLStatement();


selectStmt.sqlConnection = conn;
selectStmt.text = "SELECT itemId, itemName, price FROM products";
selectStmt.addEventListener(SQLEvent.RESULT, resultHandler);
selectStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
selectStmt.execute();

- 248 -

CHNG 6. CC HIU CHNH NNG CAO

function resultHandler(event:SQLEvent):void
{
var result:SQLResult = selectStmt.getResult();
var numResults:int = result.data.length;
for (var i:int = 0; i < numResults; i++)
{
var row:Object = result.data[i];
var output:String = "itemId: " + row.itemId;
output += "; itemName: " + row.itemName;
output += "; price: " + row.price;
trace(output);
}
}
function errorHandler(event:SQLErrorEvent):void
{
trace("Li: ", event.error.message);
}
Hoa n toa n tng t nh v du c. Tuy nhie n, trong trng hp na y, vie c thc thi
truy va n select se tra ve d lie u da ng SQLResult. Trong SQLResult, co thuo c tnh
data c to chc tng t nh ma ng ma mo i do ng d lie u go m nhie u trng d
lie u. V du trong trng hp na y data tng ng vi so ke t qua (so do ng) d lie u
nha n c. Tng ng vi mo i do ng data[i] hay row co ca c trng itemID,
itemName, price ca c trng trong truy va n select.
d) V du thc thi truy va n da ng insert.
import flash.data.SQLConnection;
import flash.data.SQLResult;
import flash.data.SQLStatement;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;

var insertStmt:SQLStatement = new SQLStatement();


insertStmt.sqlConnection = conn;
var sql:String =
"INSERT INTO employees (firstName, lastName, salary) " +
"VALUES ('Bob', 'Smith', 8000)";

- 249 -

CHNG 6. CC HIU CHNH NNG CAO

insertStmt.text = sql;
insertStmt.addEventListener(SQLEvent.RESULT, insertResult);
insertStmt.addEventListener(SQLErrorEvent.ERROR, insertError);
insertStmt.execute();
function insertResult(event:SQLEvent):void
{
trace(" thm d liu vo bng.");
}
function insertError(event:SQLErrorEvent):void
{
trace("Li: ", event.error.message);
}
Hoa n toa n tng t v du c.
e) V du thc thi truy va n da ng update.
import flash.data.SQLConnection;
import flash.data.SQLResult;
import flash.data.SQLStatement;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;

var updateStmt:SQLStatement = new SQLStatement();


updateStmt.sqlConnection = conn;
var sql:String =
"UPDATE employees " +
"SET firstName = 'Bob', lastName = 'Smith',salary = 8000 where firstName
= John and lastName = Smith";
updateStmt.text = sql;
updateStmt.addEventListener(SQLEvent.RESULT, updateResult);
updateStmt.addEventListener(SQLErrorEvent.ERROR, updateError);
updateStmt.execute();
function updateResult(event:SQLEvent):void
{
trace(" cp nht d liu vo bng.");
}

- 250 -

CHNG 6. CC HIU CHNH NNG CAO

function updateError(event:SQLErrorEvent):void
{
trace("Li: ", event.error.message);
}
Hoa n toa n tng t v du c.
f) V du thc thi truy va n da ng delete.
import flash.data.SQLConnection;
import flash.data.SQLResult;
import flash.data.SQLStatement;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;

var deleteStmt:SQLStatement = new SQLStatement();


deleteStmt.sqlConnection = conn;
var sql:String =
"DELETE FROM employees" +
"WHERE firstName = 'Bob' and lastName = 'Smith'";
deleteStmt.text = sql;
deleteStmt.addEventListener(SQLEvent.RESULT, deleteResult);
deleteStmt.addEventListener(SQLErrorEvent.ERROR, deleteError);
deleteStmt.execute();
function deleteResult(event:SQLEvent):void
{
trace(" xa dng d liu c chn.");
}
function deleteError(event:SQLErrorEvent):void
{
trace("Li: ", event.error.message);
}
Hoa n toa n tng t v du c.
Ha u he t ca c mo i trng AIR cho ca c he ie u ha nh tho ng du ng: Windows, Linux,
MacOS, Android, iOS e u ho tr hoa n ha o ca c o i tng SQLConnection,
SQLStatement, SQLResult... a c bie t, ga n a y, Oracle cu ng a ba t a u pha t trie n
mo i trng Oracle cho he ie u ha nh Android va iOS. Do o , la m vie c vi c s d

- 251 -

CHNG 6. CC HIU CHNH NNG CAO

lie u ba ng ca c truy va n SQL hoa n toa n thua n li cho ca mo i trng Desktop, Web
la n Mobile.

- 252 -

CHNG 6. CC HIU CHNH NNG CAO

Tng kt chng 6
Trong chng ny, chng ta c lm quen vi k thut Mask mt k thut
rt hu ch trong Flash. Bn c th to mt mt n chuyn ng, mt n bin hnh
hoc mt mt n c th di chuyn. Bn c th to cc nt nhn, thanh playback
chi cc movie. c bit hn, bn cn c lm quen vi cch x l m thanh,
hnh nh v video vi cc chng trnh chuyn dng.
Sau khi hon tt chng 6 ny, hi vng bn c mt kin thc tng i v
Flash v ActionScript. Bn c th nng cao k nng thc hnh ca mnh bng cch
thc hnh cc bi lab trong phn tip theo.

- 253 -

CHNG 6. CC HIU CHNH NNG CAO

Blank Page

- 254 -

CHNG 7. TH VIN PAPERVISION3D

CHNG 7. TH VIN PAPERVISION3D


7.1. Gii thiu v PaperVision3D v Adobe Flex Builder
PaperVision3D l mt th vin m ngun m dnh cho ActionScript 3 lm vic
vi cc i tng ha 3D: xy dng i tng 3D, t mu, to hot hnh... y
l mt lp th vin mnh m c xy dng trn ActionScript.
PaperVision3D c pht trin u tin bi Carlos Ulloa. Nhng ngy ny, n
c mt i ng lp trnh vin quc t pht trin da trn d n m cng tn
PaperVision3D. Th vin ny c cung cp ti a ch website
http://www.papervision3d.org.
PaperVision3D c s dng kt hp vi cc trnh son tho ActionScript nh:
Adobe Flex Builder, Adobe Flash Professional, FDT hoc FlashDevelop. Trong
gio trnh ny, chng ti s trnh by trn trnh son tho Adobe Flex Buider.
Adobe Flex Buider l l mt trnh sng tc RIA (Rich Internet Application) v
son tho ActionScript chuyn nghip.

Hnh 162 Adobe Flex Buider 4

N c xy dng trn trnh son tho Eclipse mt d n m ngun m cho


mt trnh IDE (Integrated Development Enviroment mi trng pht trin tch
hp) chuyn nghip, tiu tn hng triu la ca IBM. V mt sng tc RIA, Adobe

CHNG 7. TH VIN PAPERVISION3D

Flex Builder cung cp cc cng c lm vic vi hu ht cc ngn ng lp trnh


web: php, jsp, asp.net, cung cp cng c kt ni c s d liu, cung cp cc
thnh phn hin th giao din trn cc trang web vi tng tc nh cc trnh
ng dng trn Desktop V mt son tho ActionScript, Adobe Flex Builder t ra
vt tri so vi cc trnh son tho khc k c Adobe Flash Professional: ch
son tho chuyn nghip bt li, sa li, bin dch Nu bn c kinh nghim
s dng Eclipse IDE th khng kh khn g khi lm quen vi Adobe Flex Buider.
a. To mt d n trong Flex Buider

Hnh 163 To mi d n trong Flex Buider

Flex Project: to mi d n RIA.


Flex Library Project: to d n th vin.
Flash Professional: to d n Flash bao gm c d n Flash cha ActionScript.
ActionScript Project: to d n ActionScript.
Ti cng xin lu n cc bn rng, Adobe Flex Builder l cng c son tho
ActionScript kt hp vi PaperVision3D ch khng phi l cng c pht trin
RIA cho web. Do , chng ta s lm quen vi cch s dng n trong cc d n
c minh ha trong mi v d ca gio trnh. Nu bn quan tm n trnh bin
dch ny, hay s dng n pht trin RIA cho web, chng ti s gii thiu n
cc bn trong mt gio trnh khc chuyn v Adobe Flex Builder.

- 256 -

CHNG 7. TH VIN PAPERVISION3D

Mt iu na cc bn cn lu l phin bn m chng ti ang s dng l Adobe


Flex Buider 4 v ActionScript phin bn 3.0. iu ny m bo cho cc cc v d
minh ha ca chng ti trong gio trnh ny s hot ng tt trong cc d n ca
bn m khng vp phi vn no.
b. Thao tc vi mt d n trong Flex Builder
M mt d n tn ti: Trong ca s Package Explorer bn tri, bn kch
chut phi v chn Import (hoc vo File > Import).
Sau , bn chn Flex Builder Project (theo cch vo menu File) hoc Import trc
tip (theo menu kch chut phi). Hp thoi sau y s hin ra

Hnh 164 Import mt d n

Bn chn Existing Projects into Workspace. Nhp Next. Trong hp thoi tip theo,
bn duyt n v tr d n ca bn, sau nhp Finish.
Import theo ty chn Flash Builder s dng khi import mt d n Flex Project
(tc d n RIA). Trong gio trnh ny, chng ta khng quan tm n trng hp
ny.
ng mt hoc nhiu d n ang m: bn ch vic chn d n ang m (nu
nhiu d n, bn hy nhn phm Ctrl chn cc d n khng lin tc, hoc phm
Shift nu cc d n lin tc trong ca s Package Explorer). Sau , kch chut
phi v chn Close Project.
Bin dch mt d n ActionScript: bn m bo file ActionScript ca bn ang
c m (ch ch Open Project, khng ch Open File). Sau , bn kch

vo biu tng

trong hnh minh ha sau

- 257 -

CHNG 7. TH VIN PAPERVISION3D

Hnh 165 Bin dch mt d n ActionScript

Trong menu th xung, bn chn Other. Ca s sau y s hin ra

Hnh 166 La chn chng trnh bin dch

Bn nhp i chut vo Web Application (nu mun s dng thc phm trn
Flash Player) v Desktop Application (nu mun s dng thc phim trn Adobe
AIR). Sau , bn nhp vo nt Run thc thi d n.
Sau khi la chn c chng trnh bin dch theo cc bc nu trn, t thi

im ny tr i, khi bin dch bn ch vic chn biu tng


, lp tc trong
menu th xung s c menu vi tn m bn thit lp. Bn ch vic chn menu
ny bin dch d n m khng cn phi la chn thm ln na.
Remarks: Phm tt tng ng vi Debug Desktop Application Alt+Shift+D,D v
phm tt tng ng vi Debug Web Application Alt+Shift+D,W.
Lm vic vi Workspace: Eclipse qun l cc d n theo workspace. Mt
workspace cha mt tp cc d n tin cho vic qun l. Adobe Flex Builder
c xy dng trn Eclipse cho nn n cng qun l cc d n theo workspace.

- 258 -

CHNG 7. TH VIN PAPERVISION3D

chuyn i qua li gia cc workspace, bn vo File > Switch workspace >


Other. Trong ca s xut hin, bn duyt n v tr workspace m bn chn, sau
nhp Ok. Adobe Flex Builder s t ng ti tt c cc d n ln Adobe Flex
Builder.

7.2. Cu hnh v ci t PaperVision3D cho Adobe Flex Buider

Ti PaperVision3D: bn hy truy cp vo a ch sau y


http://papervision3d.googlecode.com/files/Papervision3D_2.1.932.zip
Sau khi ti xong, bn gii nn tp tin ny vo mt v tr no trn a. Bn s
thu c th mc Papervision3D_2.1.932 v bn trong n l th mc src. Th
mc src cha ni dung nh sau
To d n th vin ActionScript: bn hy khi ng Adobe Flex Builder. Kch
chut phi vo ca s Package Explorer, chn New > Flex Library Project. Trong
ca s hin ra, bn t tn cho d n ny l PV3D( tc PaperVision3D).
Trong d n m bn va to, c mt th mc src, bn hy copy ton b ni dung
ca th mc src m bn thu c khi gii nn trn vo trong th mc src ny
(hoc n gin, bn c th s dng thao tc ko th).

Hnh 167 Th mc src

To d n ActionScript: kch chut phi trong ca s Package Explorer, chn


New > ActionScript Project. Tip theo, bn hy t tn cho d n ActionScript ca
mnh, v d PV3DTest. Chn th mc src trong d n ny, kch chut phi chn
New > Package. Thao tc ny gip bn to mt gi cha cc lp m bn s to
v sau. Package gip ng gi cc lp. iu ny cng gip bn qun l cc lp tt
hn. Nu bn khng to mi mt package, Adobe Flex Builder s t ng s dng
default package (package mc nh). Tuy nhin, ti khuyn co bn nn to cc
package cho mi d n ca bn c r rng hn. V d, trong trng hp
ny, ti to package c tn l Lession01. Sau y l cu trc ca hai d n m ti
va to minh ha cho v d s dng PaperVision3D.

- 259 -

CHNG 7. TH VIN PAPERVISION3D

Hnh 168 Cu trc th mc PV3D v PV3DTest

Ti FLARToolKit: ARToolKit l mt th vin c to bi Hirokazu Kito ca vin


Khoa hc v Cng ngh Nara Nht Bn. Sau ny, n c pht trin v xut bn
bi i hc Washington. FLARToolKit l th vin dnh ring cho Flash k t
phin bn 9.0 da trn ARToolKit. N cung cp cc cng c cn thit v kt hp
vi th vin PaperVision3D lm vic vi h ta th gii thc: v tr t
camera, gc quay, chiu sng.N hon ton min ph v l d n m ngun
m.
Bn
c
th
ti
n
ti
a
ch:
http://www.libspark.org/browser/as3/FLARToolKit/branches/alchemy/bin/FL
ARToolKit.swc?format=raw
a th vin FLARToolKit.swc vo d n: kch chut phi vo d n
ActionScript, chn New > Folder. Bn hy t tn cho n, v d swc. Sau , bn
hy copy file FLARToolKit.swc vo th mc swc va mi to.
Kch chut phi vo d n ActionScript ny, chn Properties. Trong ca s xut
hin, bn chn ActionScript Build Path, chn tip th Library Path. Sau , bn
nhp vo nt Add SWC Folder. Trong hp thoi mi xut hin, bn hy nhp tn
ca th mc cha file FLARToolKit.swc trn tc th mc swc. Sau nhp
Ok. Bn hy quan st hnh nh bn di

- 260 -

CHNG 7. TH VIN PAPERVISION3D

Hnh 169 Hp thoi Properties ca d n ActionScript

a th vin PV3D vo d n PV3DTest: kch chut phi vo d ActionScript


ny, chn Properties, chn ActionScript Build Path, sau chn th Library path.
Nhp chn nt Add Project v chn d n th vin PV3D trn.
Gi y, bn ch n thun bt tay vo vit code to cc kch bn 3D. Mi th
u tht kh n gin bi cc lp th vin m bn va ti cha ng mt th
vin hm kh ln.

7.3. Chng trnh Hello, PaperVision3D !

Mt cch thc hc lp trnh l bt tay vo vit code cho mt chng trnh


n gin trc khi bt u tm hiu chi tit v n. V d kinh in v n gin
nht l vit ra mt thng bo Hello. Tuy nhin, trong d n ny, chng ta khng
a ra mt thng bo Hello nh trn, m chng ta s to mt qu cu 3D n
gin v khng thm bt c mt i tng no khc.
Nu bn mun b sung thm mt lp ActionScript, bn hy kch chut phi vo
package Lession01 m bn to trn, chn New > ActionScript Class.

- 261 -

CHNG 7. TH VIN PAPERVISION3D

Theo cch to d n ActionScript trn, Adobe Flex Builder mc nh s dng


default package, v bn trong package ny cha mt lp mc nh cng tn vi
d n l PV3DTest.
Ni dung ca lp ny nh sau
package Lession01
{
import flash.display.Sprite;
// Thit lp khung trnh chiu

public class PV3DTest extends Sprite


{
public function Hello3D()
{
//Vit code vo y
}
}

}
Trong phn thit lp khung trnh chiu, bn c th s dng on m sau
[SWF(width="1420", height="800", backgroundColor="0x000000")]
Trong , width l rng, height l cao (c tnh theo pixel);
backgroundColor l mu nn.
b sung vo khung trnh chiu mt i tng qu cu 3D, trc tin, ta s
khi to mt i tng qu cu 3D nh hm to c cung cp bi lp Sphere
Sphere sp=new Sphere(arg0:MaterialObject3D, arg1:Number, arg2:int, arg3:int);
Trong , arg0 l cch phi mu cho i tng sp, n l mt kiu
MaterialObject3D; arg1 bn knh ca hnh cu, kiu d liu Number; arg2, arg3
s mnh c phn chia theo chiu ngang v chiu dc (s lng cc mt
Spline). Tuy i tng sp c to, nhng n cha c b sung vo khung
trnh chiu. b sung n vo khung trnh chiu, ta phi s dng mt khung nhn
View. Trong trng hp ny, ta s s dng BasicView l khung nhn c bn nht.
Lp PV3DTest s k tha lp BasicView ny nh t kha extends. Nh tnh k
tha ny, lp PV3DTest s c phng thc scene.addChild ca lp BasicView.
scene.addChild(sp);
Tuy nhin, bn c th gp hai dng lnh ny thnh mt s gn gng hn, nhng
nu bn mi bt u lm quen vi ActionScript (hoc Java, C#) th bn khng nn
vit tt nh bn di.
scene.addChild(new Sphere(arg0:MaterialObject3D, arg1:Number, arg2:int
arg3:int));

- 262 -

CHNG 7. TH VIN PAPERVISION3D

Cui cng, bn hy b sung vo phng thc startRendering() hin th i


tng c to theo cch phi mu c chn ln thit b hin th ca my tnh.
Sau y l chng trnh Hello y to mt qu cu 3D trong khng gian.
package Lession01
{
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.view.BasicView;
[SWF(width="1420", height="800", backgroundColor="0x000000")]

public class PV3DTest extends BasicView


{
public function PV3DTest()
{
scene.addChild(new Sphere(null, 500, 50, 50));
startRendering();//hoc singleRender();
}
}

}
Remarks: bn hy s dng t hp phm Ctrl+Space s dng ch Auto
Generate Code (ch gi nhc m lnh). Nh vo ch ny, bn s son tho
vn bn nhanh hn v ng thi, bn s khng mc phi li khi vit sai tn
phng thc hay thuc tnh cng nh tn lp. Nu bn to mi mt i tng
nh vo mt lp th vin khc, khi , bn cn import thm mt th vin tng
ng. Nhng khi s dng t hp phm ny, vic import th vin l hon ton t
ng. Bn hy to mt thi quen s dng t hp phm ny. Mi khi bn cn s
dng mt phng thc no , bn hy vit mt vi k t u ca phng thc,
sau s dng t hp phm ny.
To hiu ng ng cho i tng 3D: tng ng vi qu cu 3D ny, chng ta
c th to mt chuyn ng 3D tng ng. Chng trnh sau y minh ha
chuyn ng ca mt hnh cu trong khng gian.
Trong m hnh ny, mt i tng hnh cu s quay theo trong khng gian. Khi
quay trong khng gian, n c th quay theo mt trong 3 chiu: theo chiu x
pitch; theo chiu y yaw; theo chiu z roll. Ba phng thc ny c chung mt
c php pitch(arg0), yaw(arg0) v roll(arg0). , tham s arg0 l gc quay
tng ng trn mi khung hnh.
package Lession01
{
import flash.events.Event;

- 263 -

CHNG 7. TH VIN PAPERVISION3D

import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.view.BasicView;

[SWF(width="1420", height="800", backgroundColor="0x000000")]

public class PV3DTest extends BasicView


{
private var sp:Sphere;
public function PV3DTest()
{
sp = new Sphere(null, 500, 50, 50);
scene.addChild(sp);
addEventListener(Event.ENTER_FRAME, rotatenow);
}

public function rotatenow(e:Event):void{


sp.yaw(5);
startRendering();
}

Trong chng trnh ny, i tng sp c s dng khng ch trong phng


thc khi to, m cn c s dng trong phng thc rotatenow. Do , i
tng ny cn c khai bo nh l mt d liu thnh vin ca lp. Trong
phng thc khi to, phng thc addEventListener c triu gi tng ng
vi s kin ENTER_FRAME. Khi s kin ny xy ra, hm rotatenow c gi.
Trong trng hp ny, hnh cu s quay theo chiu ca trc y nh vo phng
thc yaw. Bn hon ton c th to ra mt cch quay mi nu kt hp ba phng
thc yaw, pitch v roll (hoc mt trong hai phng thc trn).
To hiu ng ng cho i tng 3D theo chuyn ng ca con tr chut:
to hiu ng ng cho hnh cu trn theo chuyn ng ca chut, ta cng s dng
cng phng thc trn nhng kt hp vi ta chut. Khi , hm rotatenow
c th c vit nh sau
public function rotatenow(e:Event):void{
sp.yaw((1420-mouseX)*0.01);
sp.pitch((800-mouseY)*0.01);
startRendering();
}

- 264 -

CHNG 7. TH VIN PAPERVISION3D

Cc s liu trong hm ny ch mang tnh cht minh ha, m khng s dng mt


cch thc tnh ton no. Bn hon ton c th thay i gi tr cc tham s trong
trng hp ny. Khi , bn s nhn c cc hiu ng dch chuyn theo tr
chut khc nhau. y cng l mt cch thc gip pht trin k nng lp trnh ca
bn. Bn ng e ngi rng chng trnh s khng hot ng. Phng chm ca
chng ti t ra trong gio trnh ny l khng ch cung cp kin thc cho bn m
cn pht trin t duy sng to ca bn trong thit k v lp trnh trn Flash.

7.4. Cc i tng trong PaperVision3D


7.4.1. Cc i tng hnh th

a. Khi to cc i tng hnh th. Cc i tng hnh th trong


PaperVision3D c t trong package org.papervision3d.objects.primitives.
i tng
Phng thc khi to
Gii thch
Cone
Cone(
Phng thc khi to c 5 tham s:
(Hnh nn) material:Material3DObject, -material: cch thc phi mu. i
radius:Number,
tng ny chng ta s c tm hiu
height:Number,
trong mc tip theo.
-radius: bn knh hnh trn y.
segmentsW:int,
-height: chiu cao.
segmentsH:int
-segmentsW: s phn mnh xp x
)
theo chiu rng ca hnh nn.
-segmnetsH: s phn mnh xp x
theo chiu cao ca hnh nn.
i tng hnh nn l mt trng
hp c bit ca i tng Cylinder.
Tuy nhin, nu bn mun to dng
mt hnh nn, bn nn s dng i
tng c th ny thay v s dng
i tng Cylinder.

- 265 -

CHNG 7. TH VIN PAPERVISION3D

Cylinder
(Hnh tr v
hnh chp
ct)

Hnh 170 i tng Cone

Cylinder(
material:Material3DObject,
radius:Number,
height:Number,
segmentsW:int,
segmentsH:int,
topRadius:Number,
topFace:Boolean,
bottomFace:Boolean
)

- 266 -

Phng thc khi to c 8 tham s:


-material: cch thc phi mu.
-radius: bn knh hnh trn y.
-height: chiu cao ca hnh tr.
-segmentsW: s phn mnh xp x
theo chiu rng ca hnh.
-segmentsH: s phn mnh c xp
x theo chiu cao ca hnh.
-topRadius: bn knh ca hnh trn
nh. Nu l hnh tr th gi tr mc
nh l -1 hoc chnh gi tr radius.
Nu tham s ny nhn gi tr 0, ta
nhn c hnh nn. Nu tham s
nhn gi tr nh hn -1, th n tr
thnh hai hnh nn chung nh.
-topFace: cho php b mt nh c
c t mu hay khng. Nu khng
t mu, c ngha n s rng pha
trn.
-bottomFace: tng t topFace,
nhng n p dng cho b mt y.

CHNG 7. TH VIN PAPERVISION3D

Plane
(Mt
phng)

Hnh 171 i tng Cylinder


Plane(
Phng thc khi to c 5 tham s:
material:Material3DObject, -material: cch thc phi mu.
width:Number,
-width: chiu rng ca mt phng.
height:Number,
-height: chiu cao ca mt phng.
segmentsW:int,
-segmentsW: s phn mnh xp x
segmentsH:int
theo chiu rng.
)
-segmentsH: s phn mnh xp x
theo chiu cao.
Thng thng mt mt phng khng
nht thit phi phn mnh (ngha l
s dng s phn mnh mt nh
bng 0). Tuy nhin nu ta khng t
mu cho mt phng th trong trng
hp ny n s kh c nhn din.
Chnh v l , nu mt phng khng
c t mu, th bn nn s dng s
phn mnh khc 0; ngc li, bn
nn s dng s phn mnh mt nh.

Hnh 172 i tng Plane

- 267 -

CHNG 7. TH VIN PAPERVISION3D

PaperPlane
(Chic tu
bay giy)

Arrow
(Mi tn)

Sphere
(Hnh cu)

PaperPlane(
Phng thc khi to c 2 tham s:
material:Material3DObject, - material: cch thc phi mu.
scale:Number
- scale: phng to ca vt th.
)

Hnh 173 i tng PaperPlane

Arrow(
material:Material3DObject
)

Phng thc khi to 1 tham s:


-material: cch thc phi mu.

Hnh 174 i tng Arrow


Sphere(
Phng thc khi to 4 tham s:
material:Material3DObject, - material: cch thc t mu.
radius:Number,
- radius: bn knh ca hnh cu.
segmentsW: int,
- segmentsW: s phn mnh xp x
segmentsH:int
theo chiu ngang.
)
-segmentsH: s phn mnh xp x
theo chiu dc.

- 268 -

CHNG 7. TH VIN PAPERVISION3D

Cube
(Hnh hp)

Hnh 175 i tng Sphere

Cube(
material:Material3DObject,
width:Number,
depth:Number,
height:Number,
segmentsH:int,
segmentsS:int,
segmentsT:int,
insideFaces:int,
excludeFaces:int
)

Phng thc khi to c 9 tham s:


- material: cch thc t mu.
- width: rng ca hnh hp.
- depth: su ca hnh hp.
- height: cao ca hnh hp.
- segmentsH: s phn mnh xp x
theo chiu ngang.
- segments: s phn mnh xp x
theo chiu dc (theo chiu xch o).
- segmentsT: s phn mnh xp x
theo chiu xu.
- insideFaces, excludeFaces: hin th
mt trong v mt ngoi.

Hnh 176 i tng Sphere


Cc i tng ny gi l cc hnh 3D nguyn thy. Nu bn mun xy dng mt
hnh th 3D phc tp, bn c th da trn c s ca nhng hnh th ny. to

- 269 -

CHNG 7. TH VIN PAPERVISION3D

cc i tng phc tp, chng ta c th s dng cc chng trnh thit k 3D


chuyn nghip nh Maya, sau , ta s import cc hnh th ny vo trong Flash
thit k theo kch bn ca mnh. Chi tit hn chng ti s gii thiu trong mc
[7.5]. Trong mt s phin bn mi hn (ch l phin bn beta phin bn chng
ta ang s dng l mi nht cho n thi im hin ti), ngoi cc i tng ny
cn c thm i tng Stars i tng ngi sao 3D. V y l tnh nng mi
trong phin bn th nghim, nn chng ti s khng a vo trong gio trnh ny.
b. Cc phng thc v thuc tnh ca cc hnh th.
Trong bng sau y, chng ti s trnh by cc phng thc v thuc tnh thng
hay s dng ca cc i tng 3D nguyn thy nu. Cc phng thc v thuc
tnh ny c th l chung cho cc i tng, cng c th l c trng cho mt i
tng no . Adobe Flex Builder s t ng kim tra mt phng thc, thuc
tnh c phi l ca i tng ang thao tc hay khng. V vy, chng ti s khng
i su vo iu ny, m ch gii thch chc nng ca mi phng thc hoc thuc
tnh.
Phng thc
get set
Gii thch
Thuc tnh
Thuc tnh trong sut, c phn b t
alpha:Number
x
x
0..1. Gi tr alpha cng nh th trong
sut ca vt th cng cao.
Ta ca vt th trong khng gian: xx, y, z: Number
x
x
honh , y-tung , z-cao . Ta ny
c tnh theo i tng cha n.
rotationX, rotationY,
Gc quay ca vt th theo cc trc x, y, z
x
x
rotationZ:Number
tng ng.
phng to theo c ba chiu (scale) v
scale, scaleX, scaleY,
x
x
theo chiu x, y, z tng ng vi scaleX,
scaleZ: Number
scaleY, scaleZ.
S dng nh cc phng thc v thuc
scene:SceneObject3D
x
x
tnh ca i tng scene.
sceneX,
sceneY,
Ta x, y, z ca i tng tng ng vi
x
sceneZ: Number
h ta cnh quay trong th gii thc.
Tr v i tng Number3D, cha cc
Position:Number3D
x
x
thng s lin quan n ta ca vt th
DisplayObject3D.
visible:Boolean
x
x
Cho php i tng hin th hay n.
name:String
x
x
Thit lp tn cho i tng.

- 270 -

CHNG 7. TH VIN PAPERVISION3D

id:int
material:MaterialObjec
t3D
materials:MaterialList

pitch(angle:Number):v
oid
yaw(angle:Number):vo
di
roll(angle:Number):voi
d
moveDown(distance:N
umber):void
moveUp(distance:Num
ber):void
moveBackward(distan
ce:Number):void
moveForward(distanc
e:Number):void
moveLeft(distance:Nu
mber):void
moveRight(distance:N
umber):void
addChild(child:Display
Object3D,
name:String):DisplayO
bject3D
addChildren(parent:Di
splayObject3D):Displa
yObjectContainer3D
removeChild(child:Dis
playObject3D):Display
Object3D
removeChildByName(
name:String):DisplayO
bject3D
addEventListener(type

Thit lp id cho i tng.


Thit lp mu t cho i tng.

Thit lp danh sch mu t (p dng cho


cube).
Quay lin tc theo trc x, mi ln quay mt
gc angle.
Tng t i vi trc y.
Tng t vi trc z.

Di chuyn lin tc i tng xung di.


Di chuyn lin tc i tng ln trn.
Di chuyn lin tc i tng ra sau.

Di chuyn lin tc i tng ra pha trc.


Di chuyn lin tc i tng sang tri.

Di chuyn lin tc i tng sang phi.

B sung i tng child ln vt th v ng


thi thit lp tn cho n l name.
B sung tt c cc i tng con nm trn
parent ln DisplayObjectContainer3D
Loi b i tng child.

Loi b i tng c tn l name.


B sung mt event tng ng vi s kin

- 271 -

CHNG 7. TH VIN PAPERVISION3D

:String,
xy ra trn i tng.
listener:Function,
useCapter:Boolean,
priority:int,
useWeakReference:Bo
olean):void
removeEventListener(
Loi b event b sung cho i tng.
type:String,
listener:Function,
useCapter:Boolean):vo
id
Trong bng trn, ct get v ct set tng ng vi gi tr ca thuc tnh. Mt thuc
tnh c n nh l get th n ch cho php c, ngc li n c n nh l set
th ch cho php ghi. Nu n c n nh get v set, th n cho php c v ghi.
Get v set ch p dng cho thuc tnh, khng p dng cho phng thc.
Trn y chng ti ch trnh by nhng phng thc v thuc tnh thng hay
c s dng nht. Bn c th tham kho ton b ni dung a ch website
papervision3d sau: http://www.papervision3d.org/docs/as3/.
7.4.2. i tng Material - Phi mu cho hnh th

Cc i tng Material nm trong package org.papervision3d.materials. Trong


package ny cha cc i tng sau: BitmapAssetMaterial, BitmapFileMaterial,
BitmapMaterial, ColorMaterial, MaterialsList, MovieAssetMaterial, MovieMaterial
v WireframeMaterial. Ngoi ra, n cn cha thm mt s package khc nh:
utils, special, shaders, shadermaterials. Hai gi shaders v shadermaterials dng
to hiu ng bng. Chng ta s tm hiu mt vi lp i tng trong s ny.
a. Phi mu bng WareframeMaterial. i tng WareframeMaterial nm
trong gi org.papervision3d.materials.WareframeMaterial.
Hm to ca i tng WareframeMaterial
WareframeMaterial wm = new WareframeMaterial(color:Number, alpha:Number,
thickness:Number);
Trong ,
Tham s color quy nh mu sc ch o.
Tham s alpha quy nh trong sut ca mu t.
Tham s thickness: quy nh ln ca ng vin trong cch t mu.
V d

- 272 -

CHNG 7. TH VIN PAPERVISION3D

scene.addChild(new Sphere(new WireframeMaterial(0x00ff00, .5, 4),400,20,20));

Hnh 177 T mu bng ColorMaterial


b. Phi mu bng ColorMaterial. i tng ColorMaterial nm trong gi
org.papervision3d.materials.ColorMaterial.
Hm to ca i tng ColorMaterial
ColorMaterial cm = new ColorMaterial(color:Number, alpha:Number,
interactive:Boolean);
Trong ,
Tham s color quy nh mu sc ch o.
Tham s alpha quy nh trong sut ca mu t.
Tham s interactive: quy nh s tng tc gia cc vt th trong cng mt
viewport.
V d
scene.addChild(new Sphere(new ColorMaterial(0x00ff00, 1, true), 400, 20, 20));

Hnh 178 T mu bng ColorMaterial

- 273 -

CHNG 7. TH VIN PAPERVISION3D

Nh bn thy, hnh th c phi mu theo dng thc ny trng ging mt hnh


2D thng thng. S d nh vy l v chng ta khng s dng n cc hiu ng
light v shader. Nu bn kt hp vi cc hiu ng ny, th bn s nhn c mt
kt qu tt hn. Hiu ng ny ch n thun phi mu c (solid color) cho i
tng hnh th.
c. Phi mu bng Bitmap. Vic phi mu bng bitmap c th c chia lm hai
cch: nhng trc tip nh bitmap vo trong phim Flash hoc ti bitmap vo
movie trong mi ln thc thi.
Nhng trc tip hnh nh bitmap
Bc 1. Nhng file bitmap vo trong phim Flash
[Embed(source="../Earth.jpg")]
private var EarthBmp:Class;
Trong trng hp ny, File Earth c t cng th mc vi src, file actionscript
nm trong th mc src, do ng dn phi li mt cp.
Bc 2. S dng hm to ca i tng BitmapMaterial
var earthbmp:BitmapData = new EarthBmp().bitmapData;
var earthmaterial:BitmapMaterial = new BitmapMaterial(earthbmp);
Tip theo, bn triu gi i tng earthmaterial trong phng thc khi to ca
i tng hnh th cn phi mu.
scene.addChild(new Sphere(earthmaterial, 400, 20, 20));

Hnh 179 T mu bng BitmapMaterial


Kt qu bn nhn c i tng hnh cu nh trn.
Ti ln hnh nh bitmap trong mi ln phim khi ng
Hm to ca i tng BitmapFileMaterial
var bm:BitmapFileMaterial=new BitmapFileMaterial(url:String, precise:Boolean)

- 274 -

CHNG 7. TH VIN PAPERVISION3D

Trong ,

Tham s url l ng dn n file nh.


Tham s precise quy nh chnh xc.

Ta c th s dng dng lnh sau y thu c cng kt qu Hnh 142.


scene.addChild(new Sphere(new BitmapFileMaterial(../Earth.jpg, true), 400, 20,
20));
Trong cch ny, bn lu rng hnh nh dng lm mu t cn phi c nh
km vi file Flash theo ng cu trc th mc tc file nh jgp nm cng cp vi
th mc cha file Flash sau khi c bin dch.
Remarks: Trong cc i tng material, c ba i tng FlatMaterial,
GouraudMaterial v PhongMaterial tng ng vi ba thut ton Shading ni
ting: thut ton FlatShading, thut ton Shading ca Gouraud v thut ton
Shading ca Phong. Thut ton Shading ca Gouraud nhanh nhng chnh xc
khng cao bng thut ton Phong2. Ngc li, thut ton Phong li c tc kh
chm, nhng n l thut ton phi mu 3D tuyt vi th hin chnh xc rt
cao. Chnh v l , nu bn mun thc phim Flash hot ng nh nhng, trong
trng hp cn Shading mt b mt khng i hi chnh xc qu cao, bn nn
s dng i tng GouraudMaterial. Tuy nhin, nu s phn mnh trn i
tng tng i nh, bn c th s dng PhongMaterial. Phng thc khi to
ca cc i tng ny tng i ging nhau, tuy nhin n cn triu gi n i
tng Lights. Chng ta s quay li sau khi tm hiu v i tng Lights.
7.4.3. i tng Lights - Hiu ng nh sng

Trong hiu ng nh sng ny, chng ta s dng phng thc khi to cho i
tng PointLight3D.
var light:PointLight3D = new PointLight3D(showLight:Boolean, flipped:Boolean);
Trong ,
Tham s showLight cho php nh sng c hin th hay khng hin th.
Tham s flipped ch p dng cho i tng 3D c ti t file DAE. N ch
ra vng tc dng ca nh sng trn khung nh.

i tng PointLight3D ny cng c nhng phng thc v thuc tnh tng i


ging vi cc i tng hnh th trn. Bn hy tham kho bng trn nu mun
s dng mt phng thc hay thuc tnh no .

Tn y l Bi Tng Phong. Sinh nm 1942, mt 1975. ng l mt nh khoa


hc hng u v ha my tnh ngi Vit Nam.
2

- 275 -

CHNG 7. TH VIN PAPERVISION3D

By gi, chng ta s s dng i tng PointLight3D ny trong cc phng thc


khi to ca ba i tng FlatMaterial, GouraudMaterial v PhongMaterial.

var fm:FlatMaterial = new FlatMaterial(light:LightObject3D, lightColor:uint,


ambientColor:uint, specularLevel:uint)
var gm:GouraudMaterial = new GouraudMaterial(light:LightObject3D,
lightColor:uint, ambientColor:uint, specularLevel:uint)
var gm:PhongMaterial = new PhongMaterial(light:LightObject3D,
lightColor:uint, ambientColor:uint, specularLevel:uint)

i tng light l ngun sng pht ra, n l mt kiu LightObject3D. Tham s


lightColor quy nh mu chiu sng, tham s ambientColor quy nh mu phi
xung quanh (do hiu ng t cc ngun sng khc nhau bao quanh), tham s
specularLevel ch nh mc phn x mu ca vt th.
7.4.4. i tng Shader - Hiu ng bng

to mt hiu ng bng Shader, c ba thut ton ni ting: FlatShader,


GouraudShader v PhongShader tng t vi cc i tng FlatMaterial,
GouraudMaterial v PhongMaterial nu. Ba i tng ny c phng thc
khi to ging vi FlatMaterial, GouraudMaterial v PhongMaterial.
7.4.5. i tng ShadedMaterial

Ta c th s dng i tng ny to mu t cho vt th. Phng thc khi to


ca i tng ny cha i tng Shader.
var sm:ShadedMaterial = new ShadedMaterial(material:BitmapMaterial,
shader:Shader, compositeMode:int)

Theo cch khi to ny, ngoi cch phi mu bng bitmap, ta cn s dng thm
hiu ng to bng. Kt qu thu c l mt hnh nh rt gn vi th gii thc.
Bn hy quan st k kt qu thu c khi kt hp bitmap v hiu ng bng
trong ShadedMaterial hnh minh ha bn di.

- 276 -

CHNG 7. TH VIN PAPERVISION3D

Hnh 180 T mu bng ShadedMaterial

7.4.6. i tng CompositeMaterial

Vi i tng ny, bn c th b sung nhiu cch phi mu cng lc cho vt th.


Phng thc khi to ca n khng cha tham s.
var cm:CompositeMaterial = new CompositeMaterial();
b sung mt material cho i tng cm, bn s dng phng thc
addMaterial ca i tng ny.
cm.addMaterial(material:MaterialObject3D):void;
7.4.7. i tng MaterialsList
i tng MaterialsList c s dng khi khi to mt i tng Cube. Phng
thc khi to cu MaterialsList cng khng cha tham s.
var ma:MaterialsList = new MaterialsList();
b sung mt material cho i tng ma, bn s dng phng thc
addMaterial.
ma.addMaterial(material:MaterialObject3D, name:String);
Trong , tham s name l tn ca cc mt trong hnh hp: all (p dng cho tt
c), front (trc), back(sau), top(trn), bottom(di), right(phi) v left(tri).

7.5. Import mt m hnh 3D

D rng vic to dng cc i tng ha 3D trong PaperVision3D tng i


thun li, tuy nhin to dng cc i tng ha phc tp trong th gii
thc tng i phc tp. Do , chng ta cn s dng cc chng trnh thit k
ha 3D chuyn nghip nh Maya, 3DsMax. Papervision3D h tr nh dng
DAE. Bn c th s dng Maya xut bn tp tin ny. ti i tng trong tp

- 277 -

CHNG 7. TH VIN PAPERVISION3D

tin
3D
ny
vo
trong
Flash,
ta
s
dng
i
tng
org.papervision3d.objects.parsers.DAE.
Hm to ca i tng DAE ny tng i n gin
var dae:DAE = new DAE(autoplay:Boolean, name:String, loop:Boolean);
Trong ,
Tham s autoplay cho php hnh ng ca cc i tng c import t
tp tin DAE s c thc thi hay khng (bi tp tin DAE ny cha i
tng 3D ng).
Tham s name quy nh tn cho i tng DAE.
Tham s loop quy nh s lp li cc hnh ng cho cc i tng trong
tp tin DAE.
ti cc i tng trong tp tin DAE vo Flash, ta s dng phng thc load
dae.load(url:String)
Trong , url l a ch ca tp tin DAE.
Sau khi bn ti cc i tng trong tp tin DAE vo Flash, bn c th thao tc vi
cc i tng ny nh vi cc i tng 3D khc c to bi Papervision3D.
Mt kh khn gp phi l chng ta cn c mt hiu bit v mt chng trnh thit
k nhn vt 3D a vo trong Flash. Vi mt chng trnh chuyn nghip nh
Maya th khng phi ai cng c th hc nhanh c, v vy bn c th s dng
nhng tp tin DAE c chia s trong cng ng mng s dng.
Mt a ch rt hu ch bn khai thc th vin hnh nh DAE l
http://www.sketchup.google.com. y l mt d n min ph ca google cung
cp cho ta cc m hnh 3D tuyt vi.

Hnh 181 Google Sketchup

- 278 -

CHNG 7. TH VIN PAPERVISION3D

Bn ch vic tm kim m hnh sau ti n v my ca bn. Bn s nhn c


tp tin *.kmz. Tp tin ny c th c bi Google Earth. Tuy nhin, bn cht ca tp
tin ny cng ch l tp tin nn. Bn c th gii nn bng chng trnh WinRar bn
s thu c mt th mc cha tp tin DAE.
Vi d n ny, chng ta c rt nhiu m hnh 3D khai thc v s dng trong
cc d n hot hnh 3D ca mnh.

- 279 -

CHNG 7. TH VIN PAPERVISION3D

Tng kt chng 7
Trong chng ny, chng ti gii thiu n bn cch s dng lp th vin
PaperVision3D to cc i tng ha 3D cng nh cch thc to chuyn
ng trong th gii thc. y l th vin m ngun m c xy dng trn
ActionScript. Hi vng bn c c mt ci nhn tng quan v ha 3D.
Vi th vin PaperVision3D ny, bn c th to dng cho mnh mt thc phim
3D n gin hoc mt game 3D n gin.

- 280 -

CHNG 7. TH VIN PAPERVISION3D

Blank Page

- 281 -

BI TP THC HNH
A PHN BI TP C HNG DN

Download Sources

1. TO CHUYN NG CHO NHN VT


Bc 1. S du ng Illustrator e chuye n o i ta p tin human.eps tha nh ta p tin
human.ai (v Flash kho ng ho tr o ho a vector da ng eps).
Bc 2. S du ng chc na ng Import to Library cu a Flash e import d lie u t
human.ai.
Bc 3. Ca t la y pha n o i tng ca n s du ng (nha p o i chuo t va o pha n o i tng
ca n ta ch ra). e ca t o i tng de da ng hn, ta ne n s du ng chc na ng Break
Apart. Chuye n toa n bo o tng tha nh movieclip va xo a bo nhng th kho ng ca n
thie t tre n stage. Ba y gi ta se ch thao ta c vi o i tng na y (Hnh a u tie n t tra i
sang).

Hnh 182 Ca c tra ng tha i cu a nha n va t khi chuye n o ng

Bc 4. Nha p o i chuo t va o bie u tng movieclip. Lu c na y, ta co the thao ta c vi


tng pha n cu a o i tng. Ha y chuye n ca c pha n tha nh ca c bie u tng MovieClip.
Ba y gi, ta co 9 pha n a c chuye n o i tha nh movieclip. Tie p theo, ta ghe p
chu ng la i vi nhau va s du ng co ng cu Bone e ta o ca c khp no i giu p chuye n
o ng (Hnh th 2 t tra i sang).
Ta ca n chu y ra ng, ca c tru c pha n tha n va se kho ng cho phe p di chuye n. Do o , ta
ca n vo hie u ho a chc na ng cho phe p chuye n o ng va xoay cu a nhng pha n na y
ba ng ca ch nha p va o chu ng va trong ba ng Properties, ta bo tu y cho n rotation, x
translation va y translation.

Bc 5. Tre n TimeLine cu a Armature, Frame th 1, ta thay o i t the cu a o i


tng nh Hnh 3 t tra i sang. Nha p va o Frame th 20 va nha p phm F6, va thay
o i t the cu a o i tng nh Hnh 4 t tra i sang. Trong qua trnh thay o i t the
cu a o i tng, ta ne n s du ng ca c phm mu i te n e ie u chnh vi tr cho phu hp.
Bc 6. e ta o chuye n o ng me m ma i, th t the frame cuo i cu ng (frame 20)
pha i tru ng khp vi t the frame th 1. Co the ba n se ngh ngay e n vie c sao
che p vu ng frame t 1 e n 20 sau o la t ngc vu ng frame va c sao che p.
ie u o la hoa n toa n chnh xa c. Tuy nhie n, khi ba n s du ng co ng cu Bone, vu ng
Timeline ma c inh kho ng cho phe p ba n la t ngi mo t pha n cu a frame na y (ch
cho phe p la t ngc toa n bo ). Do o , ta ca n chuye n da y Frame che o Armater
tha nh ca c Keyframe rie ng bie t (s du ng k thua t Frame by Frame) ba ng ca ch
nha p cho n vu ng Frame Armater, cho n Convert to Frame by Frame Animation.
Ba y gi, ta copy vu ng keyframe a c chuye n o i (t 1 e n 20), sau o da n va o
vi tr frame 21. Ta thu c vu ng da y go m 40 keyframe.
Cho n vu ng keyframe t 21 e n 40, nha p chuo t pha i va cho n Reverse Frames. Nh
va o chc na ng Onion skin, ta co the quan sa t ke t qua thu c nh hnh ve .

Hnh 183 Nha n va t chuye n o ng

Bc 7. Quay tr la i khung sa ng ta c chnh, ta ta o chuye n o ng cho movieclip


chnh (toa n bo o i tng) ba ng mo t trong hai loa i Tween: Motion Tween hoa c
Classic Tween. V du , ta s du ng Motion Tween. Ta kch chuo t pha i va o o i tng,
cho n Create Motion Tween, sau o ba m va o vi tr cu a frame cuo i (tu y thuo c va o
to c o chuye n o ng ma ba n mong muo n) va a t o i tng va o vi tr mi.
Bc 8. Trang tr cho ng i, ta s du ng a nh glasses.ai e ta ch ra pha n co va
ghe p va o khung trnh chie u. Lu y : o i tng tre n pha i na m tre n mo t layer rie ng

- 283 -

bie t, ca c o i tng kha c co the bo tr tre n ca c layer kha c nhau, tu y thuo c va o mu c


ch ta o hoa t ca nh.
Nha n Ctrl+Enter e kie m tra ke t qua .
Xem d n: ..\Lession\Source\BaiTapNangCao\Pr02_Character_Animation.

Hnh 184 Chuye n o ng cu a nha n va t trong pho i ca nh

2. TO HIU NG PHNG TN LA

Hnh 185 Te n la

Bc 1. S du ng a nh rocket.psd e import va o
trong d a n Flash cu a ba n. Xa y dng 2 layer e
cha te n la va pha n nhie n lie u bi o t cha y.
Bc 2. Ta o hie u ng nhie n lie u bi o t cha y. Ta
cho n layer fire (layer cha pha n la), va chuye n
no tha nh movieclip. Nha p o i chuo t va o Layer
na y. Trong timeline cu a movieclip la, ta a p du ng
hie u ng smoke cho no : cho n movieclip la, m
ba ng Motion Presets va cho n hie u ng Smoke.
Tuy nhie n, ta cu ng ca n lu y ra ng, trong trng
hp na y, la se bi phun ngc t tre n xuo ng (do
ta c o ng cu a chuye n o ng te n la va lc phun cu a
o ng c te n la), ie u na y co ngha la ta ca n thay
o i motion path cu a chuye n o ng na y t di le n
tha nh t tre n xuo ng. ie u na y thc thi kha n

gia n, ta ch ca n cho n co ng cu Selection Tool va


ba m va o ie m cuo i cu a motion path na y, sau o
ke o no xuo ng be n di ie m a u.

- 284 -

Ta i ca c keyframe tre n motion path na y, ta cu ng ca n hie u chnh la i mo t so tham so


trong ba ng thuo c tnh (nh thuo c tnh blur) e cho la trong trng hp na y
c thc hn.

Hnh 186 Hp thoi Publish Settings

Sau khi hie u chnh, ta thu c movieclip la nh hnh minh ho a.


Bc 3. Ta o chuye n o ng cho te n la.
Bc na y kha n gia n, ta ch ca n s
du ng motion Tween (hoa c classic
Tween) e ta o chuye n o ng cho te n
la tie n le n tre n.
Bc 4. Ta o chuye n o ng cho nhie n
lie u o t cha y luo n lie n ngay di te n
la. Hoa n toa n tng t nh ta o
chuye n o ng cu a te n la bc 3.
Bc 5. Khi nhie n lie u bi o t cha y va
la phun ra pha di, th la luo n
c phun mo t ca ch lie n tu c (s nga t
qua ng la ra t nho ), do o , ta ca n bo
sung the m mo t movieclip la na m
Hnh 187 Ta o chuye n o ng cho la
lie n ke movieclip la tre n. Trong
trng hp na y, la se phun ra t bi nga t qua ng hn.

- 285 -

Bc 6. Ta o hie u ng kho i. Ta s du ng co ng cu pen e ve mo t kho i va t the hi


lo m gia.

Hnh 188 Ta o chuye n o ng cho kho i

Hoa n toa n tng t nh ta o chuye n o ng cu a la, ta cu ng a p du ng hie u ng


smoke cho kho i va t the na y (kho i cu ng chuye n o ng xuo ng di do ta c du ng cu a
lc phun o ng c va sau o se bay le n va bie n ma t). Ta cu ng ca n hie u chnh la i ca c
tham so blur cho phu hp.
Cuo i cu ng, nha n Ctrl+Enter e kie m tra ke t qua .

Hnh 189 Mo hnh chuye n o ng cu a te n la

Xem d n: ..\Lession\Source\BaiTapNangCao\Pr03_Rocket.

- 286 -

3. TO HIU NG ZOOM
Bc 1. S du ng a nh
landcape.ai e import va o
library cu a d a n. Xo a bo i
nhng chi tie t kho ng ca n
thie t trong bc a nh va sa p
xe p la i cho phu hp.
Bc 2. Ha y chuye n bc a nh
na y tha nh movieclip va ta se
ta o hie u ng zoom camera
cho bc a nh na y.
Bc 3. Kch chuo t pha i va o
movieclip va ta o, cho n
Hnh 190 Ta o hie u ng Zoom
create motion Tween, sau o
cho n co ng cu 3D translation
tool. Ke o frame cuo i trong timeline cu a motion path e n vi tr frame 40 va a t
current frame ta i vi tr frame 40 na y (frame a nh da u o ).
Dich chuye n movieclip theo chie u z tie n ve pha trc va lu y ca c chie u x va y
cu ng pha i phu hp e a t tie u ie m va o o i tng ca n pho ng to (v du trong
trng hp na y ma i vo m ngo i nha ).
Bc 4. La p la i bc 3 la n na, e cho hie u ng phong phu hn, nhng cu ng chu
y ta p trung tie u ie m va o ma i vo m cu a ngo i nha .
Bc 5. Dng chie u phim khi qua trnh pho ng to hoa n ta t. Ha y ta o the m mo t
layer va a t te n la action. Ta i frame th 40 cu a layer action, ta nha n phm F6 e
che n keyframe, kch chuo t pha i va o keyframe na y, cho n action va nha p va o le nh:
stop();
Nha n Ctrl+Enter e kie m tra ke t qua .
Ch : ne u trong phim co nhie u movieclip phc ta p, th e s du ng hie u ng zoom
na y, ta ne n convert toa n bo ca c o i tng o tha nh mo t movieclip va a p du ng
hie u ng zoom cho movieclip mi ta o.
Xem d n: ..\Lession\Source\BaiTapNangCao\Pr04_Zoom.

- 287 -

4. TO B C

Hnh 191 Ta o hie u ng Zoom

Bc 1. S du ng a nh fishes.ai e import va o trong d a n cu a Flash. Sau o , chnh


sa e thu c bc a nh nh be n di.

Hnh 192 Ta o be ca

- 288 -

Bc 2. Chuye n 4 chu ca le n 4 layer kha c nhau va chuye n o i chu ng tha nh ca c


movieclip.
Bc 3. Nha p o i chuo t va o tng chu ca c. Trong timeline cu a mo i movieclip ca
na y, ta se s du ng motion Tween e ta o chuye n o ng cho ca . Khi s du ng motion
Tween, ta co the s du ng ca c co ng cu 3D e la m cho chuye n o ng cu a ca c chu ca
sinh o ng va hp ly hn (kho ng ne n du ng classic Tween).
Nha n Ctrl+Enter e kie m tra.
Xem d n: ..\Lession\Source\BaiTapNangCao\Pr04_Fishes.
5. TO PHO HOA
Trong ba i hng da n na y, to i se hng da n cho ba n ca ch ta o mo t eCard mng
na m mi, trong o , hie u ng pha o hoa la hie u ng chu a o.
Bc 1. e thie t ke eCard na y, a u tie n, ba n ha y ta o mo t eCard tnh theo minh
ho a nh be n di. Tu y theo y thch cu a mnh, ba n co the xa y dng mo t eCard
o ng vi nhng hie u ng Flash thu vi kha c ma ba n sa ng ta o ne n. Tuy nhie n, trong
hng da n na y, to i chu ye u ta p trung va o ca ch ta o hie u ng pha o hoa ma kho ng
quan ta m e n ca c hie u ng phu kha c. e eCard c sinh o ng hn, ba n co the bo
sung ca c hie u ng nh: o i ma u ch, ch bay ln, sao nha p nha y

Hnh 193 Ta o thie p mng na m mi

- 289 -

Bc 2. Bo sung va o d a n mo t lp co te n la Particle.as. Lp na y ke tha t lp


Shape. No co hai thuo c tnh tha nh vie n la to c o chuye n o ng cu a ca c pha n ma nh
pha o hoa theo tru c Ox va tru c Oy tng ng la _speedX va _speedY; mo t ha m khi
ta o. Ha m ta o co chc na ng pha t ho a hnh the ban a u cu a pha n ma nh pha o hoa.
Trong trng hp na y, pha n ma nh pha o hoa se c ve ba ng mo t hnh tro n (thc
cha t la eclipse nhng co hnh ch nha t bao quanh la hnh vuo ng ne n no la hnh
tro n). Ngoa i ra, lp Particle co n co the m mo t ha m Clear o ng vai tro la mo t ha m
hu y. Ha m hu y na y se xo a ca c pha n ma nh pha o hoa (khi ca c pha n ma nh tan bie n
va o kho ng trung). Lp Particle se co ma nguo n nh be n di:
package
{
import flash.display.Shape
public class Particle extends Shape
{
public var _speedY:Number = 0;
public var _speedX:Number = 0;

public function Particle()


{
this.graphics.beginFill(0xFFFFFF);
this.graphics.drawEllipse(0, 0, 1, 1);
this.graphics.endFill();
}

public function Clear():void


{
this.graphics.clear();
_speedY = NaN;
_speedX = NaN;
}

}
Bc 3. Bo sung va o d a n the m mo t lp Explosion.as. Lp na y ke th t lp
Sprite. Lp Explosion minh ho a cho ha nh o ng no cu a pha o hoa. Khi pha o hoa
bay le n nh ie m, no se ba t a u no va ca c pha n ma nh pha o hoa se ba n tung ra
theo ca c hng kha c nhau e ta o ne n mo t hnh thu na o o . Trong v du minh ho a
na y, pha o se no va o ta o ra hnh tro n tre n kho ng trung va bie n ma t. e pha t ho a

- 290 -

c hie u ng pha o hoa no , ta ca n mo t ma ng ca c Particle. Do o , lp Explosion se


co hai thuo c tnh c ba n: mo t ma ng ca c pha n ma nh pha o hoa (sau khi no ) la
_particles va so lng ca c pha n ma nh pha o hoa la _number.
Trong ha m khi ta o cu a Explosion, ta ca n tnh toa n s chuye n o ng cho mo i pha n
ma nh pha o hoa trong kho ng gian. e cho pha o hoa no c sinh o ng hn, th
ma u sa c, so lng va kch thc cu a ca c pha n ma nh pha i c khi ta o mo t ca ch
nga u nhie n.
//S lng phn mnh
_number = Math.floor(Math.random() * 30) + 30;
//Mu sc ca cc phn mnh
var ct:Color = new Color();
ct.setTint (0xFFFFFF * Math.random(),1);
//Kch thc ca cc phn mnh
var scale:Number = 3*Math.random();
Tie p theo, ta ca n tnh toa n s chuye n o ng cu a ca c pha n ma nh. e cho ca c pha n
ma nh ca ch ie u nhau tre n mo t vo ng tro n, ta ca n tnh toa n o le ch so vi tru c
chua n Ox tre n ng tro n lng gia c.
Oy

sin

Ox
cos

Hnh 194 Ta o chuye n o ng cho ca c ma nh v


Trong hnh minh ho a tre n, khi pha o no se ta o ra 8 ma nh v. e cho ca c vie n
ca ch e u nhau, th mo i ma nh se che nh nhau mo t go c le ch la 360/8. Do o , go c
le ch trong trng hp to ng qua t se la :
var angleDifference:Number = 360 / _number;
o i vi mo i pha n ma nh theo th t i se co go c le ch la i*angleDifference. Ne u bie u
die n di da ng vo ng la p for, ta co the thay ba ng phe p co ng do n:
angle += angleDifference;

- 291 -

Trong o , go c angle tng ng vi go c le ch cu a tng pha n ma nh. Pha n ma nh a u


tie n co go c le ch la 0; pha n ma nh tie p theo co go c le ch la angel+angleDifference;
pha n ma nh tie p theo na la angle+2*angleDifference,
Theo ma c inh, ca c ha m lng gia c cu a ha u he t ngo n ng la p trnh e u s du ng
tham so ma c inh la radian, ne n ta ca n chuye n o i go c le ch t o sang radian.

.
=
180
e a m ba o chuye n o ng cu a ca c pha n ma nh kho ng la m thay o i hnh da ng cu a
pha o hoa (hnh tro n), ta ca n a m ba o go c chuye n o ng kho ng thay o i. ie u o co
ngha la to a o x va to a o y cu a ca c pha n ma nh pha i co s thay o i ca n ba ng: to a
o x dich le n mo t oa n cos cu a go c le ch, va to a o y dich chuye n le n mo t oa n la
sin cu a go c le ch. o dich chuye n na y ca n c ca p nha p tho ng qua ha m Update.
Khi chuye n o ng, ca c pha n ma nh gia m o trong suo t alpha e ta o hie u ng da n
bie n ma t. Khi o alpha xuo ng tha p hn 0 (trong trng hp minh ho a la 0.1) th
no se bi xo a bo kho i khung nhn.
package {
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.Sprite;
import flash.events.*;
import fl.motion.Color;
import flash.geom.ColorTransform;

public class Explosion extends Sprite


{
private var _particles:Array = null;
private var _number:uint = 0;
function Explosion ():void
{
_particles = [];

_number = Math.floor(Math.random() * 30) + 30;


var ct:Color = new Color();

- 292 -

ct.setTint (0xFFFFFF * Math.random(),1);


var scale:Number = 3*Math.random();

var angleDifference:Number = 360 / _number;


var angle = 0;

for (var i = 0; i < _number; i++) {

var particle:Particle = new Particle();

particle._speedY = Math.sin(angle * Math.PI/180)*3;


particle._speedX = Math.cos(angle * Math.PI/180)*3;
//Assign the scale to change the particle's size
particle.scaleX = scale;
particle.scaleY = scale;
_particles.push (particle);
//Assign the color
particle.transform.colorTransform = ct;
addChild (particle);

//Update the angle for the next particle


angle += angleDifference;

}
addEventListener (Event.ENTER_FRAME, Update);

}
function Update (event:Event):void
{
for (var i = 0; i < _particles.length; i++)
{
var particle:Particle = _particles[i];
particle.y += particle._speedY;
particle.x += particle._speedX;

- 293 -

particle.alpha -= 0.02;

if (particle.alpha < -0.1)


{
removeEventListener (Event.ENTER_FRAME, Update);
removeChild(particle);
particle.Clear();
particle = null
}

}
Bc 4. Ta o mi mo t lp Firework.as. Lp na y minh ho a cho vie c ba n pha o hoa.
Pha o hoa c ba n le n sau o no tung ra tha nh nhie u ma nh.
Khi pha o hoa no , no co nhie u qua ng sa ng no i uo i nhau. Mo i qua ng sa ng se tng
ng vi mo t hie u ng no cu a lp Explosion. Hie u ng no na y ca n c ca p nha t
tho ng qua mo t o i tng Timer. Co nhie u ca ch gia i quye t va n e s du ng nhie u
Timer e ta o nhie u qua ng sa ng. Mo t trong nhng ca ch thua n li la du ng Array.
Tuy nhie n, e n gia n, trong v du na y to i s du ng 11 Timer rie ng bie t. Ca c timer
na y pha i co o tre (tham so a u tie n trong ha m khi ta o) kha c nhau. Ne u gio ng
nhau, th ca c qua ng sa ng na y luo n cho ng kht le n nhau va ta ch co the tha y mo t
qua ng sa ng duy nha t. Mo i qua ng sa ng ch c phe o la p mo t la n (tham so th hai
trong ha m khi ta o cu a timer).
Trc khi ba t a u hie u ng no (tng ng vi phng thc Lauch) th trong ha m
khi ta o cu a lp Firework ca n ta o ra mo t vie n pha o chuye n o ng le n ba u tri. Khi
chuye n o ng e n vi tr gii ha n na o o , pha o se ba t a u no (phng thc Lauch
c trie u go i). Ha m khi ta o co n co mo t tham so la roX cho phe p ta o ra o le ch
theo tru c Ox khi chuye n o ng le n tre n ma kho ng pha i la chuye n o ng tha ng ng.
package
{
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.Sprite;
import flash.events.Event;
public class Firework extends Sprite
{
private var _speedY:Number = 0;

- 294 -

private var _timer:Timer = null;


private var _timer1:Timer = null;
private var _timer2:Timer = null;
private var _timer3:Timer = null;
private var _timer4:Timer = null;
private var _timer5:Timer = null;
private var _timer6:Timer = null;
private var _timer7:Timer = null;
private var _timer8:Timer = null;
private var _timer9:Timer = null;
private var _timer10:Timer = null;
private var roX:Number = 0;

function Firework (roX:Number):void


{
_speedY = (-1) * Math.random() * 9 - 1;
this.graphics.beginFill(0xFFFFFF);
this.graphics.drawCircle(0, 0, 1);
this.graphics.endFill();
this.roX = roX;
Launch();
}

private function Launch ():void


{
this.addEventListener (Event.ENTER_FRAME, Update);

_timer = new Timer(3200, 1);


_timer.start ();
_timer.addEventListener (TimerEvent.TIMER_COMPLETE, Explode);

_timer1 = new Timer(3100, 1);


_timer1.start ();
_timer1.addEventListener (TimerEvent.TIMER_COMPLETE, Explode);
_timer2 = new Timer(3000, 1);
_timer2.start ();
_timer2.addEventListener (TimerEvent.TIMER_COMPLETE, Explode);

- 295 -

_timer3 = new Timer(2900, 1);


_timer3.start ();
_timer3.addEventListener (TimerEvent.TIMER_COMPLETE, Explode);
_timer4 = new Timer(2800, 1);
_timer4.start ();
_timer4.addEventListener (TimerEvent.TIMER_COMPLETE, Explode);

_timer5 = new Timer(2700, 1);


_timer5.start ();
_timer5.addEventListener (TimerEvent.TIMER_COMPLETE, Explode);
_timer6 = new Timer(2600, 1);
_timer6.start ();
_timer6.addEventListener (TimerEvent.TIMER_COMPLETE, Explode);

_timer7 = new Timer(2500, 1);


_timer7.start ();
_timer7.addEventListener (TimerEvent.TIMER_COMPLETE, Explode);
_timer8 = new Timer(2400, 1);
_timer8.start ();
_timer8.addEventListener (TimerEvent.TIMER_COMPLETE, Explode);

_timer9 = new Timer(2300, 1);


_timer9.start ();
_timer9.addEventListener (TimerEvent.TIMER_COMPLETE, Explode);

_timer10 = new Timer(2200, 1);


_timer10.start ();
_timer10.addEventListener (TimerEvent.TIMER_COMPLETE, Explode);

private function Update (event:Event):void


{
this.y += _speedY;
this.x += roX;

- 296 -

private function Explode (event:TimerEvent):void


{
removeEventListener (Event.ENTER_FRAME, Update);
var explosion:Explosion = new Explosion();
explosion.x = this.x;
explosion.y = this.y;
stage.addChild (explosion);

this.visible = false;

}
}
Bc 5. Bo sung the m lp Fireworks.as. Lp na y cho phe p ta co the ta o ra nhie u
vie n pha o c ba n le n ma kho ng ch gii ha n mo t vie n duy nha t.
Trong minh ho a be n di, mo i la n se co 2 vie n pha o c ba n le n ba u tri.
Nhng chu ng kho ng c ba n cu ng mo t thi ie m ma co o tre (v hai Timer
khi ta o hai hie u ng pha o hoa co o tre thi gian kha c nhau la n lt la 2000 va
2400. Vie c ta o o tre nh trong v du na y, se la m cho hie u ng pha o hoa the m
pha n thu vi.
package
{
import flash.display.Sprite;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class Fireworks extends Sprite
{
var _timer:Timer = new Timer(2000);
var _timer1:Timer = new Timer(2400);

public function Fireworks()


{
_timer.addEventListener (TimerEvent.TIMER, CreateFirework);
_timer.start ();
_timer1.addEventListener (TimerEvent.TIMER, CreateFirework1);

- 297 -

_timer1.start ();

private function CreateFirework(event:TimerEvent):void


{
var firework:Firework = new Firework(1);
firework.y = stage.stageHeight - 200;
firework.x = stage.stageWidth - 100;
addChild (firework);

}
private function CreateFirework1(event:TimerEvent):void
{
var firework1:Firework = new Firework(-3);
firework1.y = stage.stageHeight - 100;
firework1.x = stage.stageWidth - 200;
addChild (firework1);
}

}
Bc 6. Trong TimeLine, ta o mi mo t
layer co te n la ActionFireWork, ta i
frame 1, kch chuo t pha i va cho n Action,
sau o nha p va o no i dung sau:
var fw:Fireworks = new
Fireworks();
addChild(fw);
Sau o , nha n Ctrl+Enter e kie m tra ke t
qua .

Xem d n:
..\Lession\Source\BaiTapNangCao\Pr05
_eCard.
6. XY DNG GAME A BNG VO
L
(Cho Mobile ca m ng con quay).

- 298 -

Hnh 195 Thie p mng na m mi

a y la mo t tro chi n gia n, da tre n ca m bie n con quay cu a thie t bi di o ng.


Nhie m vu cu a ba n la nghie ng ma y e a bo ng va o ca c o ch inh. Nh va o ca m
bie n con quay, ma qua bo ng nh na m tre n be ma t cu a thie t bi, va nhie m vu cu a ta
la nghie ng ma y e a bo ng va o lo .
Bc 1. Ta o ba scene co te n la n lt la : Intro, Game va About. Sau o , trang tr
cho chu ng nh hnh minh ho a be n di:

Hnh 196 Ta o ca c scene trong game a bo ng

Bc 2. Hie u chnh khi nha p va o Play th nha y e scene Game, khi nha p va o
About th nha y e n scene About, khi nha p va o Exit th thoa t kho i ng du ng. Ha y
s du ng vu ng chc na ng code snippets e thc hie n co ng vie c no i tre n.
Bc 3. La m tng t nh bc 2 cho nu t Back scene About. Khi nha p va o nu t
back na y, ta se quay tr la i vi scene Intro.
Bc 4. La p trnh cho game scene Game.
a) Ta o mo t vo ng tro n, chuye n o i no sang movieClip. Kch chuo t pha i, cho n
Properties va cho n Export for ActionScript. a t te n cho lp o i tng na y la
Vong.
b) Pha t ho a hnh mo t qua bo ng, chuye n o i no sang movieClip va a t te n
(Instance name) cho no la movieClip_1.
Lu : ca n a m ba o kch thc cu a Vong va movieClip_1 ga n ba ng nhau (Vong ln
hn mo t chu t).
c) Hie u chnh cho movieClip_1 di chuye n ba ng ca m bie n con quay (s du ng chc
na ng trong vu ng Code snippet move with Accelerometer). Tuy nhie n, ta ca n
hie u chnh e bo ng kho ng vt qua vu ng nhn tha y cu a khung hnh (ne u to a o x

- 299 -

cu a bo ng ln hn 0 va nho hn o ro ng cu a khung nhn th mi cho phe p di


chuye n theo to a o x; tng t vi to a o y).
d) e kie m tra qua bo ng ri va o lo tro ng, ta ca n kie m tra to a o cu a no : ne u to a
o x cu a bo ng ln hn hoa c ba ng to a o x cu a lo va nho hn hoa c ba ng to a o x
cu a lo + chie u ro ng cu a lo O NG THI to a o y cu a bo ng ln hn to a o y cu a lo
va nho hn to a o y cu a lo + chie u cao cu a lo THI bo ng ri va o lo . Ne u bo ng ri
va o lo , ta se tie n ha nh co ng ie m cho ngi chi va lo tro ng se bie n ma t, sau o
no se hie n thi mo t v tr mi. V tr mi cu a lo tro ng se xua t hie n mo t ca ch nga u
nhin.
e) Ta o mo t nu t nha n e quay tr la i scene Intro.
f) Bo sung a m nha c va o cho game nh a hng da n tre n.
Sau a y la toa n bo ma nguo n cu a game.
M ngun ca scence Intro
stop();

//txtPlay nu t Play
txtPlay.addEventListener(MouseEvent.CLICK, fl_ClickToGoToScene);
function fl_ClickToGoToScene(event:MouseEvent):void
{
MovieClip(this.root).gotoAndStop(1, "Game");
}

//txtAbout nu t About
txtAbout.addEventListener(MouseEvent.CLICK, fl_ClickToGoToScene_2);
function fl_ClickToGoToScene_2(event:MouseEvent):void
{
MovieClip(this.root).gotoAndStop(1, "About");
}

//txtExit nu t Exit
txtExit.addEventListener(MouseEvent.CLICK, fl_CloseWindow);
function fl_CloseWindow(event:Event):void
{
NativeApplication.nativeApplication.exit();
}
txtPlay.buttonMode = true;
txtAbout.buttonMode = true;

- 300 -

txtExit.buttonMode = true;

M ngun ca scene Game


import flash.utils.Timer;
import flash.events.TimerEvent;
var one:Vong = new Vong();
one.x = 100;
one.y = 200;
addChild(one);
var diem:int = 0;

var fl_Accelerometer:Accelerometer = new Accelerometer();


fl_Accelerometer.addEventListener(AccelerometerEvent.UPDATE,
fl_AccelerometerUpdateHandler);
var musicplayer:MusicSound = new MusicSound();
musicplayer.play();
var loopmusic:Timer = new Timer(28000, 0);
loopmusic.start();
loopmusic.addEventListener(TimerEvent.TIMER, playmusic);
function playmusic(e:TimerEvent):void
{
musicplayer.play();
}

function fl_AccelerometerUpdateHandler(event:AccelerometerEvent):void
{
movieClip_1.x -= event.accelerationX*100;
movieClip_1.y += event.accelerationY*100;
}
var timer:Timer = new Timer(1, 0);
timer.addEventListener(TimerEvent.TIMER, updateTime);
timer.start();
function updateTime(e:TimerEvent):void
{

- 301 -

if(((movieClip_1.x>=one.x)&&(movieClip_1.x<=one.x+one.width))&&((mo
vieClip_1.y>=one.y)&&(movieClip_1.y<=one.y+one.height)))
{
one.x = randomNumber(0, stage.stageWidth - one.width);
one.y = randomNumber(0, stage.stageHeight - one.height);
one.play();
diem++;
txtDiem.htmlText = "<font color='#ffffff'>ie m: </font><font
color='#ff0011'>" + diem + "</font>";
}

if(movieClip_1.x<0)
movieClip_1.x = 0;
if(movieClip_1.y<0)
movieClip_1.y = 0;
if(movieClip_1.x>stage.stageWidth)
movieClip_1.x = stage.stageWidth;
if(movieClip_1.y>stage.stageHeight)
movieClip_1.y = stage.stageHeight;

function randomNumber(low:Number, high:Number):Number


{
return Math.round(Math.random() * (high - low)) + low;
}

Menu.addEventListener(MouseEvent.CLICK, fl_ClickToGoToScene_4);
function fl_ClickToGoToScene_4(event:MouseEvent):void
{
removeChild(one);
MovieClip(this.root).gotoAndStop(1, "Intro");
}

M ngun ca scene About


txtBack.addEventListener(MouseEvent.CLICK, fl_ClickToGoToScene_3);
function fl_ClickToGoToScene_3(event:MouseEvent):void

- 302 -

MovieClip(this.root).gotoAndPlay(1, "Intro");

}
txtBack.buttonMode = true;
Cuo i cu ng, nha n Ctrl+Enter e kie m tra ke t qua . Cu ng ca n lu y ra ng, game na y la
game ca m bie n con quay, ne n ch co the kie m tra ke t qua tre n thie t bi di o ng co
ho tr ca m bie n con quay. Khi test, ta ca n cho n chc na ng Publish menu File
(phm ta t Alt+Shift+F12) va kho ng que n ba t chc na ng Debug USB cu a thie t bi.
Xem d n: ..\Lession\Source\BaiTapNangCao\Pr06_RotSensor.
7. XY DNG GAME DIT RP
Trong tro chi na y, ca c chu re p se xua t hie n tre n ma n hnh va cha y theo ca c
hng kha c nhau. Nhie m vu cu a ba n la pha i tie u die t toa n bo ca c chu re p ba ng
ca ch nha p chuo t va o chu ng (ne u la thie t bi ca m ng, th ha y nha p bu t ca m ng
hoa c ngo n tay va o). Trong mo i ma n, se co mo t so lng re p ca n tie u die t. Ne u tie u
die t he t so re p th ta se c chuye n sang ma n tie p theo. Tro chi co lua t chi ra t
n gia n.
Bc 1. Thie t ke giao die n ngi chi nh be n di.

Hnh 197 Thie t ke giao die n game

- 303 -

Trong giao die n na y, go m co 4 Layer cha ca c tha nh pha n nh sau:


- Layer Background: cha hnh ne n. Ba n co the trang tr giao die n theo y thch cu a
mnh
- Layer Level: cha mo t tha nh pha n va n ba n co te n la txtLevel.
- Layer NextLevel: cha mo t tha nh pha n va n ba n co te n la txtNext.
- Layer Actions: e soa n tha o actionscript cho game stage.
Bc 2. Thie t ke hie u ng chuye n ma n. Ha y chuye n o i o i tng va n ba n
txtNext sang movieClip va a t te n la mvNext. Sau o , ha y nha p o i chuo t va o
movieClip na y e va o Timeline cu a no va ha y thie t ke hie u ng bo ng m cho no
nh va o Motion Tween nh be n di.

Hnh 198 Ta o hie u chuye n ma n

Layer 1, ta i frame 1, Blur X = Blur Y = 72; ta i frame 5, Blur X = Blur Y = 0. Bo


sung the m mo t Layer 2, ta i Frame 5 cu a Layer na y, nha n phm F6 e che n
KeyFrame, sau o , kch chuo t pha i va cho n Actions, sau o nha p va o le nh
stop();
Sau o , quay tr la i stage chnh.
Bc 3. Thie t ke nhng con re p. Ha y s du ng co ng cu ve e pha t ho a hnh chu
re p hoa c co the s du ng a nh e ghe p va o. Gia s, ta co hnh chu re p nh sau:

- 304 -

Hnh 199 Ta o hnh con bo

Sau o , ha y chuye n no sang movieClip va a t te n la Bug. Trong th vie n cu a d


a n, ha y cho n movieClip Bug na y, kch chuo t pha i, cho n Properties va cho n Export
for ActionScript. Khi xua t ba n cho ActionScript, ca n lu y a t te n lp cho no la
Bug. Tie p tu c kch chuo t pha i le n movieClip Bug na y trong th vie n cu a d a n, va
cho n Edit Class, cho n Flash Professional e chnh sa ma ngo n cho lp Bug na y.
Lp Bug ca n co ca c thuo c tnh tha nh vie n la speed to c o chuye n o ng,
myRotation go c quay cu a re p khi chuye n o ng, xchange va ychange khoa ng
ca ch dich chuye n theo chie u x va theo chie u y. Mo t bie n public da ng static la
count e cho bie t so lng ca c con re p a c ta o ra (khi ta o la 0). Lp khi
ta o se khi ta o ca c tham so ma c inh cho lp Bug o ng thi trie u go i 2 phng
thc fl_moveParticle ta o chuye n o ng cho re p va fl_clickToKill nha p chuo t le n
re p e tie u die t no . S di chuye n cu a re p pha i c ca p nha t lie n tu c, do o , ta s
du ng Timer e ta o ra s chuye n o ng na y. Khi re p chuye n o ng vt gii ha n
khung nhn, th no se xua t hie n pha ra cu a ca nh o i die n. Go c quay cu a re p
cu ng tnh toa n nga u nhie n e cho s chuye n o ng cu a re p c sinh o ng hn.
Khi ta o mi mo t chu re p trong ha m khi ta o, ta ca n ta ng bie n count le n 1; khi xo a
i mo t chu re p, ta ca n gia m bie n count i 1. Sau a y la toa n bo ma nguo n cu a lp
Bug.
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;

public class Bug extends MovieClip


{

- 305 -

private var speed:Number;


private var myRotation:Number;
private var ychange:Number;
private var xchange:Number;
private var timer:Timer;
public static var count = 0;

public function Bug(sp:Number)


{
buttonMode = true;
speed = sp;
myRotation = 0;
timer = new Timer(20);
x = 1000*Math.random();
y = 1000*Math.random();
timer.addEventListener(TimerEvent.TIMER, fl_moveParticle);
timer.start();
addEventListener(MouseEvent.CLICK, fl_clickToKill);
count++;
}

15));

function fl_moveParticle(e:TimerEvent):void
{
myRotation = myRotation + (Math.round(Math.random()*30ychange = (Math.cos((Math.PI/180)*myRotation))*speed;
xchange = (Math.sin((Math.PI/180)*myRotation))*speed;
if (x<0)
{
x = parent.stage.stageWidth;
}
if (x>parent.stage.stageWidth)
{
x = 0;
}
if (y<0)
{

- 306 -

y = parent.stage.stageHeight;

}
if (y>parent.stage.stageHeight)
{
y = 0;
}
y = y - ychange;
x = x + xchange;
rotation = myRotation;

function fl_clickToKill(evt:MouseEvent):void
{
timer.stop();
parent.removeChild(this);
count--;
}

}
Bc 4. Kch chuo t pha i va o frame 1 cu a Layer Actions, cho n Actions va nha p va o
no i dung sau a y:
import flash.events.Event;
import flash.utils.Timer;
import flash.events.TimerEvent;
var level:int = 0;

mvNext.visible = false;

var timer:Timer = new Timer(1);


timer.addEventListener(TimerEvent.TIMER, fl_NextLevel);
timer.start();
function fl_NextLevel(e:TimerEvent):void
{
if(Bug.count==0)
{
mvNext.visible = true;

- 307 -

mvNext.gotoAndPlay(1);
timer.stop();

mvNext.buttonMode = true;
mvNext.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler_2);

function fl_MouseClickHandler_2(event:MouseEvent):void
{
level++;
for(var i:int = 0; i<2*level+2; i++)
{
var par:Bug = new Bug(5);
addChild(par);
}
txtLevel.htmlText
=
"<font
color='#ffffff'>Level:
</font><font
color='fff000'>" + level.toString() + "</font>";
timer.start();
mvNext.visible = false;
}
Ma nguo n cu a chng trnh kha n gia n. Bie n level cho bie n ma n chi hie n ta i la
ma n bao nhie u. Mo i khi so lng ca c con re p ba ng 0 (tc Bug.count==0) th se
xua t hie n tho ng ba o qua ma n (Next Level). Khi nha p va o ch Next Level na y,
ngi chi co the tie p tu c chi ma n tie p theo. So lng re p cho mo i ma n chi
c tnh theo co ng thc:
so lng re p = 2*level + 2
Ne u ba n ca m tha y so lng re p cho mo i ma n chi nh the na y la qua nhie u (hay
qua t) th ba n co the thay o i co ng thc tnh.
Cuo i cu ng, ha y nha n Ctrl+Enter e kie m tra ke t qua . Game na y hoa n toa n phu hp
cho ca Desktop la n ca c thie t bi di o ng. a c bie t, no ra t thu vi cho ca c thie t bi di
o ng ca m ng tho ng minh.
e ta ng the m o kho cho game, ba n co the quy inh thi gian chi cho mo i ma n.
Ne u ngi chi kho ng the hoa n ta t mo i ma n trong thi gian quy inh, th ngi
chi nha n c tho ng ba o Game Over. ie u na y cu ng ra t n gia n, ca c ba n xem
nh la ba i ta p nhe .
Xem d n: ..\Lession\Source\BaiTapNangCao\Pr07_Bugs.

- 308 -

8. XY DNG GAME NNG TRI VUI V


Cha c ha n game no ng tra i vui ve kho ng co n xa la g vi nhie u ngi. To i xin nha c
la i lua t chi cu a game na y: ba n co mo t so tie n ban a u. Ba n se chi tra e mua ca c
ha t gio ng e gieo tro ng va cha n nuo i, xa y dng nha ca. Ba n ch c phe p s
du ng so tie n mnh co . Sau mo i la n thu hoa ch, ba n se co mo t so tie n tng ng vi
vie c ba n i sa n pha m o . Trong game ma to i hng da n xa y dng sau a y, chu ng
ta ch tha o lua n mo t pha n cu a game no ng tra i vui ve : ch kha o sa t kha ca nh tro ng
tro t. Nhng ma t nh cha n nuo i va xa y dng, ca c ba n la m hoa n toa n tng t ne u
nh a hie u ca ch la m trong hng da n na y.
Bc 1. Ta o mo t khung thie t ke kch thc 1000x500. Trong stage na y, ta ca n ta o
hai Layer: Dialog va Game. Sau o , la n lt ta o ca c movieClip sau a y:
a) MovieClip ma nh a t Land.
- Du ng a nh e ca t mo t pha n co kch thc 100x100 (hoa c du ng co ng cu o ho a
cu a Flash e pha t ho a ma u hnh ma nh a t).
- Kch chuo t pha i va o pha n o ho a thu c na y, cho n Convert To Symbol va cho n
MovieClip. a t te n cho no la Land.
- Nha p o i chuo t va o movieClip Land na y e m khung soa n tha o cu a no . o i te n
cu a Layer tha nh Process. Che n the m mo t keyframe (nha n F6) trong Timeline.
Nh va y, trong Timeline cu a movieClip na y, co hai keyframe. Ha y thay sao che p
a nh keyframe 1 sang keyframe 2 va hie u chnh o sa ng cu a no sa ng hn a nh
keyframe 1. V du , ta co hai anh tng ng vi 2 keyframe cu a Timeline cu a o i
tng movieClip Land nh sau:

Hnh 200 Ta o hnh ma nh ruo ng

Che n the m mo t Layer co te n la Action. Che n 2 keyframe tro ng (nha n F6) tre n
Layer Action na y. Cho n frame 1 cu a Layer Action, kch chuo t pha i, cho n Action va
nha p va o do ng le nh
stop();
La m hoa n toa n tng t cho frame 2 cu a Layer Action na y.
Mu c ch cu a vie c ta o ra movieClip Land na y la du ng e ta o be ma t a t trong
game. Hai keyframe ma ta ta o, tng ng vi hai tra ng tha i khi chuo t tro le n no

- 309 -

va khi chuo t di chuye n ra ngoa i no . ie u o giu p chu ng ta xa c inh vi tr chnh xa c


cu a ma nh a t ma ta se tie n ha nh tro ng tro t.
b) Ta o movieClip tro ng ca y Anh a o. La m hoa n toa n tng t nh tre n. Pha t ho a
mo t khung a nh co kch thc 100x100, sau o chuye n o i sang movieClip co te n
la AnhDao. Nha p o i chuo t va o movieClip AnhDao na y e va o khung thie t ke da nh
rie ng cho no . Trong Timeline cu a AnhDao, ta ta o ra 3 Layer va a t te n la n lt la :
Action, Process (Layer na y o i te n t Layer 1 ma c inh) va Land. Layer Land
du ng e ta o hnh ma t a t (kch thc 100x100). Layer process tng ng vi ca c
giai oa n pha t trie n cu a ca y Anh a o. Tng ng vi bao nhie u tra ng tha i pha t
trie n cu a ca y Anh a o (gieo ha t, na y ma m, le n ca y con, m hoa, ke t qua ) th ta
ta o ra ba y nhie u keyframe tng ng. e n gia n, to i ch ta o ra 3 keyframe,
nhng keyframe a u tie n to i kho ng s du ng (ne u muo n, ba n co the ta o ra nhie u
hn).
- Tre n Layer Action, ta o 3 keyframe tro ng va tng ng vi mo i vi tr cu a ca c
keyframe (frame 1, frame 2, frame 3, cu a Layer Action), ta la n lt che n va o
ca c do ng le nh:
stop();
- Tre n Layer Land, ta ch sao che p hnh a nh cu a no tre n ca 3 frame (tc nha n
phm F5).
- Tre n Layer Process, ta ta o ra 3 hnh a nh tre n 3 keyframe (tng ng vi 3 tra ng
tha i pha t trie n cu a ca y Anh a o).

Hnh 201 Qua trnh pha t trie n cu a ca y Anh a o

Lu : ma nh a t hnh a u tie n na m tre n Layer Land. Tre n Layer Process,


keyframe 1 la keyframe tro ng; hnh a nh ca y (kho ng co hnh ne n, hnh ne n c
ta o bi Layer land pha di) tng ng vi keyframe 2 va hnh 3 tng ng
vi keyframe 3.
c) Ta o movieClip tro ng ca y O c cho . La m hoa n toa n tng t movieClip AnhDao.
Ta thu c movieClip OcCho. Hnh a nh minh ho a cho movieClip na y nh be n
di:

- 310 -

Hnh 202 Tie n trnh pha t trie n cu a ca y O c cho

d) Ta o movieClip e la m ho p thoa i cho n ca c sa n pha m. Thie t ke mo t ho p thoa i


nh be n di. a t te n cho no la dialog. Ho p thoa i dialog na y c a t trong Layer
Dialog trong stage chnh.

Hnh 203 Ca so cho n ha ng

Sau o , ha y thie t ke hai hnh a nh minh ho a cho hai ma t ha ng. Chuye n o i chu ng
tha nh Button. a t chu ng va o vi tr thch hp tre n movieClip na y.

Hnh 204 Tho ng tin ca c ma t ha ng

Trong o , pha n hnh ne n c a t tre n Layer Dialog; Layer MoTa cha hai do ng
va n ba n mo ta ve ca y Anh a o va ca y O c Cho ; Layer AnhDao cha button
btAnhDao; Layer OcCho cha button btOcCho va the m mo t Layer Actions. Chi
tie t, ha y quan sa t hnh minh ho a be n di:

- 311 -

Hnh 205 Thanh TimeLine cu a game No ng tra i vui ve

Bc 2. Soa n tha o ma nguo n cho ca c o i tng Land. Trong th vie n cu a d a n,


cho n o i tng Land, kch chuo t pha i, cho n Edit Class sau o lu la i vi te n la
Land.as. Sau o , nha p no i dung nh sau:
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Land extends MovieClip {
public static var _x:Number = 0;
public static var _y:Number = 0;
public function Land(mX:Number, mY:Number) {
x = mX;
y = mY;
addEventListener(MouseEvent.CLICK, getCoord);
addEventListener(MouseEvent.MOUSE_OVER, doMark);
addEventListener(MouseEvent.MOUSE_OUT, delMark);
}
function getCoord(e:MouseEvent):void
{
_x = x;
_y = y;
parent.getChildByName("dialog").visible = true;
}
function doMark(e:MouseEvent):void
{
gotoAndStop(2);

- 312 -

}
function delMark(e:MouseEvent):void
{
gotoAndStop(1);
}
}
}
Gii thch: Trong lp Land na y, co hai thuo c tnh tnh va co ng khai (c quy inh
bi t kho a static va public) la to a o _x va _y. Hai thuo c tnh na y c quy inh
nh va y e ta co the truy ca p mo t ca ch t do trc tie p qua te n lp ma kho ng ca n
pha i qua o i tng cu a lp. Khi ta nha p chuo t va o mo t ma nh a t na o o , th to a
o cu a ma nh a t va c nha p va o ca n c lu la i e ta bie t chnh xa c vi tr
ca n thc hie n vie c tro ng tro t.
Ha m ta o cu a lp Land cha hai tham so mX va mY tng ng vi to a o ca n a t
ma nh a t. Khi chuo t di chuye n tre n mo t ma nh a t, th ma nh a t o pha i c
chuye n ma u e ta pha n bie t c so vi ca c ma nh a t kha c. e thc hie n ie u
na y, ta ca n bo sung hai s kie n MOUSE_OVER va MOUSE_OUT cho o i tng Land
na y. Khi nha p chuo t va o o i tng Land, th se la m xua t hie n ho p thoa i cho n sa n
pha m va o ng thi lu la i vi tr cu a ma nh a t va nha p chuo t va o. e truy ca p
e n o i tng dialog na m tre n khung soa n tha o chnh, ta ca n truy ca p tho ng qua
thuo c tnh parent (o i tng cha cu a Land v Land na m tre n stage). Do o , ta co
ca ch truy ca p
parent.getChildByName("dialog").visible = true;
Thuo c tnh visible e quy inh o i tng la a n (false) hay hie n (true).
Khi di chuye n chuo t tre n ma nh a t, th ma nh a t o se sa ng le n (tng ng vi
frame th 2 cu a Land), ne n ca n nha y e n frame na y gotoAndStop(2). Hoa n toa n
tng t khi chuo t di chuye n kho i ma nh a t o , th pha i chuye n tr la i frame 1.
Bc 3. Ta o mi mo t lp Product va a t te n la Product.as. Lp na y cho phe p mo
ta ca c o i tng tro ng tro t. Mo i o i tng tro ng tro t go m co ca c thuo c tnh sau:
thi gian ca n thie t e thu hoa ch o i tng total; thuo c tnh tra ng tha i kie m tra
tnh tra ng pha t trie n cu a o i tng tstart (no ba t a u t gia tri cu a total, sau
mo i gia y no se gia m i 1, e n khi na o no nha n gia tri 0 th o i tng a sa n sa ng
thu hoa ch); thuo c tnh incoin so tie n thu c sau mo i la n thu hoa ch o i tng;
thuo c tnh outcoin so tie n bo ra khi mua o i tng; thuo c tnh txtStatus e hie n
thi thi gian pha t trie n cu a o i tng; thuo c tnh Timer e ca p nha t tie n trnh

- 313 -

pha t trie n cu a o i tng, no se c ca p nha t tng gia y (1000ms). Ma nguo n


toa n bo cu a no nh sau:
package {
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.MouseEvent;
import flash.text.TextField;
import flash.events.Event;
import flash.display.DisplayObject;
public class Product extends MovieClip{
protected var t:Timer = new Timer(1000);
protected var total:Number = 0;
protected var tstart:Number = 0;
protected var incoin:Number = 0;
protected var outcoin:Number = 0;
protected var txtStatus:TextField = new TextField();
public function Product(tt:Number, c:Number, oc:Number)
{
gotoAndStop(2);
total = tt;
tstart = total;
incoin = c;
outcoin = oc;
t.addEventListener(TimerEvent.TIMER, update);
t.start();
doubleClickEnabled = true;
addEventListener(MouseEvent.CLICK, Havest);
addEventListener(MouseEvent.DOUBLE_CLICK, Delete);
txtStatus.x = 0;
txtStatus.y = 0;
txtStatus.width = 100;
txtStatus.height = 20;
addChild(txtStatus);

- 314 -

this.txtStatus.addEventListener(Event.ENTER_FRAME,
fl_ClickToBringToFront);
addEventListener(MouseEvent.MOUSE_OVER, msover);
addEventListener(MouseEvent.MOUSE_OUT, msout);
}
function fl_ClickToBringToFront(event:Event):void
{
this.addChild(event.currentTarget as DisplayObject);
}
public function getIncoin():Number
{
return incoin;
}
public function getOutcoin():Number
{
return outcoin;
}
public static function numToDate(num:int):String
{
if(num<=0)
return "Sn sng";
var h:int = num/3600;
var m:int = (num-h*3600)/60;
var s:int = num%60;
return h.toString()+":"+m.toString()+":"+s.toString();
}
function msover(e:MouseEvent):void
{
txtStatus.visible = true;
}
function msout(e:MouseEvent):void
{

- 315 -

txtStatus.visible = false;
}
function update(e:TimerEvent):void
{
tstart--;
txtStatus.htmlText
=
Product.numToDate(tstart) + "</font>";
if(tstart<=0)
gotoAndStop(3);
}

"<font

size='18'>"

function Havest(e:MouseEvent):void
{
if(tstart<=0)
{
MovieClip(root).tongdiem += incoin;
MovieClip(root).txt.htmlText = "<font color='#ffffff'
size='16'>Tng im: " + MovieClip(root).tongdiem.toString() + "</font>";
tstart = total;
gotoAndStop(2);
}
}
function Delete(e:MouseEvent):void
{
parent.removeChild(this);
}
}
}
Gii thch: Ha m khi ta o cu a lp Product cha ca c tham so : tt tng ng vi
total, c tng ng vi incoin va oc tng ng vi outcoin. Lp Product kch
hoa t ca c ca c s kie n: CLICK tng ng vi thu hoa ch (ne u o i tng a sa ng
sa ng); DOUBLE_CLICK tng ng vi vie c xo a bo o i tng.
addEventListener(MouseEvent.CLICK, Havest);
addEventListener(MouseEvent.DOUBLE_CLICK, Delete);

- 316 -

Khi thu hoa ch, th ca n ca p nha p so tie n la i cho o i tng. Bie n to ng ie m ta se


khai ba o khung soa n tha o stage. Khi muo n truy ca p e n bie n na y t mo t vi tr
kha c trong vu ng action cu a o i tng con, ta s du ng cu pha p:
MovieClip(root).tongdiem
Trong stage na y, ta co n co mo t o i tng va n ba n la txt e hie n thi ie m hie n thi
ma ngi chi co . Ca ch truy ca p e n o i tng na y hoa n toa n tng t. o i vi
o i tng va n ba n, ne u n thua n ch la va n ba n (kho ng co inh da ng) th ta s
du ng thuo c tnh text, ne u co inh da ng theo phong ca ch html th ta s du ng thuo c
tnh la htmlText.
Tre n mo i o i tng co n co mo t o i tng va n ba n la txtStatus, no du ng hie n thi
tra ng tha i pha t trie n cu a o i tng. Ma c inh, no se bi a n. No ch hie n thi khi tro
chuo t a le n tre n no .
e a m ba o cho mo t o i tng luo n hie n thi le n tre n ca c o i tng kha c, ta bo
sung va o s kie n ENTER_FRAME do ng tng ng
this.txtStatus.addEventListener(Event.ENTER_FRAME, fl_ClickToBringToFront);
function fl_ClickToBringToFront(event:Event):void
{
this.addChild(event.currentTarget as DisplayObject);
}
Ca c thuo c tnh incoin va outcoin c quy inh la protected ne n no ch c
phe p truy ca p trong no i bo lp hoa c trong ca c o i tng kha c ke tha t lp o .
Do o , ta ca n bo sung the m phng thc Getter e la y gia tri cu a chu ng t ca c lp
kho ng co quan he ho ha ng vi no .
public function getIncoin():Number
{
return incoin;
}
public function getOutcoin():Number
{
return outcoin;
}
Ngoa i ra, trong lp na y co n co the m mo t ha m tnh co ng khai la numToDate du ng
e chuye n o i mo t so so sang da ng hh:mm:ss.
Bc 4. Thie t ke lp ca y AnhDao. Trong th vie n cu a d a n, kch chuo t pha i va o
movieClip AnhDao, cho n Edit Class sau o lu la i vi te n la AnhDao.as. Lp
AnhDao na y pha i ke tha t lp Product no i tre n.
package {

- 317 -

public class AnhDao extends Product {


public function AnhDao(total:Number, c:Number, oc:Number) {
super(total, c, oc);
}
}
}
Phng thc super cho phe p tie p nha n ha m ta o cu a lp ma no ke tha.
Bc 5. Thie t ke lp ca y OcCho. Hoa n toa n tng t nh o i vi lp ca y AnhDao.
Ta lu lp ca y OcCho di te n OcCho.as. No i dung cu a lp na y nh sau:
package {
public class OcCho extends Product {
public function OcCho(total:Number, c:Number, oc:Number) {
super(total, c, oc);
}
}
}
Bc 6. Xa y dng ma le nh cho hai button btAnhDao va btOcCho movieClip
dialog. Nha p o i chuo t va o movieClip dialog e m khung thie t ke cu a movieClip
na y. Ba m cho n btAnhDao, m vu ng code snippets va cho n chc na ng Event
Handlers > Mouse Click Event. Sau o , nha p no i dung va o cho s kie n na y. Cu the ,
ta co ma nguo n cu a giai oa n na y nh be n di:
btAnhDao.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler_4);
function fl_MouseClickHandler_4(event:MouseEvent):void
{
var anhdao:AnhDao = new AnhDao(30, 80, 50);
if(MovieClip(parent).tongdiem>=anhdao.getOutcoin())
{
parent.addChild(anhdao);
anhdao.x = Land._x;
anhdao.y = Land._y;
MovieClip(parent).tongdiem -= anhdao.getOutcoin();

- 318 -

MovieClip(parent).txt.htmlText = "<font color='#ffffff' size='16'>Tng


im: " + MovieClip(parent).tongdiem.toString() + "</font>";
}else
MovieClip(parent).txt.htmlText
=
"<font
color='#fff000'
size='16'>Khng tin !</font>";
}
Bc 7. Xa y dng ma le nh cho nu t btOcCho. Ta la m hoa n toa n tng t nh
bc 6. Ma le nh cho giai oa n na y thu c nh sau:
btOcCho.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler_5);

function fl_MouseClickHandler_5(event:MouseEvent):void
{
var occho:OcCho = new OcCho(60, 100, 60);
if(MovieClip(parent).tongdiem>=occho.getOutcoin())
{
parent.addChild(occho);
occho.x = Land._x;
occho.y = Land._y;
MovieClip(parent).tongdiem -= occho.getOutcoin();
MovieClip(parent).txt.htmlText = "<font color='#ffffff' size='16'>Tng
im: " + MovieClip(parent).tongdiem.toString() + "</font>";
}else
MovieClip(parent).txt.htmlText
=
"<font
color='#fff000'
size='16'>Khng tin !</font>";
}
Lu :
- Khi thc thi bc 6 va bc 7, ma le nh cu a 2 bc na y ca n a t va o trong frame
cu a layer Action.
- Khi soa n tha o hai bc 6 va 7 na y, cu ng ca n thie t pha i nha p va o s kie n cu a
chuo t:
import flash.events.MouseEvent;
Bc 8. Nha p ma nguo n cho stage cu a d a n. Trong pha n na y, ta ca n:
- Quy inh ho p thoa i dialog luo n ng no i le n tre n mo i o i tng. Ca ch thc hie n
nh a no i bc 3.
- Ca n lo t ca c ma nh a t e la p kn khung nhn. Mo i ma nh a t co kch thc
100x100, ne n ta co the li du ng ie u na y e s du ng vo ng la p.
for(var i:int = 0; i<5; i++)
for(var j:int = 0; j<10; j++)
{

- 319 -

var land:Land = new Land(100*j, 100*i);


addChild(land);
}
- Theo ma c inh, ho p thoa i dialog ca n pha i a n, ne n ta quy inh thuo c tnh visible =
false.
Toa n bo ma nguo n cu a stage na y c a t va o frame 1 cu a Layer Game.
import flash.events.Event;
import fl.text.TLFTextField;
import fl.controls.Label;
var tongdiem:Number = 200;
this.dialog.addEventListener(Event.ENTER_FRAME, fl_ClickToBringToFront);
function fl_ClickToBringToFront(event:Event):void
{
this.addChild(event.currentTarget as DisplayObject);
}
for(var i:int = 0; i<5; i++)
for(var j:int = 0; j<10; j++)
{
var land:Land = new Land(100*j, 100*i);
addChild(land);
}
dialog.x = 340;
dialog.y = 150;
dialog.visible = false;
dialog.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
function fl_MouseClickHandler(event:MouseEvent):void
{
dialog.visible = false;
}
var txt:Label= new Label();
txt.htmlText = "<font color='#ffffff' size='16'>Tng im: 200</font>";

- 320 -

txt.width = 150;
txt.x = stage.stageWidth - txt.width;
txt.y = stage.stageHeight - txt.height;
addChild(txt);
txt.addEventListener(Event.ENTER_FRAME, fl_ClickToBringToFront);
Cuo i cu ng, nha n to hp Ctrl+Enter e kie m tra ke t qua . Game na y hoa n toa n
tng thch vi ca c thie t bi cha y AIR cho Desktop la n ca c thie t bi ie n thoa i cha y
Android va iOS.

Hnh 206 Demo game no ng tra i vui ve

Xem d n: ..\Lession\Source\BaiTapNangCao\Pr08_Farm.

B PHN BI TP T LM
pht trin k nng thit k v lp trnh trn Flash CS5/CS5.5 v
ActionScript 3.0, chng ti ngh bn hy thc hin cc bi thc hnh sau
y.

BI THC HNH S 1
S DNG CNG C V C BN
Hy s dng cc cng c v to cc ni dung sau y trn cng mt Stage:

1. To Layer 1 v i tn thnh BauTroi. Chn biu tng bng mu. Chn


Stroke color = None, Fill Color = Linear Gradient. Chn ch mu
Extends Color. Trong kiu mu cu vng ny, bn ch chn hai mu:

- 321 -

2.

3.

4.

5.
6.
7.

8.

9.

mu en (m mu l #000000) n mu en trng (m mu #999999),


trong mu en pha trn, mu en trng pha di. S dng cng c
Rectangle, to mt hnh ch nht trn Layer ny. S dng bng hiu
chnh Align can chnh kch thc v v tr cho hnh ch nht ny trng
khp vi kch thc Stage.
To Layer 2 v i tn thnh MatTrang. Chn biu tng Oval vi thuc
tnh Stroke Color = None, Fill Color l mu Radial Gradient (mu mt c m
mu l #FFFF00, mu 2 c m mu l #FFFFFF). Hy s dng cng c
Gradient Transform hiu chnh kch thc ca vng mu bn trong ln
hn v t mt trng vo v tr thch hp trn bc tranh ny.
S dng cng c PolyStar to mt ngi sao mu vng nht, kch thc l
20x20. Convert ngi sao ny sang biu tng Graphics v t tn l Sao.
Chn cng c Spray Brush, chn biu tng cho n l Sao trn. Hiu
chnh cc thng s nh sau:
Scale width = 20%
Scale height = 25%
Chn c ba ty chn Random Scaling, Rotate Symbol v Random Rotation.
Hiu chnh kch thc ca Brush l width=height=300px, Brush Angel l
90 CW.
To mi Layer t tn l Sao. Hy qut nhanh cng c Spray Brush ny ln
Layer ny to cc ngi sao nh trn bu tri.
To mi mt Layer v t tn l KhungCua. S dng cng c Rectangle
Primitive to mt hnh ch nht c kch thc width=200, height=150,
chn Fill color l None, Stroke color l mu en, loi ng vin style l
stippled, kch thc ca ng vin l 5px. S dng cng c Deco
mu ngh thut (cnh hoa nho) cho khung ca s ny.
To mi Layer t tn l NgoiNha. Hy s dng cc cng c cn thit v
nn ngi nh m c ca bn. Lu : hy s dng mu sc tht hi ha
trong m ti.
To mi Layer t tn l DamMay. Hy s dng cng c Pen to nn
cc m my c vin cong. T mu cho n bng mu xanh nht (m mu
#66CCCC) v hy loi b vin ca n.
To mi Layer t tn l ConNguoi. Hy s dng cc cng c cn thit
pht ha chn dung ca mt c gi ang i di nh trng.
To mi Layer t tn l DenLong. Hy pht ha cy n lng v t n
vo tay c gi.
To mi Layer t tn l CayCoi. Hy pht ha hnh mt rng tre hoc mt
cy c th. Chn mu sc hp l.

- 322 -

10. To mi Layer t tn l TieuDe. S dng cng c Text son tho trn


Layer ny ni dung nh Trng Trn Qu Hng.

BI THC HNH S 2
S DNG BIU TNG V TO HOT CNH
Hy s dng bc nh cha cc i tng c v trn thc thi bi thc hnh
s 2.

1. Hy chuyn i MatTrang trong Layer 2 thnh biu tng MovieClip v


t tn cho n l MatTrang. Hy s dng Classic Tween to hiu ng
ng cho mt trng. Mt trng c hai hiu ng ng l: bng m v di
chuyn. to hiu ng bng m, hy s dng thuc tnh Filter=Blur ca
MovieClip. Cc thao tc ny ch c s dng Classic Tween.
2. Hy xa b cc ngi sao trn bu tri trn. Trong th vin, hy chn li
biu tng Graphic l Sao m bn to. Bn hy chuyn i n thnh
MovieClip. S dng Motion Tween to hiu ng tng gim trong sut
(thuc tnh Alpha ca MovieClip). Thuc tnh ny thay i t 80% n
100%. Tip tc s dng cng c Spray Brush, ln ny bn chn biu tng
cho n l MovieClip Sao. Hiu chnh cc thng s tng t nh bi thc
hnh s 1. Sau , qut ln Layer Sao.
3. Hy s dng cng c Bone to chuyn ng cho i chn c gi. Cc
phn cn li khng cn to chuyn ng. Bn kt hp vi Motion Tween
to s di chuyn (thay i v tr trong bc nh) cho c gi.
4. S dng Motion Tween to chuyn ng cho cc m my. Cc m my
chuyn ng theo dng thc 3D (kt hp cng c 3D Rotation v 3D
Translation).
5. Hy to mi mt Layer t tn l BienHinh. Trn Layer ny, bn hy to
mt ng gic. S dng Shape Tween to hiu ng bin hnh cho hnh th
ny thnh hnh ngi sao nm cnh. Hy t n vo mt v tr thch hp.

BI THC HNH S 3
S DNG BIU TNG V TO HOT CNH (TIP THEO)

- 323 -

Hy s dng cc cng c to hot hnh (Tween, Bone, Bind, 3D,) to mt


VideoClips. Lu trong bi ny, sinh vin cn kt hp vi mt bi ht. Ni dung
phim v ni dung bi ht phi tng i ph hp. Bi ht di khng di 1 pht.

BI THC HNH S 4
LP TRNH VI ACTIONSCRIPT
Trong bi thc hnh ny, bn cn hon tt cc ni dung sau:

1. To mt i tng qu bng bng cng c Oval. Sau , hy chuyn i n


thnh biu tng MovieClip. Ci t tn th hin cho n l QuaBong. Hy
xa qu bng ny trn Stage. M khung son tho ActionScript, by gi
bn hy vit ActionScript to chuyn ng 3D cho qu bng, thay i
thuc tnh alpha khi n chuyn ng. S thay i thuc tnh alpha ny qui
nh theo thi gian (thay i t 80% n 100%).
2. To mi mt Scene. Trn Scene ny, bn hy s dng hai bc nh. Hiu
chnh kch thc cho chng bng nhau. Kch thc ca chng khng qu
ln, sao cho ta c th t chng trn Stage nhng vn cn khong trng. S
dng i tng Tween to hot hnh cho hai bc nh ny.
to hot hnh nh vo Tween trong ActionScript, bn c th thao tc
nh hng dn sau:
Hy a hai i tng nh ny vo trong th vin, sau chuyn i
chng thnh cc biu tng MovieClip, v t tn cho chng ln lt l
Anh1 v Anh2. Bn quan st m chng trnh sau
import fl.transitions.easing.*;
import fl.transitions.Tween;
var OneTween:Tween;
var TwoTween:Tween;

y, bn s dng package fl.transition. i tng Tween c a vo


s dng. Cc hiu ng ng cng c a vo qua dng lnh th nht.
Tip theo, bn hy to chuyn ng cho i tng nh vo i tng
Tween. Cch s dng Tween cng tng t nh bn to mt Thread vy.
OneTween = new Tween(Anh1, "y", Bounce.easeOut, 50, 100, 3, true);
OneTween.start();
TwoTween = new Tween(Anh2, "y", Bounce.easeOut, 250, 300, 3, true);

- 324 -

TwoTween.start();
i tng Tween c phng thc khi to Tween(Object, String, Function,
Number, Number, Number, Boolean). Object l i tng m ta s p dng
hiu ng Tween; String l tn thuc tnh m ta s s dng nh x, y,;
Function l tn phng thc s p dng chi tit hn bn c th th
nghim vi chc nng Add New Items to Script vi gi fl.transition.easing;
Number th nht v Number th hai l hai bin chuyn ng. Number th
ba l s ln chuyn ng (duration), tham s Boolean mc nh c s
dng l true. Hy kim tra xem th n hot ng hon ho hay khng. y
thc s l cch to chuyn ng rt hon ho.
3. To mi mt d n khc. Trong d n ny c ba file: file main.fla, file
human.as, file student.as. File main.fla l khung trnh din chnh. Cc file
cn li c s dng nh cc lp. File human.as l mt lp cha hai thuc
tnh l Name:String v Age:int v bn phng thc chnh l void
SetName(String), String GetName(void), void SetAge(int) v int
GetAge(void). Lp student k tha lp Human. Ngoi ra, n cn c thm
thuc tnh ID:String v hai phng thc void SetID(String), String
GetID(void). Quay tr li vi khung trnh din chnh, bn hy pht ha
hnh mt con ngi. Sau , bn hy convert n sang biu tng
MovieClip. Ci t tn hin th cho n l ConNguoi. Cui cng bn hy xa
n ra khi stage. Trn khung trnh din ny, bn hy to mt Button v ba
textbox km theo ba label. Ba label c ni dung l: Tn, Tui, MSV. Ba
textbox cn li tng ng dng nhp ni dung theo ba trng ny
(Name, Age v ID). Khi ngi dng nhp d liu v nhp nt Add, hnh
ngi s hin th ra bn di. ng thi, bn cnh n l cc thng tin v
i tng ny (Tn, Tui v MSV).
4. Trong bi thc hnh ny, bn hy to mt d n gm bn file: main.fla,
solutions.as, solution1.as v solution2.as. Trn stage ca main c ba
textbox v ba label tng ng nhp cc s a, b v c. Mt nt nhn gii
phng trnh, v mt label na hin th kt qu. File solutions.as l mt
interface cha hai phng thc l DoSolution v ToString. Hai lp
solution1.as v solution2.as l hai lp thc thi giao din solutions.as ny.
Phng thc DoSolution ca i tng trong solution1.as s gii phng
trnh bc 1, phng thc DoSolution ca i tng trong solution2.as s
gii phng trnh bc hai. Phng thc ToString ca c hai i tng c
nhim v in ra nghim cui cng. i tng trong solution1.as cha hai
thuc tnh l a:Number v b:Number. i tng trong solution2.as cha ba

- 325 -

thuc tnh l a:Number, b:Number v c:Number. Sau khi bn hon tt yu


cu ny, hi vng bn s hiu r hn v giao din.

BI THC HNH S 5
XY DNG PHIM QUNG CO BNG FLASH
Hy xy dng mt thc phim qung co gii thiu v mt b phim c s dng k
xo in nh. on phim qung co c i di trnh din khong 5 pht. Trong
phim phi s dng m thanh v c li thuyt trnh bng ch hoc li thuyt minh
(nhng on phim s dng li thuyt minh s c nh gi cao).
xy dng thc phim qung co ny, bn cn s dng mt b phim hon
chnh. Sau , bn ct ly nhng on phim hay trong b phim ny to mt b
phim qung co hon chnh (nu khng c mt b phim hon chnh, bn c th
lin h vi ging vin c cung cp cc on phim mu).

BI THC HNH S 6
HON TT D N V XUT BN
Hy vn dng cc kin thc hc trong gio trnh ny, bn hy la chn mt
trong cc d n sau y:
Cc d n
D n 1. To mt d n Game bng Flash kt hp vi ActionScript theo yu
cu sau
a) Mn hnh Splash (scene 1): ch hin th bn Menu: Play, Score, Help v Quit.
Play cho php ngi dng chuyn sang mn hnh th hai (scene 2), trong
mn hnh ny, ngi dng c th chi game. Score cho php hin th kt
qu chi, mn hnh ny tng ng vi scene 3. Help cho php chuyn sang
mn hnh tr gip (scene 4), trong mn hnh ny s hin th vi thng tin
v game, cch chi game.
b) Ni dung game c th l game hnh ng, game th thao, game hc tp
nhng cn phi c iu khin bng chut hoc bn phm.
c) Nu ngi dng hon tt vic chi game, th s hin ra cc thng s m
ngi chi t c: H v Tn (nhp vo t u), im. D liu c c
t file data.xml.

- 326 -

D n 2. To mt d n phim hot hnh bng Flash kt hp vi ActionScript


theo yu cu sau
a) Phim m t mt ch bt k nhng phi c cu trc (c kch bn).
b) Phim c di khng di 10 pht.
c) C thanh Playback iu khin.
d) C s dng m thanh, ting ni (phi c ng b vi i tng trong
phim)
e) Khng chp nhn cc Clip nhc.
D n 3. To mt d n k xo in nh bng Flash kt hp vi ActionScript
theo yu cu sau
a) To mt thc phim c s dng k xo in nh (ch chp nhn k xo in
nh, khng chp nhn k xo truyn hnh).
b) Phim c di khng di 10 pht.
c) Cc k xo phi s dng ph hp vi ni dung, s lng k xo khng di
10.
d) Thc phim cui cng phi c ni dung.

- 327 -

Blank Page

- 328 -

TI LIU THAM KHO THM

- 329 -

You might also like