Professional Documents
Culture Documents
24h Hoc Flash
24h Hoc Flash
ActionScript
on (press) {
gotoAndPlay ("my frame");
}
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 :
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
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 :
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
ActionScript
gotoAndPlay(7);
gotoAndPlay(20);
gotoAndPlay("my frame label")
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.
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
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.. ^^
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;
}
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;
}
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.
this.startDrag();
}
}
onClipEvent (mouseUp) {
if (this.hitTest(_root._xmouse, _root._ymouse)) {
this.stopDrag();
}
}
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;
}
}
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;
}
}
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");
}
}
}
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>
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);
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>";
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
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
CODE
a = a + 7;
a += 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
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);
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);
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
}
CODE
pos = {x:10, y:20};
CODE
trace(pos.x);
CODE
record = new Object();
record.name = "Gary";
record.age = 32;
record.state = "Colorado";
trace(record.name);
CODE
circleColor = new Color("circle");
trace(circleColor.getRGB(0xFF0000).toString(16));
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
CODE
myDate = new Date();
trace(myDate);
to mng:
CODE
myArray = [36,23,63,71,25];
CODE
trace(myArray[0]);
CODE
myArray = [36,23,63,71,25];
trace(myArray);
a = myArray.pop();
trace(a);
trace(myArray);
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);
CODE
myArray = [36,23,63,71,25]
otherArray = [58,97,16];
newArray = myArray.concat(otherArray);
trace(newArray);
Lm ch chuyn ng
onClipEvent(enterFrame) {
// follow the mouse
this._x = _root._xmouse;
this._y = _root._ymouse;
}
- 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.
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;
}
}
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 .
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 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
scrollText.scroll--;
}
- V nhp on code ny cho button i xung:
CODE
on (press) {
scrollText.scroll++;
}
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
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();
}
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
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);
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);
}
// 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);
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
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();
}
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
, th v nh.
s c t sinh ra bng AS
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);
}
CODE
on (release) {
getURL("anotherpage.html");
}
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>
- 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>
flashmovie_DoFSCommand.
Trong hm ny th chng ta s truyn d liu li cho movie. Khng may l Netscape
. Internet Explorer
v Internet Explorer nhn nhn movie ca chng ta khc nhau
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);
}
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>
CODE
fscommand ("alert", "This is alert 1.");
CODE
<FORM NAME="flashControlForm">
<INPUT NAME="gotoFrame1" TYPE=Button VALUE="Frame 1"
onClick="window.document.flashmovie.GotoFrame(1);">
</FORM>
CODE
<BODY bgcolor="#FFFFFF" onLoad="initComm();">
on (release) {
if (jsCommOK == "OK") {
fscommand ("newwindow", "content.html");
} else {
getURL ("content.html", "_blank");
}
}
</SCRIPT>
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");
CODE
mySendVars = new LoadVars();
myLoadVars = new LoadVars();
mySendVars.name = "George";
mySendVars.ID = 47;
mySendVars.sendAndLoad("serverprogram.cgi", myLoadVars);
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");
}
}
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 FlashLee) 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()
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.
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>
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, ...
II> Cc cu lnh
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
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
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());
}
Output.
ActionScript
function buttonPressed(buttonInstance) {
if (buttonInstance == doneButton) {
trace("Option One: "+option1.getValue());
trace("Option Two: "+option2.getValue());
trace("Option Three: "+option3.getValue());
}
}
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());
}
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
// 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
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;
}
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
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
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();
}
CODE
onClipEvent(enterFrame) {
// if there is more to load
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
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);
. V
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);
}
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