大家在欣赏Flash的时候,常常会在一些动画中发现,把鼠标指针放入画面内就会变成有趣的动画指针,而且形状还会随着你的移动、点击等动作发生变化。其实这种效果并不难实现,今天我们就来看一个这样的例子。
( T; d% y# C1 i+ l
I7 d" f# g( i6 o7 C/ p# g
0 q1 b! H% }9 ]$ w+ B/ d+ C8 R8 H+ \9 C# h0 {, R' |
实例效果:
+ t) ^- Q9 a0 ]2 Y3 v8 P% _2 ?2 ` E! z8 G2 h) _& f. _( M. I+ t
: |: a; r: t* H. m
2 w, z' m6 t( U! t动画开始播放时,鼠标指针是一个大小不停变化的箭头;当移动到物体上的时候,显示为手形;在物体上按下鼠标左键的时候,变成“握拳”形;松开左键后再恢复为手形(如图1)。
5 C$ X4 J& J1 s2 t, ~2 ? |/ ]3 C& o( x
$ R U: g% z& t+ b7 F3 n0 p) _
' j) a0 x: p) S2 c6 W5 B
' l6 e& r; Q6 [ a0 ]7 [* l, o
0 y& _5 n, B" A
% ]2 q0 L) n* s% |1 m
0 e- E b, `8 J) ?& w3 \2 ]3 w图1 鼠标指针的三种样式
7 \! V* I" l, H' h4 b0 e' F- B3 A5 `! ]8 y
3 W1 |2 M3 _: Y7 v
& m: C5 d: v- y) e! t制作步骤:
( ~/ r7 y# Z5 {
; z( n' C& d; c7 t. m1 M- ~3 Q" W6 j2 n- }5 O1 ?0 }; R
+ X* f* _2 D7 b& @' }
1、我们先来制作本例需要的一些按钮(Button)和影片(MovieClip)元件。首先启动Flash MX建立一个新文件,按Ctrl F8创建一个名为“物体一”按钮(Button)元件,由于按钮并不是本例重点,所以样式随意。同理再创建一个名为“物体二”的影片(MovieClip)元件(注:这里之所以制作两种不同的元件,是为了后面介绍交互性动态光标的不同用法)。
% L C ^8 h) D$ n: J# C- f
9 n' \) Y) N2 E6 i" @5 d
( E3 f6 V3 K" Y! I) X5 Y& A; x6 w9 y6 p- H; d4 q9 B
再创建一个名为“箭头”的影片元件,制作出大小不断变化的箭头,制作过程比较简单,这里就不多说了。
+ v' L. x% L( D- A( [& u# V* g$ n% Z; b9 y+ p
! K! J% o) V& G" ^1 t5 N# u9 t! j4 w1 s
" i' i ^0 ?6 o2 P5 A$ {9 Z2、按Ctrl F8创建一个名为“动画指针”的影片元件,按F6两次,插入两个关键帧,这样时间轴上就有了三个关键帧,为第二和第三帧加上Actions语句:“Stop();”。按Ctrl L打开元件库(Library),将第一步中创建好的“箭头”影片拖放到第1帧中,在第2帧中绘制一个“手形”标志,在第3帧中绘制“握拳”标志。单击窗口下方的Properties按钮打开属性框,分别为三帧加上帧名(Frame Lable)。在本例中,我们称第1帧为“zhengchang”、第2帧为“yidao”、第3帧为“anxia”(如图2)。
& b3 F, L" E& C2 t% ^
- Q( @+ q1 P+ i0 x$ r, d! Y
% W( i, l. \, Z2 f# \3 \ w, [
3 E o) A# N3 |9 W, B7 p+ Z3、回到主场景中,将库中的“物体一”、“物体二”、“动画光标”都拖放到场景中。单击窗口下方的Properties按钮打开属性框,分别为三个物体加上实例名(Instance Name):Object1、Object2、dhzz;选中“物体一”影片,右击选择Actions,输入以下语句(注“//”后面的文字是语句说明,无需输入):
4 y; O0 G- e( F) f% u/ ~8 U8 Y; s" f5 i/ ]
, T% x3 n$ q% o$ J4 i
, i* J% q% J `0 ]% C6 pon (press) {
! v9 E( |5 w$ G. _ v3 z2 d/ j5 ]; m5 F9 E" H" {
- i2 W2 L5 @! |- I: k
( R) u. { p: s2 ?8 R% d$ sstartDrag("_root.object1");
: C' o1 } p6 e0 F8 O7 z- q H
2 \; F/ R9 I- [
& q5 X% d, O' j# b$ v
1 r: U. y$ v1 d0 `, D* `
}//在按钮上按下鼠标开始拖动
2 J7 R) I$ H; `
1 t' T2 B; H2 j( D" t! Z
0 ?$ s( J6 e/ ^9 \9 o) w5 I: U
3 |, E% `! `: |+ X" Zon (release) {
- _3 g! A. {/ r% K
! m* }7 X i0 V, H7 q# X& l S0 n1 h
+ I# G7 @% V$ K8 r Q
stopDrag();
# G2 x# P* P2 x E' c8 R+ Z# F- h- H1 |+ P! R! E* m* V! p
9 t0 v! A" b5 x! ~; q
9 r2 S3 g8 a/ P2 z2 C+ I7 p* p S) \}//在按钮上松开鼠标停止拖动
$ G4 o9 j) V0 e2 l; b
! ]; {& e' R! }8 J( V- ?% {# i3 l* L: I, t' S/ X% u* K+ c, u' j4 G* T
. K" T" b$ O- `8 Z& ~& L; s4、利用同样的方法为“物体二”影片加上语句:
# s! w0 X0 d2 I% D
. \# h% a' E* X! @! J7 O) t9 a, I) Z0 `5 u* Y. t* K5 j; O
2 h/ w' d4 A9 {1 E$ x) n% z/ Y
onClipEvent (mouseDown) {
. ~5 t8 ]+ c' j* ?3 g) q1 J" ?6 ?+ x' W' q% g& R
* p) D# Z9 ?! Z
+ T( ^$ B: f$ v6 [, QstartDrag("_root.object2");
1 l9 V. w( a2 S% w# s# N
8 n" g! t }* Y, \6 K
6 u/ R1 I$ u+ D6 Q
$ R8 d: G l2 z0 H}//在影片上按下鼠标开始拖动
w& o) g) @) y
- ^8 B- p2 ?$ d8 \4 o2 L
) p: O. b) o6 k. D% z3 S( ^! e2 P, ` ?* s w+ E; r/ a
onClipEvent (mouseUp) {
6 z* y/ I. Z+ T2 J% ^
6 W" Y& R- T h0 e: C
# ?9 o1 C1 ?- E4 e: h
% D) d* _5 J7 g/ \/ kstopDrag();
* J! h! X( X6 H9 p6 U; r8 \. O/ T& S: j' r( w
8 N, X% s% P: x" r+ B5 O
6 x) h4 t0 o- Z) A
}//在影片上松开鼠标停止拖动
) ?# z! D3 N. k* R/ D b2 o; t& [# F
# y$ U5 L Z; I4 K' Z) u3 y. ]
" Y0 i v- t5 ]" N
大家不难看出,虽然都是拖动,但由于对象的属性不同,所以语句也有所不同。在Flash MX中利用上述的两种语句可以实现对任何物体的拖动,十分方便。
1 S& H8 M+ w$ W$ i- C# l! L1 j) P! ^0 o( W7 e0 w
1 n0 Y- ~/ N- _: B4 T' ^' k
" Z$ l m ~" T) r4 }2 h, b: }7 [; Y' T0 u q
$ N+ `& g+ |' o( q, D% y" m8 @3 F# J
图2为关键帧定义帧名,以便于管理
; B$ X3 @4 _* e, [
; J1 w) P% S- v( ~/ P0 H$ f* [, t0 W+ k
, ~7 c) [& G: q1 k9 y5、选择主场景时间轴上的第1帧,单击右键选择“Actions”,为帧加上如下语句:
' m( l0 t! v7 b* G) x3 M+ k
& d7 A$ D S1 s$ @ n% B8 B: W& P7 ?' r8 e9 _
$ C3 l9 s% C! vfscommand("trapallkeys", false);
- V# H8 O; f+ {5 M, d4 H
( Y8 e5 F( L( J5 b
) N b1 B2 G& w8 m" J. }; S- d$ P" M1 D1 t# D, G
//关闭播放器快捷键
2 z3 S8 S; b# a: I
; d" o3 C& H. D, |% g, S
0 Q" ^; i: Q: M$ |1 D! b
" _! r& v. N5 ]. Ifscommand("showmenu", false);
' T& j, _2 ?5 f) _4 [( w- n
) s+ d1 }; L, h8 R& U" N# @
5 L& U; p/ w" @4 v
$ b: Q- U5 T4 T& r# F* c//关闭播放器右键快捷菜单
8 {! g! Y) [) |
' Z# u- U' w2 d
5 b. R) E/ ?. \. R& K0 ?: Z, t7 i5 h0 {: L% ~
function showzhengchang() {
4 b% I- s7 K( B4 q, v
/ ?0 c2 R$ j% z+ D: U2 ~
& u5 S4 X# ?6 x% h* a3 P) d' C# e* J ~7 _; {) o
dhzz.gotoAndStop("zhengchang");
. m! z) \) k% M3 j0 `* ]+ z! S8 w4 }
; G/ T& g2 X7 x$ Q6 F2 Z) q, t* q! H9 L
1 p/ m9 M+ B# R/ F- b% q
8 g# N: b- y: C. U}//定义动画正常播放时鼠标指针的样式
, `; ?5 Y- K$ J4 k8 W8 o
- S4 G3 W# w- ]# B x2 R4 }% H7 N8 v. K1 _
- L& {% X0 x, N3 S/ x/ j/ zfunction showyidao() {
; [- o" e# d1 v, _6 h( m* k7 d& f7 U7 P9 V8 J
$ h0 U0 c" E+ G8 A+ M* t$ @1 c
" u: J( q+ s2 q3 e1 Q8 v gdhzz.gotoAndStop("yidao");
7 h- v \7 d" e' j
8 T0 _$ r% S1 W! ^( }
( L9 I% M# x* m+ w
3 P$ K. y, A) B& u* o& c0 k: J}//当移动到某个物体上时鼠标指针的样式
7 {! L4 ], i& @- K9 {& j: B& x2 {5 L1 N- `& i0 P% T+ Y
5 l$ O5 K" n# _1 N
/ u! K0 T9 z$ p7 V Rfunction showanxia() {
* e. _/ m0 j1 I E5 G, ?9 A% ]
3 d9 b* ]5 U; o7 w+ }6 z+ I
& t3 h- `8 r$ a9 G3 W% }* P" e0 i! w$ M2 L1 s
dhzz.gotoAndStop("anxia");
: n6 M/ H5 v/ r5 r
4 c. D& F% G* _( ^) H6 M* x* Z) \1 J7 L: L8 ]
( t' _1 f8 l* U1 c0 L' b W8 k}//在物体上按下鼠标左键时鼠标指针的样式
4 R! Y0 j! j$ p4 k) }1 A5 k {& B G
+ f; {! k' o) x. A7 k! \, b% c: ~- G5 e7 l; ?4 ]4 c
' I: J: W& t" j! p1 @
object1.onrollout = showzhengchang;
) a* o, C4 l# ^5 G6 m y; d8 d. t
# B" a' F1 e7 O1 Q1 s a L
3 g7 J6 s( }! a" a# t( F+ f+ ?" t1 y4 V* _) V' r
//不在物体上显示的正常的鼠标指针样式
a) z% S+ W! S, o1 Q8 {6 O" w: G+ W) G5 l" n* u5 E
& }0 [$ d& t. W \
. D+ t$ L+ N: ]* K+ Z& ^9 C! ?object1.onRollover = showyidao;
6 l$ r' z6 e6 g v" M
+ ?' ^: y( x( ], ?* D
7 A4 `& @6 ]* F. M4 N8 S
' j" F( }+ V6 m: c$ \8 v//当鼠标移动到“物体一”上的时候,显示定义好的指针样式
; ~3 }6 N* z, X, X
6 \& {* I2 U0 ?+ `0 @+ g& S5 @+ `/ D u2 z5 w R: g$ s1 [: J6 s
. [8 W: ~* p: M0 O. y, D$ B
object1.onpress = showanxia;
" R8 p Q5 |* F* N% b
y3 ^* X' A* B% y) a8 Z: Y2 _. F0 }8 T. G e6 V7 c+ I
: f% H% k8 k7 `//当在“物体一”上按下鼠标左键的时候,显示定义好的指针样式
0 t* E% X& V3 r7 [: f* ?
- W- u0 W1 X3 E* L, c7 [
, M/ ^, Q* N/ G6 d' V5 e1 e! m+ S$ ^
object1.onRelease = showyidao;
. L0 p- `* i k* M, K
5 g$ f. d- D# w( T. {: g8 x% m, C: D( _
5 v M6 V+ e# T* R
//当在“物体一”上松开鼠标左键的时候,显示定义好的指针样式
0 }8 [3 G5 A7 X) f6 o" ?
0 H: c- Z5 v p6 |: n8 g G$ \
5 g b( I- \" B* h; |( V6 `: C% F5 r- X
object2.onRollover = showyidao;
0 h& E3 Y9 K: K7 ~. W" \6 L1 Z; T7 l/ Y v
5 ^7 t: ]* ?4 L6 P4 Q+ y8 A% a# E
! G2 F! K2 p* y% b! R- w) N8 dobject2.onrollout = showzhengchang;
% H! O' ^. Y' ?9 E
5 G6 n6 h. b P/ z% _, }/ c
6 Z- q! G4 W/ N/ U& S6 K3 o
4 ?' I5 d: y& I4 Yobject2.onpress = showanxia;
- A' g9 v: N( ^; n
0 J [$ @) x, m3 N& O* G: X5 M6 k Z! w t8 i6 E6 |0 l+ V
, c' @0 q/ z& Y( P) [' C0 eobject2.onRelease = showyidao;
- N5 B* l, W! J* Z b$ ]& f0 E2 A! j+ S( a
* K; W9 a3 _" g- g, V7 }5 x( D5 }9 r" T
, S# O" o9 ~; d3 M2 I; _4 M“物体二”与“物体一”语句相似,大家要注意语句的格式。
( i7 @- A6 p. L) Y$ O' J1 z' p
! [4 `# p" v: a; ^6 A O0 H4 L8 X; T
! P) F. A. @' [7 H: b7 q
到这里为止,总算大功告成啦!按Ctrl Enter欣赏一下自己的劳动成果。怎么样,感觉不错吧!如果将“手形”和“握拳”样式也全部制作成动画的话,效果会更“酷”哦!