Professional Documents
Culture Documents
SCRIPT V K
THUT HOT HNH
(Gio trnh ging dy trn Flash CS5/CS6v ActionScript 3.0)
Blank Page
-2-
LI NI U
Tc gi
-3-
Blank Page
-4-
PH LC
LI NI U ........................................................................................................................................ 3
CHNG 1. GII THIU V FLASH .......................................................................................... 11
1.1.
1.3.
1.2.
1.4.
1.4.1.
1.4.3.
1.4.2.
1.4.4.
1.4.5.
1.4.6.
1.4.7.
2.3.
Cng c Text
2.2.
2.4.
2.5.
2.6.
2.7.
-5-
2.8.
3.3.
3.2.
3.4.
4.3.
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
5.3.
5.2.
5.4.
5.5.
5.5.1.
-6-
5.5.2.
5.5.4.
5.5.3.
5.6.
5.7.
Hm .................................................................................................................................... 127
Lp v i tng .......................................................................................................... 132
5.7.1.
5.7.3.
5.7.2.
5.7.4.
5.7.5.
5.7.6.
5.7.7.
5.8.
5.9.
5.10.
6.3.
6.2.
6.4.
6.5.
6.6.
6.7.
-7-
6.8.
6.9.
6.10.
6.11.
7.3.
7.2.
7.4.
7.5.
-8-
4. TA O BE CA .......................................................................................................................... 288
-9-
Blank Page
- 10 -
Hnh 1 ha im
Hnh 2 ha Fractal
- 12 -
Hnh 3 ha vector
- 13 -
- 14 -
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.
- 15 -
- 16 -
- 17 -
- 18 -
Sau khi qu trnh khi ng hon tt, bn s thy giao din sau y
- 19 -
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
- 20 -
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 -
- 22 -
- 23 -
- 24 -
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
- 25 -
- 26 -
- 27 -
- 28 -
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:
-
- 29 -
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.
Vng Transform (Ctrl+T): hiu chnh gc cnh cho i tng. Vic hiu chnh
gc cnh ny bao gm:
- 30 -
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.
- 31 -
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.
- 32 -
- 33 -
- 34 -
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.
- 35 -
- 36 -
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 -
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
CHNG 2. CC CNG C V C BN
- 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).
Cng c Erase
Cng c dng ty xa cc nt v.
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
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
- 43 -
CHNG 2. CC CNG C V C BN
- 44 -
CHNG 2. CC CNG C V C BN
Hnh 34 Hnh to bi gc m
Hnh 35 Hnh to bi gc ng
Hnh 36 Hnh to bi gc ng v gc m
- 45 -
CHNG 2. CC CNG C V C BN
- 46 -
CHNG 2. CC CNG C V C BN
- 47 -
CHNG 2. CC CNG C V C BN
- 48 -
CHNG 2. CC CNG C V C BN
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.
- 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).
- 50 -
CHNG 2. CC CNG C V C BN
- 51 -
CHNG 2. CC CNG C V C BN
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.
- 52 -
CHNG 2. CC CNG C V C BN
- 53 -
CHNG 2. CC CNG C V C BN
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.
- 54 -
CHNG 2. CC CNG C V C BN
- 55 -
CHNG 2. CC CNG C V C BN
- 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).
- 57 -
CHNG 2. CC CNG C V C BN
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.
- 58 -
CHNG 2. CC CNG C V C BN
- 59 -
CHNG 2. CC CNG C V C BN
- 60 -
CHNG 2. CC CNG C V C BN
- 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 -
- 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 -
- 66 -
- 67 -
- 68 -
- 69 -
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.
- 70 -
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 -
Blank Page
- 72 -
+ 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.
+ 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.
+ 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 -
- 75 -
- 76 -
- 77 -
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 -
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 -
- 80 -
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.
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 -
- 82 -
Hnh 76 Cc cp Shape Hint Frame u (bn tri) v Frame cui (bn phi)
- 83 -
- 84 -
- 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 -
- 86 -
- 87 -
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
- 88 -
- 89 -
- 90 -
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).
- 91 -
- 92 -
- 93 -
- 94 -
- 95 -
- 96 -
- 97 -
- 98 -
- 99 -
- 100 -
- 101 -
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 -
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 -
- 104 -
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 -
Blank Page
- 106 -
- 108 -
- 109 -
- 110 -
- 111 -
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 -
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
- 113 -
var a:int = 1;
a = 1, b cha khi to
a+=b++;
a = 1, b = 1
var b:int = 1;
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
- 114 -
var a:int = 1;
var b:int = 2;
var c:int;
c = (a>b)?a:b;
trace(c);
- 115 -
- 116 -
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 -
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 -
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 -
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 -
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 -
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
- 122 -
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
- 123 -
Lnh;
}
V d: V d s dng for eachin kt hp vi Array
V d
Kt qu
1
2
3
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
- 124 -
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 -
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
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.
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 -
}
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 -
- 129 -
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 -
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 -
5.7. Lp v i tng
5.7.1. Xy dng lp
- 132 -
}
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 -
}
public class MyClass
{
private var a:int;
private var b:int;
}
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 -
}
//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;
}
}
- 135 -
}
//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 -
- 137 -
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
- 138 -
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).
- 139 -
- 140 -
- 141 -
- 142 -
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"
MIDDLE_CLICK : String =
"middleClick"
MIDDLE_MOUSE_UP : String =
"middleMouseUp"
DOUBLE_CLICK : String =
"doubleClick"
MIDDLE_MOUSE_DOWN : String
= "middleMouseDown"
MOUSE_DOWN : String =
"mouseDown"
MOUSE_MOVE : String =
"mouseMove"
MOUSE_OVER : String =
"mouseOver"
MOUSE_WHEEL : String =
"mouseWheel"
MOUSE_OUT : String =
"mouseOut"
RIGHT_CLICK : String =
- 143 -
"rightClick"
RIGHT_MOUSE_DOWN : String =
"rightMouseDown"
RIGHT_MOUSE_UP : String =
"rightMouseUp"
- 144 -
shiftKey:Boolean
commandKey:Boolean
controlKey:Boolean
charCode:uint
keyCode:uint
KeyLocation:uint
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 -
- 146 -
- 147 -
- 148 -
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:
- 149 -
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
- 150 -
- 151 -
- 152 -
- 153 -
- 154 -
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.
- 155 -
- 156 -
- 157 -
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 -
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 -
Actions
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
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 -
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.
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 -
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
Math.floor(Math.random()*(li
mit+1));
return randomNumber;
}
trace(fl_GenerateRandomNum
ber(100));
Bring
Object to
the Front
Simple
Timer
- 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).
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();
- 165 -
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 -
Bt u trnh din n
cnh quay k tip trong
danh sch Scene.
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.
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 -
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.
Fade out a
Movie Clip
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,
}
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
from Stage
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 -
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.
- 173 -
{
video_instance_name.play();
}
- 174 -
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);
}
- 175 -
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");
}
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 -
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 -
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 -
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 -
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 -
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
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 -
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
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 -
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 -
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
}
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 -
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 -
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.
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 -
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
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 .
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.");
}
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.
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
movieClip_1.addEventListener(Mouse
Event.CLICK, fl_SaveFile);
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);
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.
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
// 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
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.
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 -
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 -
Blank Page
- 196 -
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.
- 198 -
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 -
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.
- 200 -
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 -
Hnh 118 Hiu chnh thuc tnh Align cho Video ch gu trn Stage
- 202 -
- 203 -
- 204 -
- 205 -
- 206 -
- 207 -
- 208 -
- 209 -
- 210 -
- 211 -
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.
- 212 -
Hnh 133 Mt n ng
- 213 -
- 214 -
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 -
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.
- 216 -
- 217 -
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.
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 -
- 219 -
- 220 -
- 221 -
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 -
b) Mc Signature
- 223 -
- 224 -
d) Mc Advanced
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 -
- 226 -
- 227 -
- 228 -
- 229 -
- 230 -
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 -
- 232 -
- 233 -
- 234 -
- 235 -
- 236 -
- 237 -
- 238 -
}
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 -
{
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 -
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,
}
}
}
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 -
- 243 -
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 -
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.
- 245 -
writeUnsignedByte()
writeUnsignedShort()
writeUnsignedInt()
writeUTF()
writeUTFBytes(length:int)
close
connect
ioError
securityError
socketData
- 246 -
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;
- 247 -
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.
- 248 -
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;
- 249 -
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;
- 250 -
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;
- 251 -
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 -
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 -
Blank Page
- 254 -
- 256 -
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
- 257 -
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
- 258 -
- 259 -
- 260 -
- 261 -
}
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 -
}
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 -
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.view.BasicView;
- 264 -
- 265 -
Cylinder
(Hnh tr v
hnh chp
ct)
Cylinder(
material:Material3DObject,
radius:Number,
height:Number,
segmentsW:int,
segmentsH:int,
topRadius:Number,
topFace:Boolean,
bottomFace:Boolean
)
- 266 -
Plane
(Mt
phng)
- 267 -
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.
)
Arrow(
material:Material3DObject
)
- 268 -
Cube
(Hnh hp)
Cube(
material:Material3DObject,
width:Number,
depth:Number,
height:Number,
segmentsH:int,
segmentsS:int,
segmentsT:int,
insideFaces:int,
excludeFaces:int
)
- 269 -
- 270 -
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
- 271 -
: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
- 272 -
- 273 -
- 274 -
Trong ,
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.
- 275 -
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 -
- 277 -
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.
- 278 -
- 279 -
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 -
Blank Page
- 281 -
BI TP THC HNH
A PHN BI TP C HNG DN
Download Sources
- 283 -
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
- 284 -
- 285 -
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 192 Ta o be ca
- 288 -
- 289 -
}
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 -
sin
Ox
cos
- 291 -
.
=
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;
- 292 -
}
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;
}
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 -
- 295 -
- 296 -
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);
- 297 -
_timer1.start ();
}
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 -
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 -
//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;
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;
Menu.addEventListener(MouseEvent.CLICK, fl_ClickToGoToScene_4);
function fl_ClickToGoToScene_4(event:MouseEvent):void
{
removeChild(one);
MovieClip(this.root).gotoAndStop(1, "Intro");
}
- 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.
- 303 -
- 304 -
- 305 -
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;
- 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 -
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 -
- 310 -
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.
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 -
- 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 -
- 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 -
- 317 -
- 318 -
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 -
- 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.
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:
- 321 -
2.
3.
4.
5.
6.
7.
8.
9.
- 322 -
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.
BI THC HNH S 3
S DNG BIU TNG V TO HOT CNH (TIP THEO)
- 323 -
BI THC HNH S 4
LP TRNH VI ACTIONSCRIPT
Trong bi thc hnh ny, bn cn hon tt cc ni dung sau:
- 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 -
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 -
- 327 -
Blank Page
- 328 -
- 329 -