You are on page 1of 149

Gi th 01: Lm quen vi AS, Your First Look at AS

AS l mt ngn ng lp trnh c xy dng trong Flash. AS ging nh cc ngn ng


khc nh Javascript, C++ v.v. nhng bn khng cn bit cc ngn ng khc hc
AS (nu c th cng d hn).

Bt u hc AS, th chng ta coi th AS l g, lm c nhng g v c quan h g vi
cc chc nng khc ca Flash. Trong bi ny, bn s tm hiu coi AS ra i nh th
no, xem cch vit AS lm sao, tm hiu AS lm c nhng g v sau sau cng l
xc nh c ni lu tr AS trong Flash.

i st ngha v tin cho sau ny, mnh s khng dch mt s t ng ra ting vit
nh script, movieclip v.v.

Script l g?

AS l ngn ng lp trnh, vi cc lnh sai khin Flash movie lm vic theo ng
nhng g mnh vit (ch c mnh vit sai ch computer khng lm sai ). Phn nhiu
th AS ch lm vic trong mi trng ca Flash, tuy nhin AS cng c th gi lnh
cho browser, h iu hnh v.v.

Script c th ngn gn vi ch hay cng c th di c trm trang. Script c th c
vit gp li mt ch hay cng c th vit ri rc khp ni trong movie.

Xut x ca AS

AS rt ging ngn ng C++, Java, javascript .v.v v c da trn tiu chun do
ECMA (European Computer Manufactuers Association) lp ra gi l ECMAScript.
Nhiu ngi hiu lm rng AS da trn Javascript, nhng thc cht c 2 u da trn
ECMAScript.

Lc u vit script trong Flash rt n gin v cho ti Flash 4 mi uc pht trin
nhng cng vn cn "th s" vi nhng vng lp v cc iu kin "if...else". Cho ti
Flash 5 th dn Flash mi c th lp trnh v gn lin script vi cc yu t trong
movie. . Sang ti Flash MX th AS tr thnh ngn ng lp trnh ton din vi hn
300 cu lnh, hm .v.v

Nhn bit AS

AS n gin l nhng cu lnh c vit bng ting Anh (v l ny m mnh s khng
dch cc t ting Anh lin quan n AS, v mt phn th mnh khng gii thut ng
computer hay ting vit cho lm) v cc php tnh v du cu. V d sau:


ActionScript
on (press) {
gotoAndPlay ("my frame");
}


Bn c th gii ngha on m trn bng cch tm hiu cc t chnh trong . Ch
"press" gi rng ngi dng ang kch chut vo mt ci g , (v trong trng
hp ny l ci nt) Ch k tip "gotoAndPlay" do 4 ch "go to and play" gp li, gi
rng AS ra lnh cho Flash timt im no trong movie v bt u chi t im
.

AS c th lm nhng g?

Flash movie gm c cc scence (cnh), v mi cnh s c 1 timeline (thi gin
biu???) v timeline s c cc frame (khung) bt u t s 1. Thng thng th Flash
s chi t frame 1 cho ti frame cui ca scence vi tc c nh v dng li hay
lp li t u tuy theo ngi lm Flash.

Mc ch chnh ca AS l thay i th t trong cch chi ca Flash. AS c th dng
bt frame no, hay chy ngc tr li frame trc hay nhy vi frame ri chi tip.
Nhng khng ch l nhng g AS c th lm c. AS c th bin film hot hnh
ca Flash thnh mt chng trnh ng dng c s tng tc ca ngi dng. Di
y l nhng c bn m AS c th lm:
Hot hnh: Bn khng cn AS lm hot hnh, nhng vi AS th bn c th
to nhng hot hnh phc tp hn. V d, tri banh c th tng xung quanh
mnh hnh m khng bao gi ngng, v tun theo cc nh lut vt l nh lc
ht, lc ma st, lc phn v.v Nu khng c AS th bn cn phi dng c hng
ngn frame lm, cn vi AS th ch 1 frame cng
Navigation (hng bit dchlm sao cho hay ): thay v movie ch chi tng
frame 1 theo th t th bn c th dng movie bt c frame no, v cho php
ngi dng c th chi bt c frame no .v.v
Thu nhp thng tin t ngi dng (user input): bn c th dng AS hi
ngi dng 1 cu hi, ri dng thng tn trong movie hay c th gi cho
server hay lm nhng g bn mun.
Thu nhp thng tn t cc ngun khc: AS c th tng tc vi server v ly
cc thng tin t server hay text file
Tnh ton: AS c th lm bt c php tnh no m ton hc cho php
Thay i hnh nh trong movie: AS c th thay i kch thc, mu sc, v tr
ca bt c movie clip (MC) no trong movie flash ca bn. Bn c th to
thm phin bn hay xo bi phin bn ca MC vi AS
Phn tch mi trng ca my tnh: Vi AS bn c th ly gi t h iu hnh
hay a ch ang chi movie Flash .
iu khin m thanh trong flash movie: AS l cch tt nht iu khin m
thanh trong Flash,AS c chi chm, chi nhanh, ngng, quay vng .v.v bt k
m thanh no trong Flash.
Pht trin cc kh nng ca AS

iu quan trng nht m AS c th lm cho bn l nhng g cha ai ngh ti Vi
AS v tr tng tng v c sng to ca bn th khng c g l khng th xy ra vi
AS c.

Mc ch ca cc sch, v ca VNFX l hng dn bn hiu bit v Flash t
bn c th t dng n lm ra nhng sn phm tuyt vi m khng ai c.

Vit AS u

Cu hi u tin nhng ai tm hiu AS thng hi l "Vit AS vo u?". Flash c
mt mi trng lm multimedia kh phc tp. Nu bn dng Flash ri hay c
qua cc hng dn i km vi Flash, th bn bit cc yu t c bn nh timeline,
key frame v.v. nu bn cha bit th mnh khuyn bn nn tm hiu trc ri tip tc
y. trong mc Flash Tng Qu, VNFX c post link download 3 ci CD hng
dn c bn cho ngi cha bao gi dng Flash.

Vit AS time line

AS c th vit vo key frame bt c timeline no. lm nh vy, bn chn key
frame trong timeline trc ri bn m Action Panel ra (c th nhn F9) vit hay
xem AS c vit . Mnh khuyn bn nn dng Action Panel di dng
Expert hn l Normal, v nh vy bn s hc c nhiu v l hn.

Khi vit AS vo key frame nh vy th AS key frame s hot ng khi m Flash
chi ti key frame . V d nh lnh AS stop() c t key frame 5 th Flash
chi ti key frame 5 th s dng li cho ti khi c lnh khc. cch vit ny gi l vit
vo time line

Mt trong nhng l do vit script vo time line l khi bn mun dng function (hm),
v function cho php chng ta ti s dng on m t nhiu ni, nhiu level khc.

Vit AS nt

Cc phn t ca Flash movie c gi l symbol (biu tng). thng th symbol l
cc hnh nh. V c 3 loi symbol: button (nt), graphich (hnh nh), movie
clips(on phim). 3 loi trn th AS khng th vit lin vi graphic, cn button v
movie clip th OK.

Nt s khng c tc dng g c nu nh khng km AS ln trn n. Mun km AS
vo nt th chn nt trn stage (sn khu: din tch ca flash movie), ri sau m
Action panel v vit vo nh ta vit vo key frame.

AS vit trn nt ch hot ng khi chut hoc bn phm tc ng ln nt m thi

Vit AS MC

MC khc vi graphic ch MC c t tn khi mang vo stage, MC thng l hnh
nh ng, v c th c AS km theo MC. vit AS vo MC th cng tng t nh
ta lm vi nt.

AS km theo MC c th iu khin MC hay l cc MC trong cng mt timeline
hay cc timeline ngoi movie

Bi tp

1. To mt movie mi
2. to 3 key frames
3. Dung Flash v mi hnh khc nhau cho mi frame
4. Chy th movie (nhn Control + enter)
5. Sau tr li timeline, vit vo keyframe 2 on m : "stop();"
6. Cho chy th movie ln na
7. V k ny bn ch thy Flash chi ti frame th 2 th ngng, v bn thnh cng
trong vic vit AS :

Gi th 02: S dng Action panel, Using the Script Editing Window
Nu dn ho coi Timeline l nh th dn lp trnh vi AS coi Action Panel l ni
c ng ca mnh, ti dn AS c th thay i, vit tt c cc lnh. V vy rt quan
trng l bn c th s dng quen thuc Action Panel

Flash MX s dng cc panel gip bn c th ly cc thng tin v movie bn ang
lm mt cch d dng. Khi bn ci t v chay Flash ln u tin, Flash s hi bn
mun s dng Flash nh th no v Flash s xp t cc panel cho hp l. Bn cng
c th thay i cch xp t theo ca bn.

Ni chung bn nn xp t cc panel ca bn lm sao cho thun tin cho bn nht, v
ci ny cng cn c kinh nghim Mnh dng dual monitor, mnh close ht cc
panel ch gi li 2 ci chnh trn mn hnh, mnh ko ci action panel v property
panel qua mt bn monitor, cn ci bn kia cho ci stage, nu cn m panel no
th mnh dng phm tt m.

S dng Action panel c 2 cch: bnh thng (normal) v chuyn dng (expert). Khi
mi chy my ln u th Action panel c set di dng bnh thng. dng bnh
thng th bn khng c th nh trc tip cc cu lnh, m phi chn t cc menu
bn tay tri ca panel. Vi setup nh vy th bn khng bao gi phm phi li khi vit
AS c.

Mnh s b phn hng dn dng normal v mnh thy dng normal mode s khng
bao gi tin c, dng expert mode lc u hi mt nhng bo m l cc bn s
hc c mau v nh lu hn

S dng Action panel vi expert mode th bn c nhiu t do hn, nhng t do ng
ngha vi trch nhim nn bn phi cn tht khi vit code. T normal mode chuyn
sang expert mode th nhn phm tt CONTROL + SHIFT + E, chuyn ngc li th
dng CONTROL + SHIFT + N (nh kch chut vo action panel trc khi dng phm
tt). Bn c th i t Normal mode sang expert mode bt c lc no, nhng i
ngc li th ch c khi m code ca bn khng c li.

Action panel c popup menu (mi tn ch xung di, nm gc phi ca action
panel) v trong c nhiu lnh rt tt cho bn khi bn dng Action panel, nht l i
vi Expert mode. Bn c th tm v thay th bt c cu no, ch no trong script ca
bn. Phm tt cho tm kim l Control + F v cho thay th l Control + H, nhn F3 th
Flash s tip tc tm ch, cu bn mun tm.

Mt lnh na l "Goto Line" gip bn tm c cu bn mun tm. Lnh "Check
Syntax" s r sot script ca bn v tm nhng li c php. Lc mi tp vit AS, th
dng nn thng xuyn dng Chech Syntax check li trong sctipt. Lnh tip theo
l "Auto Format" v "Auto Format Options" gip cho bn trnh by script ca bn cho
d c hn. Bn c th thay i mu sc, font ch v.v. cho script ca bn cho bn
d c code hn bng cch vo Edit > Preferences > ActionScript Editor. Cc phn
cn li ca pop-up window cho php bn c xut hay nhp AS di dng text file
v in script ra giy.

Tuy gi l expert mode nhng thc ra dng cn d hn l normal mode. Bi v di
expert mode thi Action panel chng khc g chng trnh "note pad" hay "text pad".
Bn ch vic vit nhng g bn mun vo . Khi dng di expert mode, bn vn c
th tham kho cc cu lnh, cc c php ca AS ci khung bn tri ca Action
Panel. V nu bn tn th mt s quy tt th bn s s c chc nng "Code Hint"
ca Action Panel, chc nng ny to nn nhng khung nh nh trong c nhng cu
lnh ca AS ng hp quy cho bn la chn.

tr thnh mt "cao th" v AS th bn khng th no khng nm vng v Action
panel c.

Sau y l bi thc hnh nho nh, gip bn lm quen vi Action panel di expert
mode

1. To mt movie mi
2. Chn key frame u tin (frame s 1) ca layer 1 (mnh khng dch ch layer = lp
v d trng vi class= lp)
3. M Action panel (c th dng phm tt hay vo trong phn Window > Action panel
4. Chuyn sang expert mode (dng phm tt hy vo trong pop-up menu ca Action
panel i)
5. Vo ch vit AS
6. Vit on code sau:

ActionScript
trace ("I am expert");


Khi bn th movie th dng ch "I am expert" s c hin ra trong Output panel, v
mnh s cp n lnh trace() vo nhng gi ti
Gi th 03: Hc cch lp trnh, Learning to program
Lp trnh c th coi l khoa hc v ngh thut. V vy lp trnh vin gii cn c 2 iu
kin kin thc v ngn ng m h dng v tnh sng to, t khi no c trng hp ch
c 1 cch lp trnh cho mt n lm.

Trong qu trnh vit AS, bn s to ra cho ring mnh mt phong thi vit code kh
c trng. C th mi u bn s dng phong cch vit code trong nhng bi vit ny,
ri sau bn s t t chuyn sang phong cch ca ring bn

Thng th khi nim v cc ngn ng lp trnh u ging nhau, v trong bi ny s
bn v nhng khi nim lp trnh v lm sao p dng n trong Flash

Cch suy ngh ca computer

Tht ra computer dt lm chng bit suy ngh u, ch bit lm vic theo mnh lnh
mt cch khng suy ngh. V vy computer khng bao gi li m li ngi vit lnh
sai khin n.

Cn AS ch l mt chui lnh, ch th cho computer, hay ng ra l Flash phi lm
nhng g trong mi trng runtime (runtime environment).

Khi vit AS th bn nn t coi mnh "ngu" nh computer, v c li nhng dng lnh
AS v ngh ti kt qu ca vic thi hnh lnh . Khi t t mnh vo v tr ca
computer, bn s on c script ca bn s lm nhng g trong mi trng runtime,
v bn c th thy ra nhng li m bn v mc phi. Khi m bn tr thnh din vin
tuyt vi trong vai computer th bn cng tr thnh mt lp trnh vin ti ba.

Lnh, hm, v php tnh

Lnh (command) l yu t cn bn ca AS ch th Flash lm mt hnh ng c th.
Lnh c thi hnh tuyt i trong cc trng hp kh thi. V d nu nh ta vit
gotoAndPlay(5) cho Flash ti frame 5 v chi, nhng nu trong movie khng c
frame 5 th lnh khng th lm c.

Hm (function, mnh s dng t function nhiu hn l hm) l phn tnh ton cc
php tnh v cho ra (return) mt kt qu. V d hm random() s cho ra mt con s
ngu nhin no , hay hm sqrt() s cho ra gi tr bnh phng ca 1 s m hm
nhn c truyn cho.

Lnh v hm u c th c truyn cho 1 hay nhiu thng s (parameter, mnh s
dng t parameter thay v thng s), v nhng thng s gip cho hm v lnh c
c th hn. V d gotoAndPlay(5) th 5 l thng s, nu nh khng c thng s ny
th lnh "gotoAndPlay" s khng bit r phi ni Flash i u. cng nh hm sqrt()
cng cn c thng s cho ra gi tr bnh phng ca s y.

S khc bit gia hm v lnh chnh l cc php tnh. Php tnh thng l nhng du
+, -, *, / hay l php so snh <, ==. >. Hm c php tnh, lnh th khng

Bin s

Bin s (parameter) cn thit trong mi ngn ng lp trnh v n lu tr thng tin v
mt ci g trong chng trnh. Bin s gm c 2 phn: tn v gi tr. i khi bn
ch cn lu tr thng tin trong bin s mt thi gian ngn, v d bn mun Flash thi
hnh 1 s lnh 10 ln th bn cn m s ln m Flash thi hnh lnh c th ra
lnh cho Flash ngng ngay sau khi thi hnh xong lnh ln th 10. Nhng cng c lc
bn cn phi lu li thng tin trong mt thi gian di hay trong sut qu trnh thi
gian Flash chi.

Tn ca bin s thng l mt nhm t, hay cng c th ch n gin l 1 t, hay 1
ch ci. Thng thng tn ca bin s nn r rng d hiu v ni ln c tnh cht
ca thng tin m bin s ang lu tr. V d nu bn mun lu tr tn ca ngi dng
trong bin s th bn nn t tn bin s l userName (mnh ngh t tn ting Anh
d hiu hn, v ting vit khng du cng d b hiu lm), bn c th t tn bin s
l "n" nhng qu ngn, ngi c script ca bn s kh hiu, nu t l name th
d trng vi cc bin s hay t kho khc (_name l mt c tnh ca i tng
MovieClip)

Khi vit AS, bn cn lu vit lm sao cho d hiu v d c. V cc lp trnh vin
quy c tn bin s theo quy tc sau: tn bin s lun vit thng ch u tin, v
vit hoa ch ci u tin cho cc ch k tip, v d userName, userLastName,
userMotherMaidenName v.v.

Lu rng ch cc ch ci v s mi c dng t tn cho bin s, v lun bt
u tn bng ch ci.

C nhiu loi bin s lu tr nhiu loi thng tin, v ngay mi loi thng tin cng
c th c nhiu loi khc nhau na. Nh s (number) l mt loi gi tr ca bin s, v
di n cn c cc loi khc nh s nguyn (integer), s ... khng nguyn
(floating, double). Bn cng c th dng bin s cha cc chui (chui gi tt cho
chui ch ci), chui c th ch c 1 ch ci, nhiu ch ci hay l khng c g ht, tt
c cc chui sau y u hp l: "ablsdfjksl", "a", " ", "". Khi vit mt chui th cn
dng du ngoc kp ("") bt u v kt thc chui.

Trong cc ngn ng lp trnh khc nh Java, C++, hay ngay c ActionScript 2.0 trong
Flash MX 2004 th bn phi xac nh trc loi thng tin no bn s lu trong bin
s. Nhng vi ActionScript 1 (trong FlashMX) th bn khng cn lm vic ny. V d
bin s userName lc u cha 1 chui, nhng sau li cha 1 s nguyn th cng
vn hp l.

Ngoi chui v s, cn c nhiu loi khc na nhng chng ta s cp ti vo
nhng bi sau.


iu kin

Trong nhng trng hp chng ta khng bit nn ra lnh cho Flash phi lm g cho
thch hp vi tng tnh hung th ta c th dng "iu kin" ra lnh cho Flash.

V d nu nh bn ra lnh cho Flash khng cho ngi dng coi mt on phim trong
Flash nu nh user di 18 tui, nu user trn 18 tui th hy chi on phim y.
Trc tin, Flash s so snh s tui ca user vi s 18, nu nh s tui ca user tho
mn iu kin chng ta t ra th Flash s c 1 gi tr true t php so snh trn, v
ngc li s l false iu kin s lun lun l ng (true) hay sai (false). Mt gi tr
ch c ng hay sai th c gi l boolean. Sau khi thc hin php so snh v c
c kt qu t php so snh trn, Flash s chn mt trong 2 gii php do chng ta
a ra cho tng trng hp.

i khi chng ta cn c nhiu iu kin hn ch l n gin "true" hay "false", v d
nh bn mun Flash chi on phim A cho ngi trn 18 tui, di 18 nhng trn 13
th chi on phim B, v nhng ai di 13 th chi on phim C.

Vng lp

Con ngi lm ra computer v li khng mun lm nhiu, m bn ci cho
computer. Nht l phi lm i lm li 1 vic no th cng nhm chn. V vy vng
lp (loop) l mt yu t quan trng trong cc ngn ng lp trnh. AS cng vy, bn c
th dng vng lp trong script.

Trong vng lp, "iu kin" rt quan trng. Mi vng lp cn c im bt u v
im dng v mt iu kin bo hiu im dng ca vng lp. V d nh bn
mun cho vng lp chy 10 ln th s c 1 bin s dng m vng lp, bt u t
0, Mi vng lp chy th bin s ny s tng thm 1. Khi ti 9 th vng lp s dng
li. Sau y minh ho ca vng lp ny:

1. Mt s lnh trc vng lp
2. Bt u vng lp, set bin s counter = 0
3. Lm mt s lnh trong vng lp
4. Tng bin s counter +=1
5. Nu bin s counter nh hn 9, tr li bc th 3
6. Ra khi vng lp, v tip tc chng trnh.

y chng ta bt du bin s counter = 0 v quy c thng thng cc ngn ng lp
trnh u bt u vng lp 0.

Mt im ng lu ca vng lp l iu kin c xt trc khi thc hin cc lnh
trong vng lp. Trong vi trng hp, iu kin s c xt sau khi thc hin cc
lnh trong vng lp. Chng ta cng c th ngng vng lp trc im dng ca n, v
iu ny s c cp ti vo bi k tip

Lm nhng iu khng tng

Lnh, hm, php tnh, bin s, thng s, iu kin, vng lp l nhng phn cn bn
trong ngn ng lp trnh, v ci ny th ai cng bit nhng lm sao phi hp li thnh
mt chng trnh hon ho mi l ci kh.

Chng trnh n gin ch l mt tp hp lnh cho computer gii quyt 1 vn
no . V vy trc khi vit 1 chng trnh chng ta cn phi xc nh "vn " cn
phi gii quyt. V d thc t ngoi i, m bn nh bn ra ch mua g. Nhng ch
n gin ni ra ch mua g th cha v bit mua g sng hay g lm ri. nu mua
g sng th mua loi no v.v. l cha ni ti mua g ch no, gi c ra sao v.v.
Nu nh bn m ni r l ra ch bn thnh, mua 1 con g mi du, nng khong 2 kg,
vi gi khong 10000 th tht l d dng cho bn phi khng?

Bit c vn mua g ri th tm cch mua g. Bn phi "ln k hoch", nn nh
bn ch hay i taxi ra ch bn thnh. Nu i taxi i hng no, tm s phone gi,
v.v. cn nh bn ch i th nh tn no. Ri nn mc qun o no i ch. Ra n ch
th phi mc c lm sao, tr tin mt hay ghi s n. Bn thy khng, t mt chuyn
mua g n gin vy m c th tn c ngy tri ln chng trnh

Vit AS, bn cn phi lu ti tt c mi vic d nh cch my cho Flash c th
lm ng theo nh bn trong mi tnh hung. Cc chng trnh c bug khng phi
v ngi vit d m v cha ngh ti ht mi tnh hung thi.

Tm li, iu quan trng trong lp trnh l kh nng phn tch mt vn chnh thnh
nhiu vn nh cho ti khi khng cn nh hn na, v sau xy dng chng
trnh t gii quyy cc vn nh ln dn cho ti vn chnh.

Vit m hon chnh

B (bug) n gin l li ca chng trnh m bn to ra. Bug c th ch l nhng li
c php n gin, hay l nhng li phc tp do cch bn gii quyt vn trong mi
trng runtime.

trnh c bug trong script ca bn th bn nn tn nhiu th gi vo giai on phn
tch, thit k chng trnh cho script ca bn. Kim tra cc on code nhiu ln, v
ng vai "computer" cho tht ging, ng suy ngh, m thi hnh cc lnh trong script
ca bn. Vit tng on code nh ri rp li vi nhau (v vy m lp trnh theo hng
i tng c s dng nhiu nht)

Nu script ca bn c bug th ng th m nn lng, v khng c chng trnh no do
con ngi lm ra m khng c bug c. V vy bn ng c gng vit code sao cho
tuyt ho khng c li. Nu c bug th bn dit bug thi Bn c th chun b
"chin u" vi bug bng cch vit code sao cho d hiu v d c, vit nhiu ch
thch cho cc on m. i khi dit bug (debug) rt n gin nhng c khi cng rt
kho m bit bug u dit. Flash c km theo vi cng c gip bn debug d dng
hn, chng ta s ni ti cc cng c ny trong bi ti.

Gi th 04: Vit code trong Flash, Writing code in Flash
Khi bn vit script, bn s dng tt c nhng t kha, v k hiu v.v. Vy trc tin
chng ta s phn tch mt on script sau y. on script ny gn vo 1 button.

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


Dng u tin xc nh nhng on code sau c kch hot khi m user nhn vo
nt. hm on(press) ch c th s dng trong vo trong nt m thi. Ngoi ra bn c
th dng on(release) nu nh bn mun kch hot on m trn sau khi user nhn nt,
v bung tay.

Du ngoc mc {} u v cui on code, gi on code vo lm mt, v u
c kch hot khi nhn nt. Cc bn lu thy on code c vit vo trong cho
d nhn thy c on code ny ph thuc vo on(press). Cc bn nn vit li vo
trong cho nhng on code ph thuc vo 1 lnh hay hm no .

Dng th hai lp ra bin s (mnh s vit tt l var nhe) tn myVariable, v t gi tr
bng 7 cho n. tng t hng k tip lp ra var tn l myOtherVariable v cho gi tr
ca n l "Macrmedia". C 2 cu ny c kt thc bng du chm phy ;

Dng th 4 chnh l vng lp (mnh s gi l loop cho tin nhe) for (s nhc ti cc
loi loop pha di) v cc iu kin ca loop ny. N s lp 10 ln vi iu kin
bt u l i=0 v n s tng thm 1 cho mi ln lp cho ti khi n ln ti 9. Tng t
nh on(press), for loop cng c on code cho ring n, v c bc quanh bng { }
v on code trong ch kch hot khi m cc iu kin ca for loop c tha mn.

Dng th 5 l lnh trace(), lnh ny ch vit thng tin ra output window trong lc
bn lm vic vi Flash, user s khng thy c. K tip l iu kin, if l t kho
trong Flash, v n s kim tra kt qu ca php so snh myVariable + 3 ==5. Nu m
kt qu l ng th n s kch hot lnh trace trong, v s vit ra output window gi
tr ca myOtherVariable

Vy l bn thy mt on script hon chnh bng AS ri. Tip theo chng ta s ni
n vi phn khc ca AS.

Output window

trn chng ta c nhc ti output window, m khng ni r l g. Output window l
mt window trong software Flash, v ch xut hin khi m bn chy th movie. Nu
Flash compile movie cho bn v pht hin ra li th Flash s vit ra cc output
window ny. Trong khi chy th movie, th lnh trace() mi c th vit cc thng tin
ra output window. Output window rt quan trng trong vit "dit b", dng n chung
vi trace bn c th quan st cc thng s, bin s, cc i tng, thuc tnh i
tng .v.v

Trong lc hc AS, bn c th vit mt an script ngn khng lm g c nhng ch
vit thng tin ra output window, nh on code trn.

Thc hnh: vit thng tin ra output windown

Cch tt nht hiu r chc nng ca output window l s dng n. By gi mnh s
vit mt on code ngn gi thi tin ra output window nhe.

1. To mt file mi

2. Chn frame u tin ca movie, m Action panel. Chnh kch thc cho action
panel ln vit, v nh dng expert mode

3. Kch chut vo phn vit script v vit cu sau: trace("hello world");

4. Chy th movie (Control + Enter)

5. Bn thy g output window? (Nu output window ca bn cha m th hy nhn
F2)

Ging nh action panel, output window c 1 ci pop-up menu nho nh trn gc
phi. Bn c th dng n copy, xo hay save ni dung ca output window hay c
th tm kim ch, v.v. Ngoi ra, pop-up menu ny c phn cho bn chnh ch "dit
b", bn c th chn khng cn output window in ra cc li (none), hay ch in li
(error), hay ch in cnh bo (error) v cui cng l in ra chi tit cc li hay cnh bo
(verbose)

Bin s cc b v ton b

trong gi th 3, chng ta c nhc n variable (bin s) dng lu tr thng tin.
V s dng variable trong AS rt d dng. Bn ch cn n nh gi tr cho variable. V
d: myVariable = 7. Chng ta to variable c tn l myVariable v n nh 7 l gi tr
cho n. (bn c th t tn cho variable l bt c g bn mun)

By gi bn c th th vit on code sau:

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

Khi bn chy th movie th output window s c hng ch sau: var1: 7 /var2: hello
world V s 7 v "hello world" c cha trong var1 v var2 s c in ra.

Variable c 2 loi, local v global. Global variable (bin s ton b) th bn c th
truy cp gi tr ca n bt c ni no trong movie. To global variable khng i
hi mt bn phi lm mt ci g c bit c, bn c th dng n nh cch trn, v
Flash t ng bin n thnh global variable. Flash movie dng h thng level, v
timeline ca movie chnh l root leve (gc), cn cc movie clip cng chnh l mt
Flash movie nh trong Flash movie ln. Cc hnh nh, script trong mt movie clip
l 1 level thp hn root level.

Local variable (bin s cc b), khc vi global variable, local variable ch c tr
truy cp trong cng mt on code, hay trong cng mt timeline. Khi dng local
variable th khi ra khi timeline hay on code th Flash s xo local variable ra
khi b nh. Mun to local variable th dng t kho var trc tn ca local
variable, v d: var myLocal = "This is local"; Bn ch cn dng t kho var 1 ln
thi, nhng ln dng sau th ch cn dng tn ca local variable thi. V d on
code:

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


Php so snh v cc php tnh

So snh 2 gi tr trong AS rt n gin, dng cc k hiu ton hc nh <, >, =

Khi n nh gi tr th dng du =, v cho khc bit th khi so snh dng ==. on
code sau xt coi gi tr ca a c bng 7 khng, v in kt qu ra output window. V khi
test on code sau, bn s thy true output window

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

Nu bn dng ln = vi == th s b li runtime ch Flash s khng c th tm c
li ny cho bn.

Bn c th dng == so snh 2 chui mu t:

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

Khi bn test on code trn th bn s c c "true" v "false" output window, v
ln so snh th nht th bng nhau, nhng ln th hai th khng v ch H v h khc
nhau.

Nu bn mun th coi 2 gi tr c khc nhau khng th dng ky hiu !=

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

Hm trace u tin s cho ra "true" v 7 khc 9, v ci th hai th s cho ra "false"

Nu bn mun th gi tr coi ln hn hay nh hn th dng > v <

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

on code trn s cho ra "true", "true" v "false" trong output window v "a" qu tht
nh hn 8 v ln 6, nhng khng nh hn 1.

Nu bn mun th gi tr coi ln hn hay bng nhau hoc l nh hn hay bng nhau
th dng k hiu >= v <=

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

on code trn s cho ra 3 kt qu "true" c.

Bn c th thay i gi tr ca variable vi cc php tnh n gin nh cng (+), tr (-
), nhn (*), chia (/). V d mun thm 4 vo gi tr ca a th vit a = a + 4. AS cng c
cch vit tt nh Java, C++ cho v d ny, a += 4 Nu bn mun thm 1 vo a th bn
c th vit nh 2 cch trn a = a +1 v a += 1 v cn cch th 3 a++ . Du ++ ch lm
tng thm 1 cho gi tr thi. C 2 cch dng ++, 1 l sau variable nh cch trn,
v 1 cch th trc variable. By gi th on code sau:

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

output window bn s thy 7 ri mi ti 8. dng th 2, hm trace s cho ra gi tr
ca a trc ri mi tng gi tr ca a ln thm 1. By gi xem v d khc:

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

output window bn s thy 8 v 8. dng th 2 ca v d ny, hm trace s tng
gi tr ca a trc ri mi cho ra gi tr ca a. Tng t nh ++, AS cng c cch vit
tt cho gim gi tr ca variable l du -, -=, =- v --. Php tnh nhn v chia th ch c
*, *=, /, /= thi.

iu kin

Trong AS v cc ngn ng khc, if ... else chnh l cc t kho ca iu kin. Ting
vit c ngha l "nu ... nu khng". T kho if dng kt qu ca s so snh no
i ti quyt nh kch hot mt on code. on code sau s so snh gi tr ca
variable a vi 7, nu ng th Flash s chi frame 10

ActionScript
if (a == 7) {
gotoAndPlay(10);
}

T kho if lun bt u cho 1 iu kin v tip theo s l s so snh. Lun t code so
snh gia ngoc n (). Tt c cc code c kch hot nu iu kin c tho
mn s trong u ngoc mc {}.

T kho else b sung cho if trong trng hp bn mun thc hin mt on code nu
iu kin ca if khng c tha mn. V d:

ActionScript
if (a == 7) {
gotoAndPlay(10);
} else {
gotoAndPlay(15);
}

Nu trng hp cn tha mn nhiu iu kin th c th dng c php if .... else if ...
else. Bn c th c bao nhiu ci else if cng c.

Ny gi ta chi ni ti iu kin da trn 1 s so snh, nhng AS cng cho php dng
so snh a hp (compound comparision). Trong iu kin ca Flash ta c th dng
nhiu so snh i ti mt kt qu chnh xc hn. V d nu nh a ln 10 v a phi
nh hn 15 th ra lnh cho Flash chi frame 10.

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


T kho and (cn c th c vit l &&) yu cu phi tho mn iu kin ca 2
php so snh. Bn cng c th dng t kho or (cn c th c vit l ||)nu nh ch
cn tho mn 1 iu kin trong 2 php so snh thi.

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


Vng lp

C php ca vng lp (loop) th hi rc ri hn so vi c php ca iu kin if. nhng
n tng t nh C, C++, Java. Gm c 3 loi vng lp chnh l for loop, while loop
v do-while loop

for loop c coi l vng lp chnh vi t kho for v c php ca n nhn nh sau:

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

Nu bn cho chy on code trn th bn s c c t s 0 ti 9 output window.
for loop tng gi tr ca variable i trong sut qu trnh thc hin loop. iu kin ca
for loop c 3 phn chnh, v c cch bit bi du chm phy ( . u tin l iu
kin bt u vi vic to local variable cho for loop var i=0. phn ny for loop ch
thc hin c 1 ln duy nht lc bt u. Phn th hai l iu kin chnh ca for loop
i<10, s c thc hin mi vng lp. Nu iu kin ny tho mn th mi tip tc
vng lp. V phn cui cng l php tnh cho s tip ni ca for loop mi vng lp,
y l i++ nn gi tr ca i s c tng sau mi vng lp trc khi vng lp mi
bt u. 3 phn ny u c b vo trong ngoc n (). Cn nhng code thc hin
trong mi vng lp th trong ngoc mc {}. By gi chng ta gi lm computer v
chy ci for loop ny.
1. To local variable v n nh gi tr cho n bng 0
2. Kim tra gi tr ca i c nh hn 10 khng, nu nh hn 10 th vng lp thc
hin cc code trong {}, cn khng th ti bc th 5
3. hm trace vit gi tr ca i output window
4. cng 1 vo gi tr ca i, v tr v bc th 1
5. ra khi for loop

Ti bc th 5 th gi tr ca i s bng 10

while loop vi t kho while c c php nhn tng t nh sau:

ActionScript
while (a > 0) {
// code thc hin trong while loop
}


n gin hn for loop, while loop tng t nh iu kin if n gin, thc hin cc
code trong vng lp nu iu kin ca while loop c tho mn, v vy bn d dng
ri vo trng hp vng lp v hn, v dn n tnh trng treo my. Trong on code
trn, bn phi lm th no cho co 1 lc a s nh hay bng 0 cho vng lp ngng
li.

Ging nh while loop, do-while loop c c php nhn nh sau:

ActionScript
do {
// code thc hin trong do-while loop
} while (a > 0);

Ch khc vi while loop l do-while loop thc hin code trong vng lp trc ri mi
kim tra iu kin. (while loop kim tra iu kin ri mi chy code trong vng lp)

Mun ph ra khi qu trnh t hnh ca 3 loi loop trn th dng lnh break v
continue. Lnh break s ph ra khi loop hon ton trong khi lnh continue th ch
ph ra khi vng lp hin ti v bt u vng lp mi. To ra mt v d c th rt
phc tp, nn chng ta tm khoan bn ti 2 lnh ny cho ti cc bi sau.

Hm

Cho ti by gi cc script ca chng ta u c vit vo frame u tin ca moive,
cch ny ch tt cho nhng chng trnh n gin, nhng nu m chng trnh tr
nn phc tp th y khng phi l cch. Hm (function) s cho php chng ta cu to
v qun l code d dng hn trong cc chng trnh phc tp. Di y l mt
function n gin:

ActionScript
function myFunction(num) {
var newNum = num + 3;
return newNum;
}

Fuction bt u bng t kho function, tn ca function c th l bt c ch g nh
cch bn t tn cho variable, nhng lu cch t tn cho fuction lm sao ngi
ta c tn c th bit c chc nng ca function. Theo sau tn ca function s l
thng s (parameter, cho ngn mnh s gi thng s l param trong cc bi vit ny)
c trong ngoc n (). Function c th co 1
hay nhiu param hay khng cn param cng c. Param chng qua ch la variable
c dng trong function, nhng variable ny c truyn t ngoi vo khi function
c gi. on code c function thc hin s nm gia ngoc mc {}. By gi
chng ta phn tch on code trn. Khi function myFunction c gi, th param num
c truyn vo, sau function myFunction to ra mt local variable tn l
newNum, v n nh gi tr ca newNum bng gi tr ca param num cng vi 3. Sau
myFunction dng lnh return n nh gi tr ca newNum l kt qu ca
myFunction. Lnh return l lnh c bit ch c dng trong function m thi.
Lnh ny s kt thc function.

s dng function ny, dng n nh mt lnh hay hm ca AS, ging nh l trace()
vy . y l v d: var a= myFunction(7);. Trc tin to mt local var ri sau n
nh gi tr ca local var ny bng kt qu ca myFunction vi param l 7, v cui
cng thi local var ny s bng 10.

Mt trong u im ca function l bn c th ti s dng. Di y l hng code
dng chung 1 fuction v cho 3 kt qu khc nhau

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

Khi chy on code ny th output windown s l 10, 16 v 5. V c th ti s dng
nn chng ta ch cn thay i code trong myFunction th tt c cc kt qa c c
t gi function ny cng thay i theo lun.

Dot Syntax

Mt iu bn s thy rt nhiu trong qu trnh hc AS l dot syntax (hng bit dch
sao by gi) Dot syntax l phng php c dng trong lp trnh theo hng i
tng (oob: object oriented programming).

y l mt v d ca dot syntax. Nu bn mun ly cn bnh phng ca mt s, v
trong Flash c sn function lm chuyn ny ri, v hm ny thuc v i tng
ton, tn l Math. Vy mun gi function ny th trc tin bn phi gi tn i tng
m fucntion ny trc thuc, l Math, theo sau l du chm (dot), v ri ti tn
ca function l sqrt. Cch vit nh sau:

ActionScript
var a = Math.sqrt(4);

Mt cch dng dot syntax khc l truy cp c tnh hay variable ca mt i
tng, nh l movie clip.

ActionScript
var a = myClip._x;
var a = myClip.myVariable;


Chng ta s cp n i tng Math v MovieClip trong cc bi ti, cn by gi
th quan trng l bn nm c khi nim v dot syntax.

Ch gii

Mt trong c tnh cn c ca lp trnh vin l vit code lm sao cho d c v d
hiu. Nhng nhiu khi d khi vit c c gng cch my th nhng on code vn
kh hiu cho ngi xem, v vy mi cn nhng li ch gii. Mun ch gii trong AS
th ch cn dng k hiu// trc cu ch gii . Nu ch gii nhiu hn vi dng th
c th dng kiu sau/* ..... ch gii ....*/.

ActionScript
/*
ch gii:
cng 2 cho a
cng 2 cho b
*/
a += 2; // add 2 a
// add 2 to b
b += 2;


Debugging

Thng th thi gian dit b tn gn 1/3 thi gian pht trin chng trnh. Nu bn
nm vng c "ngh thut" dit b th bn s rt ngn c rt nhiu thi gian. C 3
cch dit b hu hin l: phn tch, vit message ra output window v dng AS
debugger.

Vi cc loi b n gin th phn tch cc on code s gip bn bt trng con b cn
dit. Dng output window theo di cc i tng, vng lp, iu kin, v nh vo
bn c th bit c ch no trong code c vn , cui cng l dng AS debugger
c sn trong Flash. Debugger window cho php bn c th coi ht tt c moi thnh
phn trong movie ca bn, cho php bn dng AS bt ch khi no v ch no bn
mun. Tham kho thm phn tr gip ca Flash bit cch dng debugger.

Gi th 05: iu khin lung movie, Control the flow of the movie
S dng AScript l cch iu khin movie n gn nht, nhung li hiu qu nht.
Chng ny bn s hc cch :
lm sao dng Movie trn frame
Sao nhy t frame ny n frame kia
to nt cho php iu khin movie
to mt slide show n gin
to mt biu din y ..
Dng movie
y l cu lnh stop:

ActionScript
stop();


Khi bn dng cu lnh ny , movie ch tm dng frame m bn t cu lnh. Cc
animation bn trong movieClip v cc file ha vn tip tc chy trn frame .
Nhng animation ca time line s b dng.

cho animation ca timeline tip tc chy, ta s dng mt lnh n gin l lnh
play.. ta s bn n n sau.

V d
Ti frame 1, bn hy th mt text box v vit vo Ch A
Ti frame 2, bn hy th mt text box v vit vo Ch B
Ti frame 3, bn hy th mt text box v vit vo Ch C

By gi bn hay t cu lnh stop(); vo Frame 2, bn se thy ch A xut hin rt
nhanh ri n ch B, nhng ch C s ko thy xut hin,, n gin v cu lnh stop()
dng animation ca timeline ti Frame 2.

Nhy t frame ny n frame kia

Mt cu lnh c bn ca AS l cu lnh gotoAndPlay. Cu lnh ny gip bn c th
nhy t frame ny n frame m bn mun. Bn c th s dng s th t ca frame
hay l tn ca frame


ActionScript
gotoAndPlay(7);
gotoAndPlay(20);
gotoAndPlay("my frame label")


bn c th s dng nhiu movies , hay cn gi l cnh(scene) . Nu Cu lnh
gotoAndPlay ch c mt tham s, th tham s l frame. Nhng nu c 2 tham s,th
tham s u tin l tn ca scene, cn tham ss th 2 l s th t ca frame hay tn
frame.


ActionScript
gotoAndPlay("My Scene","My Frame");


Khi bn dng gotoandPlay,movies s nhy n frame m bn gi , v tip tc chy,
nhng nu bn mun n nhy n frame v dng li, bn co th s dng gotoAndStop
. Cu lnh ny dng y ht nh gotoAndPlay, vi la chn 1 tham s hay 2 tham s.

Ngoi ra c thm 2 cu lnh cng hat ng ging gotoAndStop , l nextFrame
and prevFrame

hiu r hn v cc cu lnh ny, ta s i tip phn sau...

To nt (button)

Nt l mt trong 3 biu tng (symbol) chnh trong Flash, 2 ci kia l movie cilps v
hnh

To mt button

C nhiu cch to nt. Mt trong nhng cch l chn Insert, New Symbol t
Menu. Mt hp thoi s hin ln v hi bn t tn v la chn biu tng ca bn l
loi Movie clip, button, hay ha. Bn hy chn Button.

By gi trong ca s chnh ca Flash s thay i, timeline ca button s thay th
timeline ca movie chnh. C 4 frames trong timeLine ca button. Chng c tn l
Up, Over, Down, HIt. CHng th hin 3 trng thi ca button, v vng hat ng ca
button.

Nu bn t mt ha, chng hn l mt vng trn, trong frame u tin(UP) v ko
c g trong 3 frame sau, trng thi Over v Down ca button s ging nh trng thi
ca Up. Vng hot ng ca button cng tng t nh vy.

Mt khc , bn c th to cc hiu ng khc nhau cho button ca bn. V d nu bn
i mu ca vng trn l mu xanh Frame OVER,c ngha l khi bn a chut qua
button, button s chuyn sang mu xanh.

Khi bn to xong 1 button, bn tr lai movie timeline chnh. V button ca bn sn
sng trong th vin ca FLash. Bn ch vic bm F11, tm button ca bn v ko th
n vo ni no bn cn trn ca s thit k.

To script cho button

t script cho button, u tin hy chm mt button. Sau vo ca s Action
bng cch bm chut phi ln button v chn Action t menu xut hin.

Hy Chc chn rng ca s Action c t ch Expert. Bn c th kim tra
bng mt popup menu gc trn cng bn phi ca ca s.

y l mt on m thng thng cho button. Bn c th t n trong ca s m v
sau kim tra movie xem n hat ng th no.

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

on : l mt keyword, c gi ra x l mt s kin
Release : L mt s kin, khi ngi s dng click vo button v nh chut ra. on
m trace s c thc thi.

Ngoi ra Release c th thay th bng s kin PRESS, s kin ny ch khc Release
ch khi ngi s dng bm vo button, on m trace s c thc thi m ko cn phi
th chut ra.

Trace : l in ra mn hnh dng ch YOU CLICKED THE BUTTON.

Thc Hnh: To mt Slide Show n gin...

C l ko phi din t nhiu v Slide Show, cc bn hy tng tng ging Power
Point.. Khi chng ta bm chut, cc slide s chuyn sang slide khc.

1. M Flash, chn New

2. Trong Layer 1, t Frame 1 n Frame 4, bn hy t cc biu tng hay hnh nh,
text khc nhau phn bit c cc frame

3. Sau bn to mt layer mi, hy t mt button ln layer ny.Tip theo bn chn
Frame 4 ca layer 2, v bm F6. iu ny m bo cho button ca bn s xut hin
trong tt c cc Frame ca Layer 1.

By gi copy on m sau vo button ca bn, ch nh l copy vo action ca
button, ch ko phi vo bt k frame no

ActionScript
on (release) {
nextFrame();
}

Cui cng chn Frame 1 Layer 1 action v chn on code sau

ActionScript
stop();

Hy chy th slide show ca bn = cch bm Ctrl Enter.

5) Xy dng mt presentation n gin:
Presentation ny s dng nguyn tc ging ht nh v d Slide show trn, cc bn
hay down load file FLA xem .. easy

Gi th 06: iu khin movie clip, Controlling Movie Clips
6th Hour iu khin movie clip
Bn s hc
1- ra lnh cho movie clip
2-To playback cho animation
3-Tm hiu ch(target) ca movie clip
4-Tp vit code cho movie clip
5-To movie clip c th chy li li.


1) Ra lnh cho movie clip :

Mt movie chnh c th rt n gin. N ch cn 1 frame v mt movie clip. Nhng
bn thn movie clip li c th l mt animation di. Vic ny d dng thc hin m ko
cn Actioncript.

iu khin c movie, bn phi t tn cho movie clip. Ch rng mt movies
clip c 2 tn, mt tn s dng cho timeline . Mt tn s dng cho actioncript. 2 tn
ny c th t trng tn nhau hoc khc tn nhau.

Lm sao t tn cho movie clip :
Chn insert -----> New Symbol (hoc bm Ctrl F8), t tn cho movies clip
(nh la chn option movies clip, ch ko phi l button hay graphic)
Tn ny c s dng cho timeline. vd: gear animation

Th movie gear animation vo ca s thit k.. PHa di ca s properties, ban s
thy box instance name.. t tn cho movie
tn ny c s dng cho Action script , vd : gears

v nh vy, khi bn lp trnh , tn s dng l gears , ch ko phi gear animation.
bn c th s dng du chm a ra cc lnh cho movie ca bn. v d

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

Nh rng movie clip lun c level. Nu on m c t trn chnh movieclip, bn
ko cn s dng tn movies, ch cn gotoAndStop();. Nu bn t c tn movie vo,
Flash s tm movie ca bn t timeline chnh.. Tc l s phi qua 2 level. ---> chm
hn cht.

2)Animation Playback Controller
Hy down load source code t trn phn download v xem. V c bn, chng ta lm
cc vic sau:

- To mt Movie ,t tn l gear animation
- t instance name l gear(hng dn trn)
- Frame u tin ca time line chnh, chn code

ActionScript
gears.stop();

-To cc button Advance, Previous, Play, Stop, and Rewind
-Code cho cc button ln lt l
Advance
ActionScript
on (release) {
gears.nextFrame();
}

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

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

Stop
ActionScript

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

Rewind

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


3) Target mt movie

Level c bn u tin ca Flash l time line chnh(Level 0). Nu bn mun ra lnh
cho time line ny, bn dng code sau

_root.gotoAndStop();
thm ch nu bn t code time line chnh, bn ko cn _root. Ch cn
gotoAndStop();

Gi s nu bn c mt movie trn time line, tc l bn c mt level su hn(level 1).
Nu bn t time line chnh, mun goi movie gears , bn phi dng cu lnh

gears.gotoAndStop(7);
_root["gears"].gotoAndStop(7);
this["gears"].gotoAndStop(7);

C 3 cch trn u ging nhau.. Tuy nhin this c ngha l level hin hnh. V d trn,
level hin hnh ca this l level 0. Nhng nu code t trong movie, level hin hnh
s l level 1. Bn phi ch .

Gi s bn c mt movie khc bn trong movie, tc l bn c level 2. Nu bn mun
t level 1 gi n level 2, bn phi dng _parent.
Parent dng ging nh root, nhng khc ch, n c gi t level trn. Cn root
c gi t level 0 (tc l level gc).


Thun li t vic s dng root, this l bn c th gn bin cho movie clips

ActionScript
var whichClipToUse = "gears";
this[whichClipToUse].stop();


Thun li ca vc s dng this nhiu hn root ch , ko phi lc no mi th cng
xy ra time line chnh, i khi ta ch mun n xy ra mt level nht nh. Bi vy
this l cch tt nht goi level ca mt movie. Tuy nhin trong nhng trng hp
n gin, hay nht l c t tn cho movies.

4) M cho movie clip
Chng ta bn v button trn, vy v c bn movie clip script cng ging button,
l


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


onClipEvent : key word gi s kin (ging on ca button)
load : s kin ny xy ra khi movie clip xut hin ln u tin trn mn hnh . N ch
xy ra mt ln.

Nh rng ngay c khi time line chnh b ng, movie clip nm trn time line vn tip
tc chy. S kin enterFrame xy ra lin tc bn trong movie clip mi khi n mt
frame mi. S kin ny s thc thi on m mt cch lin tc cho n khi n b kt
thc.

ActionScript

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


by gi hy copy 2 on code trn vo ca s action ca timeline chnh v run .. bn
s thy

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

dng ch s tip tc hin ra cho n khi bn tt movie.

Gi th 07: dch chuyn v thay i movie, Moving and Changing Movie Clips
Mt movie clip (MC) bao gi cng c cc thuc tnh, cho php bn xc nh v tr,
phng to thu nh, quay, thm ch lm n bin mt.
Chng ny cc bn s bit cch:
-thay i v tr ca mc
-xc inh v tr chut
-lm sao quay mt mc
-lm sao phng to mc
-lm sao movie invisible

1) V tr ca MC:
Mi th trong Flash u c v tr. V tr ny c o bng PIXEL. Gc trn cng bn
tri ca mn hnh l v tr (0,0) .N l v tr giao ca hng ngang v ct dc.

Nu bn s dng mt movie mc nh, th gc di bn phi s l 550,400. C nghia
l 550 pixel t bn tri sang v 400 pixel t bn trn xung.

nhn hnh sau r hn.



2) V tr ca Mouse:

Cng nh movie, mouse cng c th xc inh c ta .. CH thut ng mouse
y l ni n con tr (cursor), ch khng phi con chut bn ang cm trn tay.. ^^
C hai thuc tnh c bn ca con tr , l _xmouse v _ymouse.

Vy _xmouse v _ymouse l thuc tnh ca chnh i tng m chng c gn. Nu
bn s dng trn time line chnh, th chng l thuc tnh ca time line. Nu bn s
dng chng trn movie clip, th n l thuc tnh ca movie clip. Nu xmous y mouse
l thuc tnh ca time line chnh, n s mc nh l gc tri trn cng. Nu xmouse
ymouse l thucc tnh ca 1 movie clip, n s mc nh trung tm ca MC.

Hu ht cc trng hp thuc tnh lin quan n movie chnh, bn nn dng cch
_root._xmouse v _root._ymouse

y l mt on code v du
CODE
onClipEvent (enterFrame) {
trace(_root._xmouse);
trace(_root._ymouse);
trace("");
}


Khi bn chy movie, bn s thy cc cp s c in ra, chnh l ta x,y mouse
.Hy dch chuyn mouse ln gc tri trn, bn s thy v tr mouse l 0.0. hoc
gc phi di, ta l 550 400.

Ch : khi bn a chut ra ngoi Flash window, ta chut xmouse y mouse
khng thay i. Nu bn di chuyn chut tht nhanh t trung tm ca ca s ra ngoi
ca s, cc gi tr c vn cho n khi bn quay tr li ca s. V vy, bn phi
lun ln k hoc cn thn trc khi dng xmouse, y mouse

3) Lm movie quay

Mt thuc tnh khac l thuc tnh _rotation

Thuc tnh rotation chp nhn gi tr l gc . Mt vng trn chia ra 360 , min
gi tr c thuc tnh rotation l -180 v 180. Bn c th s dng gi tr integer hoc
floating point.

Gi tr ca _rotation lun lun trong vng -180 v 180, v d 179, hoc -179. Nhng
nu bn t n l 181, n s hiu thnh gc -179.

vy quay mt movie, n gin l t gi tr cho n, bn cng c th s dng cc
biu ton ++, += thay i gi tr . Hy xem v d sau
CODE

myClip._rotation = 90;
myClip._rotation++;
_root["myClip"]._rotation = 45;
this._rotation += 0.5;


4) Co gin n hi mt MC:

Bn c th lm co gin, thay i chiu di chiu rng ca movie clip
Scale thuc tnh

THuc tnh lm vic ny l _xscale cho chiu ngang v _yscale cho chiu dc.

Cc gi tr c gn cho x,y scale l phn trm. C ngha gi tr 100 l 100 phn trm
, y l thuc tnh mc inh cho mt movie clip gc. Bn c th s dng cc s nh
hn nh 50 lm movie co li. Hoc c th s dng s to hn, 200 gin movie ra.
Thm c th dng cc gi tr m lt movie.

v d 07mousesclae.fla cha mt on m m chgn ta s gp rt nhiu sau ny. N
kim tra ta ca mouse,. Sau xc inh t mouse n trung tm movie xa bao
nhiu. Ri n s dng khong cch ,c chiu cao chiu rng tnh phn trm t l
cho movie clip.
CODE
onClipEvent (load) {
// get the original width and height of the mc
origWidth = this._width;
origHeight = this._height;
}
onClipEvent (enterFrame) {
// get the distance from the center of the mc to the mouse
dx = _root._xmouse-this._x;
dy = _root._ymouse-this._y;

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

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



Ch y ta s dng 2 thuc tnh mi, _width v _height tr v chiu cao v chiu
rng ca movie clip bng Pixel. CHng c lu gi trong onClipEvent (load) v
khi ta cn ly li gi tr gc ca movie.

Thuc tnh _width, _height
S khc nhau gia scale v width,height scale s dng gi tr phn trm. Cn width
height s dng pixel . Movie c th c gi tr sau: width 75, height 45, nhng scale
cho c xscale and yscale l 100 phn trm.

Di y l mt v d s dng width height thy th cho xscale, yscale.

CODE
onClipEvent (enterFrame) {
// get the distance from the center of the mc to the mouse
dx = _root._xmouse-this._x;
dy = _root._ymouse-this._y;

// set the scale of the mc
this._width = dx*2;
this._height = dy*2;
}



bn c th thy code ny ngn gn hn trn. bi v n ko s dng s kin
onClipEvent(load) bi gi tr chiu di chiu cao ca movie gc ko cn lu tr.y l
mt v d cho thy s dng width v height tin hn dng xscale ,y scale.

5) Visibility

Mt thuc tnh khc ca MC l thuc tnh _visible , gi tr ca thuc tnh ny l gi tr
boolean true , false.

CODE
myClip._visible = false;

hy xem v d 07visible.fla r hn.

Gi s ta khng mun movie bin mt hn, m ch b m i, ta s dng thuc tnh
_alpha . Thuc tnh c gi tr t 0 n 100
CODE
myClip._alpha = 50;
Thuc tnh alpha l knh mu th 4, tn l alpha channel . 3 knh u tin l red
,green, blue to ra 7 mu cu vng. Khi bn nghe n ha 32 bit, c ngha l
n 4 knh mu.. Cn 24 bit c ngha ch c 3 knh u tin.

Nu gi tr ca _visible l 0 th movie l trong sut hon tan v c th nhn thy tt
c mi th pha sau movie.

Nhn hnh sau xem cng 1 movieclip nhng vi 3 gi tr alpha khc nhau, 10, 50
v 100 (t tri sang)



Gi th 08: chn, ko th movie clip, Moving and Changing Movie Clips
1. Selection

Bn bit cch hc sao to mt button v cho php ngi s dng click vo lm
s kin hot ng. Tuy nhin y ta s hc cch click vo chn la mt i
tng trn mn hnh.
To mt chn la, c ngha l user click vo item , nhng khng c g xy ra. Nh
vy, ngi dng c th la chn v thay i la chn.
Chng ta s s dng la chn nh bc u tin hc ko th movie.

Button bn trong mt Movie method.

Mt movie khng th phn ng vi mouse click. Khng th s dng cc s kin nh
on (release) hay (Press). v vy ta phi tm cch nh la n. l s dng mt
button bn trong movie. Button c th x l c mouse click, v min l n c
ln bao trm mt movie.
Hy xem v d 08buttoninmc.fla . Ta ch nhn thy mt movie clip trn mn
hnh.nhng thc cht bn trong ca movie clip l mt button.
to ra kh nng select, ta phi to nhiu frame.Frame u tin cha mt button tn
l offbutton. Button ny c m l


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

bng this, button s gi n movie clip m n nm trn y. Frame th 2 cha nt
tng t nhu frame 1 , tn l onbutton, nt ny c mu hi sng hn ngi dng
nhn ra khi n c chn.

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

cui cng t vo frame 1
CODE
stop();

By gi hy chy xem.


Phng thc hitTest
C cch khc lm movie c th s l mouse click m khng cn button, l s
dng s kin onClipEvent(mouseDown) hoc l onClipEvent(mouseUp)v d
CODE
onClipEvent (mouseUp) {
this.gotoAndStop(2);
}
Hy chy v d 08twomcs1.fla xem.Bn s thy ti sao onClipEvent(mouseUp)
khc vi on (Release) . Nu bn click vo movie, c hai u phn ng.Bi v tt c
movie clip nhn s kin mouse up c gi n cho chng.

Quyt inh movie no c click.
C mt cch click vo movie mnh mun. l s dng v tr chut xc nh.
Sa on m thnh nh sau

CODE
onClipEvent (mouseUp) {
if (this.hitTest(_root._xmouse, _root._ymouse)) {
this.gotoAndStop(2);
}
}
vy bng cch rng buc movie clip vi mouse location , ta c th click movie ta
mun.

VIt m cho selection:
Chng ta phi cho php User click ln movies nhiu ln v thay i trng thi ca MC
t bt sang tt, hay tt sang bt.
on m sau c th xc nh movie ang trng thi no v gi n n frame khc.
VIc ny thc hin bng thuc tnh _currentFrame . Thuc tnh ny s c gi tr 1
kh n frame th nht, gi tr 2 khi n frame th 2.

CODE
onClipEvent (mouseUp) {
if (this.hitTest(_root._xmouse, _root._ymouse)) {
if (this._currentFrame == 1) {
this.gotoAndStop(2);
} else {
this.gotoAndStop(1);
}
}
}
By gi bn thy cc cch to s chn la movie. Cch th nht tin li nu bn
mun dng c cc trang thi khc nh Over,up , down.. Cch th hai th khng cn
nhiu biu tng trong th vin.

Enjoy..

2) Ko mt movie clip
By gi ta s hc ko mt movie.
C 2 cch ko movie, cch th nht l s dng lnh . Cch ny rt d s dng
nhng n khng cho bn nhiu la chn trong vic sa i v gim st movie.

Cch Drag c bn:
2 cu lnh drag co bn l :startDrag v stopDrag. bn dng startDrag khi bn mun
movie ca bn i theo chut, cn stopDrag khi bn mun movie ca bn khng theo
chut na. y l on code c bn :

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

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




S kin onClipEvent nhn tng t nh ta lm trn. Chng s dng hitTest
nhn bit movie no ang c click. V sau cu lnh startDrag v stopDrag c
s dng. Khi chut c bm xung, cu lnh startDrag thc thi. V ngc li, khi
chut th ra, stopDrag thc thi.


Hy xem movie, bn s thy vi cc cu lnh drag, bn c th ko cc movie mt
cch c lp. Nhng ch rng bn khng th ko 2 movie cng mt lc. Ch mt
movie c ko ti mt thi im. V vy bn nn cn cch drag phc tp v linh
ng hn lm ng dng hay game.

Note: startDrag c 5 thm s. Tham s th nht l gi tr True(hoc False) quyt
nh vic trung tm ca movie clip c kha vi v tr chut hay khng. Cc tham s
cn li l left, top, right, bottom. Nu bn t chng, movie ca bn ch c th c
ko theo cc rng buc .


Ko nng cao

By gi ta hc cch ko movie m ko dng cu lnh startDrag v stopDrag. Vy lm
th no??

Bn cn c 4 phn m sau trong movie ca bn:
Th nht l s kin onClipEvent(load), s kin ny s t cho bin global tn l
dragging gi tr false. Khi bin ny true, tc l bo hiu rng movie c th c ko.

Th hai, ngi dng click vo mt movie. C ngha l dragging = true .
Th ba, qu trnh ko s tip tc din ra bi s kin onClipEvent(enterFrame). S
kin ny ch n gin gn _x v _y (thuc tnh ca movie clip) cho _root._xmouse v
_root._ymouse(thuc tnh ca con tr ).
Th 4, nu ngi dng th chut , th bin dragging c gn false.
Sau y l on code y
CODE
onClipEvent (load) {
// start out not dragging
dragging = false;
}

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

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

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




Trong v d 08complexdrag.fla cha 2 MC. Kim tra movie, nhng ch s dng MC
bn tri. y l MC lm theo on code trn. Ch xem trung tm movie c kha
vi v tr chut nh th no. N lm movie nhy ngay lp tc nu bn click vo n.

Thng thng, khi bn mun ko MC ln mn hnh, bn khng mun n nhy ti
lm khp v tr chut vi trung tm ca MC. Hy ko file xung quanh mn
hnh.Bn s thy khi bn click chut vo bt k im no trn movie, movie s lp tc
lm khp v tr click chut vi trung tm movie. iu ny cng tng t vi cu lnh
startDrag .

trnh iu ny, chng ta ch cn thm mt on code nh. Khi ngi s dng bm
chut, chng ta s ly offset, y l khong cch t chut cho n trung tm ca
movie. Sau , thay th bng vic gn v tr chut n trung tm movie, ta se thm
vo offset cho MC lun lun xut hin offset bi cng mt gi tr khi ngi dng
ko.

Tng tng , v d ngi dng click vo mt im cch trung tm movie 5 pixel.
Sau ta lun mun khong cch 5 pixel c duy tr. iu ny lm cho ngi
dng c th click vo bt c im no ko movie.
y l code cho movie 2(bn phi)

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

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

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

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

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



Hy xem movie thy khc bit gia 2 on code.

3) Ko v th

By gi ta bit ko movie, vy ta s th n u.?
Vn l bn mun theo di hnh ng ca ngi s dng v xc inh ngi s dung
t movie u.
Basic Drop Zone

Chc nng hitTest c th c s dng xc nh khi MC b ln nhau. Trong
on m sau, chgn ta s dng lnh startDrag on m ko th n gin i, nh
ta c th tp trung vo cc chc nng mi.

Trong on m sau, chc nng hitTest c s dng so snh MC c ko vi mt
movie khc tn l dragZone trn mt lvl(root level)

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

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



Ch hitTest khng c s dng nh cc bi trc, chng ta thay th v tr _x v _y
bi mt movie khc.


Loi hitTest ny so snh v tr v vng c bao ph ca 2 movie clip. Trong trng
hp ny, n c so snh vi _parent.dropZone. Nu c 2 movie ln nhau, hitTest
tr gi tr True. xc inh xem MC no ang tn ti, hnh ch nht ca c 2 movie
u c s dng. iu ny c ngha l khi bn s dng 2 hnh trng, nh trong v
d, bn thn chnh cc vng trn khng c chm vo min l cc hnh ch nht
ca 2 movie c dng.

Hy xem hnh minh ha. Tt c cc movie Dragme u nm trn DropZone.

C 2 cch s dng hitTest. Th nht l s dng ta x,y. Chng ta c th s dng
movie clip nh v tr x,y, ri sau s dng dropzone nh mt movie clip th nht.

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



Vi on code ny, thay th v d trn, movie clip s nm bn trong hnh ch nht
ca vng dropzone.
Chng ta c th thm mt bc na vi hittest. Bng cch thm tham s th 3 cho
hitTest, chng ta c th dng hitTest xem hnh dng chnh xc ca movie clip v
xc inh v tr x,y. Bin th 3 ny cn gn true nu bn mun hnh vi ny. Nu n
false, n se hnh ng ging nh chc nng hitTest bnh thng. y l on code

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


By gi movie ko th ca ta hat ng tt hn. Nu bn s dng v d 08drop.fla,
movie bn phi s s dng on m gc, v n nm trn hnh ch nht ca
dropzone. Cc movie khc s dng on code phc tp hitTest v chng c trung tm
nm bn trong hnh dng gc ca dropzone.

Gi th 09: Ly thng tin t ngi dng, Getting input from the user
Cho ti by gi, qua 8 gi lm quen vi AS, tt c cc tc ng ca bn ln trn flash
u c lm qua chut. Nhng ngoi chut, bn c th dng bn phm np thng
tin vo Flash.

Lm sao pht hin khi ngi dng bm phm

C 3 cch pht hin khi mt phm tn bn phm b nhn. 1 l dng nt, 2 l dng
i tng Key, v 3 l dng "listener" (ch c Flash MX v MX 2004)

1. Pht hin qua nt:

Bn c th dng nt pht hin khi ngi dng s dng bn phm. Bn chi cn dng
lnh x l s kin on cho on code ca nt . V d on code sau s kch hot khi
m ngi dng nhn phm "a".

ActionScript
on (keyPress "a"){
trace ("Key 'a' pressed");
}

Trong movie mu 09keybutton.fla c mt nt n gin nm trn mn hnh v vi v
d trong . Nu bn cho chy th movie v nhn phm "a" th Output window s c
vit ra dng ch "Key 'a' pressed.". X l d kin on(keyPress) nh l phi phn
bit dng ch (case-sensitive) nn nu bn ch code cho n nhn phm "a" th n s
khng th nhn c phm "A". May m chng ta c th dng bao nhiu b x l d
kin cng c.

Nu bn mun x l cc phm khc, nh cc phm mi tn, enter, thanh di (space
bar) ... th bn phi dng cc code dnh ring cho chng. V d bn mun x l phm
mi tn tri (left arrow key) th dng on code sau:

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

V sau y l cc code dnh cho cc phm c bit:
<Right>
<Left>
<End>
<PageUp>
<Insert>
<PageDown>
<Down>
<Up>
<Delete>
<Tab>
<Backspace>
<Escape>
<Home>
<Enter>
<Space>
Bn c th hp nhiu d kin li chung vi nhau. V d bn c mt nt v nt c
phm tt l "b". Vy khi bn nhn nt hay l nhn phm "b" th code ca nt s
c kch hot.

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

Cc v d trn u c trong movie mu 09keybutton.fla

2. Pht hin qua i tng phm (key object)

Mc d nt rt hu ch trong vic pht hin khi ngi dng nhn phm, nhng nt li
khng th pht hin c trng hp khi ngi dng nhn phm v khng nht tay.
V d nu bn lm mt game bng Flash, v trong ngi chi cho th lm cho cc
nhn vt trong game di chuyn lin tc nu nh h nhn phm mi tn v khng nht
tay ln.

Cho nhng trng hp nh vy, bn phi dng i tng Key. i tng Key l tp
hp ca mt s hm (function) v hng s (constant) c xy dng sn trong Flash.
Bn c th dng cc hm v hng s ny bit c cc phm ang b nhn hay
khng. V d, nu mun kim tra coi phm mi tn tri c b ang nhn hay khng th
dng on code sau:

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

Hm Key.isDown s cho ra kt qu ng hay sai ph thuc vo thng s c phi l
phm ang b nhn hay khng. Hng s Key.LEFT tng trng cho phm mi tn
tri. vy khi mi tn tri b nhn th output window s cho ra hng ch "The left arrow
is down". Di y l cc hng s tng t nh Key.LEFT cp trn
Key.BACKSPACE
Key.ENTER
Key.PGDN
Key.CAPSLOCK
Key.ESCAPE
Key.RIGHT
Key.CONTROL
Key.HOME K
ey.SHIFT
Key.DELETEKEY
Key.INSERT
Key.SPACE
Key.DOWN
Key.LEFT
Key.TAB
Key.END
Key.PGUP
Key.UP
Nu bn mun kim tra xem nu nhng phm bnh thng ang b nhn th bn phi
dng Key.getCode ly m s ca phm dng trong hm Key.isDown. y l
code mu khi bn mun kim tra phm "a"

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

Cho 2 v d trn, bn c th coi source Fla 09keyobject.fla

3. Key Listener

Key listener c dng quan st bn phm v thng bo cho Flash khi phm c
nhn.

cch th 2 chng ta dng i tng Key kim tra coi phm c b nhn hay
khng, nhng n khng th bit chnh xc lc no th phm b nhn. Nu m ngi
dng nhn phm qu nhanh, trc khi onClipEvent(enterFrame) kp kch hot i
tng key kim tra th Flash s khng bao gi bit c ngi dng nhn phm.
Mt bt tin na khi dng cch th 2 l nu bn mun ngi dng nhn phm nhiu
ln th i tng Key s khng phn bit c l 1 ln nhn di hay l nhiu ci
nhn tht nhanh.

V vy Flash MX, MM cho chng ta thm mt la chn na l Key listeners. bn c
th dng "listener" (c th hiu n nh mt quan st vin) theo di s kin ca bn
phm v thng bo cho Flash ngay khi phm c nhn.

Listener c 2 phn. Phn u l phn to listener. Bn phi ra lnh cho listener ny
ch vo s kin ca bn phm. y l code cho to listener

ActionScript
Key.addListener(_root);

Lnh Key.addlistner to listener cho i tng trong thng s l _root. V i tng
ny s c thng bo v s kin ca bn phm.

Trong on code trn, _root l i tng c thng bo v s kin ca bn phm.
Nhng khi nhn c thng bo th _root phi lm g? V vy chng ta cn phi vit
code x l s kin cho _root. V d on code sau s c thc hin khi _root nhn
c thng bo v s kin bn phm.

ActionScript
_root.onKeyUp = function() {
trace(Key.getAscii());
}

Khi ngi dng nhn phm, ri nht tay ln th s to ra s kin onKeyUP, v s kin
ny c thng bo ti _root (bn c th thay th _root bng bt k i tng no) v
sau th hm Key.getAscii() s cho ra kt qu l m s ASCII tng ng vi phm
va c nhn, v d A = 65, B = 66 .v.v

Bn c th xem ci fla mu 09keylistener.fla, trogn c on code trn (lu l
trong fla ny s khng c g ht ngoi on code AS frame u tin)

Nu bn mun bit phm c nht l g thay v ASCII code th bn c th dng
String.fromCharCode() cho ra kt qu bn mun tm. Thay dng
trace(Key.getAscii()); bng trace(String.fromCharCode(Key.getAscii()));

Tht ra ngoi 3 cch trn, cn mt cch na l dng b x l s kin onClipEven ca
movie clip theo di s kin keyDown, keyUp, nhng cch ny khng cn c
dng trong Flash MX na, v vy bn ch c th cch ny trong cc Flash trc MX
thi.

Bi Tp: Dng phm di chuyn movie clip

1. To mt file Flash mi
2. To mt movie clip n gin
3. Gn on code ny vo movie clip

ActionScript
onClipEvent(enterFrame) {
if (Key.isDown(Key.LEFT)) this._x -= 5;
if (Key.isDown(Key.RIGHT)) this._x += 5;
if (Key.isDown(Key.UP)) this._y -= 5;
if (Key.isDown(Key.DOWN)) this._y += 5;
}[/b]
on code trn kim tra 4 phm mi tn v di chuyn movie clip theo hng ca mi
tn. Bn hy th movie coi sao

4. Thay i on code trn cho hon chnh hn: to 2 bin [b]x, y[/b] c gi tr tng
ng vi v tr ban u ca movie clip, v lp gi tr cho bin [b]speed[/b] bng 5.
Mi frame ca movie, mnh s kim tra 4 phm mi tn v iu chnh gi tr ca 2
bin [b]x,y[/b] ch khng iu chnh v tr ca movie clip, sau phi hp vi bin
[b]speed[/b] tm v tr mi cho movie clip, ri mi di chuyn movie clip ti :
[code]onClipEvent(load) {
x = this._x;
y = this._y;
speed = 5;
}

onClipEvent(enterFrame) {
if (Key.isDown(Key.LEFT)) {
x -= speed;
}
if (Key.isDown(Key.RIGHT)) {
x += speed;
}
if (Key.isDown(Key.UP)) {
y -= speed;
}
if (Key.isDown(Key.DOWN)) {
y += speed;
}

this._x = x;
this._y = y;
}


on code trn c 2 li im. Th nht, chng ta tm v tr mi ca movie clip trc
khi chng ta di chuyn movie clip ti , v nh vy chng ta c th kim tra v tr
mi c hp l khng (o dng rt nhiu trong game), v th hai l rt tin cho chng
ta thay i tc di chuyn ca movie clip, ch cn thay i gi tr ca bin speed

Nhp vn bn

Trong Flash, ngi dng c th nhp vn bn vo cc khung, v bn c th dng AS
ly nhng vn bn . cho ngi dng c th nhp vn bn, bn phi to khung
input text v to cho 1 varible tng ng vi ga tr trong khung input text .
(nu bn no cha bit to input text th c th download 3 ci CD hng dn bn
box ti liu tham kho thm)

Cc chc nng v thao tc lm vic vi chui k t (string

Chng ta c rt nhiu thao tc vi chui k t:

1. Ghp 2 chui li vi nhau: dng k hiu +. V d bn c variable tn l myVariable
c gi tr l "Hello", v mun ghp ch "world" vo sau th dng nh sau:
myVariable = myVariable + "world" v kt qu c c s l "Hello world". Bn
cng c th ghp nhiu hn 2 chui li vi nhau bng cch trn.

2. Substrings. Substring l mt chui k t nh trong 1 chui k t khc. V d "ell"
l substring ca "hello world" hay l "hello" hay l "elle" hay "hell".

Bn c th ly bt c substring no ca 1 string vi c php sau:
String.substring(start, end));. String l i tng chui m bn mun trch ra mt
phn, start l s th t ca k t bt u cho chui bn mun ly, v end l s th t
bt u cho phn bn khng mun ly. Lu rng k t u ti s c s th t l 0.
V d vi on code sau, output window s cho ra hng ch "lo W"

ActionScript
var myString = "Hello World.";
trace(myString.substring(3,7));

Ngoi ra cn 1 cch na dng tng t nh cch trn nhng ch khc v thng s v
c c php nh sau: String.substr(start, length);. thng s 1 cho s th t ca ch
ci u tin v th hai cho chiu di ca chui. on code sau cng s c kt qu
tng t nh cch 1

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


Cc hm ca i tng String

Sau y l mt s hm tiu biu ca i tng String.

1. indexOf: dng tm s th t ca mt k t hay mt chui nh trong i tng
String. Nu hm indexOf tm khng thy k t hay chui nh th s cho ra kt qu -1.
y l c php:myString.indexOf(substring,start)); substring l k t hay chui
mnh mun tm, start l s th t mnh bt u tm trong i tng String. V d:

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


2. lastIndexOf: tng t nh indexOf nhng chng ta tm k t cui cng i ngc
ln tik t u tin.

ActionScript
var myString = "Hello World.";
//output: 2
trace(myString.indexOf("l",0));
//output: 9
trace(myString.lastIndexOf("l"));


3. toUpperCase/toLowerCase: dng i chui t vit thng sang vit hoa v
ngc li

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


4. length: l c tnh ca Sring dng tnh chiu di ca chui.

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


Bi tp:

1. m file 09form-noscripts.fla
2. kim tra tn ca variable ca mi input text field qua property panel
3. Thm on m sau vo nt CLEAR

ActionScript
on (release) {
clearForm();
}

4. thm on m sau vo nt SUBMIT

ActionScript
on (release) {
submitForm();
}

5. Thm on code sau vo frame u tin ca movie

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

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



Ri bn test movie.

Gi th 10: To V iu Khin Vn Bn, Creating and Controlling Text
Dynamic Text

Bn cng c th hin th vn bn bng dynamic text field. Khc vi Input field m
bn lm quen trong gi s 9, dynamic text field ch cho php AS thay i ni dung
vn bn ch khng phi l ngi dng. V ni dung, hnh thc ca vn bn c th
thay i bt c lc no nn mi gi l dynamic text

Trc tin bn to dynamic text bng dng c text trn thanh toolbar, nhng thay v
chn "Input Text" trong property panel, bn chn "Dynamic Text"

Bc k tip l ni ni dung ca vn bn trong dynamic text field vi mt variable
bng cch vit tn ca variable vo trong khung Var trong propery panel. V d
nh bn t variable myText vo trong khung Var th khi bn thay i gi tr ca
myText th vn bn trong dynamic text field cng thay i ging nh gi tr ca bin
myText. Ngoi ra bn cn c th thay i mt s la chn cho dynamic text field nh
"Single", "Multiline", or "Multiline No Wrap" x l trng hp ni dung ca vn
bn qu di v cnn nhiu la chn khc na. (Nu bn cha nm vng phn ny th
c th tham kho thm v s dng Flash trong CD c post box ti liu)

nh dng vn bn theo HTML
(HTML format)

nh dng vn bn kiu HTML, bn phi cho php dynamic text field chp nhn
nh dng HTML (click vo HTML icon trn property panel) v sau bn c th
dng th HTML nh dng vn bn ca bn. V d on code ny s to vn bn
sau:

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


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

Siu lin kt (hyper link) trn c tc dng ging nh trong HTML nh khc 1 iu l
khng c gch di
Sau y l nhng th HTML c th dng trong Flash MX
<B></B>: vit m
<I></I>: vit nghing
<U></U>: gch di
<FONT FACE='Arial Black'></FONT>: kiu ch
<FONT SIZE='24'></FONT>: c ch
<FONT COLOR='#XXXXXX></FONT>: mu ch
<A HREF=''></A>: link
<P></P>: an vn
<BR>: Xung hng
i Tng TextFormat

Cn mt cch khc nh dng cho vn bn l dng i tng TextFormat. lm
c iu ny, bn cn phi to ra 1 bin t i tng TextFormat. Sau bn c th
nh gi tr cho cc thuc tnh ca n. V d bn mun kiu ch Arial Black, c 26, v
mu th dng an code sau:
CODE
myFormat = new TextFormat();
myFormat.font = "Arial Black";
myFormat.size = 36;
myFormat.color = 0xFF0000;

textInstance.setTextFormat(myFormat);

Bn c th dng i tng TextFormat nh l stylesheet trong cc file HTML, mt
khi bn to n ra th bn c th dng n bt c ch no trong movie
Bn c th coi cc an code trn trong file mu: 10formattext.fla

Variable ngoi Flash

Bn c th ly bin t ngoi trang HTML vo trong Flash thay i ni dung ca
Flash hay dng vo bt c chuyn g. V d bn phi lm 30 ci banner bng Flash
cho 30 trang web, th bn c th ch lm 1 ci banner thi, nhng thay i ni dung
tu theo tng trang web. Mun nhp vn bn hay gi tr ca bin no t HTML, bn
ch cn thm vi ch vo sau ci tn ca movie trong phn <object> v <embed>
trong HTML.. on m HTML sau y nhp gi tr ca bin txtName vo trong Flash

HTML
<PARAM NAME=movie VALUE="10banner.swf?txtName=Dominico Savio!">
v trong th <embed> th bn thm phn variable v gi tr vo sau tn file
HTML
src="10banner.swf?txtName=Dominico Savio!">
Khi movie load th n s t to variable "txtname" v t gi tr cho bin ny bng
"Dominico Savio". Bn c th xem trang 10banner.html, 10banner.fla trong ci
source file xem chi tit hn.
Bn c th lm nhiu gi tr mt lc cng bng cch ny
10banner.swf?txtName=Dominico Savio!&gender=male"
Ngoi ly bin t HTML, bn cn c th ly bin t cc text file. Cch ny thch hp
khi bn c nhiu bin nhp vo Flash, hay gi tr ca cc bin qu di gn vo
th HTML. Bn ch cn dng lnh loadVariables() lm c iu ny. V d:
CODE
loadVariables("10external.txt", _root);
Bn c th coi thm v cch dng loadVariables() bn box ActionScript

[Bi Tp
Mt v d n gin p dng cc iu m bn va hc trong bi ny l lm mt ci
"news ticker" nh di y:


Dng ch s chy t bn phi qua bn tri cho sut bn tin. Bn c th tham kho
source fla: 10ticker.fla v test n c khi nim thm v "news ticker"
1. To movie mi

2. To dynamic text field, vi cao ch va 1 hng, v di bng chiu ngang ca
stage, cho d nhn, bn c th vit vi ch trong , nh l "text goes here"

3. To variable cho text field ny l text

4. Chn font, nn dng kiu ch tng t nh Courier New, sao cho b ngang ca
mi ch bng nhau

5. Con text field ri nhn F8 i thnh Movie Clip, v t cho n 1 ci tn nh th
no tu bn

6. Sau th gn on script sau vo movie
CODE
onClipEvent(load) {
// t bn tin
tickerText = "News Alert: ";
tickerText += "Stock prices shoot up sharply with good earnings reports. ";
tickerText += "The first manned flight to Mars prepares to leave Earth orbit. ";
tickerText += "Your favorite sports team wins championship. ";
tickerText += "Scientists find cure for major diseases. ";
firstChar = 0; // bt u ch ci u tin
lineLength = 50; // s ch ci ti a trn news ticker
// thm cc khong trng vo trc dng tin
for(var i=0;i<lineLength;i++) {
tickerText = " " + tickerText;
}
}
onClipEvent(enterFrame) {
// pht bn tin
text = tickerText.substr(firstChar,lineLength);
// thm ch ci k tip
firstChar++;
// pht li bn tin sau mi ln kt thc
if (firstChar > tickerText.length) {
firstChar = 0;
}
}

Trc tin bn to ra bin tickerText cha bn vn news ticker, bin firstChar
cha gi tr ca ch ci u tin s thy trong news ticker, v lineLenght l s ch ci
c th xut hin mt lc trn news ticker. V tt c cc u c cho vo trong b s
l d kin onLoad
Trong onEnterFrame, Flash s ly 50 ch ci u tin b vo bin text ( trong
dynamic text field) cho n hin th ln mn hnh. Sau di chuyn sang ch ci
th 2 bng cu firstChar++;, v sau cng l kim tra, nu bn tin c pht ht th
pht li t u.

6. Bn c th thay i gi tr ca lineLenght v gi tr ca bn vn trong tickerText
hiu hn v 2 bin ny

7. By gi bn hy th dng loadVariable() nhp bn tin t text file vo coi c
c khng. Nu khng th hy tr li y hi mnh nhe

Happy flashing

Gi th 11: Lm vic vi cc con s, Chng ny rt hay v b ch!
Chng ta nghin cu v text v strings trong cc chng trc. By gi chng ta s
nghin cu v nhng con s. Bn s phi ng vi nhng con s trong Action
Script trong nhiu trng hp, v vy bn cn phi hiu lm sao s dng chng.

Nhng php ton (operator) v nhng hm (function) v s

Nhng php ton n gin
Chng ta cng hc qua cc php ton n gin ri. By gi hy xem li nh. Du +
v du - s thc hin php ton cng v tr, du * thc hin php nhn, du / thc
hin php chia.
Ngoi ra, bn cng c th s dng nhng php ton nh +=, -=, *=, /= lm n
gin cho code ca bn. Ly v d hai cu lnh di y s thc hin cng mt cng
vic l cng thm 7 v bin a


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


Nhng php so snh
Nhng php ton so snh nh == so snh hai s xem c bng nhau khng, > (ln
hn), < (nh hn), <= (nh hn hoc bng), >= (ln hn hoc bng). Trong Action
Script chng ta c th so snh mt s nguyn vi mt s thc. V d nh 7.2 s ln
hn 7.

Math.abs
i tng Math cha mt tp hp cc hm x l cc con s. Hm Math.abs s tr v
gi tr tuyt i ca mt s. Bn hy th on code ny xem kt qu th no nh:


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


Math.round
Nu bn c mt s thc, nhng bn li mun hin th cho ngi dng xem di dng
s nguyn thay v phi cho h xem cc con s phn thp phn, bn hy s dng hm
Math.round. Th nh:


CODE
trace(Math.round(7.2));


Math.ceil, Math.floor
Hai hm khc dng lm trn s thc thnh s nguyn l Math.ceil v Math.floor.
Hm Math.ceil s lm trn s ln v Math.floor s lm trn s xung. Th nh:


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


Math.min, Math.max
Cc bn c th s dng hai hm ny tm s ln hn v s nh hn trong hai s. V
d hm Math.min(4, 5); s tr v 4, Min.math(4, 5); s tr v 5

Math.pow
y l hm ly ly tha, cng n gin thi, tham s th nht l c s, tham s th
hai l ly tha. V d bn mun ly 4 lu tha 3 th vit th ny


CODE
Math.pow(4, 3);


Math.sqrty l hm tnh cn, nhng m mnh xin ni trc lun l ngoi hm
Math.sqrt, bn cn c th s dng hm Math.pow vi ly tha nh hn 1 tnh cn.
V d mun ly cn 2 ca 4 th c th s dng


CODE
Math.pow(4, .5);
hoc
Math.sqrt(4);


C hai cch trn u ra cng mt kt qu l 2.

Hm s lng gic

Nhng hm ca object class m cc bn c bit trn c v nh rt d hc. Nhng
cn nhng hm v lng gic nh sin, cosin th kh nut hn nhiu. Mc d bn c
th b qua nhng hm ny nhng nhng hm lng gic ny rt hu ch v hay trong
vic to nhng ng dng trong Flash. Vy chng ta hy cng tm hiu cch n lm
vic nh!
Hm sin v cosin s dng qua Math.sin v Math.cosin, biu din mi quan h gia
ng thng vi ng cong ca mt ng trn.
Hnh di y biu din mt vng trn vi mt s im c nh du bng cc ch.
Hy tng tng tm ca vng trn to 0,0; bn knh ca ng trn bng 1. V
th, im trn cng s c to 0,1 v im tn cng bn phi s c to 1,0



By gi bn hy tng tng vng trn trn l mt ng thng. Bt u t im a
c to 1,0 n im 0,-1 qua -1,0 ri qua 0,1 v cui cng tr v 1,0.
Trong Flash, v cng nh trong cc ngn ng lp trnh khc, chng ta nh v mt vt
bt k bng to x, y ca chng. V th, vic chuyn mt im trn ng thng
thnh mt im c to x, y trn ng trn rt hu dng. l nhng g m hm
sin v cosin thc hin. V d nh chng ta t im a l im bt u ca ng
thng ca ng trn, bn c s dng hm sin v cosin ca 0 tnh to x, y ca
im a trn ng trn. Tt nhin, Math.cos(0) s tr v gi tr 1, Math.sin(0) s tr
v gi tr 0. Kt qu s tr v to ca im a 1,0
Vy im c s nm u trn ng trn? Nu dui ng trn ra s c di
bng 6.28 ln bn knh, do bn knh bng 1 nn di s bng 6.28. y l xut x
ca hng s pi. Pi bng 3.14, bng mt na di ca ng trn.
di ca ng trn l 6.28 th mt phn t di ng trn l 1.57. im
tng ng vi im c. Hm Math.cos(1.57) s tr v mt gi tr rt nh, gn bng 0.
Hm Math.sin(1.57) s tr v gi tr gn bng -1. Ch gn bng ch khng bng v
hng s pi khng chnh xc bng 3.14, ch l gn bng thi.
Bn c th s dng cch ny chuyn cc im trn ng trn thnh im c to
x,y
Vy th n c ch nh th no? Gi s nh bn mun to mt movieclip bay quanh
mn hnh trong mt vng trn. Lm sao lm c iu ? Nu lm bng frame c
th phi tn hng trm frame . Hoc cch khc l c th dng hm Math.cos v
Math.sin tnh chuyn sang to x,y quanh vng trn.
Trong on code di y, khi cng thm n, movie clip s chuyn ng dc theo
ng trn. Hm Math.cos s tnh ra gi tr x v hm Math.sin s tnh ra gi tr y,
chng s c nhn thm vi gi tr ca radius tng kch thc ca ng trn.
Gi tr ca centerX v centerY s c cng thm cho cc to x, y, v th tm
ng trn by gi khng cn 0,0 na m s v tr 150,150

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

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



Ch (string) v s (number)

C rt nhiu cch chuyn i t chui sang s v ngc li. V d nh trng hp
ngi dng nhp mt s vo text field, bn s nhn gi tr v cng thm mt. Hy
xem on code sau y, num l mt bin gi tr text field

CODE
b = num + 1;


Nu num = 42, vy th b s l 43, ng khng? Xin tr li l sai, kt qu b l 421, n
gin bi v num l mt chui (string) ch khng phi l mt s, v th khi chng ta
thc hin php cng num vi 1 c ngha l cng k t 1 vo chui num ang c gi
tr 42.
lm cho Flash hiu num l mt s, bn c th s dng mt trong hai hm sau y
chuyn mt chui thnh s. Hm parseInt chuyn mt chui thnh kiu s nguyn,
hm parseFloat chuyn mt chui thnh kiu s thc. V d hm parseInt(42) s tr
v gi tr l 42, nu chng ta s dng parseInt(42.9) th cng s nhn c gi tr l
42 bi v hm parseInt khng lm trn s, n ch ly phn nguyn m thi. Cn nu
s dng hm parseFloat(42.9) bn s nhn c gi tr l 42.9, mun lm trn cc
bn c th s dng hm Math.round(parseFloat(42.9)). Hm parseFloat cng s tr
v mt mt s nguyn nu tham s truyn vo l mt chui s nguyn. V d
parseFloat(42) s cho ta s 42. Tr trng hp bn mun tr v mt gi tr s
nguyn, cn khng bn nn s dng hm parseFloat.
Mt nt rt c bit v rt hay ca hm parseInt l c th chuyn mt chui thnh mt
s nhng thnh nhiu dng h s khc nhau. Hy xem mt v d cho d hiu:

CODE
parseInt(FF, 16);


Hm ny s tr v gi tr l 255, ngha ca n l chuyn chui cha s FF l mt s
hexa h s 16 thnh mt s h nguyn h s 10.
Ngc li, chuyn t mt s sang mt chui, hy s dng hm toString. Hm ny
s hot ng khc vi hm parse, bi v n hot ng bn trong mi bin, gi hm
ny sau du chm (.). Xem v d nh:

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


Kt qu s l 1351.
Chng ta cng c th s dng hm toString chuyn mt s thnh mt chui cha
s di mt h s khc. V d a.toString(16) s tr v kt qu l chui ff

S ngu nhin

To s ngu nhin l mt phn quan trng trong cng vic thit k game v mt s
hot hnh. Bi v nu khng c s ngu nhin th nhng on phim ca bn s chy
ging nhau, khng cn g th v na!
to s ngu nhin, bn c th s dng hm Math.random(). Hm ny s tr v mt
gi tr t 0.0 n 1.0 nhng thng th khng tr v gi tr bng 1.0
Hy xem v d di y, bn s nhn c con s ngu nhin trong ca s OutPut

CODE
trace(Math.random());


Kt qu tr v i loi ging nh 0.023268056102097, nhng mi ln li khc nhau.
Mt v d khc l bn cn to mt s ngu nhin t 1 n 10, vic ny rt n gin,
ch cn nhn thm s ngu nhin cho 10. on code sau s cho ta con s ngu nhin
t 0.0 n 10.0

CODE
trace(Math.random() * 10);


Nhng ci chng ta cn l con s ngu nhin t 1.0 n 10.0 ch khng phi t 0.0
n 10.0, v th, hy cng thm 1

CODE
trace(Math.random() * 10 + 1);


By gi th kt qu tr v l 1.0 n 11.0 nhng s khng c kt qu 11.0. Hy s
dng hm Math.floor lm trn xung.

CODE
trace(Math.floor(Math.random() * 10 + 1));


Tht ra th con s ngu nhin trong my tnh cng cha tht s ngu nhin. Bi v n
khng tht s thay i trong b vi x l. Thay vo s c mt con s chun, mt
con s no khng bit trc c nh l gi hoc pht ca h thng, con s ny
s c a v mt biu thc rt phc tp, rt rt phc tp m chng ta khng th
on c. Kt qu tr v cho chng ta kt qu dng nh l ngu nhin. Kt qu ny
s c a v mt hm tnh mt ln na l lu li thnh con s chun tnh ngu
nhin cho ln tip theo.
Hy ngh v iu ny, s ngu nhin trong i sng tht s cng khng tht s ngu
nhin. Nu chng ta gi mt mt ca con xc xc, thy ng theo mt hng tht
chnh xc, chng ta s c cng mt kt qu
c ri, by gi hy th to mt s ngu nhin t 3 n 7. Lm th no y? Ah, c
mt th thut cho bn y:

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


Trong phm vi t 3 n 7 s c tt c l 5 s nguyn 3, 4, 5, 6, v 7. Th cn trong
phm vi t 50 n 100 th sao

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


L s 51 bi v trong phm vi t 50 n 100 c 51 s, cn nu t 51 n 100 s l

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


Mt cch th xem phm vi ca bn c ng nh ca mnh khng, l hy th
vi s nh nht v s ln nht thay cho Math.random(). Gi tr nh nht ca hm
Math.random() l 0, hy th vi s 0 nh

CODE
trace(0 * 51 + 50);


Gi tr ln nht ca Math.random() s khng chnh xc bng 1.0 m s l gn bng,
vy chng ta hy th vi gi tr l 0.9999

CODE
trace(.9999 * 51 + 50);


Hy th xem c ng khng nh!
Di y l mt v d na rt th v, movie clip ca bn s nhy n nhng v tr bt
k

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



Luyn tp: To mt chng trnh my tnh n gin

Hy bt tay vo vic thit k mt chng trnh my tnh n gin nh.
- M mt movie mi trong Flash. Movie ca chng ta s ging nh hnh di y

Chng ta s c 10 nt nhp 10 s t 0 n 9, cc nt cc php ton, phm =, du
chm thp phn, phm C xa mn hnh. Mt text field t trn hin th nhng
s ngi dng bm, text field ny s lin kt vi bin display.
- Trong mi movie clip ca mi nt bm, chn on code sau

CODE
on (release) {
_parent.keyPressed(this._name);
}


Khi mt nt bt k c nhn th hm keyPressed s c gi level ngoi m y
s l level root. Hm ny s truyn tn ca movie clip.
- Quay tr li level root, mi movie clip phi c mt tn ring, khng c trng. t
tn ca movie clip theo s ca n, v d nt s 5 s c tn l 5, du chm thp phn c
tn l .. Du cng, du tr, du nhn, du chia, du bng, nt C ln lt t tn l
plus, minus, multiply, divide, equals, clear.
- Ok, by gi bt u vit code nh! Code ny s nm ngoi movie frame

CODE
// trc tin, xo mn hnh c
clearAll();

function clearAll() {
display = "0"; // gi tr mc nh l 0
memory = 0; // b nh
operation = "none"; // cha c php ton no c
newNum = true; // nh du khi no nhp xong mt s
}


Bin display l mt chui (string), s lin kt vi text field hin th ni dung ngi
dng bm. N s bt u vi gi tr bng 0, c ngha l khi ngi dng mi bt my
ln th s mc nh l s 0
Bin memory lu li con s trc thc hin php tnh. iu ny rt cn thit, v
d bn bm s 5, +, 7 th s 5 nhp vo, khi bn bm du cng, mn hnh s c xa
v s 5 c lu vo memory, s 7 c nhp tip v s thc hin php tnh 5 v 7.
Php ton ngi dng chn cng cn c lu vo b nh. Khi ngi dng nhn
5, +, 7 ri, sau bm du = hoc mt php ton khc th chng trnh s gi li php
ton c c lu trong bin operation thc hin php ton trc ca 5 vi 7.
Bin newNum nh l mt bin c hiu bo cho chng trnh bit khi no s kt
thc mt php ton. V d khi ngi dng bm 5, +, 7 ri sau bm mt php ton
khc th kt qu s c lu li tnh ton tip, lc ny php ton cha kt thc,
newNum = false. Cn nu ngi dng bm du = th mn hnh s hin ra kt qu v
kt thc lun php ton chuyn sang php ton mi, newNum = true.
- Phn tip theo l hm keyPressed x l khi mi nt c nhn. Hm keyPressed
s s dng cu trc switch thay cho cu trc if, then, else. C hai cch u hot ng
tng t nhng cch vit hi khc, bn hy xem nh:

CODE
// hm ny c gi bi nt nhn
function keyPressed(keyName) {

// do something different for different keys
switch (keyName) {
case "clear" : // khi nhn nt C
clearAll();
break;
case "plus" : // cc php ton cng, tr, nhn, chia
operate(keyName);
break;
case "minus" :
operate(keyName);
break;
case "multiply" :
operate(keyName);
break;
case "divide" :
operate(keyName);
break;
case "equals" :
operate(keyName);
break;

default : // cc s
if (newNum) { // hin th s mi trn mn hnh
display = keyName;
newNum = false;
if (display == "0") newNum = true; // s khng bt u vi s 0
} else {
display += keyName; // ni thm s vo mn hnh
}
break;
}
}


Khi ngi dng nhn nt C th hm clearAll() s c gi, tng t khi ngi dng
nhn cc php ton th hm operate s c gi
- Hm operate s thc hin tnh ton. N s tm ra php ton gia con s trc v
con s hin thi, s dng hm parseFloat chuyn chui thnh s.Operation c gi
tr bng none khi nhp mt s mi sau khi thc hin xong php ton v mn hnh
c xa.

CODE
// thc hin php ton trc
function operate(keyName) {
switch (operation) {
case "none" : // s u tin
memory = parseFloat(display); // lu li s trc
break;

case "plus" : // thc hin php ton
memory += parseFloat(display);
break;
case "minus" :
memory -= parseFloat(display);
break;
case "multiply" :
memory *= parseFloat(display);
break;
case "divide" :
memory /= parseFloat(display);
break;
}

// equals operation is like a clear, but results are displayed
if (keyName == "equals") {
operation = "none";
} else {
operation = keyName; // remember this operation for next time
}

display = memory.toString(); // display result
newNum = true; // prepare for next number
}



Luyn tp: Lm nhng hnh tinh bay quanh qu o

Trong v d v lng gic trong phn trc, bn bit cch lm mt movie clip
quanh quay mt vng trn. By gi hy p dng nhng kin thc lm mt
movie 4 hnh tinh xoay quang mt tri, hnh tinh th 3 s c mt v tinh.
- To mt movie mi trong Flash
To 6 movie clip l cc vng trn, t tn ln lt l sun, mercury, venus, earth, mars,
and moon, v t instance name ca chng ging vy lun. Hy lm cho kch thc
ca chng ta khc nhau mt cht nh!
- t movie clip sun (mt tri) vo gia mn hnh. Cc hnh tinh khc s quay quanh
mt tri. V tr ca cc movie clip cc hnh tinh khc khng quan trng, v chng ta s
iu khin v tr ca chng bng Action Script
- t on code sau vo movie clip mercurcy:

CODE
onClipEvent(load) {
speed = .4;
radius = 40;
orbit = 0;
}

onClipEvent(enterFrame) {
orbit += speed;
this._x = Math.cos(orbit) * radius + _root.sun._x;
this._y = Math.sin(orbit) * radius + _root.sun._y;
}


Trong event load s thit lp tc quay ca hnh tinh, khong cch gia hnh tinh
vi mt tri. Bin speed iu khin tc quay ca hnh tinh, c ngha l s vng
quay trong mt frame. Nu speed = 6.28 th hnh tinh s quay c mt vng trong
ng mt frame, v nu speed = .4 nh trong on code sau th hnh tinh s quay mt
vng qu o mt 15.7 frame (6.28/.4).
Trong mi ln event enterFrame xy ra th orbit (qu o) s c cng thm vi
speed hin thi, v hnh tinh di chuyn n v tr mi. To x, y ca cc hnh tinh
s c hiu chnh theo v tr ca mt tri, v vy tm qu o ca cc hnh tinh chnh
l mt tri.
- Chy th movie. Lc ny, cc hnh tinh vn ng yn, ch c mercurcy l di chuyn.
Nu qu o b nghing th bn phi xem li xem mt tri c nm ng gia qu
o hay khng.
- t on code tng t vo cc movie clip venus, earth, and mars movie clips,
nhng m bn hy thay i gi tr ca hai bin speed v radius lm cho hnh tinh
xa hoc gn mt tri hn. Gi cho cc bn nh, speed ca cc hnh tinh mercury,
venus, earth, and mars l .4, .2, .1, v .05, radius cho cc hnh tinh l 40, 90, 150, v
210.
- Chy th li movie. By gi th c bn hnh tinh chuyn ng, ch cn moon l
cha chuyn ng v cha c vit code iu khin.
- By gi hy vit code cho moon, moon s c speed nhanh hn v radius nh hn, v
moon s quay quanh earth thay v quay quanh sun

CODE
onClipEvent(load) {
speed = .5;
radius = 15;
orbit = 0;
}

onClipEvent(enterFrame) {
orbit += speed;
this._x = Math.cos(orbit) * radius + _root.earth._x;
this._y = Math.sin(orbit) * radius + _root.earth._y;
}


- By gi hy chy th movie ca bn mt ln na. By gi tt c cc hnh tinh u
quay ri, nhng cn mt vn . Earth khng chnh xc nm gia qu o ca
moon, v sao th? Bi v moon s quay trc earth, v moon nm mt layer trn
layer ca earth. Chng ta cn phi lm cho earth quay trc ri mi n moon.
lm nh vy, chn movie clip moon, ri chn Modify -> Arrange -> Send to Back.

Luyn tp: Lm tuyt ri

y l mt v d rt hu ch cho vic to s ngu nhin. Bn c th khng cn phi
dng Action Script nhng lc bn phi lm hng trm movie clip bng tuyt, mi
ci chuyn ng theo mt ng.
Bng cch s dng Action Script v s ngu nhin, bn c th lm cho cc bng tuyt
ri vi tc v hng ri ngu nhin. Bt tay vo lm nh!
- To mt movie mi trong Flash
- To mt movie clip mi, t tn l Snowflake v t tn instance ca n l
snowflake
- t on code sau vo movie clip Snowflake. on code ny s khi to nhng gi
tr ban u nh v tr ca cc bng tuyt, tc ri, tc b thi ngang, xoay ca
bng tuyt.

CODE
onClipEvent(load) {
this._x = Math.random()*550; // 0 to 550
this._y = Math.random()*400; // 0 to 400
speed = Math.random()*3+3; // 3 to 6
drift = Math.random()*2-1; // -1 to 1
rotate = Math.random()*6-3; // -3 to 3
}

onClipEvent(enterFrame) {
this._y += speed;
this._x += drift;
this._rotation += rotate;

// a nhng bng tuyt ln u
if (this._y > 400) this._y = 0;

// kim tra hai bin
if (this._x < 0) this._x = 550;
if (this._x > 550) this._x = 0;
}


Khi event enterFrame xy ra th bng tuyt s c iu khin ri xung bi speed v
b dt theo hng ngang bi drift. Bng tuyt cng s b xoay theo gi tr ca rotate.
Tip theo l s kim tra xem nu bng tuyt ri xung t ri th s cho n ri li,
nu bng tuyt b dt qua bn phi th n s c a quay li v bn tri
- Chy th movie ca bn. Cc bng tuyt s ri t do. Hy click vo cui movie xem
sao, nhng bng tuyt di s c ri li.
- c ri, by gi hy lm cho bng tuyt nhiu nhiu mt t bng on code sau,
t vo timeline chnh nh!

CODE

// to 50 bng tuyt
for(var i=0;i<50;i++) {
snowflake.duplicateMovieClip("snowflake"+i,i);
}


Hm duplicateMovieClip hot ng cng ging nh hm attachMovie a movie
clip vo trong lc ang chy. im khc bit l hm duplicateMovieClip s chn t
mt Movie clip c sn, s dng li tt c hnh nh v code, nhng bn phi chc chn
rng mi movie clip phi c mt tn ring v mt level ring



Gi th 12: i tng v Mng, Objects and Arrays
Cho n by gi, mi bin u cha d liu ring l, mi bin cha mt d liu. i
vi nhng chng trnh nh v n gin th khng c g ni, nhng n khi bn
cn s dng tht nhiu bin. Cng c nhng lc bn gp kh khn khi nhn ra rng
bn cn lu rt rt nhiu d liu, nhng bin bnh thng mun lm th khng phi
d.
ActionScript cung cp cho ta hai th lu nhng loi nhiu d liu. Mt l Custom
Object (i tng), vi Custom Object bn c th nhm nhng d liu ring l li vi
nhau. Cch khc l Array (Mng), mt trong nhng phn c bn ca cc ngn ng lp
trnh cao cp.
Trong gi th 12 ny, chng ta s hc:
- Cch to Custom Object
- Cch s dng nhng i tng ActionScript c dng sn
- Tm hiu v Array (Mng)
- Lm ch chuyn ng
- To nhng vt th chy theo con tr chut trn mn hnh

To Custom Object

Chc hn cc bn quen thuc vi nhng tn nh x v y iu khin v tr trn
movie clip. C bao gi bn cm thy nhm chn vi nhng ch x, y hay mun thay
th n bng nhng ch khc nh positionX, positionY hay bt c g bn thch khng?
Vic qu n gin, ch cn to bin ca bn ri gn gi tr cho bin ca bn thi
. Nhng d sao th cng ch l nhng bin ring l thi, ch vi mt ci tn khc
.
Trong phn ny, chng ti khng mun ch cho cc bn lm nhng iu nh vy m
s ni v cch to mt custom variable Object. V d, bn c th lu bin x, y nh
sau:


CODE
pos = {x:10, y:20};



Bng cch s dng hai du ngoc nhn, bn to ra mt object. Bn c th truy cp
d liu bng cch:


CODE
trace(pos.x);



Bn c th s dng n nh bt c nhng bin no khc.
Hy tng tng n mt cu trc phc tp hn nhiu nh mt record trong mt c
s d liu. V d nh ta c mt custom object tn record, v trong n s c nhng
property nh l name, address, phone
Bn c th to object tng bc mt, to thm property. Xem v d ny nh:


CODE
record = new Object();
record.name = "Gary";
record.age = 32;
record.state = "Colorado";
trace(record.name);



Cng vi mc ch lm cho d liu d t chc hn, custom object cng ging nh
nhng i tng dng sn. Hai v d v nhng i tng dng sn l Color v i
tng Date.

i tng Color

C th dng ActionScript i mu ca mt movie clip bng cch s dng cu lnh
setRGB. l cch d nht nhng n s khng thc hin c i vi instance ca
movie clip. Thay vo , chng ta s chuyn n i tng Color ca movie clip.
Thc hin cch bng hm new Color(), sau th c th s dng cu lnh setRGB
thay i mu.
Di y l mt v d, s dng setRGB t i tng Color ca movie clip t li
mu cho movie clip sang mu 0xFF0000 (mu )


CODE
circleColor = new Color("circle");
circleColor.setRGB(0xFF0000);



Chng ta cng c th ly mu ca mt movie clip. S dng hm getRGB() ly mu
ca movie, nhng nh s dng hm toString(16) chuyn thnh gi tr hexa.


CODE
circleColor = new Color("circle");
trace(circleColor.getRGB(0xFF0000).toString(16));



Mt cch khc t mu cho movie clip bng cch to mt i tng color
transform ng vi 8 mc nh trong hnh di y

u tin, to mt i tng custom variable. Ri to cc property ra, ga, ba, aa, rb,
gb, bb, ab. Cc k t u tin r, g, b, a l i din cho t red, green, blue v alpha.
Cn k t th hai a v b l i din cho 2 ct bn tri v bn phi
Thay v s dng setRGB th chng ta s s dng setTransform nh trong v d di
y:


CODE
circleColor = new Color("circle");
myObject = new Object();
myObject = {ra:100, rb:255, ga:0, gb:0, ba:0, bb: 0, aa: 100, ab: 0};
circleColor.setTransform(myObject);



i tng Date

Mt i tng dng sn khc l i tng Date. i tng ny cng c th c xem
nh l mt bin bnh thng, n i din cho mt thi im ca thi gian.
i tng Date c chia ra 7 phn: nm (year), thng (month), ngy (date), gi
(hour), pht (minute), giy (second) v phn trm giy (milisecond). Bn c th to
mt i tng Date mi bng cch cung cp cho n 7 thng tin trn


CODE
myDate = new Date(2002,3,29,10,30,15,500);



Hy th s dng cu lnh trace kim tra ni dung ca myDate xem no. C phi
bn nhn c kt qu ny khng?


CODE
Mon Apr 29 10:30:15 GMT



Rt d hiu, ng khng no? Nhng m cn mt vn : thng l Apr trong khi
chng ta truyn tham s vo cho thng l 3, vy phi l March ch!?
i tng Date ca Flash cng hot ng tng t nh i tng Date ca cc ngn
ng lp trnh khc. Thng c quy nh t 0 n 11, rt c bit, bi ngy th c
quy nh t 1 n 31 . Nhng d sao th bn cng phi lm quen i
Bn cng c th ly nhng thnh phn t i tng Date. V d di y s ly nm.


CODE
myDate.getYear()



Bn c th ly gi hin ti bng cch n gin l to mt i tng Date rng .
Gi hin ti s c a vo i tng. V d:


CODE
myDate = new Date();
trace(myDate);



Ch : Flash s ly gi ca ng h h thng trong my bn. V th ng h trong
my tnh ca bn chy sai th gi ly ra s sai

Mng (Array)

Mng l mt phn rt quan trng trong lp trnh. Bn s gp mng trong hu ht cc
ngn ng lp trnh bi v n l mt cng c rt cn thit cho nhng ngn ng lp trnh
phc tp.

Mng (Array) l mt dy d liu. Trong th cc d liu s c cng mt kiu d liu
vi nhau, nh l cng l tn ca movie clip hoc u cng l v tr ca movie clip

To mng

Di y l mt v d v mt mng. S dng du ngoc vung v nhng du phy
to mng:


CODE
myArray = [36,23,63,71,25];



Mng myArray c cha 5 phn t l s nguyn. Mun ly gi tr ca mt phn t
trong mng th s dng nh sau:


CODE
trace(myArray[0]);



Phn t u tin trong mng lun lun c nh s 0. V vy, nh v d trn c 5
phn t th phn t th 0 cha gi tr 36 v phn t th 4 mang gi tr 25.
Mt cch khc to mng l s dng new Array()


CODE
myArray = new Array();



Mun thm mt phn t vo cui mng, s dng cu lnh push. V d di y s to
ra mt mng ging mng v d trn:


CODE
myArray = new Array();
myArray.push(36);
myArray.push(23);
myArray.push(63);
myArray.push(71);
myArray.push(25);



Nhng thao tc trn mng

kim tra xem mng c bao nhiu phn t th bn c th s dng thuc tnh length


CODE
myArray = [36,23,63,71,25];
trace(myArray.length);



Cn nu mun ly phn t cui cng ca mng v b phn t ny ra khi mng th s
dng cu lnh pop


CODE
myArray = [36,23,63,71,25];
trace(myArray);
a = myArray.pop();
trace(a);
trace(myArray);



on code v d trn s trace 5 phn t ca mng myArray. Sau , ly phn t cui
cng ca mng tc l 25 a vo bin a, ng thi b phn t 25 ra khi mng. Cui
cng trace cc phn t ca mng myArray, lc ny ch cn 4 phn t.
S dng kt hp push v pop to mt h thng vo sau ra trc (last in first out),
thng gi l stack. Hy tng tng n mt chng sch, chng ta cun sch u
tin xung, ri chng ln cun sch th 2, cun th 3, cun th 4 Khi mun ly
sch ra th phi ly cun trn cng trc, tc l chng ln cui cng.
Ngc li vi pop l shift. N s b ra phn t u tin trong mng. on code di
y s lm ging nh on trn nhng s khng b phn t 25 m s b phn t 36:


CODE
myArray = [36,23,63,71,25];
trace(myArray);
a = myArray.shift();
trace(a);
trace(myArray);



Ngc li vi shift l unshift. N s chn thm mt phn t vo u mng.
Nu bn mun ly ra ch mt phn ca mng th c th s dng hm slice. i s
truyn vo s l v tr u tin v v tr cui cng ca phn cn ly ra trong mng.


CODE
myArray = [36,23,63,71,25]
trace(myArray.slice(1,3));



on code trn s tr v 23, 63 v n khng k phn t th 3. Nu khng c i s th
2 th n s ly n cui mng.
Mt hm khc na l hm splice. Hm ny s thay th mt s phn t trong mng
bng nhng phn t khc. S dng hm ny, i s u tin l v tr ca phn t trong
mng, i s th hai l s phn t mun xa k t phn t trong i s u tin.
Truyn i s th 2 l s 0 nu khng mun xa phn t no c. Nhng phn t tip
theo l danh sch nhng phn t mun chn vo mng. Ni vy cng hi kh hiu
nh, vy hy xt v d ny nh. V d ny s xa phn t 23 v 63 v chn vo phn t
17.


CODE
myArray = [36,23,63,71,25];
myArray.splice(1,2,17);
trace(myArray);



Sp xp trong mng

Chng ta c th sp xp mt mng bng cu lnh sort. V d di y s cho ta mt
mng c sp xp theo th t s:


CODE
myArray = [36,23,63,71,25];
myArray.sort();
trace(myArray);



Cn v d ny s sp xp theo th t ch:


CODE
myArray = ["Gary","Will","Jay","Brian"];
myArray.sort();
trace(myArray);



Cu lnh reverse o v tr sp xp ca mng. V d:


CODE
myArray = ["Gary","Will","Jay","Brian"];
myArray.reverse();
trace(myArray);



Mun sp xp mng theo v tr gim dn th s dng sort ri s dng reverse.
S dng cu lnh concat ni hai mng li vi nhau. N s khng lm thay i cc
mng c, m n s to ra mt mng mi.


CODE
myArray = [36,23,63,71,25]
otherArray = [58,97,16];
newArray = myArray.concat(otherArray);
trace(newArray);



Chuyn i gia chui v mng

Chng ta c th s dng cu lnh join i t mt mng thnh chui. Cu lnh ny
cn mt i s duy nht l k t ngn cch gia cc phn t ca mng trong chui.
Nu bn khng truyn tham s ny vo th k t mc nh l du phy. V d di
y tr v 36:23:63:71:25.


CODE
myArray = [36,23,63,71,25]
myString = myArray.join(":");
trace(myString);



Cu lnh join t c s dng v n khng cn thit lm, nhng hm split li rt hu
dng. N s chuyn i t mt chui sang mng. V d nh n s chuyn mt chui
36,23,63,71,25 thnh mt mng trong v d di y:


CODE
myString = "36,23,63,71,25";
myArray = myString.split(",");
trace(myArray);



Hy ngh n chuyn chng ta c mt cu ni c lu trong mt chui mun chuyn
sang mng, mi phn t trong mng s cha mt ch. Xem v d di y nh:


CODE
myString = "This is a test";
myArray = myString.split(" ");
trace(myArray);



Lm ch chuyn ng

Trong v d ny, chng ta s ly tng ch trong mt cu di v hin th vo textfield.
- To movie Flash mi
- To mt text field dynamic, cho font ch to, khong 64. Cho text field nm gia
mn hnh v canh gia cho text field. t variable = text.
- V mt shape ri chn Insert -> Convert to Movie Clip. t tn cho instance ny l
Actions ri ko n ra ngoi vng hin th.
- Chn on code sau vo movie clip . u tin s s dng hm split tch tng
ch ca cu vo trong mng. Sau s khai bo thm 3 bin na. Bin wordNum s
lu mt con s l s th t ca ch s hin th. Bin frameDelay s lu s frame
mi ch hin ra. Bin frameCount s m s frame m mt ch i qua.

CODE
onClipEvent(load) {
// get the words
wordList = ("Imagination is more important than knowledge").split(" ");

// set up variables
wordNum = 0;
frameDelay = 6;
frameCount = frameDelay; // prime for first word
}

onClipEvent(enterFrame) {
// time for new word
if (frameCount == frameDelay) {
_root.text = wordList[wordNum]; // display word
wordNum++; // next word
if (wordNum >= wordList.length) wordNum = 0;
frameCount = 0;
}
frameCount++;
}


- No, by gi th xong ri, hy chy th xem no

Gi th 13: S dng Rollovers, Rollovers
To hnh dng con tr theo thch

Vic thay con tr mc nh bng mt con tr theo thch ca mnh rt n gin, ch
cn s dng hm Mouse.hide() v t mt movie clip ca mnh vo v tr ca con tr
l xong. Con tr c th l bt c hnh dng g cng c, nh l hnh mi tn, hnh
bn tay hay mt movie clip.
Hnh di y l mt v d ca mt movie clip c dng lm con tr. Ch l mt
hnh mi tn n gin nhng bn phi ch rng du cng chnh gia movie clip phi
nm ngay u ca mi tn.

Nu bn mun s dng li con tr mc nh th ch cn gi Mouse.show()
Mt iu cn lu na l phi chc rng movie clip lm con tr ca chng ta phi
trn tt c cc movie clip khc. Chng ta c th chn Modify -> Arrage ->Bring To
Front a movie clip ln u nhng ch l trn cc movie clip trong layer m
thi. Cho d bn c movie clip ca mnh ln layer trn cng th cng c th b che
khut bi nhng movie clip c load vo bng duplicateMovie v attachMovie. V
vy, chng ta s s dng swapDepths() a movie clip ny ln trn cng.
Cu lnh swapDepths() s a movieclip ln mt level mi, level c th l mt s
nguyn 0, 1, 2 9999. V th chng ta s s dng lnh
Cursor.swapDepths(9999);
a movieclip ca chng ta ln trn cng.

Luyn tp: To con tr tnh
- To mt movie mi
- To mt movie clip mi thay th cho con tr
- Quay tr li movie u tin, v chng ta s thay th con tr bng cch

CODE

onClipEvent(load) {
// hide the real cursor
Mouse.hide();

// bring this movie clip to the front
this.swapDepths(99999);
}


- Tip theo chng ta s gn v tr ca movie clip vo v tr ca con tr

CODE

onClipEvent(enterFrame) {
// follow the mouse
this._x = _root._xmouse;
this._y = _root._ymouse;
}


- Sau cng, chng ta s phc hi li con tr c khi kt thc movie

CODE

onClipEvent(unload) {
// show the real cursor again
Mouse.show();
}


- Cui cng l vic chy th movie ca mnh

Luyn tp: To con tr ng

- Chng ta c th s dng li movie trc
- To mt button mi trong root. Hy th lm cho button c s thay i trong over v
down chng ta c th thy c s khc bit.
- Chng ta s thay i mt t trong movie clip lm con tr. To mt frame th hai, v
thm vi nt nh hnh v

- t tn hai frame l normal v over button
- t cu lnh stop(); vo frame u tin ca movie clip
- Ko th mt button vo root
- t tn movie clip lm con tr l cursor
- Thm on code sau vo button

CODE

on (rollOver) {
cursor.gotoAndStop("over button");
}

on (rollOut) {
cursor.gotoAndStop("normal");
}


- By gi hy chy th xem no , hy th click vo button xem sao. Xem kt qu
bn lm c ging hnh ny khng nh!


Rollovers

Mt k thut thng dng hin th nhng thng tin di l s dng Rollovers a
ra nhng thng tin thay v s dng mt button ngi dng click vo th s sang
mt trang khc.
tng ca k thut ny l khi ngi dng a chut lt nhng vng no . Mi
vng s hin th cho ngi dng xem mt thng tin g trn mn hnh.
Trong v d sau, s c 9 vng nh th, mi vng s l mt tn ca mt hnh tinh (
bn tri). Khi chng ta a tr chut qua nhng vng th bn phi s xut hin
thng tin v hnh tinh . Khi a tr chut ra ngoi th thng tin cng bin mt.

Chng ta c th s dng AS lm Rollovers bng nhiu cch

Rollovers s dng button

Chng ta s s dng hai event ca button l on(rollOver) v on(rollOut) vit code
x l vic hin th thng tin. Hy xem v d di y:

CODE

on (rollOver) {
information.gotoAndStop("information 1");
}

on (rollOut) {
information.gotoAndStop("none");
}



Rollovers s dng movie clip

Flash khng c hm onClipEvent(mouseOver), v th chng ta s s dng mt hm
khc.
Hm hitTest s cho chng ta bit rng con tr chut c ang trn movie clip hay
khng. V chng ta c th lm nh sau

CODE

onClipEvent (enterFrame) {
if (this.hitTest(_root._xmouse,_root._ymouse, true)) {
_root.information.gotoAndStop("information 1");
} else {
_root.information.gotoAndStop("none");
}
}


Nhng lm nh vy vn cn mt vn na. Bi v movie clip ca chng ta s vn
tip tc chy t frame ny sang frame khc, chng ta gi hm gotoAndStop()
dng li. Hy tng tng chng ta c nhiu rollovers. Ci u tin s a movie clip
information v frame none, mt khc th rollovers khc li a movie clip information
v mt ni khc. iu ny s lm xy ra xung t. V vy, chng ta s lm nh sau.
Chng ta s ghi nh li rng con tr chut c ang trn movie clip hay khng. Nu
c, n s thi hnh lnh khi con tr chut ra ngoi movie clip. Cn nu khng, n s thi
hnh lnh khi con tr chut i vo movie clip.
lm iu ny, chng ta s s dng bin over, ph thuc vo v tr ca con tr chut
m n s mang gi tr true hoc false. i vi mi frame, chng ta s s dng hm
hitTest kim tra v tr ca con tr chut. Nu v tr con tr i lp vi over th s
xy ra s thay i. Chng ta hy xem on code sau:

CODE

onClipEvent (load) {
over = false;
}

onClipEvent (enterFrame) {
// kim tra xem liu con tr chut c ang di chuyn qua movie clip khng
testOver = (this.hitTest(_root._xmouse,_root._ymouse, true));

if (testOver and !over) {
_root.information.gotoAndStop("information 1");
over = true;
}else if (!testOver and over) {
_root.information.gotoAndStop("none");
over = false;
}
}



Rollovers s dng frame

Nh ni trn, c rt nhiu cch lm rollovers. y, chng ta s bn v mt
cch khc.
Thay v s dng movie clip cho mi thng tin cn hin th, chng ta s s dng
timeline chnh lu thng tin. Frame u tin s l frame none, v cc frame tip
theo s cha cc thng tin.
Chng ta hy xem hnh bn di

V d trn s dng button cho cc hotspot, v chng ta hy lu rng cc button s
xut hin trong tt c cc frame, nhng thng tin cn hin th th ch xut hin mt
vi frame.
By gi cng vic vit code ca chng ta gn ging nh lm rollovers bng button.
Nhng chng ta khng cn phi gi hm gotoAndStop t movie clip information.

CODE

on (rollOver) {
gotoAndStop("information 1");
}

on (rollOut) {
gotoAndStop("none");
}


Li th ca vic s dng cch ny l chng ta c th thay i nhng thng tin trong
cc frame rt d dng, chng ta khng phi m x vo tng movie clip. Nu bn quen
s dng nhiu frame th y l mt cch tt cho bn
Lu rng c ba cch trn u cho mt kt qu nh nhau, khng c s khc bit.
y, chng ti ch mun trnh by cho cc bn thy nhng cch lm khc nhau m
thi!

Luyn tp: Hin th thng tin

No, by gi cc bn hy th s dng nhng hiu bit ca mnh v cch thay i con
tr v rollovers lm mt chng trnh xem no! Chng trnh ny s hin th
nhng thng tin v cc hnh tinh.
Chng ta s c 9 hotspot, mi hotspot l mt hnh tinh, mi hotspot s hin th mt
hp thng tin khi a tr chut ngang qua. Mi hotspot l mt button, v th ngi
dng c th click vo di chuyn n mt frame khc xem nhng thng tin v
hnh tinh .

- u tin, hy to mt movie mi trong Flash. Movie ny s c 10 frame, t frame 2
cho n frame 10 s cha thng tin ca cc hnh tinh. t tn frame 1 l none v
trng vng hin th thng tin.
t 10 button bn tri, mi ci cho mt hnh tinh. Mt movie clip summary s xut
hin hin th thng tin vn tt v cc hnh tinh khi a tr chut ngang qua. Movie
clip ny cng s cha 10 frame: 1 frame trng v 9 frame cha thng tin ca 9 hnh
tinh.
Chng ta cng phi ch vic s dng layer cng rt quan trng, trong v d ny th
chng ta s s dng 3 layer v movie clip summary s c t layer trn cng
- t lnh stop(); vo frame u tin, v cng t trong frame u tin ca movie clip
summary
- No, hy vit code nh!

CODE

on (rollOver) {
summary.gotoAndStop("mercury");
}

on (rollOut) {
summary.gotoAndStop("none");
}


- Nhng button trn s a ngi dng n nhng frame khc nhau xem thng
tin v hnh tinh, chng ta li vit code cho cc button

CODE

on (release) {
gotoAndStop("mercury");
}


Lu rng chng ta c hai frame tn mercury, mt frame timeline chnh v mt
trong movie clip summary
- To mt movie clip thay th con tr chut, v vit code nh sau

CODE

onClipEvent(load) {
Mouse.hide();

this.swapDepths(99999);
}

onClipEvent(enterFrame) {
this._x = _root._xmouse;
this._y = _root._ymouse;
}

onClipEvent(unload) {
Mouse.show();
}


- Tip theo chng ta s lm cho con tr chut thay i khi a con tr ngang qua cc
button. Hy thm on code sau vo phn code ca button

CODE

on (rollOver) {
summary.gotoAndStop("mercury");
cursor.gotoAndStop("over button");
}

on (rollOut) {
summary.gotoAndStop("none");
cursor.gotoAndStop("normal");
}

on (release) {
gotoAndStop("mercury");
}


By gi th movie ca bn xong. Bn hy chy th xem sao

Gi th 14: Thnh phn Scroll, Scrolling
Mc d scrollbar rt quen thuc trong cc ng dng Mac, Windows, cc trnh duyt
web nhng my ai hiu c n hot ng nh th no. L do n gin l do y l
mt trong nhng thnh phn trc quan, rt d xy dng m khng cn phi vit code
nhiu. Mi ngi s dng n nhng khng suy ngh nhiu v n.
Kt qu l khi nhng nh pht trin s dng Flash to ra nhng scrollbar ca ring
h th gp kh khn. V vy, chng ta hy cng nhau tm hiu 4 thnh phn c bn
ca mt scrollbar v hy tm hiu scrollbar l g.
Hnh di y cho chng ta thy nhng thnh phn c bn ca mt scrollbar l: mi
tn ln, mi tn xung, thanh trt v khay trt.


Thanh trt (Slider)

Thanh trt phc v nhiu mc ch. u tin, thanh trt s trt trn khay trt
cho chng ta thy v tr ca khi vn bn chng ta ang xem. Nu thanh trt trn
cng th chng ta ang xem dng u tin ca vn bn, cn nu thanh trt cui th
chng ta ang xem dng cui cng.
Nh ni, thanh trt s c kp cht v trt trn khay trt. Khi chng ta ko
thanh trt trt trn khay trt th khi vn bn s c cp nht v tr thch hp.
Mi y, scrollbar c thm mt c tnh mi. Thay v kch thc ca thanh trt s b
gn sn vi mt gi tr th kch thc ny s c thay i ty vo di vn bn. V
th, v tr u tin ca thanh trt s ng vi dng u tin ca vn bn v v tr cui
cng s ng vi dng cui cng. V d mt textbox c scrollbar hin th c 10 dng
ca mt vn bn c 100 dng th chiu cao thanh trt s l 10% so vi khay trt.
Nhng chng ta s khng bn vn ny y.

Khay trt (Bar)
Khay trt c chc nng chnh l cha thanh trt v cho thanh trt trt trn n.
Chiu di ca khay trt ph thuc vo di ca vn bn. Khay trt cn c mt
chc nng na l khi ta click vo khay trt th khi vn bn s di chuyn mt trang.
Khi click vo phn trn ca thanh trt th khi vn bn s di chuyn n trang trc,
cn nu click vo phn di thanh trt th khi vn bn s di chuyn n trang sau.

Cc mi tn
Mi tn ln v xung l hai thnh phn n gin nht ca scrollbar, n ch c chc
nng cho ngi dng di chuyn khi vn bn tng dng mt.

Nhng thuc tnh chung

Scrollbar c mt s thuc tnh chung m chng ta cn phi xem xt. u tin, cc
thnh phn ca scrollbar ch hot ng khi chng ta click vo, v s tip tc hot ng
cho n khi chng ta th nt chut ra. Ly v d: nu ngi dng click vo mi tn
xung di chuyn mt khi vn bn th khi vn bn s di chuyn tng dng mt
cho n khi chng ta th nt chut ra.
Mt vn na l v tr thanh trt phi c cp nht lin tc khi nhng thnh phn
khc c kch hot.

Scroll mt vn bn

u tin, chng ta m khung Properties ra t tn li cho text field. Nh trong hnh
di y, chng ta s t tn cho text field l scrollText

Sau , chng ta c th vit code cho n ly d liu vo. Nhng trc ht cn t cho
text field ca chng ta mt scroll.
Khi chn vo text field ri th bn c th thay i kch thc ca text field bng
cch ko hnh vung gc di bn phi ca text field. Cn nu khng t kch
thc th text field s va hiu th ni dung bn trong.
Thay v iu chnh bng hnh vung mu trng th lc , chiu cao ca text field s
c t iu chnh theo kch thc ni dung bn trong, c ngha l nu vn bn bn
trong text field c nhiu dng th chng ta khng th lm cho text field ch hin
mt vi dng scroll. Mun l xut hin scroll th chng ta hy gi phm Shift v
click vo hnh vung trng tr thnh hnh vung en, lc ny chng ta c th
iu chnh kch thc text field theo mun. Nh vy l chng ta kch hot scroll
cho text field. Cn mt s thuc tnh khc lien quan n scroll nh
Thuc tnh scroll s cho chng ta bit dng no trong vn bn s xut hin u tin.
VD nh scroll = 1 th dng u tin s c hin th u tin, nu scroll = 2 th dng
th hai s hin th v lc ny th dng 1 s khng thy c.
Thuc tnh maxscroll cho chng ta bit gi tr ln nht ca scroll
Thuc tnh scroll v bottomscroll cho chng ta bit chnh xc dng vn bn no trn
u v dng no cui
scroll vn bn ln hay xung bn cn phi tng hoc gim gi tr ca scroll. Th l
xong!

Luyn tp: Thit k mt chng trnh scroll vn bn n gin

Bi tp ny tht ra rt d. Trong v d di y, chng ta s xy dng mt chng
trnh vi mt text field dynamic cha vn bn v hai button nh hnh di y

- Tm mt on vn bn no dn vo text field (tm on no di di t )
- By gi hy to mt movie mi trong Flash
- S dng cng c Text Tool to mt text field
- M phn Properties ra v t tn cho text field ca chng ta l scrollText. t thuc
tnh Mutiline v Show Border Around Text
- Dn on vn bn m bn chun b vo text field
- To hai button ging nh hai hnh v trn. Mt button iu khin i ln, mt
i xung.
- Nhp on code sau cho button i ln:

CODE

on (press) {
scrollText.scroll--;
}


- V nhp on code ny cho button i xung:

CODE

on (press) {
scrollText.scroll++;
}


- Ok, by gi bn hy chy th movie ca mnh xem sao. Bn hy th click vo
button scroll vn bn

Gi th 15: Cc thnh phn nhp liu
Cc bn c th to c nhiu thnh phn nhp liu bng Action Script, chc hn cc
bn gp cc thnh phn ny trong cc th HTML. Trong chng ny, cc bn s
hc cch lm checkbox, radiobutton bng Action Script. Bn cng s hc c cch
lm sao chuyn t thnh phn ny sang thnh phn khc trong form bng cch
nhn nt TAB, v lm sao hn ch ni dung ngi dng nhp vo
Cc ni dung trong chng ny:
- Cch to checkbox
- Cch to radiobutton
- S dng TAB chuyn t thnh phn ny sang thnh phn khc
- Hn ch ni dung nhp liu

To Checkbox

Trong Hour 8, cc bn bit cch to mt selectable movie clip. CheckBox cng l
mt Selectable movie clip ging vi cc checkbox chun s dng trong cc h iu
hnh Mac v Windows.
to ra mt Checkbox bn cn 2 button v 1 movie clip. Button u tin th hin
trng thi Off ca Checkbox, c ngha l khi checkbox cha c chn. Mt button
th hin trng thi On, c ngha l cng checkbox nhng c chn.
Hnh di y l 3 checkbox lm v d.

Check box u tin ang c chn, ci th 2 cha c chn, ci th 3 th ngi
dng ang chun b chn.
Cc bn c bit cch no cho 3 thnh phn ca checkbox hot ng chung nh vy
c khng? Rt n gin, button Off s c a vo mt movie clip ring t
frame u tin, bm F6 to frame k tip v t button On vo frame th 2. t tn
frame 1 l Off, frame 2 l On. Tip theo, cho mt cu lnh stop(); vo frame 1
dng movie clip li ngay . Trong mi button s c mt on code gi mt hm
ngoi time line ca movie clip c cha 2 button x l khi mi nt c nhn.

CODE
on (release) {
pressButton();
}


Ngoi ra, trong frame Off (frame 1) s cn cha mt on code na ngoi cu lnh
stop();

CODE
state = false;

function pressButton() {
state = !state;
if (state) {
gotoAndStop("on");
} else {
gotoAndStop("off");
}
}


Bin state kim tra trng thi ca checkbox. Khi click mt button th hm
pressButton s c gi. Trong , s i li trng thi ca state, c ngha l lc u
l false (cha chn), sau khi click s thnh true ( chn). Tip theo, hm pressButton
s kim tra gi tr ca bin state a ngi dng n frame thch hp. Nu state =
true th s nhy n frame On, cn nu state = false th s nhy n frame Off.

To RadioButton

Vic to mt Radiobutton s phc tp hn mt cht so vi checkbox. Cc
Radiobutton s c gom vo mt nhm c quan h vi nhau.
Checkbox c s dng trong nhng trng hp chn la khng c tnh loi tr, c
ngha l ngi dng c th chn nhiu checkbox. Ngc li, Radiobutton c s
dng trong nhng trng hp c tnh loi tr, c ngha l trong mt nhm
Radiobutton th ch c mt checkbox c chn ti mt thi im, khng c chuyn 2
Radiobutton u c chn. Nu bn chn mt RadioButton, khi bn chn qua
mt Radiobutton khc th chn la c s t ng mt i, chuyn qua Radiobutton
mi.
Hnh di y l mt nhm Radiobutton

RadioButton u tin ang c chn, nhng ngi dng ang chun b chn
RadioButton th 2, nu ngi dng chn RadioButton 2 hoc bt k ci no khc th
RadioButton u tin s t ng mt chn la.
Mt RadioButton n gin cng tng t nh mt Checkbox, mt movie clip c 2
frame cha 2 button biu hin 2 trng thi ca RadioButton. Frame u tin cha
mt vng trn rng, frame th 2 ch mt vng trn vi du chm trn gia.
im khc nhau gia Checkbox v RadioButton chnh l code ca chng. Code ca
RadioButton s phc tp hn code ca CheckBox.
Phn u code ca Radiobutton s c vit frame u tin. N c vit ngoi,
khng nm trong hm no c, iu ny c ngha l on code ny s chy khi load
movie clip.

CODE
stop();

// kim tra c phi l RadioButton u tin trong nhm hay khng
if (_parent.radioButtons == undefined) {
// to mt array RadioButton
_parent.radioButtons = new Array();

// RadioButton u tin mc nh c chn
gotoAndStop("on");
state = true;
} else {
// cc RadioButton khc khng c chn
state = false;
}

// chn array RadioButton ra ngoi level ngoi
_parent.radioButtons.push(this);


Khi ngi dng click vo button, th hm turnOn s c gi. iu u tin l hm
turnOn s duyt qua tt c cc RadioButton (cc movie clip), gi hm turnOff cho
tng RadioButton. Ni n gin c ngha l khi click vo mt RadioButton th trc
tin tt c cc RadioButton trong nhm u quay v trng thi Off, sau s chuyn
trng thi ca RadioButton c chn thnh On.

CODE
function turnOn() {
// chuyn tt c thnh OFF
for(var i=0;i<_parent.radioButtons.length;i++) {
_parent.radioButtons[i].turnOff();
}

// chuyn RadioButtond c chn thnh ON
gotoAndStop("on");
state = true;
}


Tip theo l on code cho hm turnOff()

CODE
function turnOff() {
gotoAndStop("off");
state = false;
}


Tip theo l xy dng hm getValue() kim tra xem RadioButton no ang c
chn. Hm ny s c mt movie khc gi. Hm ny rt n gin, n s duyt qua
tt c cc RadioButton trong array RadioButton xem ci no ang c chn.

CODE

function getValue() {
// duyt tt c cc RadioButton
for(var i=0;i<_parent.radioButtons.length;i++) {
// tm RadioButton no ang c chn
if (_parent.radioButtons[i].state) {
return(_parent.radioButtons[i]._name);
}
}

// nu khng c ci no c chn th tr v mt chui rng
return "";
}



Luyn tp: Chng trnh trc nghim

By gi hy cng nhau p dng nhng th hc c v CheckBox v RadioButton
lm mt chng trnh trc nghim n gin nh. Mi frame s cha mt cu hi
ring.
V d frame u tin s cha cu hi nh hnh di y, v c nhng cu tr li
di

Bt u nh
- To mt movie mi trong Flash
- To Checkbox nh c hc ri .
- Ri sau ko to 5 bn ca movie clip checkbox vo, t tn l: Flash, Director,
Fireworks, Freehand, and Dreamweaver.
- To cc cu tr li v mt static text k bn Checkbox nh hnh trn.
- To mt button Next chuyn n cu hi tip theo.
- Chn on code sau vo frame u tin

CODE
results = new Array();
stop();


on code trn c nhim v to mt mng results lu kt qu ca cc cu tr li,
ng thi cng dng movie ti y.
- Khi nhn nt Next th s chuyn sang cu hi tip theo v lu cu tr li hin thi
vo mng results

CODE
on (release) {
if (Flash.state) results.push("Flash");
if (Director.state) results.push("Director");
if (Fireworks.state) results.push("Fireworks");
if (Freehand.state) results.push("Freehand");
if (Dreamweaver.state) results.push("Dreamweaver");
nextFrame();
}


- Tip theo, trong frame th hai s l cu hi th hai. V cu hi th hai ch cho chn
mt la chn nn chng ta s s dng RadioButton nh hnh di y

- To RadioButton nh phn trc ri a vo movie 3 ci tn: Windows, Macintosh,
and Linux
- Chn ni dung cu tr li vo lun nh hnh trn
- Copy nt Next vo frame 2 nhng chng ta s thay on code bng mt on code
khc.

CODE
on (release) {
results.push(Windows.getValue());
nextFrame();
}


on code trn s dng hm getValue kim tra xem RadioButton no ang c
chn
- Ok, n y th bn t lm tip nhng cu hi tip theo nh, tng t nh vy thi.
Nhng m hy nh l tn cc thnh phn phi khc nhau nh. Cc bn cng c th s
dng hm trace a kt qu nhng cu tr li ra ca s Output xem.
- Trong Hour 18, cc bn s hc v cch a d liu ln server, khi cc bn c th
ci tin chng trnh ny a cu tr li ln server kim tra.

S dng Tab chuyn t thnh phn ny sang thnh phn khc

Nhng ngi s dng Flash 5 lun than phin v vic khng th s dng tab
chuyn i gia cc thnh phn nh vy. Cng vic chuyn i bng cch nhn phm
Tab ny c gi l Tab Order, chng ta thng thy vic ny trong hu ht cc
chng trnh chuyn nghip, v d nh trong mt trnh duyt web, iu ny s mang
li nhiu thun tin cho ngi s dng, n s chuyn n thnh phn logic tip theo
trong chng trnh.
Tuy nhin, s la chn thnh phn logic tip theo ca Flash khng phi lc no cng
ng. V th, Flash ch c th cha v tr ca thnh phn m thi. Ly v d nh trong
hnh bn di, Flash s hiu rng thnh phn tip theo thnh phn u tin s l ci
di n ch khng phi l ci k bn.

May mn l chng ta c th t li Tab order cho cc thnh phn bng cch t li
thuc tnh tabIndex. Nu chng ta c 4 text field nh hnh trn: text1, text2, text3,
text4 th chng ta c th s dng on code sau:

CODE
text1.tabIndex = 1;
text2.tabIndex = 2;
text3.tabIndex = 3;
text4.tabIndex = 4;


iu ch khi s dng tabIndex l phi ch n label ca cc textfield v trnh s
dng li mt s nhiu ln, iu ny s lm cho Flash b ln ln.
Mt iu na l cho d l mc nh ca Flash hay l bn s dng tabIndex th Flash
cng khng t ng t focus cho thnh phn u tin, v th, bn phi t lm iu
ny. lm c nh vy, bn s dng mt lnh trong i tng Selection bo
cho Flash bit thnh phn mc nhc t focus

CODE
Selection.setFocus(text1);


Bn c th s dng lnh Selection.setFocus bt c lc no cng c chuyn n
mt thnh phn mong mun. Vic ny s rt quan trng, bn s t con tr vo
textfield thay v bt ngi dng phi click vo textfield trc khi g.
Bn c th s dng Selection.getFocus kim tra xem thnh phn no ang c
focus. on code di y s l mt v d. Khi ngi dng chuyn focus sang mt
thnh phn khc th bn s bit ngi dng chuyn n u.

CODE
Selection.addListener(this);
this.onSetFocus = function(oldFocus, newFocus) {
trace(oldFocus+","+newFocus);
}



Hn ch nhp liu

Khi ngi dng nhp d liu vo mt textfield, cng c lc bn mun hn ch vic
nhp liu . V d trong nm sinh, bn ch mun ngi dng nhp s vo, khng
cn phi nhp ch. Bn c th hn ch nhng k t c php nhp vo textfield
bng cch t gi tr ca thuc tnh restrict ca textfield . Nu khng t gi tr th
textfield c th nhn tt c cc k t. Nhng nu thuc tnh restrict ca textfield l
mt chui k t th ch c nhng k t trong chui mi c chp nhn. Di y
l mt v d v hn ch nhp liu, ngi dng ch c th nhp s m thi

CODE
text1.restrict = "01234567890";


Cn di y l mt v d na nu nhp liu l email

CODE
text2.restrict = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";


Mt iu ch l c cc k t in hoa v in thng u c chp nhn trong text2
Bn cng c th hn ch s k t c php nhp vo mt textfield. Ci ny bn cng
c th khng cn phi dng AS, c th t thuc tnh trc tip trong khung Properties

CODE
text1.restrict = "01234567890";
text1.maxChars = 4;



Luyn tp: Kim tra d liu nhp

By gi chng ta s lm mt chng trnh gm mt form nhp liu, yu cu nhp vo
tn, nm sinh, email. V chng ta s kim tra cc thng tin nhp vo ny
Tn ngi dng t nht phi c 3 k t. Nm sinh phi c 4 s v l nhng nm
trong khong 100 nm trc n nay. Cn email t nht phi c 7 k t v c dng
a@b.c, a, b c th l tu nhng c phi c t nht l 3 k t v bt buc phi c k
hiu @. l nhng yu cu c bn. No, bt u nh!
- To mt movie mi
- To 3 textfield cho cc ni dung nu trn, t tn l userName, userYear, v
userEmail. t cc variable tng ng l userNameText, userYearText, and
userEmailText. Bn cng cn phi to mt dynamic textfield lin kt vi variable
feedback. To mt nt Submit. Movie ca bn s ging nh hnh di ny nh

- t on code sau vo frame u tin dng li v thit lp cc thuc tnh hn
ch nhp liu

CODE
stop();

// hn ch chiu di ti a ca tn l 64 k t
userName.maxChars = 64;

// nm sinh phi c 4 s
userYear.restrict = "01234567890";
userYear.maxChars = 4;

// hn ch d liu email
userEmail.restrict = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
userEmail.maxChars = 128;


- Tip theo l t con tr vo text field userName lc movie mi bt u

CODE
Selection.setFocus(userName);


- kim tra khi no ngi dng nhp liu xong, chng ta s thm mt listener
bt event nh on code di y

CODE
Selection.addListener(this);


N s bo cho chng ta bit khi no xy ra event onSetFocus
- Tip theo t gi tr ca bin ignoreSetFocus l False, chng ta s s dng n bin
ny sau

CODE
ignoreSetFocus = false;


- Tip theo chng ta vit hm onSetFocus bt event.

CODE
this.onSetFocus = function(oldFocus, newFocus) {
// this is a focus reset, so ignore
if (ignoreSetFocus) {
ignoreSetFocus = false;
return(0);
}
// use the appropriate check function
if (oldFocus == userName) {
ret = checkUserName();
} else if (oldFocus == userYear) {
ret = checkUserYear();
} else if (oldFocus == userEmail) {
ret = checkUserEmail();
}

if (!ret) {
// ignore this focus change and go back
ignoreSetFocus = true;
Selection.setFocus(oldFocus);
}
}


Hm ny s nhn hai i s. i s th nht l textfield trc khi chuyn focus v i
s th hai l textfield sau khi chuyn focus. Hm checkUserName s kim tra tn
ngi dng

CODE
// tn phi c t nht 3 k t
function checkUserName() {
if (userNameText.length < 3) {
feedback = "Bn phi nhp t nht 3 k t"
return(false);
}

// quay tr li feedback
feedback = "";
return(true);
}


Hm checkUserYear s kim tra nm nhp vo

CODE
// nm phi t khong 100 nm n nay
function checkUserYear() {
// ly nm
today = new Date();
thisYear = 1900+today.getYear();

// kim tra nhp
if (parseInt(userYearText) == Math.NaN) {
feedback = "Bn phi nhp nm sinh.";
return(false);

// nu nm sinh qu sm (khng tht)
} else if (parseInt(userYearText) < thisYear-100) {
feedback = "Bn phi nhp ng nm sinh, t 100 nm trc n nay";
return(false);

// nu nm sinh l trong tng lai :)
} else if (parseInt(userYearText) > thisYear) {
feedback = "Bn phi nhp ng nm sinh";
return(false);
}

// quay tr li
feedback = "";
return(true);
}


Tip theo l hm chechUserEmail kim tra email

CODE
// kim tra email
function checkUserEmail() {
if (userEmailText.length < 7) {
feedback = "Email qu ngn";
return(false);
} else if (userEmailText.indexOf("@") == -1) {
feedback = "Thiu k t @";
return(false);
} else if (userEmailText.indexOf(".") == -1) {
feedback = "Thiu du chm (.)";
return(false);
} else if (userEmailText.indexOf("@") > userEmailText.indexOf(".")) {
feedback = "@ v du chm khng ng";
return(false);
} else if (userEmailText.lastIndexOf(".") > userEmailText.length-3) {
feedback = "Domain khng hp l"
return(false);
}

// quay tr li
feedback = "";
return(true);
}


- Th l kim tra d liu xong. By gi chng ta s dng cc hm ny kim tra
d liu nhp vo v xut ra kt qu. Hm sau s kim tra tng nhp liu, nu mt
trong nhng trn sai th s tr v kt qu false, cn ng ht s l true

CODE
function checkAll() {
if (!checkUserName()) {
return(false);
} else if (!checkUserYear()) {
return(false);
} else if (!checkUserEmail()) {
return(false);
}

return(true);
}


- By gi chng ta vit code cho nt Submit. Khi nhn nt Submit th s gi hm
CheckAll v a sang frame tip theo vi li cm n.

CODE
on (release) {
if (checkAll()) {
nextFrame();
}
}

Gi th 16: Menu v button ng
Menu h thng rt quen thuc vi cc chng trnh my tnh hin nay. H iu
hnh ca chng ta v ngay c Flash u c mt h thng menu trn u. Menu l
mt cch tt a ra nhiu la chn cho ngi dng m li t tn din tch mn
hnh.
Trong gi th 16 ny, chng ta s hc v:
- Cch lm mt menu n gin
- S dng menu trong movie
- To mt menu x xung khi chng ta click vo mt nt
- Cch to button ng
- S dng button ng trong movie

Cch lm mt menu n gin

Nhng bn mi lm quen vi AS thng mun bit cch to menu. Tht ra to mt
menu rt n gin, chng ta tng bit qua ri, hoc c th cc bn khng .
Cch thc hot ng ca n l c mt button, v khi ngi dng a con tr qua
button th mt lot nhng button khc s xut hin ln lt bn di button to
thnh mt dy menu. Hnh di y l mt v d

Khi chng ta a con tr ngang qua nt About Us th mt lot nhng button khc s
xut hin nh hnh bn phi. Nh vy, chng ta cn c 2 frame trong movie clip lm
menu. Frame th nht s ch cha button About Us, frame th hai s cha button
About Us v 3 button cn li. frame th nht, khi ngi dng a con tr ngang
qua button About Us th s nhy sang frame th 2 v dng li frame 2 cho n khi
ngi dng a con tr chut ra ngoi, khi th s tr v frame 1. Nu , cc bn
s thy cch ny ging nh chng ta c hc Gi th 13 v RollOver. Chng ta
s dng hm hitTest kim tra xem v tr ca con tr chut c nm trong button
khng. Di y l on code x l vic ny. Chng ta cng xem nh!

CODE
onClipEvent(load) {
previouslyOver = false;
}

onClipEvent(enterFrame) {
// kim tra v tr con tr
currentlyOver = this.hitTest(_root._xmouse,_root._ymouse,true);

// kim tra s thay i
if (!previouslyOver and currentlyOver) {
previouslyOver = true;
this.gotoAndStop("on");
} else if (previouslyOver and !currentlyOver) {
previouslyOver = false;
this.gotoAndStop("off");
}
}


Hy ch , nu bn s dng AS qun l nhng thnh phn khc c t chung
trong frame, hy chc rng bn phi a menu ln trn cng bng cch s dng hm
swapDepths

Luyn tp: Lm mt menu

No, chng ta bt tay vo lm th mt menu n gin nh! Menu chnh ca chng ta
s c 3 phn: About Us, Products v Store, mi menu li cha nhiu menu con.
- Vic u tin l to mt movie mi trong Flash
- To mt button n gin thi, button ny khng nn c ch, v nh cha ch trng
chng ta a ch vo sau
- To movie clip mi, t tn l About Us Menu. To hai layer, mt l Label v mt
l Buttons
- Trong layer Buttons, ko button va to vo. t dng ch About Us ln trn
- Layer Label s tri ra trn 2 frame. Nhng 2 frame trong layer Buttons s khc nhau,
frame u t tn l off, frame 2 t tn l on.
- Trong frame th hai ca layer Buttons, ko thm 3 button na vo v to ni dung
cho chng l History, Clients, v Partners. Nh t cu lnh stop() vo frame u tin.
Movie clip ca chng ta by gi s ging nh hnh bn di

Quay tr li level root, ko movie clip About Us Menu t Library vo, t tn l
aboutUsMenu, v chn on code sau:

CODE
onClipEvent(load) {
previouslyOver = FALSE;
}

onClipEvent(enterFrame) {
currentlyOver = this.hitTest(_root._xmouse,_root._ymouse,true);

if (!previouslyOver and currentlyOver) {
previouslyOver = true;
this.gotoAndStop("on");
} else if (previouslyOver and !currentlyOver) {
previouslyOver = false;
this.gotoAndStop("off");
}
}


- By gi hy chy th movie ca bn xem no. a con tr vo button About Us
xem iu g xy ra!
- Phn vic cn li l ca bn . Lm tng t cho cc menu cn li!

To mt menu x xung khi chng ta click vo mt nt

C nhiu cch lm menu x xung, v cng c nhiu cch menu hot ng. Chng
ta bit mt cch trong v d phn trc, khi ngi dng a con tr ngang qua mt
button th mt lot button khc s xut hin dc bn di to thnh mt menu, n
gin ch bng 2 frame.
Menu x xung s hot ng theo mt cch khc: khi ngi dng click vo mt
button, mt lot menu s xut hin nhng ngi dng phi gia chut v ko con tr
chn cc menu con, mun chn menu no th th chut ti menu . Chng ta hy
nghin cu m x menu x xung ny nh!
Chng ta cng s to 2 frame nh bi trc, frame u cha button l tiu ca
menu, frame hai cha cc button xp dc xung thnh mt h thng menu khi tiu
ca menu c click. Tuy nhin cch vit code s khc i!
y l code cho button lm tiu cho menu

CODE
on (press) {
expandMenu();
}

on (release, releaseOutside) {
collapseMenu();
}


Khi ngi dng click vo button th n s gi hm expandMenu(), khi ngi dng th
chut ra th n s gi hm collapseMenu()
Ngoi ra th chng ta cn s dng cc event on(dragOver) v on(dragOut), hai event
ny cng ging vi on(rollOver) v on(rollOut) nhng m phi gi chut trong khi di
chuyn

CODE
on (dragOver) {
rollOverMenu();
}

on (dragOut) {
rollOutMenu();
}


Button tiu gi 4 hm expandMenu(), collapseMenu(), rollOverMenu(),
rollOutMenu(), by gi chng ta s vit cc hm ny, t chng trn frame nh! Hm
expandMenu() s t gi tr cho bin expanded l true v nhy sang frame th hai

CODE
function expandMenu() {
expanded = true;
gotoAndStop("on");
}


Hm collapseMenu() s lm ngc li

CODE
function collapseMenu() {
expanded = false;
gotoAndStop("off");
}


Hm rollOverMenu s kim tra bin expanded v s di chuyn n frame thch hp
nu expanded = true. C ngha l khi ngi dng click chut vo button tiu th
menu s x xung v ngi dng phi gi chut trong lc di chuyn chn, nu th
chut ra th menu s thu li.

CODE
function rollOverMenu() {
if (expanded) {
gotoAndStop("on");
}
}

function rollOutMenu() {
if (expanded) {
gotoAndStop("off");
}
}


Chng ta s vit code tip cho cc menu x xung. Chng u l cc button, v chng
ta s vit event on(release) cho chng bt s kin khi ngi ngi th chut trn
button , c ngha l ngi dng chn menu . Khi , n gi hm collapseMenu()
ri thc hin cng vic ca mnh, y n gin ch gi hm trace. Chng ta cng
vit event on(dragOver) v on(dragOut) cho cc button ny gi menu li khi ngi
dng gi chut v ko qua cc button cng nh s thu menu li khi ngi dng th
chut ra hoc ko ra ngoi.

CODE
on (release) {
collapseMenu();
trace("History Button Pressed");
}

on (dragOut) {
rollOutMenu();
}


iu cui cng cn phi lm l phi thay i thuc tnh cho cc button. Trong phn
khung properties ca button, chuyn Track as Button thnh Track as Menu Item. iu
ny s lm cho button nhn c s kin release thay v s nhn press trc.
Cn c rt nhiu cch lm menu, n ph thuc vo mc ch s dng ca bn v
kh nng s dng AS ca mi ngi

Button ng

Mt cch khc cng tng t lm menu x xung l s dng button ng. Chng
ta c th lm mt menu x xung m khng cn phi lm cch button trc, chng ta
s c t sinh ra bng AS , th v nh.
iu u tin cn phi lm l to mt button mu. Tip theo, t button vo trong mt
movie clip, movie clip ny s c hai thnh phn, mt l button v hai l dynamic text
trn button, dynamic text s c lin kt vi bin buttonLabel. Trong ca s
Library, click chut phi ln tn movie clip v chn Linkage. Nh chn mc Export
for Actionscript v t tn cho n l buttonMovieClip. c ri, by gi chng ta
c mt button mu, tip theo chng ta s s dng AS s dng button ny. Vic ny
cng rt n gin, chng ta s dng lnh attachMovie to mt instance ca movie
clip v t li gi tr cho dynamic text trong movie clip, v t li v tr ca n bng
cch t cch thuc tnh _x, _y.

CODE
function createButton(buttonLabel, x, y) {
this.attachMovie("buttonMovieClip","button"+buttonLevels,buttonLevels);
bmc = this["button"+buttonLevels];
bmc.buttonLabel = buttonLabel;
bmc._x = x;
bmc._y = y;
buttonLevels++;
return(bmc);
}


c ri, hy th movie ca bn xem no
Bn c th to ra hng lot button ng bng cch gi mt lot hm createButton,
hoc chng ta s lu cc tn button vo mt mng ri dng vng lp for gi hm
createButton.
Nhng c mt vn cn gii quyt l lm th no x l ring cho tng button.
Nu vit code ngay trong button th cc button s nh nhau. Vy lm cch no lm
cho cc button c th x l nhng cng vic khc nhau? Button s gi nhng hm t
ngoi root, nh vy th mi button c th gi mt hm khc nhau, iu ny cng c
ngha l chng s thc hin nhng vic khc nhau

Luyn tp: S dng button ng to menu

- To mt movie mi trong Flash
- To button mu nh trong phn trc, t on code sau vo button

CODE
on (rollOver) {
_parent.buttonRolloverAction(thisAction,buttonLabel);
}

on (release) {
_parent.buttonClickAction(thisAction,buttonLabel);
}


iu ny c ngha l khi button s gi hm buttonRollOverAction khi a chut qua,
v gi hm buttonClickAction khi click chut. Hai i s ca n s gip bo button
no c click
- Di y l hm createButton to button ng, nhng ln ny chng ta s to mt
lot button t mt mng lu sn

CODE
function createButton(buttonLabel, x, y, buttonAction) {

this.attachMovie("buttonMovieClip","button"+buttonLevels,buttonLevels);
bmc = this["button"+buttonLevels];
bmc.buttonLabel = buttonLabel;
bmc._x = x;
bmc._y = y;
bmc.thisAction = buttonAction;
buttonLevels++;
return(bmc);
}

// To mt lot button t mng
function createButtonList(buttonList, x, y, direction) {
for (var i=0;i<buttonList.length;i++) {
ret = createButton(buttonList[i].label,x,y, buttonList[i].action);
buttons[i].mc = ret;
if (direction == "down") {
y += 20;
} else if (direction == "across") {
x += 100;
}
}
}


- Cn y l cch to mng to button

CODE
mainButtonList = new Array();
mainButtonList.push({label:"About Us", action:"aboutUsButtonList"});
mainButtonList.push({label:"Products", action:"productsButtonList"});
mainButtonList.push({label:"Store",action:"storeButtonList"});


- Cng vic tip theo l gi hm createButtonList to button

CODE
buttonLevels = 1;
createButtonList(mainButtonList,100,100,"across");


- Nu bn th chy movie lc no th chng ta s thy 3 button c to nhng m s
cha lm g khi a chut ngang qua hay click vo. By gi chng ta s vit hm
buttonRollOverAction x l

CODE
function buttonRolloverAction(thisAction,thisLabel) {
if (thisAction == "aboutUsButtonList") {
deleteAllButtonLists();
createButtonList(aboutUsButtonList,100,120,"down");
} else if (thisAction == "productsButtonList") {
deleteAllButtonLists();
createButtonList(productsButtonList,200,120,"down");
} else if (thisAction == "storeButtonList") {
deleteAllButtonLists();
createButtonList(storeButtonList,300,120,"down");
}
}


- Hm buttonRollOverAction gi hm createButtonLists vi cc i s khc nhau l
mt trong 3 mng c nh ngha di y

CODE
aboutUsButtonList = new Array();
aboutUsButtonList.push({label:"History", action:"goto"});
aboutUsButtonList.push({label:"Clients", action:"goto"});
aboutUsButtonList.push({label:"Partners", action:"goto"});

productsButtonList = new Array();
productsButtonList.push({label:"Widgets", action:"goto"});
productsButtonList.push({label:"Toys", action:"goto"});
productsButtonList.push({label:"Power Tools", action:"goto"});

storeButtonList = new Array();
storeButtonList.push({label:"Order Online", action:"goto"});
storeButtonList.push({label:"Find a Store", action:"goto"});
storeButtonList.push({label:"Request Catalog", action:"goto"});
storeButtonList.push({label:"Track Shipment", action:"goto"});
storeButtonList.push({label:"Return Item", action:"goto"});


- Hm deleteAllButtonLists s lm bin mt cc button c to, c ngha l tt c
cc menu trong 3 mng va to s bin mt v s ch xut hin mt mng ti mt thi
im m thi. Hy tng tng ci menu ca chng ta trong Flash, khi a con tr
n menu File th menu File x xung, nhng khi a sang Edit th menu File s thu
li v menu Edit x xung
Trc , chng ta phi c on code sau ch tng menu n cc mng menu con

CODE
allButtonLists = new Array();
allButtonLists = [aboutUsButtonList,productsButtonList,storeButtonList];


Tip theo chng ta s vit hm deleteButtonList v deleteAllButtonLists

CODE
function deleteButtonList(buttons) {
for (var i=0;i<buttons.length;i++) {
buttons[i].mc.removeMovieClip();
}
}

function deleteAllButtonLists() {
for(var i=0;i<allButtonLists.length;i++) {
deleteButtonList(allButtonLists[i]);
}
}


By gi hy chy th movie ca chng ta nh. Bn thy sao? Tuyt vi phi khng
no

Gi th 17: Lin kt v lin lc vi trnh duyt, Browser Navigation and
Communication
Khi thit k Flash, bn c 2 s la chn, c th nhng vo mt trang web hoc lm
mt application c th t chy ring. Nu bn nhng vo mt trang web th movie ca
bn c th lin lc vi trnh duyt bo cho trnh duyt cn phi lm g.

Trong gi th 17, cc bn s hc c:
- Cch load mt trang web
- Tm hiu cch lin lc vi JavaScript
- M mt ca s trnh duyt mi t movie
- S dng JavaScript gi thng ip n movie
- Lu thng tin ngi dng vo JavaScript cookies
- To movie s dng JavaScript
- Nhng cu lnh c bit cho nhng application t chy

Load mt trang web

Ngy nay th Flash c s dng rt nhiu trong cc website. N c s dng
lm trang ch hoc l to nhng thanh lin kt (navigation bar) Cng c lc,
chng ta cn load mt trang web mi t movie Flash.

Cch n gin
Bn c th load mt trang web mi bng cch s dng cu lnh getURL. N hot
ng ging nh th <a href> ca HTML. Di y l mt v d khi nhn mt
button th s load mt trang web mi thay th cho trang hin ti:


CODE
on (release) {
getURL("anotherpage.html");
}



v d trn th trang anotherpage.html s c load. Bn c th thay bng mt URL
hon chnh (nh l http://www.yahoo.com) lin kt n mt website khc hoc
ng dn tng i lin kt n nhng trang trong cng mt website.
Khng cn s dng AS, chng ta cng c th to c lin kt nh vy bng cch t
thuc tnh hypertext links ca TextField, ci ny tht ra ging ht nh l th <a
href> ca HTML

Cch nng cao
Cch ny bn cng s dng hm getURL vi mt cch khc xc nh ni s load
trang web ln l trong frame no hoc l trong window no. Nh chng ta bit th
mi frame v mi window u c tn, chng ta s truyn tn ny vo i s th 2 ca
hm getURL.
Trong v d di y, trang web ca bn s c nhiu frame, trong c frame tn l
Main, trang web mi s c load trong frame Main ny


CODE
on (release) {
getURL("summary.html","Main");
}



Bn cng c th s dng on code trn load trang web vo window tn Main.
Ngoi ra, bn cn c th s dng nhng i s c bit truyn vo thay cho tn:
- _blank : m mt window mi v load trang web vo window
- _parent : load trang web vo frame cha ca frame hin ti
- _top : load trang web vo window c, khng k ang frame no m s thay th tt
c cc frame trong window

Nu bn mun thay i nhng thit lp ca window nh kch thc th bn phi s
dng JavaScript. Chng ta s ni v vn ny sau

Luyn tp: Lm thanh lin kt (navigation bar)

By gi th bn kh nng lm mt thanh lin kt bng Flash s dng AS, nhng
bn cn phi c thm nhng kin thc khc v HTML.
Thanh lin kt ca chng ta s t frame bn tri ca trnh duyt, frame bn phi s
cha ni dung.
Movie lm bng Flash s cha mt s button lin kt sang cc trang web khc.
- u tin chng ta s to mt trang HTML cha 2 frame, trang ny tn l
navigation.html

CODE
<HTML><HEAD>
<TITLE>Flash Navigation Example</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">

<FRAMESET cols="120,*">
<FRAME name="navigation" src="navbar.html" scrolling="no">
<FRAME name="content" src="content1.html" scrolling="auto">
</FRAMESET>

</BODY>
</HTML>


- Trang HTML trn ch to ra 2 frame, trong mi frame s cha mt trang HTML
khc. By gi chng ta s to 2 trang HTML . Chng ta cha cn phi lm trang
HTML cho frame bn tri, v n s c to ra khi chng ta publish movie thnh
HTML. Cn trang HTML trong frame bn phi s c nhiu thay i.
By gi hy to 3 trang HTML n gin tn content1.html, content2.html,
content3.html cha 3 dng ch n gin.

CODE
<HTML><HEAD>
<TITLE>Content 1</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
Content 1
</BODY>
</HTML>


- By gi l cng vic lm vi Flash. To mt movie mi rng 100px, cao 400px. To
3 button v vit code cho cc nt lin kt n 3 trang content1.html, content2.html,
content3.html tng t nh sau:

CODE
on (release) {
getURL("content1.html","content");
}


- Lu movie li vi tn navbar.fla
- Publish movie ra thnh file html
- Tip theo l a tt c cc file vo mt th mc. Cc file s l: navigation.html,
content1.html, content2.html, content3.html, navbar.html, and navbar.swf.
- Hy m trang navigation.html th xem nh

ActionScript v JavaScript

Nu bn quen s dng JavaScript ri th bn s rt vui khi bit rng JavaScript c
th lin lc c vi ActionScript. Tuy nhin, cch ny khng hot ng tt i vi
tt c cc loi trnh duyt.
Vic lin lc ny c xy dng trn 2 cng ngh. Mt l cng ngh LiveConnect
c xy dng trong nhng phin bn trnh duyt Netscape trc phin bn 6.0. Cng
ngh th hai l ActiveX dng lin lc gia Flash v Internet Explorer.
Nhng nu bn ang thit k cho ngi dng s dng trnh duyt ca Windows th
cch ny s rt tt.

Gi thng ip n JavaScript
Gi thng ip t ActionScript n JavaScript th ch cn vit code trong ActionScript
nhng n cng s thay i ni dung trang HTML ca bn .
Nu bn to file Flash bng cch chn FSCommand trong Publish settings, bn s to
c mt file HTML c sa cha y nhn thng ip. Cng vic ca bn
ch l thay th nhng ch c nh du Your code here bng phn JavaScript ca
bn.
hiu r hn cch n lm vic nh th no th chng ta hy cng nhau m x file
html m Flash to ra nh
u tin, hy ch n th OBJECT/EMBED, trong s c mt s phn chp
nhn s lin lc. Tham s ID trong th OBJECT s ging vi tham s NAME trong
th EMBED. Hai tham s ny s t tn cho movie ca chng ta trong trang web
JavaScript c th gi n. Ngoi ra cn c mt tham s khc trong th EMBED, l
tham s swLiveConnect cho php nhng phin bn Netscape trc phin bn 6.0
c th lin lc vi Flash bng cng ngh LiveConnect.


CODE
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/
[ic:cc]flash/swflash.cab#version=5,0,0,0"
ID=flashmovie WIDTH=120 HEIGHT=120>
<PARAM NAME=movie VALUE="17astojs.swf"> <PARAM NAME=quality
VALUE=high> <PARAM
NAME=bgcolor VALUE=#FFFFFF> <EMBED src="17astojs.swf" quality=high
bgcolor=#FFFFFF
WIDTH=120 HEIGHT=120
swLiveConnect=true NAME=flashmovie TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http:
//www.macromedia.com/shockwave/download/
index.cgi?P1_Prod_Version=ShockwaveFlash"></
EMBED>
</OBJECT>



Trc on code ca th OBJECT/EMBED s c mt on script. Phn u tin l
mt hm JavaScript vi tn ca movie ID trong th OBJECT v ni tip vi
_DoFSCommand. Nh v d trn th tn hm ca chng ta s l
flashmovie_DoFSCommand.
Trong hm ny th chng ta s truyn d liu li cho movie. Khng may l Netscape
v Internet Explorer nhn nhn movie ca chng ta khc nhau . Internet Explorer
nhn movie vi tn truyn vo tham s ID (flashmovie), cn Netscape nhn movie vi
tn l document.flashmovie. Hy xem on code di y xem nh:


CODE
<script LANGUAGE=JavaScript>
function flashmovie_DoFSCommand(command, args) {
if (navigator.appName.indexOf("Microsoft") != -1) {
var flashmovieObj = flashmovie;
} else {
var flashmovieObj = document.flashmovie;
}

alert(command);
alert(args);
}



Trong Internet Explorer, Flash khng ch c th lin lc vi JavaScript m cn c th
lin lc vi VBScript. on code di y c vit bng JavaScript thay cho on
JavaScript trn:


CODE
if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 &&
navigator.userAgent.indexOf("Windows") != -1 &&
navigator.userAgent.indexOf("Windows 3.1") == -1) {
document.write('<script LANGUAGE=VBScript\> \n');
document.write('on error resume next \n');
document.write('Sub flashmovie_FSCommand(ByVal command, ByVal args)\n');
document.write('call flashmovie_DoFSCommand(command, args)\n');
document.write('end sub\n');
document.write('</SCRIPT\> \n');
}
</SCRIPT>



Vy cn phn ActionScript phi lm sao y. Xin tr li l ch cn mt dng duy nht
m thi


CODE
fscommand ("alert", "This is alert 1.");



Nhn thng ip t JavaScript

Nhn thng ip t JavaScript th c v d hn. Nhng bn phi nh rng t tham
s ID trong th OBJECT v tham s NAME trong th EMBED, nh t ging tn
nh. V cng nh t swLiveConnect=true trong th EMBED.
By gi th sn sng truyn thng ip t JavaScript cho movie ri. Hy xem v
d ny nh, trong v d ny th chng ta s s dng hm gotoFrame di chuyn
movie sang frame th hai.


CODE
<FORM NAME="flashControlForm">
<INPUT NAME="gotoFrame1" TYPE=Button VALUE="Frame 1"
onClick="window.document.flashmovie.GotoFrame(1);">
</FORM>



Chc chc n y cc bn ang t hi ti sao di chuyn sang frame th hai m li s
dng gotoFrame(1), ng khng no? Bi v h m ca chng ta bt u t s 0
(zero-based). V vy, frame 1 s l 0, frame 2 s l 1, frame 3 s l 2
C hn 24 cu lnh trong Flash movie. Tuy nhin chng ta khng cn phi dnh nhiu
thi gian tm hiu bi v nh ni trn th cch lin lc ny khng phi hot
ng tt i vi tt c cc loi trnh duyt.
Bn c th s dng hm GetVariable v SetVariable iu khin nhng bin trong
timeline ca movie. Cu lnh Zoom dng ko dn movie. Hai hm isPlaying v
percentLoaded dng kim tra movie no ang hot ng. Play dng play mt
movie khi n ang ngng.

Luyn tp: M window mi

C l y l mt yu cu rt thng gp i vi nhng ngi s dng Flash. Bn c
th lm c iu ny bng cch s dng hm getURL hoc JavaScript.
Tuy nhin, s dng JavaScript s c rt nhiu c im mi v hay hn, bn c th
t li nhng thuc tnh ca window. No, cng lm th nh:

- To mt movie mi.
- t vo movie mt button.
- Chn on code sau cho button va to


CODE
on (release) {
fscommand ("newwindow", "content.html");
}


- Trong phn Publish Settings, chn publish ra file HTML cng vi Flash movie.
Trong phn HTML, nh chn vo mc Flash with FSCommand
- Publish movie ca bn.
- M file HTML m Flash va to bng mt trnh son tho no cng c, nh
NotePad chng hn. Hy tm phn chn JavaScript, v chn on code sau vo:


CODE
if (command == "newwindow") {
window.open(args,"","width=320,height=240,location=no,toolbar=no,
menubar=no");
}



- To thm mt file HTML n gin na v t tn l content.html
- M file HTML ca bn ra trong mt trnh duyt v nh l trnh duyt phi h tr
JavaScript nha. Khi nhn vo button th mt ca s mi s xut hin, khng c
toolbar, kch thc 320x240.
- Vy cn i vi nhng trnh duyt khng h tr JavaScript th sao? n gin thi,
s dng getURL . iu quan trng l cn phi cho Flash bit lc no s dng
Flash, lc no s dng JavaScript.
Quay tr li file HTML m Flash to, chn on code JavaScript sau vo cui on
code ta chn vo lc trc


CODE
function initComm() {
window.document.newWindowMovie.SetVariable("jsCommOK","OK");
}



on code trn s th t gi tr cho bin jsCommOK l OK. Nu trnh duyt c h
tr JavaScript th jsCommOK s mang gi tr OK cn nu khng th bin jsCommOK
vn l undefined.
- chy hm initComm u tin th bn sa li phn BODY ca trang HTML nh
sau:


CODE
<BODY bgcolor="#FFFFFF" onLoad="initComm();">



iu ny c ngha l hm initComm s c gi ngay sau khi trang ny load xong.
- By gi hy quay tr li file Flash ca bn, sa on script ca button thnh:


CODE

on (release) {
if (jsCommOK == "OK") {
fscommand ("newwindow", "content.html");
} else {
getURL ("content.html", "_blank");
}
}



Luyn tp: To mt SlideShow c iu khin bi JavaScript

Trong phn ny, chng ta s cng nhau lm mt file Flash khng c ActionScript m
s c iu khin bng JavaScript.
- To mt movie Flash mi vi 3 frame hoc nhiu hn. Ni dung ca mi frame th
khng quan trng, bn mun g trong cng c nhng mt li khuyn l mi
frame nn khc nhau chng ta theo di s thay i
- t cu lnh stop() vo frame u tin
- Publish ra file HTML
- M file HTML ra trong trnh son tho vn bn
- Truyn tham s ID trong th OBJECT v NAME trong th EMBED, c hai s mang
gi tr l slideshow
- Nh t swLiveConnect=true trong th EMBED
- To 2 button trong file HTML bng on code sau:


CODE
<FORM NAME="flashControlForm">
<INPUT NAME="next" TYPE=Button VALUE="Next" onClick="nextFrame();">
<INPUT NAME="prev" TYPE=Button VALUE="Previous"
onClick="prevFrame();">
</FORM>



- Mi button s gi mt hm. C hai hm s s dng TcurrentFame(/)bit ang
frame th my, ri s dng gotoFrame di chuyn ti hoc lui.


CODE
<script LANGUAGE="JavaScript">
function nextFrame() {
var frameNum = window.document.slideshow.TCurrentFrame("/");
window.document.slideshow.GotoFrame(frameNum+1);
}
function prevFrame() {
var frameNum = window.document.slideshow.TCurrentFrame("/");
window.document.slideshow.GotoFrame(frameNum-1);
}
</SCRIPT>



Cng vic tip theo bn cn nh khng: CHY TH i no

Gi th 18: Gi thng tin cho my ch, Sending Information to the Server
Cho n tn by gi, nhng movie chng ta lm c hu ht l ch chy mt mnh
(stand alone). C ngha l n ch chy mt my khch (client-side) khng c s lin
lc vi my ch (Server). Nn nh rng Flash cng c th gi tr thng tin cho Server
ging nh form ca HTML. Vy th trong gi th 18 ny, chng ta s tm hiu v vn
ny.

Trong gi th 18, chng ta s hc:
- Tm hiu v i tng LoadVars
- To mt chng trnh server-side n gin
- S dng Flash gi d liu v cho Server

i tng LoadVars

Rt may mn l chng ta c Flash MX, bi v trong nhng phin bn Flash trc
y, mun lm iu ny th chng ta phi lm nhng movie clip rt kh khn. i vi
Flash MX, chng ta c th s dng i tng LoadVars.
i tng LoadVars bao gm mt tp hp cc cu lnh v nhng bin c bit gi
d liu cho Server ging nh post form trong HTML. Chng ta c th to i tng
ging nh to nhng i tng khc. Hy xem gi th 12 nh!

Ly d liu

Di y l mt v d. Thay v s dng new Object() bng new LoadVars. Sau th
i tng LoadVars mi s c to.


CODE
myVars = new LoadVars();



Vi i tng LoadVars, chng ta c th lm c 2 vic, l gi v ly d liu.
ly d liu, chng ta s dng cu lnh load. Ci chng ta cn y l mt ng dn
n ni cha d liu:


CODE
myVars.load("myURL.txt");



V d trn hot ng ging nh cu lnh LoadVariables trong gi th 10. Tuy nhin,
cu lnh LoadVariables ch ly v thay th d liu trong cng mt level vi cu lnh
ny m thi. Hy tng tng, chng ta c mt file cha d liu nh sau:


CODE
name=George&ID=47



Gi d liu

Vi i tng LoadVars, chng ta cng c th gi d liu i ln Server. Trc ht,
chng ta a d liu vo i tng LoadVars, ri sau s dng cu lnh send gi
d liu i.


CODE
myVars = new LoadVars();
myVars.name = "George";
myVars.ID = 47;
myVars.send("serverprogram.cgi", "_self");



on code trn s to mt i tng LoadVars mi tn l myVars, ri a hai thuc
tnh vo i tng myVars. Sau , gi d liu i ln Server, chnh xc l n chng
trnh CGI tn l echo.cgi.
Cu lnh send cng hot ng tng t nh trong form ca HTML. _self l Target,
chng ta c th thay th bng cc gi tr khc nh c bit.
Nhng cn mt cu lnh na l sendAndLoad. Cu lnh ny c ghp cu lnh send
v load. C ngha l i tng LoadVars s gi d liu ln Server, sau s ly gi tr
tr v.


CODE
mySendVars = new LoadVars();
myLoadVars = new LoadVars();
mySendVars.name = "George";
mySendVars.ID = 47;
mySendVars.sendAndLoad("serverprogram.cgi", myLoadVars);



Trng thi ly d liu

Hy nh l cu lnh send v load s khng ly d liu ngay tc th. C th phi i
trong mt thi gian ngn hoc di. V vy, chng ta s c nhu cu theo di trng thi
ly d liu. Chng ta khng th s dng d liu ngay lp tc sau cu lnh load hoc
sendAndLoad, m cn phi kim tra xem ly d liu xong cha.
Cch n gin nht l dng mt movie clip lp i lp li kim tra. Cng c th s
dng getBytesLoaded v getBytesTotal vi nhng d liu ln. Di y l v d
kim tra vic ly d liu:


CODE
myLoadVars.onLoad = function(success) {
if (success) {
gotoAndStop("load done");
} else {
gotoAndStop("load problem");
}
}



Nh trong on code trn th i s success s nhn mt trong hai gi tr true hoc
false cho bit vic nhn d liu xong hay cha

Gi th 19: Dng XML vi Flash
Cng ngy XML cng tr nn thng dng trong cc ng dng tin hc, v ngay c
trong Flash, vy trong gi ny mnh s hc cc iu sau:
XML cn bn
i tng XML trong Flash
Phn tch v x l XML theo phung pho quy (recursive)
XML Cn bn

XML ch n gin l mt vn bn cha d liu. XML tng t nh HTML, cng
dng cc th. Tuy nhin, XML khc HTML l cc th HTML c n nh trc
cho cc chc nng khc nhau, cn XML th khng.

Vi XML, bn c th t to cho mnh cc th theo bn ph hp cho mc ch
ring ca bn.

C th to mt XML file vi 1 trnh bin tp vn bn (nh Notepad, Textpad ...) n
gin hay l cc software chuyn vit v XML (XMLSpy, Epic ...)

Vi Flash MX, bn c th d dng truy cp c d liu tr trong XML, v i
tng XML ca Flash s t ng phn tch vn bn XML ny.

Trong VNFX c rt nhiu bi vit v XML (v d nh bi gii thiu XML ca Flash-
Lee) cc bn c th tham kho thm



i tng XML

i tng XML trong Flash gm c nhiu hm v c tnh dng gip bn ly v
phn tch d kin trong XML file mt cch d dng. Bc u tin khi dng i
tng XML l to mt phin bn XML trc:

CODE
myXML = new XML()


Phn tch v s l vn bn thnh XML

Sau khi to phin bn XML trn, hin gi phin bn ny vn cha c g c, tuy nhin
bn c th nhanh chng to ra mt ti liu XML bng cch dng lnh parseXML.
Lnh ny s nhp mt chui vn bn, v phn tch v x l n thnh 1 ti liu XML.

CODE
myXML = new XML();
myXML.parseXML("<user><name>Gary</name><ID>47</ID></user>");

Hay bn c th vit trc tip nh sau

CODE
myXML = new XML("<user><name>Gary</name><ID>47</ID></user>");

Nu m chui c nhp vo khng th to thnh XML hon chnh th bn c th
dng c tnh status kim tra.

CODE
myXML = new XML("<user><name>Gary</name><ID>47</user>");
trace(myXML.status);

Output window s cho ra -9 khi chy on code trn. -9 c ngha l thiu th ng
(end tag), v mnh thiu th </ID>. Nu output window cho ra -10 th bn thiu th
m (start tag), v 0 c ngha l mi vic hon chnh

Ly d liu t i tng XML

C nhiu hm lm vic ny. V d, bn c th dng firstChild ly nt (node)
u tin ca i tng XML:

CODE
myXML = new XML("<user><name>Gary</name><ID>47</ID></user>");
trace(myXML.firstChild);

Output window s cho ra <user><name>Gary</name><ID>47</ID></user>. V
y chnh l nt u tin ca i tng XML. Nu chng ta i xu vo 1 ln na vi
firstChild

CODE
myXML = new XML("<user><name>Gary</name><ID>47</ID></user>");
trace(myXML.firstChild.firstChild);

K ny output window s cho ra <name>Gary</name>, v phn t name l nt u
tin ca user
Ngoi cch trn ra, cn 1 cch na l dng childNodes, l ma trn ca ca cc nt.
Cng mt v d trn nhng c th dng nh sau vi chidlNodes

CODE
myXML = new XML("<user><name>Gary</name><ID>47</ID></user>");
trace(myXML.childNodes[0].childNodes[0]);

Di nt name, chng ta cn mt nt na di nt name, v c th dng cch trn
ly nt :

CODE
myXML = new XML("<user><name>Gary</name><ID>47</ID></user>");
trace(myXML.childNodes[0].childNodes[0].childNodes[0]);

v output window s cho ra ch Gary. y l nt vn bn (text node) ca nt name.
Nhn th tng y l tn cng ri, khng th xung su hn c na, v y l nt
cui cng, nhng nu bn mun ly gi tr ca n nh l chui vn bn th bn c th
i thm 1 bc na nh sau:

CODE
myXML = new XML("<user><name>Gary</name><ID>47</ID></user>");
trace(myXML.childNodes[0].childNodes[0].childNodes[0].nodeValue);


Nu bn mun ly ci ID trong nt th 2 th thay i nh sau:

CODE
myXML = new XML("<user><name>Gary</name><ID>47</ID></user>");
trace(myXML.childNodes[0].childNodes[1].childNodes[0].nodeValue);


* gii thch thm v on code trn, nu bn ch dng childNodes th kt qu s l
1 i tng, cn nu bn dng nodeValue th s ra chui. Bn c th th bng on
code mnh vit di y

CODE
myXML = new XML("<user><name>Gary</name><ID>47</ID></user>");
myVar1 = myXML.childNodes[0].childNodes[0].childNodes[0];
myVar2 = myXML.childNodes[0].childNodes[0].childNodes[0].nodeValue;
trace ("myVar1: " +typeof(myVar1));
trace ("myVar2: " +typeof(myVar2));

v output window s cho bn thy r, ci no law i tng v ci no l chui.

T to XML t "tay trng"

Khng bit dch cu ny sao cho ng ngha vi "Creating XML from Scratch".
nh dch nh trn vy.

Cc cch to XML trn u t 1 chui vn bn, nhng nu nh bn khng c 1
chui vn bn no trc th sao? Bn c th dng createElement to ra cc nt
mi v dng createTextNode to ra cc text node. Tuy nhin 2 lnh trn ch to ra
nt ch khng thm vo trong XML, vy bn phi thm n vo bng lnh
appendChild.

minh ho, chng ta s to mt XML tng t nh trn nhng vi cc lnh va
cp.

CODE
myXML = new XML();
newElement = myXML.createElement("user");
myXML.appendChild(newElement);
newElement = myXML.createElement("name");
myXML.childNodes[0].appendChild(newElement);
newText = myXML.createTextNode("Gary");
myXML.childNodes[0].childNodes[0].appendChild(newText);
newElement = myXML.createElement("ID");
myXML.childNodes[0].appendChild(newElement);
newText = myXML.createTextNode("47");
myXML.childNodes[0].childNodes[1].appendChild(newText);

Nu bn mun thay i gi tr ca text node, th bn ch cn dng nodeValue

CODE
myXML.childNodes[0].childNodes[1].childNodes[0].nodeValue = 53;




Thuc tnh

Cc thnh phn ca XML c th c thuc tnh (attribute). Trong y mnh gp rc
ri v cch dch attribute v property, c 2 ch ny ting vit u dch l thuc tnh,
c tnh ... m ting anh th khc tht rc ri vy mnh xin c dng ting Anh
nhe. Attribute gm c t kho v gi tr ca t kho , v dng nh r mt thnh
phn hn. V d, on XML di dy vi attribute type lm r ngha ca thnh phn
name hn, ("alias" l b danh)

CODE
<user>
<name type="alias">Gary</name>
<ID>47</ID>
</user>

Nu bn mun a on code trn vo trong XML object th phi i du " (ngoc
kp) thnh du ' (ngoc n)

CODE
trace(myXML.childNodes[0].childNodes[0].attributes.type);

Cn mt cch na cng cho ra kt qu nh trn l dng []

CODE
trace(myXML.childNodes[0].childNodes[0].attributes["type"]);

V bn c th thay i gi tr ca attribute, hay thm attribute mi nh sau:

CODE
myXML.childNodes[0].childNodes[0].attributes["type"] = "real";

Vi cu trn, nu attribute type cha c th n s c to

(trong sch cc on code trn tc gi vit ln gia type v alias, nu bn so snh
gia sch v bi ny th s thy s khc bit, v c th cc source file cng s khng
chnh xc, vy cc bn cn kim tra li)

Khc vi node, attribute khng th truy cp bng ma trn (array) nn bn khng th
dng cc lnh nh length hay dng [] vi index number. Nhng bn c th dng vng
lp for ... in truy cp tng attribute ca node.

CODE
myXML = new XML("<user><name type='alias' validity='verified'>Gary</name>
<ID>47</user>");
for(attr in myXML.childNodes[0].childNodes[0].attributes) {
trace(attr+": "+myXML.childNodes[0].childNodes[0].attributes[attr]);
}

output window s cho ra: alias v verified

Thm vi AS v XML

Bn cng cn bit thm mt s iu v i tng XML. Nht l im sau, bt c mt
phn no ca i tng XML cng c th l mt i tng XML ring bit. V d bn
c th ly ci node u tin ca i tng XML v quy thnh mt bin

CODE
myXML = new XML("<user><name>Gary</name><ID>47</user>");
thisUser = myXML.childNodes[0];
thisUserName = thisUser.childNodes[0];
thisUserNameText = thisUserName.childNodes[0].nodeValue;
thisUserID = thisUser.childNodes[1];
thisUserIDText = thisUserID.childNodes[0].nodeValue;

Bn c th bit c s node trong trong mt node khc bng thuc tnh length
ca childNodes. V d, user node c 2 node trong, vy bn c th bit c bng
vi on code sau:

CODE
myXML = new XML("<user><name>Gary</name><ID>47</user>");
trace(myXML.childNodes[0].childNodes.length);

Ngoi vic c th tm c gi tr ca mt node vn bn bng nodeValue, bn c th
bt c tn ca thnh phn (hay th) vi nodeName. V d bn c th ly c tn
ca thnh phn (th) u tin ca user l name nh sau:

CODE
myXML = new XML("<user><name>Gary</name><ID>47</user>");
trace(myXML.childNodes[0].childNodes[0].nodeName);

Bn c th bit c mt node l thnh phn ca XML hay l mt node vn bn (text
node) bng vi thuc tnh nodeType. Nu nodeType l 1 th c l 1 thnh phn ca
XML v c th c nhiu thnh phn trong node , nu l 3 th node chnh l
node vn bn.
Gi th 20 : Printing
Khng phc tp nh trnh duyt hoc Server Cominucation, in n l mt cch m
FLash truyn d liu ra ngoi.
Kh nng in n ca FLash l rt hu ch v n cho php chng ta xy dng nhng vn
bn m ngi s dng c th in ra ni dung t file flash ca bn.y thng l la
chn tt hn da vo hm in n ca trnh duyt .
Trong gi th 20 ny chng ta s :
- Hc cch thit lp movie ca bn cho vic in n
- Hc cch s dng cc lnh in
- To ra mt biu mu c th in c

I> Thit lp cho movie c kh nng in:
1-Bn cn lm mt vi vic vi movie trc khi c th s dng c cc lnh in ca
Action Script. Tht khng may,nhng lnh in ny khng c linh hot lm. Nu s
dng chng m khng c s chun b , Flash s in ra ton b ni dung ca movie,
tng frame mt.
V thng l iu m bn khng mun. C khi bn ch mun in duy nht frame
hin ti, hoc mt frame bt k trong mt movie ring, hoc mt on gm nhiu
frame. Nhng him khi bn mun in ht ton b.
2 - t tn cho frame
Bn s ch nh nhng frame c in bng k hiu "#p" . Nu k hiu khng c
t ln frame no th Flash s in ra ton b movie ca bn. Ngc li, nu bn t t
hai k hiu tr ln trong movie ca bn th flash s in ra tt c nhng frame .
Hnh 1 cho ta thy timeline vi hai frame c t k hiu in. Ch rng, tt c
nhng frame c cha k hiu in ny s c t mt layer ring. Theo cch , bn
c th t c nhiu k hiu trn nhiu frame. V n cng thun tin hn khi bn
khng mun s dng k hiu "#p" nh mt label tht cho keyframe.


*Ch : Khi bn t t hai k hiu in tr ln, khi test movie, Flash s xut hin li
cnh bo : "WARNING : Duplicate layer.."
l iu ri ro c th xy ra, nhng cng s khng nh hng n movie ca bn
tr phi bn s dng label "#p" trong cu lnh "gotoAndStop" hoc nhng lnh tng
t....

3- Ln k hoch in
Bn cn phi suy ngh v ln k hoch cho movie ca bn khi mun movie c kh
nng in. V khng th ch in mt frame hin ti nn bn
cn to ra nhng frame c kh nng in. Ch rng mi th tn ti trn movie ca bn
s c in ra. N bao gm c nt Print ( khi nhn vo s thc hin lnh in), nu
trong movie
c tn ti.
V vy chng ta cn phi c mt frame cha nt Print, v mt frame khc tng t
nhng khng c nt Print cng nh cc yu t khgn
cn thit khc. Frame th hai ny s c dt nhn l "#p"
Bn c th b tr bng cch s dng timeline chnh. V d bn c mt menu v mt
nt Prin trn hai layer ring bit, m cn c
trong ni dung ca biu mu in. Nhng layer ny nu bn khng mun in ra th khng
cn ko chng sang frame c nhn "#p"
hai hnh sau th hin iu ny. Hnh th nht,l frame m ngi dng s thy xut
hin trn trang web. N cha ni dung. nt Print v menu

Ngc li, trong hnh hai l ni dung m ngi duyt web khng thy c, t nht l
trn mn hnh. Frame ny c t tn l "#p"
bn c th thy trn timeline.Layer Buttons khng s dng keyframe ging nh
frame 1. Ngoi vic chn nt Print khng oc in ra,
c th thm vo frame ny mt s thng tin s c in ra nh a ch, ...



By gi bn bit lm th no chun b cho mt biu mu in, by gi cng hc
AS cn thit

II> Cc cu lnh
C hai lnh in chnh c s dng. Chng c mt khc bit rt nh, nhng v cn bn
l hot ng ging nhau.
1- Print
Lnh th nht l

QUOTE
Print

Lnh ny bao gm hai tham s. Tham s th nht l i tng in. Thng l
timeline chnh, hoc "_root". Bn cng c th s dng
"this". Tuy nhin, nu bn khng mun in nhng frame trong movie, bn c th s
dng tham chiu ti movie .
Tham s th hai l mt trong ba tu chn sau :

QUOTE
bframe


QUOTE
bmovie


QUOTE
bmax

Cc tham s ny gip FLash c th co dn vn bn in theo ca ngi s dng. Flash
c th co dn vn bn in ti kch thc
ca trang giy m khng bp mo vn bn. V d nu frame c in c kch thc
550x400, th chiu ngang s c phng to ti kch thc 550px
chiu dc c th s c scale theo t l.
Khi s dng tu chn "bframe", tng frame s t scale lp y kch thc ca
trang . Nu frame th nht c ni dung vi kch thc l 550x400
nhng frame th hai ch cha ni dung c kch thc 275x200, khi frame th hai
s t ng scale gp i kch thc ban u.
khi s dng tu chn "bmax", Flash s kim tra ton b cc frame c in xc nh
xem frame no c kch thc ln nht. Cc frame
cn li s scale da trn kch thc ca frame ln nht, tnh theo t l. iu ny ta
nn cc frame c kch thc t l vi nhau
V d, frame ln nht c kch thc 550x400, v n lp y trang in. Frame khc ch
c kch thc 275x200, n ch chim mt na trang in.
Tu chn cui cng l "bmovie", trng hp ny bn cn phi lm thmm mt vic
nh na, l to ra frame mi c cha mt khung.
Khung ny s xc nh kch thc ln nht c in ra i vi vn bn (bng kch
thoc ca khung). Bn phi t tn frame ny vi k hiu
"#b". V flash s s dng kch thc ca khung scale ton b cc frame cn li.
Nu c mt phn vn bn ny nmg ngoi khung in
chng s khng c in ra.
Sau y l v d v lnh "Print" :

QUOTE
on(release) {
print(this,"bframe");
}


Nh bn thy, tu chn c coi nh mt chui v c t trong du ""

2-PrintAsBitmap
Cu lnh ny lm vic tng t nh lnh Print vi hai tham s tng t.
iu khc bit l lnh Print s gi cc i tng ho v font ch ti my in. Sau
, my in s xy dng li cc vector v ni dung in ra.
Ngc li, PrintAsBitmap s chuyn ton b ni dung thnh mt nh bitmap ln v
gi ti my in.
im thun li nht ca PrintAsBimap l trong sut ca vn bn cng c in ra.
Nu bn c mt i tng ho bn trong sut,
chc c u im chn bn s cn n chc nng in ny, ng thi n cng hot ng
tt vi nhiu loi my in hn.
Lnh in chnh l vn bn c in ra c tnh thm m cao, ng cong smooth hn v
ch r rng hn khi c in ra. N cng nhanh hn
khi in qua mng.
Nguyn tc chung nht l s dng lnh PrintAsBitmap khi bn tht s chc chn kt
qu s ging nh ni dung hin th trn mn hnh.
S dung Print khi vn bn khng cn chnh xc cao hoc khi bn xy dng movie
iu khin mi trng nh mng ni b.

Ch : Nu bn se dng movie qua internet, lnh in ch lm vic khi tt c cc frame
trong movie c load xung.

Thao tc : To biu mu in

Mt iu m ngi dng ght nht trn mt website l mt biu mu m chng ta
phi in ra, in vo, ri gi i . Chng ta ang s dng my tnh, t nhin li phi
i kim ci bt trn bn vit ?
V vy ti sao chng ta khng to ra biu mu cho php in thng tin vo, sau
c in ra vi y ni dung c nhp vo.
Chng ta s lm v d n gin ny, v s thy chng thun tin hn rt nhiu so vi
mt bit mu html yu cu ngi s dng in ra ton b ni dung ca site.
Bn hon ton c th i khin nhng g s c in ra, v vy nhng th linh tinh trn
trang web c th c b qua v nhng yu t mi nh email address c th c
thm vo.

1- To mt movie mi
2- To ra cc trng nhp d liu (v d tn, tui, a ch, gii tnh, email...) (xem
hnh) sau t tn layer ny l CONTENT


3-t tiu cho trng ln pha trn nhp liu
4-To thanh tiu cho Form. Ch ,hai loi tiu ny s c t hai layer ring
bit .
5-To nt Print v t trong layer tn l Buttons
6-CHn on m sau cho button :

QUOTE
on (release){
print (this, "bmax");
}


7- Thm Frame th hai cho movie, ko Title Bar v Content sang frame 2
To blank keyframe cho layer Buttons v Titles, v chng s c ni dung khc trong
frame th hai
8- Trong frame th hai ca layer Title, t mt tiu khc. V d, nu frame th nht
l "Fill out that application" th frame th hai ch cn l Appilcation
9- Sau , biu mu sn sng in vo. Tiu c s bin mt, bn c th nhn
thy tiu mi trong hnh..


10- Thm mt layer mi tn l Signature. t mt keyframe frame th hai ca layer
ny. Thm ng ngn cch v a ch trong frame ny. Nu lm ng th frame 1 ca
layer
ny s khng c g, ni dung ch tn ti frame 2
11- Thm layers tn Frame Labels . t trong hai keyframe. Keyframe th 2,
chng ta t k hiu "#p" . Keyframe th nht chn code

QUOTE
stop();


Test movie ca bn. Bn hy in vo biu mu , v n nt Print. Frame th hai s
c in ra vi tiu "Application", ch k, v a ch...

Tm tt
in c cc frame trong mt movie bn cn phi t label cho chng l "#p". Bn
c th t tn cho mt hoc nhiu frame trong cng mt movie.
Mi th trong frame "#p" s c in ra. Bn c th trang tr tu thch i vi biu
mu c in ra, tr nhng yu t nh menu.
Bn c th s dng lnh "Print" in cc frame s dng vector shape gi ti my
in. Tuy nhin, nu cn in nhng i tng ho bn trong sut hoc chc chn rng
tt c nhng biu mu in ra ging nhau, bn c th s dng lnh PrintAsBitmap

Gi th 21: S dng component, Using component
ActionScript cho cc Component i km Flash

C 7 component gn lin km theo chng trnh Flash: CheckBox, ComboBox,
ListBox, PushButton, RadioButton, ScrollBar, ScrollPane.

thm mt component vo movie ca bn, bn c th click p ln component
trong bng Component, hoc nhn v ko mt component vo stage.

PushButton
Click v ko component PushButton vo stage s to mt instance (th hin) mi ca
component PushButton trn mn stage. Khi bn thm mt s phn t Library
vo trong movie. Rt may l cc phn t ny c ct trong cc folder rt gn trong
Library (th vin), v th chng cng khng nh hng my n cng vic ca bn.

Component PushButton trn stage trng rt n gin: ch l mt khung vi t
"PushButton" gia.

Bn nh bt tnh nng Live Preview (xem trc) ca Flash bng cch chn Control---
>Enable Live Preview.

Sau khi PushButton trn stage, bn c th click chn n v m bng Properties
i tn. Hai thng s c th thit t cho component PushButton l Label (nhn):
ta i thnh Press Me ! v Click Handler (qun l s kin nhn nt): y l tn ca
hm c gi khi nt c click. Hm ny phi nm trong cng Timeline vi nt; v
th nu nt t level gc (root level), hm phi trn Timeline chnh. Ta thit t
Click Handler thnh buttonPressed (nt c nhn).

Ngoi ra bn t cho component mt instance name (tn minh ha) l testButton
(kim tra nt).

By gi tt c cng vic phi lm l vit hm buttonPressed. Di y l mt v d
n gin. Hm ny ch gi mt vi dng text ra ca s Output:

ActionScript

function buttonPressed(buttonInstance) {
if (buttonInstance == testButton) {
trace("Test Button Pushed.");
} else {
trace(buttonInstance._name);
}
}


Mi hm qun l nt s chuyn mt tham s: mt tham chiu n nt gi hm. V th
bn c th kim tra instance ny c phi c tn l testButton hay khng. Hm v d
trn s chuyn thng bo "Test Button Pushed" nu nt c nhn l testButton, v in
ra tn minh ha ca nt nu nt b nhn khng phi l testButton.

Bn c th xem v d mu ny trong movie 21pushbutton.fla.

CheckBoxes
Component CheckBox (hp kim) tng t nh ci m chng ta to gi 15 (anh
em dch sau nh).

to mt CheckBox component, click p vo n trong bng Components, hoc
click v ko n ln trn stage. to mt instance th hai, m folder Flash UI
Components trong th vin Library v ko component CheckBox ln trn stage.

Trong v d movie 21checkboxes.fla, ti to 3 hp kim (CheckBoxes). Nu bn
chn mt component trong chng v m bng Properties, bn s thy n c nhiu
thng s hn so vi component PushButton.

B sung vo cc thng s Label v Change Handler, gi y bn c c Initial
Value (gi tr ban u) v Label Placement (sp xp nhn). Thng s Initial Value l
true hoc false, ty thuc vo vic bn mun hp kim ban u c nh du hay
khng. Thng s Label Placement cho php bn sp xp cc nhn bn phi hoc tri
(right hoc left) so vi kim. Right l sp xp mc nh. Nu bn chuyn thnh left,
dng ch ghi nhn ca hp kim s xut hin bn tri ca .

Trong movie mu, ti t tn cho 3 instance CheckBox l option1, option2, v
option3. Ti cng t nhn (label: phn text bn cnh kim) l Option One, Option
Two, v Option Three. Thng s Change Handler ca mi instance c i thnh
changeOptions.

Ti t hm changeOptions trong timeline chnh. Hm ny s c thc thi khi no
mt trong cc hp kim CheckBox c click vo. N s gi tn v trng thi mi
ca CheckBox ra ca s Output.

ActionScript

function changeOptions(checkBoxInstance) {
trace(checkBoxInstance._name+": "+checkBoxInstance.getValue());
}


Trong 21checkboxes.fla, ti cng thm vo mt component PushButton. Nt ny
c t tn l doneButton v s gi hm buttonPressed. Hm ny s lp i lp li vi
tt c cc CheckBox v gi trng thi ca chng (c nh du hay cha) ra ca s
Output.

ActionScript

function buttonPressed(buttonInstance) {
if (buttonInstance == doneButton) {
trace("Option One: "+option1.getValue());
trace("Option Two: "+option2.getValue());
trace("Option Three: "+option3.getValue());
}
}


Thay v gi cc kt qu ra ca s Output, hu ht bn s mun s dng chng trong
cc dng khc. V d, bn c th t chng trong mt i tng LoadVars chng
c th gi ti mt server.

RadioButtons
RadioButtons ging nh CheckBoxes, ngoi tr vic chng c sp xp thnh cc
nhm. Ti mt thi im, bn ch c th chn mt nt RadioButton trong mt nhm.

File mu 21radiobuttons.fla c ba component RadioButtons. Nu bn chn mt trong
nhng nt v m bng cc thuc tnh (Properties panel) cho nt, bn s nhn thy
component ny c nhiu thng s hn so vi cc component CheckBox hay
PushButton.

Thm vo cc thng s bn thy trong component CheckBox l hai thng s
Group Name (tn nhm) v Data (d liu). Thng s Group Name xc nh xem
RadioButton thuc v nhm no. Trong movie mu, c ba RadioButtons u thit t
thng s ny l firstGroup. Nu c mt nhm nt th hai vi mt tn khc, th hai
nhm ny c xem l c lp vi nhau khi quyt nh RadioButton no c bt.

Thng s Data l ty chn v bn c th s dng trong cc on m ca mnh. Bn c
th truy cp (access) n bi hm getData(). Bn c th lu tr cc lnh m on m
ca bn thc thi khi nt radio c chn.

Trong movie mu, ba RadioButtons c t tn l choice1, choice2, v choice3.
Nhn ca ba nt ny l Choice One, Choice Two, v Choice Three.

Vic xc nh xem ngi dng chn nt radio no s c thc hin khi
PushButton trong movie c click. Sau PushButton s chy on script ny
quyt nh xem la chn no c thit lp. on script s lp i lp li vi c ba
nt tm kim mt nt tr v true t hm getState(). iu ny ngha l nt
RadioButton c bt.

ActionScript

function buttonPressed(buttonInstance) {
if (buttonInstance == doneButton) {
var choice = "none";
for(i=1;i<=3;i++) {
if (this["choice"+i].getState()) {
choice = this["choice"+i]._name;
}
}
trace("Choice: "+choice);
}
}



ListBox
Mt ListBox (hp danh sch) l mt phng php n gin cho php ngi dng la
chn mt hoc nhiu ty chn. Mt ListBox c th t nh mt thit lp ca
CheckBoxes hoc RadioButtons. N c bit hu ch khi bn c nhiu la chn
nhng khong trng trn mn hnh c hn.

Mt khung danh sch trong nh mt trng text cun--trn thc t l nh vy. Mi
dng tng ng vi mt la chn ring bit ca ngi s dng. Nu c nhiu la
chn hn vng m khung danh sch c th hin th th ngi dng c th cun ln v
cun xung xem ht cc mc trong danh sch.

Khi bn to mt instance mi ca component ListBox, bn phi thit t thng s
Select Multiple (la chn nhiu dng) ca n. Nu tham s ny l true, ngi dng c
th dng cc phm Shift, Command, hoc Ctrl la chn nhiu hn mt dng. Nu
l false, mi ln bn ch c th chn c mt dng.

Thm vo , bn phi thit t thng s Labels (nhn). Tuy nhin, y khng phi l
mt gi tr n m l mt mng cc gi tr. Flash c mt giao din c bit (special
interface) cho vic nhp cc gi tr ny. Khi bn click trn tham s Labels trong bng
Properties, bn s bt gp mt hp thoi cho php bn nhp vo mt mng cc mc
(item) cho cc thng s khc.

Bn cng c mt tham s Data (d liu) to mt mng d liu. Thng s Data ny,
ging nh thng s data dng vi cc nt radio, cho php on m ca bn ly
thng tin b sung v cc la chn m ngi dng chn. Tuy nhin, thng s ny
khng bt buc phi c.

Trong movie mu 21listbox.fla, ti t mt component ListBox vi ba la chn trn
mn hnh. Chng c thit t l c th chn nhiu dng. Khi ngi dng click ln
trn mt dng, hm listBoxChange s c gi. iu ny c xc nh bi thng s
Change Handler ca n. Hm ny cho bn bit dng no (la chn no) va c
chn:

ActionScript

function listBoxChange(listBoxInstance) {
trace(listBoxInstance.getValue());
}


Trong movie mu ny cng c mt component PushButton. Khi n c click, n s
thc thi hm ny. N s dng hm getSelectedItems() ly mt mng cc la chn
(choices) chn trong list box. Mi mc chn trong mng l mt i tng vi mt
thuc tnh label v data. V chng ta khng s dng cc thuc tnh data ca hp
danh sch (list box), nn thay vo chng ta s ly cc nhn (label).

ActionScript

function buttonPressed(buttonInstance) {
if (buttonInstance == doneButton) {
items = myListBox.getSelectedItems();
for(var i=0;i<items.length;i++) {
trace(items[i].label);
}
}
}


Bn cng c th thm hoc bt cc dng t list box bng cch s dng ActionScript.
V d, addItem s thm mt la chn b sung vo list box.

ActionScript

myListBox.addItem("Choice Four");


Bn c th dng addItemAt, removeItemAt, v replaceItemAt thay i list box bi
ActionScript.

ComboBox
Mt combo box ging nh mt menu ko xung (pull-downl menu) ngi dng
cng c th g vo mt gi tr.

May thay, bn cng c th tt ty chn hiu chnh gi tr. Khi combo box nh mt
menu pull-down bnh thng. Thng s lm iu ny l Editable (c th hiu
chnh) trong hp thoi Properties. B sung cho tham s , bn cng c th cung cp
cc mng cha nhn (Labels) v d liu (Data).

Mt thng s khc ca combo box l Row Count (s dng). Cc combo box c th
nh nh cc list box. Khi ngi dng click vo, chng s tri rng thnh mt danh
sch cc la chn. Nu s la chn vt qu gi tr Row Count, mt thanh cun s
xut hin bn phi cho php ngi dng cun ln xung la chn.

C bn mt combo box c th c 3 trng thi. Khi khng hot ng n thu nh thnh
mt dng. Khi click vo n, combo box s tri rng thnh danh sch tu chn, nu s
la chn ln hn s dng c th hin th th xut hin thm thanh cun.

Khi mt ngi dng chn mt la chn mi trong combo box, b qun l Click
Handler s c gi. Di y l mt hm n gin cho bn bit nhn ca combo box
chn:

ActionScript

function comboBoxChange(comboBoxInstance) {
trace(comboBoxInstance.getValue());
}


Bn cng c th dng getSelectedIndex() ly ch mc (tnh t 0) ca mc chn.

Movie mu 21combobox.fla l mt v d v component ComboBox.

ScrollPane
Hai component tip theo khc hn so vi 5 component trn. Chng khng dng
cho php ngi dng la chn, nhng dng hin th lng thng tin ln trong cc
khong nh (cun m l).

Component ScrollPane ( cun) gm c mt thanh cun dc, cun ngang v mt
vng hin th hnh ch nht. Thng s chnh ca component ny l Scroll Content
(cun ni dung). y l tn lin kt (Linkage name) cho mt movie clip. Khi bn
chy movie, movie clip c copy t Library v t vo vng hin th ca cun.
Sau cc thanh cun s cho php ngi dng nhn thy cc phn khc nhau ca
movie clip.

Bn c th xem v d trong file 21scrollpane.fla.

Nu bn thit t thng s Drag Content l true, ngi dng cng c th click vo
trong vng hin th v ko hnh trong chy. Cc thanh cun cng thay i khi bn
ko ni dung trong cun (chnh l ci movie clip hin th trong ).

Mc d component ScrollPane khng i hi bt k ActionScript no lm vic,
nhng c rt nhiu hm m bn c th dng xc nh xem phn no ca movie clip
ang c xem hoc thay i chiu rng (width) v chiu cao (height) ca .

Bn cng c th dng bng Properties thay i chiu rng v chiu cao ca cun.
Khi bn lm vic , cun trng b mo m trong Flash, nhng no star where, n s
ngon lnh ngay khi bn chy movie.

Mt lnh ActionScript rt hu ch l loadScrollContent . Lnh ny s dng mt a
ch URL v hin th mt movie clip ngoi vo trong cun.

ActionScript

myScrollPane.loadScrollContent("myMovieClipFile.swf");


cun c th c dng nh mt trnh duyt hnh nh.

ScrollBar
Component cui cng l ScrollBar. Component ny thm cc thanh cun vo trng
text. Bn c th dng component ny m khng cn dng bt k code ActionScript
no. Ch vic ko v th mt component ScrollBar vo mt trng text (text field), t
n s thm vo trng text.

Component ScrollBar c t thuc tnh Actionscript c th s dng c. V d, bn c
th s dng getScrollPosition() ly v tr cun hin ti v setScrollPosition()
thay i n.

Thc hnh vi Components
By gi chng ta s phi hp 5 component khc nhau to mt form nhp d liu:
CheckBox, RadioButton, ComboBox, ListBox, v PushButton components.

To mt Flash movie mi.

To ba component CheckBox. t tn cho chng l checkbox1, checkbox2, v
checkbox3. Nhn ca chng l: Macintosh, Windows, Linux.

To ba component RadioButton. t tn cho chng l radiobutton1, radiobutton2, v
radiobutton3. Nhn ca chng ln lt l ... nh trn

To mt ComboBox component. t tn cho n l combobox. Thm mt vi nhn
(label) vo ngi dng c th chn la.

To mt ListBox component t tn l listbox. Thm bao nhiu nhn vo tu bn.
ng lo lng v th t ca chng v chng ta s sp xp li sau. Thit t thng s
ListBox Multiple Selections thnh false. Dng bng Properties to cho khung danh
sch (list box) rng 200 v cao 200 pixel.

Thm mt PushButton component. t cho n nhn l Done v thng s iu khin
Click Handler l buttonPressed.

Thm dng sau vo trong frame script. N s sp xp li nhn ca cc mc trong
component ListBox.

ActionScript

listbox.sortItemsBy("label","Asc");


Lnh sortItemsBy lm vic rt tt vi component ComboBox. Bn c th dng
"label" hoc "data" cho thng s u tin. iu ty thuc vo nhn (label) hay cc
trng d liu (data) s c s dng sp xp. Thng s th hai c th l "Asc"
(sp xp theo th t tng dn) hoc "Desc" (gim dn).

Component PushButton s gi hm buttonPressed. Chng ta s to hm ny theo tng
on nh x l tng phn ca form.

Hm bt u bng vic to mt mng mi. Sau n kim tra tng check box xem
hm getValue() ca n c phi l true khng. Nu l true, nhn ca check box s
c thm vo mng . Khi vng lp kt thc, mng own cha bt k la chn no
m ngi dng lm vi cc check box.

ActionScript

function buttonPressed(buttonInstance) {
if (buttonInstance == doneButton) {

// su tp mng ca cc CheckBoxes chn
own = new Array();
for(var i=1;i<=3;i++) {
if (this["checkbox"+i].getValue()) {
own.push(this["checkbox"+i].getLabel());
}
}
trace("Computers Owned: "+own);


on m tip theo kim tra tt c cc component RadioButton v ghi nh xem
component no c bt ( c chn):

ActionScript

// xc nh RadioButton no la chn
favorite = "none";
for(var i=1;i<=3;i++) {
if (this["radiobutton"+i].getState()) {
favorite = this["radiobutton"+i].getLabel();
}
}
trace("Favorite: "+favorite);


Component n gin nht l combo box. on m ny ch n gin tr v gi tr ca
n:

ActionScript

// ly gi tr ca ComboBox ComboBox
nextPurchase = comboBox.getValue();
trace("Next Purchase: "+nextPurchase);


check (kim) nhiu la chn ca list box, bn cn lp t u n cui mng tr v
bi getSelectedItems(). Sau bn cn xem xt thuc tnh label ca mi mc chn
(item).

on m sau s lm iu v xy dng mt mng cha cc nhn la chn:

ActionScript

// su tp cc la chn ca ListBox
uses = new Array();
items = listbox.getSelectedItems();
for(var i=0;i<items.length;i++) {
uses.push(items[i].label);
}
trace("Uses: "+uses);
}
}


Nu thc s hin ti bn ang lm iu ny, nn s dng cc i tng c tnh cu
trc hn l s dng lnh trace. Cho v d, bn c th to mt i tng LoadVars
sau gi thng tin n my ch.

Thay i kiu dng (Style) ca mt Component
Cc component ca Flash vn trng rt p. Nhng nu tt c cc nh pht trin
Flash u bt u s dng chng, th tt c cc Flash movie ca chng ta trng s na
n nhau.

May thay, bn c th tu chnh cc component theo nhiu cch khc nhau. Bn c th
d dng to cc giao din ring (custom skin) cho chng. Di y l ba cch ty
chnh component bng cch s dng ActionScript.

Global Customization (tu bin chung)
S dng i tng globalStyleFormat, bn c th ty chnh giao din cho tt c cc
component trong mt ln. y l mt v d thay i mu ch ca tt c cc text trong
tt c cc component thnh mu xanh da tri (blue):

ActionScript

globalStyleFormat.textColor = 0x0000FF;
globalStyleFormat.applyChanges();


Lnh applyChanges chp nhn s thay i. Ngoi ra, bn c th thit t nhiu thuc
tnh khc. Di y l mt s thay i chi tit:

ActionScript

globalStyleFormat.textColor = 0x0000FF;
globalStyleFormat.textFont = "Arial";
globalStyleFormat.textSize = 18;
globalStyleFormat.textBold = true;
globalStyleFormat.applyChanges();


Bn c th thay i thnh nhiu gi tr nh font chng hn. S mc thay i trong
kiu dng ca cc component qu di c th lit k ht y. Bn c th thay i
mu sc v kiu dng ca cc du kim trong CheckBoxes, cc hnh trn trong nhng
RadioButton, nhng mi tn trong cc thanh cun ScrollBars, mu nn, mu sc ca
vng t sng (highlight colors), mu sc cc mc chn, v.v... Hy xem trong chng
trnh Flash ca bn bit y thng tin v danh sch ny.

Grouped Customization (ty chnh theo nhm)
Mc d i tng globalStyleFormat c s dng bi tt c cc component trn
stage, bn vn c th to cho cc i tng ca bn kiu dng (style) ring bit ch
dng trong mt vi component m bn ch nh.

Bn thc hin iu bng cch to mt i tng FStyleFormat. Khi bn lm iu
ny, i tng mi ca bn s c cc thuc tnh ging nh i tng
globalStyleFormat.

V d, bn c th to mt i tng kiu dng (style object) v thit t mu sc ca
n thnh ti nh di y:

ActionScript

myStyle = new FStyleFormat();
myStyle.textColor = 0xFF00FF;


Cc yu t khc ca style khng c thit t chnh xc trong i tng style ny.
V th bn c th p dng style ny cho mt component, m din mo ca style khng
thay i.

p dng kiu dng style ny vo mt component, hy s dng lnh addListener:

myStyle.addListener(radiobutton1);

Bn ngh c v k quc khi s dng vi addListener, ng l nh vy. Hy hiu rng:
bn bo cho component tip nhn (listen) i tng style.

Single Component Customization (ty chnh component ring l)
Bn cng c th thit t mt cch chnh xc mt trong nhng thuc tnh ca style.
Tuy nhin, bn khng th lm iu bng cch s dng c php chm (dot) gn v
p nh bn mong mun. Thay v th, bn cn phi dng lnh setStyleProperty. Lnh
ny s t thuc tnh style di dng mt chui tham s u tin v gi tr m bn
mun thit t cho n tham s th hai.

ActionScript

checkbox1.setStyleProperty("textColor",0xFF0000);


Bng cch s dng ba phng php thit t style cho cc component, bn c th ty
chnh cc component theo nh mong mun.

Gi th 22: iu khin m thanh vi ActionScript
C hai cch bn c th cho m thanh vo on phim Flash ca mnh. Cch th nht
l t n vo ngay timeline. Vic ny khng cn phi s dng m. Cch th hai l s
dng ActionScript chi nhng on nhc c lu tr trong Library.

Tm hiu cch truy xut m thanh vi ActionScript:

Vic kt ni v chi nhc:

iu u tin m bn cn trc khi chi mt on nhc vi ActionScript l kt ni
n n. Bn hy "Import" file nhc vo Library, bm phi chut chn "Linkage", ri
nh du vo cc phn export. Bn cng c th t mt ci tn "Identifier" khc cho
on nhc thay v tn file nhc.
V d, nu bn "import" file nhc "mysound.wav", n s xut hin trong Library vi
ci tn mysound.wav. Khi bn chn Linkage, v nh du export, n s c t tn
"Identifier" ngay l "mysound.wav", nhng bn c th sa thnh bt k tn gi bn
mun(vd: nhac1). chnh l ci tn m bn s s dng trong ActionScript.

chi mt on nhc bng ActionScript, bn phi lm t nht ba bc:
u tin l to mt i tng "Sound" :

ActionScript
mySound = new Sound();

Th hai, bn cn gn on nhc trong th vin vo i tng "Sound" ny:
mySound.attachSound("mySound.wav") //mySound.wav l tn bn t trong phn
"Identifier"
Cui cng, bn hy ra lnh cho i tng "Sound" ca bn chi on nhc:

ActionScript
mySound.start();


V y l mt on n gin t vo trong mt Button chi on nhc t Library:

ActionScript
on (release) {
mySound = new Sound();
mySound.attachSound("poof.wav");
mySound.start();
}

Bn c th tham kho mt v d n gin trong file "22playsound.fla" km theo
quyn sch ny.
Bn cng c th xem qua mt phng php hi phc tp mt t trong file
"22playsoundfunction.fla". Trong file Flash ny, c mt function tn l "playsound"
c t timeline chnh. "function" ny bao gm tt c cc m m bn cn chi
mt on nhc n gin.

ActionScript

function playSound(soundName,balance) {
var mySound = new Sound();
mySound.attachSound(soundName);
mySound.start();
}

Vi vic s dng function ny, bn n gin ha on ActionScript nn bn s ch
cn s dng ng mt dng lnh chi nhc. y l on m t trong mt Button
s dng function ny:

ActionScript

on (release) {
playSound("poof.wav");
}


Cu lnh "start"

Cu lnh "start" trong v d trn c th c s dng bng nhiu cch. Bn c th
thm hai tham s na vo n thay i cch m on nhc s c chi.

Tham s th nht bn c th thm c gi l "offset". N gip bn c th chi bn
nhc t bt k v tr no bn mun ch khng phi chi li t u. V d, dng lnh
ny s bt u chi t v tr th 1000 miligiy ca on nhc(1 giy sau khi bt):

ActionScript
mySound.start(1000);


Tham s th hai ca cu lnh "start" l s ln lp li ca on nhc. V d, nu bn
mun bt u bn nhc ti v tr sau 1 giy v lp ba ln, cu lnh s nh sau:

ActionScript
mySound.start(1000,3);


Bt u bn nhc ti v tr t u v lp ba ln:

ActionScript
mySound.start(0,3);


Cu lnh i i vi "start" l "stop". Khi bn ang chi mt on nhc, bn c th a
ra cu lnh "stop" bt c khi ny ngng hn on nhc. Bn phi thm vo tham s
l tn (Identifier) ca on nhc. Nu khng, lnh "stop" s ngng tt c cc on
nhc ang chi.

ActionScript
mySound.stop("poof.wav");


iu chnh m lng

Bn c th sa i on trc v khi ang chi bng mt s cu lnh. Cc cu lnh
ny cn c th iu chnh m lng ca on nhc, trong tt c loa hay ch tng ci.

Lnh "setVolume" l cch iu chnh n gin nht, bn ch cn cho mt tham s t 0
n 100 l bn c th vn to, nh mt on nhc:

ActionScript
mySound.setVolume(50);


Trong file "22playsoundvolume.fla" bao gm mt nt Play v bn nt khc iu
chnh m lng ln t l 0, 10, 50 v cui cng l 100. Nt Play s chi mt on
nhc 100 ln nn bn c th th iu chnh m lng trong lc ang chi nhc.

Ch l vic bn iu chnh m thanh ca mt on nhc s khng lin quan n cc
on nhc khc. V vy bn c th iu chnh cc m thanh khc nhau nh nhc nn
v cc ting ng.

i tng "Sound"

i tng "Sound" c hai thuc tnh m bn nn bit n. Th nht l "duration" l
di ca on nhc tnh bng miligiy. Th hai l "position" l v tr m on nhc
ang chi, cng tnh bng miligiy.

V d, nu mt on nhc c thuc tnh "duration" bng 3000, c ngha l n di 3
giy. Nu thuc tnh "position" bng 1500 th on nhc ang chi chnh gia.

Trong file "22tracksound.fla" th hin cch dng "position" v "duration" th hin
ca on nhc. Sau khi bt u, mt vch en s chy dn dn theo v tr ca on
nhc.


ActionScript
onClipEvent(enterFrame) {
// tnh xem chi c bao nhiu ca on nhc (gi tr t 0.0 n 1.0)
percentPlayed = thisSound.position/thisSound.duration;

// ly di ca thanh
barWidth = _root.bar._width;

// t v tr ca du vch
_root.mark._x = _root.bar._x + barWidth*percentPlayed;
}

Khi on nhc kt thc:

Bn c th s dng thuc tnh "position" v "duration" kim tra mt on nhc ht
hay cha, khi hai gi tr ny s bng nhau. Tuy nhin nu on nhc c lp
nhiu ln th hai gi tr ny s bng nhau mi khi cui on nhc.

Mt cch tt hn kim tra khi no on nhc kt thc l dng "onSoundComplete".
y l mt function s c thc thi khi on nhc kt thc hn.


ActionScript
mySound = new Sound();
mySound.attachSound("mySound.aif");
mySound.onSoundComplete = function () {
trace("sound done!");
}
mySound.start();


iu chnh cn bng:

Bn c th iu chnh m lng ca loa ny to hn loa khc thng qua lnh "setPan".
iu ny ging nh gin my stereo. Bn c th t gi tr t -100 n 100. Nu bn
l -100, tt c m thanh s c pht ra bn loa tri, cn 100 s l loa phi.

ActionScript

mySound.setPan(-100);


Bn c th tham kho file "22monopan.fla". Khi bn bm no nt "Play" bn tri, loa
tri s pht ra, bm nt "Play" bn phi, loa phi s pht ra.

Gi th 23: Qun l streaming cho movie, Managing Movie Streaming
Trong gi 23 chng ta s tin hnh nhng bc sau:
Tm hiu, gim st movie khi load
Lm 1 loader n gin
Lm 1 loader phc tp hn vi loading bar
Load cc media movie bn ngoi vo flash (sound, image)
Chng ta bt u vi bc 1 nh :

Cc Movie Flash u c tnh cht stream. iu ny c ngha l frame u tin ca
movie s bt u ngay khi n c np xung, ko ph thuc vo vic ci frame cui
cng c load xong hay cha.
Bn c th ko mun vic ny xy ra. V d nh movie ca bn l 1 on animation
ngn, bn c th ko mun n bt u cho n khi movie c load hon ton t web.
C vi cch bt movie i cho n khi loading xong. Cch thng dng nht l ta
to 1 loader frame. l frame u tin ca movie. N s quan st tnh cht ca
movie v xc nh xem khi nao th movie kt thc vic loading.

bit c c bao nhiu frame c load xung bn s dng tnh cht
_framesLoaded, cn bit tng s Frame ca movie bn s dng tnh cht:
_framesTotal.

Bn c th s dng iu ny trong 1 s trng hp n gin. V d bn t frame
u tin lnh stop();
ta to 1 button cho php ngi s dng tip tc. Khi ngi s dng click vo btn
bn c th dng 1 on script tng t nh sau xc nh xem phi lm g tip theo:

CODE
on (release) {
if (_root._framesLoaded == _root._totalFrames) {
play();
} else {
textDisplay = "Wait a few seconds and press again.";
}
}

Nu nh movie cha c load ht th text field m ta lin kt qua var textDisplay
s thng bo cho user.
Bn cng c th s dng k thut ny trong 1 phn ca 1 movie di. V d btn c th
nm Frame 50 v ch ngi s dng tip tc khi m 50 frames tip theo sn
sng. Ta dng on code sau thc hin:


CODE
onClipEvent(load) {
_root.textDisplay = "Waiting for the next sequence to load.";
_root.stop();
}

onClipEvent(enterFrame) {
if (_root._framesLoaded >= 100) {
_root.play();
}
}


y l phn u c bn ca 1 loader script. Tuy nhin c cc cch khc chnh xc hn
gim st vic loading hn l tnh s frames. Bn c th s dng getBytesLoaded
and getBytesTotal tnh tng s file v s file load.
y l on script t vo trong 1 mc frame u tin ca movie. frame u tin
bn ch t thm lnh stop();


CODE
onClipEvent(enterFrame) {
if (_root.getBytesLoaded() == _root.getBytesTotal()) {
_root.play();
}
}

mi ln enterFrame iu kin s c kim tra v khi tha mn tc movie c
load hon ton th movie s c play tip tc

Chng ta tip tc tin hnh lm 1 loader n gin cho ton b movie c load
trc khi n vt qua frame 1 :

1.M 1 file mi.
2. frame u ta to 1 keyframe
3.To thm 1 kf mi frame 2
c th test ci loader 1 cch r rng th frame 2 nn cha 1 movie ti thiu l 100
K. Cch tt nht tng dung lng l ta import 1 video.

4.Tr li frame 1, chng ta mun c 1 movie ch cho n khi ton b movie c
load trc khi tip tc sang frame 2 ---> cho 1 lnh stop(); vo frame 1 ny.
Ta to 1 shape n gin v convert n sang mc v tng c n sang 1 gc mn hnh m
ngi xem ko nhn thy (chui rng). Ta cho on script sau vo:


CODE
onClipEvent(enterFrame) {
bytesLoaded = _root.getBytesLoaded();
bytesTotal = _root.getBytesTotal()
percentLoaded = Math.round(100*bytesLoaded/bytesTotal);
_root.displayText = "Loading: "+percentLoaded+"%";
if (bytesLoaded == bytesTotal) {
_root.play();
}
}


on script s kim tra getBytesLoaded xem liu movie kt thc vic loading
cha. y ta tnh s phn trm load (percentLoaded) v cho hin th con s ny
qua bin displayText root level
Bn ng qun to 1 dynamic text field v t var cho n l displayText nhe.

S rt kh kim tra khi bn test ci movie ny vi Flash player trn my v movie ca
bn chy nhanh qu, ko kp nhn ci loader. Bi vy nn publish n ln 1 trang web
ri test . Hoc bn c th gi thit lp 1 cai modem 56 K
No by gi goto website v test bn s thy qu trnh loading c hin s phn
trm text field. Khi t n 100% movie s tip tc play.
Bn c th kim tra movie ca bn vi file: 23simpleloader.fla

3. cho ci loader ca chng ta thm p, chng ta tin hnh bc 3 lm 1 loader
phc tp hn c thm 1 ci progess bar na nh :
cc bc lm nh sau:

1.Bt u 1 movie mi

2.V 1 hnh ch nht rng vi border

3.Chn ton b ci hnh ch nht ny v t chng vo 1 mc bng cch chn insert v
convert to mc.

4.Click 2 ci vo mc mi ny edit n

5.Tch ring phn fill v border ca ci hnh ch nht ra lm 2 layer

6.Copy ci fill ca hnh ch nht v to 1 layer mi paste n vo. Layer ny nn
nm trc v layer c cha hnh ch nht c th nm sau n.

7.Chn hnh ch nht mi ny(cai fill) v chn cho n mu ti hn. t v tr khp vi
ci border, pha trn hnh ch nht c

8.By gi ta convert n sang mc v t instance name l barFill
Double click vo mc mi ny v ta chnh reg. point cho n l gc tn cng bn tri.


Tr li movie chnh, ta to thm 1 layer mi. V t 1 dynamic text . t var cho
n l displaytext, bn nh chn font ch p dp v mu cng p p 1 cht nh
movie ca timeline chnh ta t on code sau vo mc chnh ca chng ta:


CODE
onClipEvent(load) {
// initialize variables
bytesLoaded = 0;
bytesTotal = _root.getBytesTotal();
}



on code enterFrame phi lm nhiu vic nht. N c nhim v theo di s
bytesLoaded v bytesTotal lin tc mi Frame. Bin percentLoaded c gi tr t 0 n
100. V n c s dng chnh thay i _xscale ca thanh Bar. Bn cn nh l ta
mc nh im reg. point ca thanh Bar ny gc bn tri ko? Chnh v vy m
thanh bar s di ra theo gi tr ca bin percentLoaded sang pha bn phi
Khi m s bytesLoaded = s bytesTotal th display text s hin thng bo: "Loading
Complete" v chuyn movie sang frame tip theo.


CODE
onClipEvent(enterFrame) {
// if there is more to load
if (bytesLoaded < bytesTotal) {

// get current amount loaded
bytesLoaded = _root.getBytesLoaded();

// calculate percentage
percentLoaded = Math.round(100*bytesLoaded/bytesTotal);
// if there is still more
if (bytesLoaded < bytesTotal) {

// display text
displayText = "Loading: "+percentLoaded+"%";

// set scale of bar
barFill._xscale = percentLoaded;

// no more left
} else {

// display complete
displayText = "Loading Complete.";

// fill out bar
barFill._xscale = 100;

// go to next frame
_root.nextFrame();
}
}
}


Ko bit hng dn nh trn cc bn hnh dung ra cch lm cha nh. Nu cc bn
cha hiu th cbt s post thm hnh minh ha vo

Timeline ca chng ta tt nht nn phn ra nh sau nha:
-Timeline chnh s gm c 3 layer. Layer th nht s cha ci loader bar mc m
chng ta to. N s ko di trong 2 frames.

-Layer th 2 s gm c 2 keyframes fr1 v fr2. kf 1 l lnh stop();
Layer th 2 ta s cho 1 button. Ngi s dng s click vo button xem tip phn
cn li ca movie.
Trong btn cho on code sau:

CODE
on (release) {
play();
}

-Layer th 3 bt u t frame th 3 s cha ci movie cn load ca bn

Cc bn c th xem thm file : 23complexLoader.fla

C nhng lc bn cn to cc movie ln c cc media th ta ko cn phi to 1 movie
y nhng file media trong m c th load cc file media c sn ny t bn ngoi.
Nh vy bn c th xy dng 1 trnh din ln bng cch s dng nhng file bn
ngoi.
lm c iu ny chng ta s tm hiu cc bc sau:

Th ch movie hin thi
Cch n gin lm iu ny l bn chia ct movie ny ra thnh cc phn ring. Khi
1 movie kt thc ta c th chuyn n 1 movie khc. Tt c nhng g bn cn l dng
lnh loadMovie
V d, bn c 1 frame cui 1 movie di. Khi ngi xem n , h c th click vo
1 button v xem 1 movie khc. on code n gin nh sau:

CODE
on (release) {
loadMovie("animation2.swf");
}


Hoc l bn c th cho ngi s dng la chn animation m h mun xem tip.
cui movie s c 2 buttons cha cc movie khc nhau. Vic to lin kt gia cc
movie l rt quan trng sao cho khi user c th tr li movie c ban u.
Bn c th xem v d file 23movie1.fla bit thm lm th no trnh by tc
phm ca bn vi cc files c sn.

Loading a Movie Clip

Vi lnh loadMovie bn c th thay th ch ca 1 mc bng 1 mc khc. V d thay
th ch ca myMovieClip bng file otherMovie.swf bn ch cn lm:

CODE
myMovieClip.loadMovie("otherMovie.swf);


Khi s dng loadMovie bn c th dng getBytesTotal and getBytesLoaded
functions thng bo cho ngi dng bng text hoc bng progess bar m chng ta
lm trn qu trnh load.

Nu mun preload mt movie clip sn sng lc cn hin th, chng ta s to mt
movie trng, khng c g trong ngoi tr mt cu lnh stop(). Sau chng ta load
mc vo mc trng ny (ko hin th trn stage). Khi load hon ton th movie ca chng
ta sn sng frame u tin.

Movie file ny s nm sn sng trong browser cache ca user. By gi khi n on
c s dng mc ny th lnh loadMovie s lm vic. Lc s nhanh hn v file
c download hon ton v ri. Sau s dng lnh gotoAndPlay(2) qua frame
1.


Loading a JPEG

myMovieClip.loadMovie("picture.jpg");


Flash MX cng cho php ta kh nng load 1 file JPEG ngoi vo.
Cch lm tng t nh cch chng ta load movie trn, ch cn thay i a ch
movie bng a ch ca file JPEG l ok:

CODE
myMovieClip.loadMovie("picture.jpg");

mc myMovieClip by gi c thay th ch bng 1 mc c cha bitmap image ny.
Bn c th kim tra v xem v d file 23loadipeg.fla


Loading a Sound

C 2 cch play 1 sound t 1 file bn ngoi. C 2 u s dng sound object v lnh
loadSound. Cc sound file ny cn dng ph bin l mp3.
Sau y l 1 v d cho cch th 1, chi 1 event sound. y ton b sound s
c load vo b nh trc v sau c chi nu nh c lnh start();


CODE
on (release) {
mySound = new sound();
mySound.loadSound("mysound.mp3",false);
mySound.start();
}


Flash s ghi nh l lnh start c a ra thm ch khi sound mi ch bt u
download. Khi sound c load xong th n s c play ngay lp tc


CODE
on (release) {
mySound = new sound();
mySound.loadSound("mysound.mp3",true);
}

Cch th 2 l ta s dng true param th 2. Gi tr true ny s bo vi flash l 1
stream sound. Ngay khi sound c load phn no th s bt u chi ngay trong lc
phn cn li vn tip tc c load. Nu ngi dng c kt ni mng tt th s nghe
c ton b sound khi load.

Ghi ch l bn ko cn phi s dng lnh start vi 1 streaming sound. Tuy nhin bn
cn phi ch khi s l file MP3. V d nu bn s dng file nhc mp3 vi 128 Kbps
hay 160 Kbps thng dng nghe th n s l 1 file qu ln c th stream vi
internet, c bit nu ngi s dng dng modem. 32 Kpsb hay t hn s thch hp
hn khi ta s dng stream.

Chng ta tng kt li nhe:

Streaming l 1 cch rt tt gip chng ta s dng d dng hn vi 1 movie ln. Ta c
th s dng AS kim tra 1 qu trnh loading. Bn c th gi movie frame th
nht v ch n tip tc khi ton b movie c load.

Bn cng c th thng bo cho ngi dng qu trnh loading bng text thng bo s
% hoc 1 bng 1 progess bar chng hn.

Bn c th chia movie ra thnh cch file ring v s dng loadMovie nhy t file
ny ti file khc nh ngi s dng mun.

Cc file bn ngoi c th c load vo bng cc cch khc nhau. Ngoi movie bn
c th load 1 file nh, file nhc na.

Mt s cu hi v tr li sau c th gip bn nm r bi hn:

Cu 1: ta c th load 1 mc, vy c th unload chng ko??

-Tr li: c, bng lnh unloadMovie

Cu 2: bnh thng th flash cn bao lu load trc khi n start??

-Tr li: ngay frame u tin. Bi vy bn cn s dng lnh stop nu nh mun n
i trc khi tip tc.

Cu 3: 2 cch xc nh khi 1 movie c load hon ton??

-Tr li: cch 1 dng getBytesLoaded == getBytesTotal function
cch 2 dng _frameLoaded property v _totalFrames property.

Ngoi ra bn c th xem thm cc bi vit sau:
Cch to 1 preloader n gin
http://www.vnfx.com/ipb/index.php?showtopic=2325

Cch tng qut to 1 loader p:
http://www.vnfx.com/ipb/index.php?showtopic=2921

Ngoi ra v loadMovie, loadSound cng c rt nhiu bi. Bn chu kh search ha

Gi th 24: V vi AS, Hour 24. Drawing with ActionScript
y l h cui cng, cng l gi rt th v, hy vng cc bn cm thy dzui dz khi v
bng AS . CBT ko c kinh nghim dch bi, vi li nhn vo my bi text dy c
ch l ti mt ti mi nn nhiu ch dch lung tung, theo thch bi vy c ch no
din t ti ngha, ko ng th cc bn c thng thn gp , ng thng tic .

Trong gi ny chng ta s hc cch:
V ng thng v ng cong
T mu 1 vng
ngi s dng v vi chut
t cc hnh v trong 1 movie clip mi
To cc text fields


1a.Drawing lines

- v 1 ng thng, vic u tin cn lm l nh ngha cc gi tr ca lineStyle, n
dy nh th no n, ri c mu g v alpha.

CODE
lineStyle(thickness, color, alpha);

Mu (color): gi tr c a ra di dng s thp lc phn hexa, v d: 0x000000 l
mu en, 0xffffff: trng , chng ta c th nhn vo bng color mixer bit thm
trong sut(alpha): min = 0; max=100;
dy (thickness): dy nh nht l 0, cn ln nht l bao nhiu th cbt ko bit .
Vi dy 1 ci line c dy l 1 pixel, cn nu ta cho gi tr l 0 (hairline) th n
vn c dy l 1 pixel . Tuy nhin chng khc nhau ch: vi hairline nu nh
chng ta thay i scale ca n th dy ca n vn ko thay i. Cc bn th on
code sau, v thay i gi tr dy nh:

CODE
lineStyle(0,0x000000,100);
moveTo(20,50);
lineTo(200,200);
_xscale=300;
_yscale=300;


Nhn on code trn ta thy xut hin lnh:

CODE
moveTo(20,50)

v 1 ng thng ta cn xc nh 2 im: u v cui. Mi im li c xc inh
vi 2 gi tr x v y
---> moveTo l im u, im t bt. Nh vy cu trn ta t bt ti x=20; y=50.

----> lineTo l im tip n. Ta c x= 200; y=200. Nh vy chng ta v c
ng thng ni t im (20,50) n (200,200).

Ch :
1. nu nh cc bn ko nu im moveTo th n t mc nh l im (0,0)
2. nu nh cc bn v thm cc line tip theo vi lineTo th im t bt c
mc nh l im cui cng ca line trc.
V d v 500 ng lung tung trn mn hnh ta c on code n gin sau:


CODE
// set line style
lineStyle(2,0x000000,100);

// draw 500 lines
for(var i=0;i<500;i++) {

// pick random start point
x1 = Math.random()*550;
y1 = Math.random()*400;

// pick random end point
x2 = Math.random()*550;
y2 = Math.random()*400;

// move to start point
moveTo(x1,y1);

// draw to end point
lineTo(x2,y2);
}


By gi cc bn th play tr ny xem sao, th thay i alpha, color or thickness
ca n

Mi ngi th copy and paste on code sau xem hin ra g no :


CODE
// set line style
lineStyle(2,0x999999,100);

for(var x=-400;x<550;x+=10) {
// draw diagonal strip from left to right
moveTo(x,0);
lineTo(x+400,400);

// draw opposite strip
moveTo(550-x,0);
lineTo(550-x-400,400);
}



1b.Drawing Curves

Tng t khi bn bit cch v line ri th v curveTo ko c g l kh. N ch c
thm 1 cht gi tr thi. Ta c on code:


CODE
lineStyle(3,0x000000,100);
moveTo(150,200);
curveTo(275,275,400,200);

Nh bit moveTo l im bt u, anker1 ha.
curveTo(control_x, control_y, anker2_x, anker2_y);
Control_point l tip tuyn ca 2 im anker vi ng cong
anker2 l im cui cng ca curve.
Cc bn c th c thm 1 s bi vit trong din n v ng cong bezier hiu r
thm .

Chng ta play tip vi on code sau:


CODE
lineStyle( 1, 0x0000FF, 100 );
moveTo(200,200);
curveTo(250,200,300,200);
curveTo(300,250,300,300);
curveTo(250,300,200,300);
curveTo(200,250,200,200);


Olala, ti sao chng ko hin ra cc curve m li l 1 hnh vung. Nguyn nhn l do
chng ta cho cc gi tr control point gia 2 im kia
Hy th thay i 1 cht xem chng ta c g no:

CODE
var bend = 42;
moveTo(200,200);
curveTo(250,200-bend,300,200);
curveTo(300+bend,250,300,300);
curveTo(250,300+bend,200,300);
curveTo(200-bend,250,200,200);


s dng bin bend thay i control point ta c 1 hnh trong hi mo ri . V
phn ny plz c thm cc topic trong box AS

2. Drawing Filled Areas

Trc ht c th t mu cho 1 vng ta cn phi v 1 hnh khp kn ha.
Sau dng lnh beginFill v:

CODE
beginFill(color of fill, alpha of fill)


V d on code sau:


CODE
lineStyle( 3, 0x000000, 100 );
beginFill( 0xFF0000 );
moveTo(175,100);
lineTo(375,100);
lineTo(375,300);
lineTo(175,300);
lineTo(175,100);
endFill();


Nu nh 1 vng c ct bi line ln th 2 th ch n s ko c mu na. Da
vo ta c th to nn 1 s hnh th v . Bn th copy on code sau xem n hin
ra ci g no v ch no c t mu, ch no ko :

CODE
lineStyle(3,0x000000,100 );
beginFill(0xFF0000);
moveTo(250,50);
lineTo(308,230);
lineTo(155,120);
lineTo(345,120);
lineTo(192,230);
lineTo(250,50);
endFill();


C cch khc tt hn v 1 star, n cho php chng ta qui nh cc gi tr ban u.
Bn th xem file fla 24betterstar.fla xem sao

Pause

3.V vi chut
Phn tip theo trong sch ny c on code user v vi chut, thnh tht m ni,
nu bn c on code ca DS post bn phn Flash hack th bn s thy n khc
nhau 1 tri 1 vc nh th no http://www.vnfx.com/ipb/index.php?showtopic=3007
Nu bn c on code ca DS th ng nn c tip on code hng dn trong
cun sch ny lm g. CBt thy l ko cn thit phi dch ch ny nhng trt ri nn
tn trng quyn sch, cbt dch cho y vy

1.To 1 shape n gin, convert to mc.
2.Copy on code sau vo mc (cbt phn tch km)


CODE
onClipEvent (load) {
// cho cc gi tr cho kiu line
_root.lineStyle(0, 0x000000, 100);
}

//khi chut c dz xung th bt u v
onClipEvent(mouseDown) {
// ok to draw
draw = true;

// xc nh im start v
startX = _root._xmouse;
startY = _root._ymouse;
_root.moveTo(startX,startY);
}

//khi th chut ra th ko v na
onClipEvent(mouseUp) {
// don't draw anymore
draw = false;
}

//bt u
onClipEvent (enterFrame) {
if (draw) {

//ly v tr hin ti ca chut
newX = _root._xmouse;
newY = _root._ymouse;

//nu nh v tr khc vi v tr ban u
if ((newX != startX) or (newY != startY)) {

//v 1 line ti v tr mi
_root.lineTo(newX,newY);

// reset location for new time
startX = newX;
startY = newY;
}
}
}


Phn ny ch c vy

4.To 1 movie clip ring cho cc hnh v

Nhng g chng ta lm trn ch l v 1 cch n gin trn stage, n c bt li l
c th b bt k mc no che khut. ko th di chuyn.
Khi chng ta t nhng ci ny vo trong 1 mc th thun tin hn rt nhiu. ta c th
thay i _x, _y, rotation, alpha, scale ....

to 1 new mc ta dng lnh :
CODE
my_mc.createEmptyMovieClip("tn ca new mc", level ca n)


V d :

CODE
this.createEmptyMovieClip("myMovieClip",1);
myMoveClip.lineStyle(0,0x000000,100);
myMoveClip.moveTo(100,100);
myMovieClip.lineTo(200,200);

Nh vy bn c 1 mc mi tn l myMovieClip, level 1, c cha cc hnh v trn.

Nu bn mun vit nhanh hn th c th vit li nh sau:

CODE
this.createEmptyMovieClip("myMovieClip",1);
with(mymovieClip){
lineStyle(0,0x000000,100);
moveTo(100,100);
lineTo(200,200);
}



Lnh createEmptyMovieClip ny cn c rt nhiu tc dng khc nh ta c th attach
thm movie vo hay l sao chp (duplicateMovieClip)

Ri bi gi bn hy th to 1 mc mi i no

C 1 bi hng dn v bng tuyt kh p trong cun sch, tuy nhin code c chia
nh thnh cc function kh di dng v mt cng. trong khi trong din n ca chng
ta c nhiu on code v lm tuyt hay hn rt nhiu: bi th tri lm tuyt ca DS
trong box hng dn thc hnh. c bt hp vi ch ny l bi dng 100% bng
AS ca Raider (tm trong mc lc), trong c on code rt hay. Bi vy cbt s ko
dch v on code trong sch ny na.
bit thm chi tit xin xem file fla 24snowflakes.fla

5.Textfield

y l phn cui cng, chng ta s hc cch to 1 text field v sau l lm 1 effect
flying words.

To Text
to 1 text chng ta cn to 1 text (text field) vi lnh :

CODE
createTextField("text_name", level , v tr _x, vi tr _y, chiu rng,chiu di);

Sau l text hin ln trong text field :

CODE
text_name.text = "Ni dung text";


V d on code sau, mnh phn tch trong luon cho nhanh:


CODE

//to 1 ch tn my..., level 0, _x=0, _y=170, width=550, height=60
createTextField("myTextField",0,0,170,550,60);

//text
myTextField.text = "Welcome to VNFX";

// gi tr true l s dng font chng ta add trong th vin, false l ta s dng font mc
nh
myTextField.embedFonts = true;

//mc nh cc tnh cht ca text
myTextFormat = new TextFormat();

//loi ch, c, mu, v tr
myTextFormat.font = "Arial";
myTextFormat.size = 48;
myTextFormat.color = 0x330000;
myTextFormat.align = "center";

//lin kt nhng tnh cht ny vi text ca chng ta
myTextField.setTextFormat(myTextFormat);



Ch khi s dng embedFont ta cn phi chn 1 font trong th vin click vo gc
phi trn cng ca th vin, chn font m bn mun, sau click chut phi, linkage,
export, IDname

Nu bn mun to 1 Input text th cn phi cho type ca textField l input, sau c
th set thm cc variable my c th nhn info t user

Cn rt nhiu cc tnh cht trong textField v textFormat class, cc bn nn c thm
help trang tr cho textField ca mnh

L thuyt ch c vy, no by gi chng ta s lm effect flying words
CBT ko dm nhn xt nhiu v on code v cch lm trong cun sch ny, tuy nhin
n c chia nh thnh cc function gy rc ri, di dng cho ngi c, li cn phi
to thm mc trn stage, c ch hn ch na... Thi th c a ra vy


CODE
function createText(n,text) {
// create a new movie clip
this.createEmptyMovieClip("text"+n,n);
mc = this["text"+n];

// set the text format
myFormat = new TextFormat();
myFormat.font = "Arial";
myFormat.color = 0x000000;
myFormat.size = 24;
myFormat.align = "center";

// create a new text field
mc.createTextField("myTextField",1,-100,-20,200,40);
mc.myTextField.text = text.toUpperCase();
mc.myTextField.embedFonts = true;
mc.myTextField.setTextFormat(myFormat);

// return reference to this movie clip
return(mc);
}

function createAllText(textList) {
// loop through array of text
for(var i=0;i<textList.length;i++) {

// create movie clip with this text
mc = createText(i,textList[i]);

// set random location
mc._x = Math.random()*450+50;
mc._y = Math.random()*350+25;

// set scale to nothing
mc._xscale = 0;
mc._yscale = 0;

// set scale variable to negative amount
mc.scale = 0-i*100;
}
}

function init() {
// create array of text
var words = "Love,Peace,Destiny,Llamas,Fate,History,Cheese,Rainbows,Tiny
Rocks";
var textList = words.split(",");

// create all text movie clips
createAllText(textList);

// remember how many there are
numWords = textList.length;
}
function moveText() {
// loop through words
for(var i=0;i<numWords;i++) {

// increase the scale of this movie clip
mc = this["text"+i];
mc.scale += 10;

// hide movie clip when scale is too big
if (mc.scale > 300) {
mc._visible = false;

// set scale of movie clip to scale when it is a positive number
} else if (mc.scale > 0) {
mc._xscale = mc.scale;
mc._yscale = mc.scale;
}
}
}
init();
stop();


Sau bn to 1 mc trn stage v nht on code sau vo:

CODE
onClipEvent(enterFrame) {
_parent.moveText();
}


Cui cng vo th vin, trong menu ca th vin ta chn font ru linkage, ri export
vi tn Arial.

effect ny ko c g khc l ta to 1 array cha cc text, sau cc text hin ra t t
v dn dn phng to ln, n 1 kch thc no th bin mt.
cc text hin ra t t ta ch cn mc nh scale ban u ca text l ko, sau dng
thm 1 var na. Dn dn phng to ln th ta thay i scale thi.
Thy on code trn di dng qu nn cbt vit li cho n n gin bt nh sau


CODE
function a(){
wordArr=new Array("vnfx","flash","actionscript");
//ta to 3 mc cha 3 text field
for(var n=0;n<wordArr.length;n++){
_root.createEmptyMovieClip("text"+n,n)
mc=_root["text"+n];
myFormat=new TextFormat();
myFormat.font="Arial";
myFormat.color = 0x000000;
myFormat.size = 24;
myFormat.align = "center";

mc.createTextField("myTextField",1,-100,-20,200,40);
mc.myTextField.text = wordArr[n];
mc.myTextField.embedFonts = true;
mc.myTextField.setTextFormat(myFormat);

//mc nh cc gi tr ban u
mc._x=Math.random()*450+50;
mc._y=Math.random()*350+25;
mc._xscale=mc._yscale=0;
//bin to s xut hin t t
mc.scale=0-n*100;

mc.onEnterFrame=function(){
this.scale+=10;
if (this.scale > 300) {
removeMovieClip(this);
} else if (this.scale > 0) {
this._xscale=this._yscale = this.scale;
}
}
}
}
a();

//cho lp li sau 5 s
setInterval(a, 5000);


Kt thc ri
c thc mc kin co g cc bn c gp ha

You might also like