Flash本身是一个二维动画制作软件,并不能直接做出三维效果,有时候我们又需要三维效果来体现作品,怎么做呢?可以在Flash中使用一些小的技巧,再配合上功能强大的Action动作脚本模拟出逼真的3D效果,我们就用这种方法在Flash中来模拟一个漫无边际的时空隧道,深邃的隧道一直通向遥远的时空,给人一种非常神秘的感觉。
2 ]3 c( H0 T( | a$ i! Z( p% b
" y& \! H6 B2 s* H* @: l* C% Q
' g. e2 A4 x* T2 @' S0 S% ]7 z
# U% Z, Y5 e \+ u( w u; i4 b9 ^2 j3 D3 F# |9 f. G3 v
5 o5 _" V$ x- |1 L$ q9 g
1、首先启动Flash,新建一个影片,设置影片的舞台大小为550pix×400pix(单位为像素),影片背景色为深绿色,颜色代码为#003300。
6 E, [. ]' c. d4 v) t$ N% c: J( S% j: C4 q# N
4 m" f0 k9 V9 s: n5 D9 ~3 Z+ s
# n2 u* s. s) |; \6 L- q8 \ n1 W" G1 ~+ \+ ^1 M0 m
" x6 C e% l" A: C8 c; v3 P- w7 i% u 2、新建一个图形元件,命名为bb,进入元件的编辑区后,打开混色器面板,在填充样式下拉列表中选择填充类型为“放射渐变”,然后分别设置色带下左右两个滑块的颜色,其中左边滑块颜色为绿色,RGB颜色代码为0、204、153,右边滑块颜色为黑色,设置好填充色后,选择椭圆工具,按下“Shift”键的同时在编辑区绘制一个正圆。
! |1 ? ~8 D3 R1 G' w' [5 |! {
% S( r+ d. C7 T0 B! z+ \! K
! p, ]+ R, O% e. M( Z
( z1 d5 h4 P! w1 Q5 {# v5 E* f% Q2 c; f3 e% R U
! J, f% j, B1 E6 l' f5 k) _* [+ P" Q) r1 U0 ^/ K- E/ O) b# o% J3 q
) y8 T6 D+ Y9 W) z# D4 R/ P
6 k) _/ ]; x4 F1 s& w
% [& r0 a& l* @& I& v+ f% P* M3 E% H T% V" l, a8 j
2 ?/ R4 r V6 r' N; f4 P4 e
8 q, o' Q" w2 P T
% ^& W. w: V8 s
3、新建一个影片剪辑元件,命名为b,进入元件的编辑区后,将元件bb从库中拖到编辑区中,然后在第15帧插入一个关键帧,将小球向左上方移动一段距离,然后在第30帧插入一个关键帧,再将小球向右下方移动一段距离,按照相同的方法分别在第45、60和75帧插入关键帧,并向不同方向移动一段距离,最后分别建立关键帧之间的运动过渡动画,这样目的是制造一种小球来回晃动的效果。
' M( l2 H4 t4 S& `1 q7 x( U$ t( ]
+ @9 G+ P3 Y/ H0 m& o8 y g
( t S: F* o' i3 q' C: Q7 ^
[& Z5 _8 c, _7 H- R1 t' p8 I: C" b7 G4 C
( ~3 E) v/ N! R( |
* E2 {* R, ?: \5 T1 i. ?* T0 |
& Z7 S- ]9 T+ d% @; a$ ?
' n+ S, {/ ]$ S0 d, I: z& ?+ n- U3 w* ~) z }1 S" b$ F% D$ L. J% a
7 F0 I1 d! N$ A" p" S2 |1 s
, A# m Y; u7 x; M" }1 K) j, l' M+ j* v% P* S1 y {7 ]
# ^5 j: J# |4 m# B+ S! ^ 4、回到主场景中,首先给影片制作一个背景。打开混色器面板,在填充样式下拉列表中选择填充类型为“放射渐变”,然后分别设置色带下左右两个滑块的颜色,其中左边滑块颜色为黑色,右边滑块颜色为绿色,RGB颜色代码为0、135、8。设置好填充色后,选择矩形工具,在舞台中绘制一个方形,大小稍稍超过舞台大小即可。
/ H- h1 M) n; c6 @ {! R k d" V2 @4 L! R5 }% O0 L
( {1 W) F) S! ~
9 d d @) E* Y+ T
* Q3 J: _3 V& o, `/ A6 v% Z# E; Y7 L
5 i- R: T, G0 L- \9 H0 Z1 n! e" N3 ^$ z# @, M- Y
0 _: f6 U) i& n7 c" l% `
8 M' n& ^: |; V! r. w" j1 n* E" ~+ o" q. A2 _- U4 T4 a
- K2 \* {2 k" {# c! ^+ i$ a \, [
! ^+ w0 Y+ v3 n4 U; q2 A
; S0 X5 ?1 I& E
1 T& R: ?( I9 i3 |- K) f$ e 5、在背景层上面插入一个图层,将元件b拖到此图层,并在属性面板中设置其实例名为b0,最后给第1帧添加如下Action:
8 k) K8 D" L$ g m
: R6 S( g# e" l- V" U* X
. x/ I7 H: X7 I8 B# T: h8 F% P+ q% r! ]1 A; t4 O! u
8 @8 C- d) ]1 b: V, x
, W4 W% P6 t0 Z8 P5 S/ c! J0 Z }6 ]# s
d = 10;
. w( k) U8 ?! k3 M' A7 I
4 q. Y+ S- u" b# |5 y. y
0 j! M* J+ C F
1 D$ a( e0 A6 {* n: h1 N$ O3 l7 _
" a7 {& K( c w! C- e3 M3 ^* {% k2 Z A3 S: I0 Z5 N5 B+ H
r = 0;
! m2 c7 A/ M1 r8 b N% {. V+ V4 b1 Y1 b, E
4 a0 J8 Z- F" O% h. u' j
. F2 P4 [1 X3 _; _
8 Q3 P; t' S/ V! S" ~" m
9 E8 J Y; Q4 b* c% {. g
pai = 3.14/180;
* I. Q$ i9 c8 ~/ q3 q7 J6 y# N% L. R
. O' m$ F- ~3 ?7 x- T) v! O
3 e! v$ n& Z2 b6 |* m" G1 T- _. O' b ^: U E
" x; K- s. r( @9 U
. B; A' V7 R7 U4 d& Q
i = 0;
' d6 R3 U* x1 G& M2 x7 R4 \) w
5 L: k1 v% Z, y9 ~, H, g1 N
5 ^: c& I# H! c; x7 y$ }
% \- Z3 v7 e3 f% z4 z6 `* |
5 s" O" ~: c/ d' I) S- e5 y8 k( W' G, u
do { FLASH 5 也提供了FOR 循环
/ X' g- b1 t3 Q- {/ E- C
6 M, n# M" S! ~" I+ i( C# e
: y0 I) ]4 y8 C4 M! J2 w, Q$ z+ k8 z) X0 T) c1 |8 Z8 Y3 c
7 j! U: x3 M2 K J
; Q9 l0 M1 H2 b2 r8 c
setProperty ("/b" i, _xscale, i);
1 |& `% O! X( L: \
4 G+ R2 u8 y" ^- I0 b4 _2 g; g
) j9 ~8 Q0 Z1 X$ ], _" Z, o/ I9 M2 Z' l. Z3 `0 Q/ ]2 r, i
- }% k4 H! A9 g! O5 [
+ h# C: c! `/ @2 v/ u
setProperty ("/b" i, _yscale, i);
% a( L8 J) z/ D$ M( x! @- W7 B- p$ s
9 R# r- y, f1 ^- o7 e* R
2 i) A# Y; Y' P& c) w( n, S; | @: W8 D/ z" ?
! A* y W) J! g. F d
5 M3 S& @7 r# ?( |: c4 K setProperty ("/b" i, _x, d*Math.cos (pai*r) 200);
1 ~2 B$ s$ f' Q0 T) G" u; k7 A, h
2 J+ Z* F8 _- m: U
5 Q+ C3 D7 u, N* Q1 T2 |
% I7 i, o* A% l2 y. @# |, e
0 q+ U5 W' J# o+ I! P" {# L2 e
2 [& z/ b$ ?" n c setProperty ("/b" i, _y, d*Math.sin (pai*r) 200);
' s+ I$ c& c+ o0 [, j' n! `. `2 |$ I8 @4 `9 {' o3 d, a( m; `. H
. T! I8 a# l a% M# |! | s& W/ |! T+ U# B1 s$ V$ M! U$ N
6 j+ U+ t! f* C5 l7 O& Q
* I# m0 U$ f1 t- z" j5 Z W- c- j2 s
//利用了最基本的画圆算法
- `+ F& V. ]. Y7 n [1 u$ \
+ O- U0 R3 A5 ]- q/ a
/ n/ R+ i0 V8 s S! M( E) q
" `; Y6 J% P8 n6 K# C7 L- ^
4 x, S' e0 X- w5 X# _" J8 n
5 b3 x7 M& [ k9 i& S2 [ r = r 10;
N& ~5 E; q5 h5 |8 a
5 n; b7 E' ]. B" G5 e y( \3 H& |! U% B9 O% }. t
# j5 c( E! ~% V1 R" q2 q$ b. t, S1 w' o4 {( }, i
& W& ^7 v. B7 a. C d = d 1;
: l; |9 N3 y6 B' ]; N8 Z. L3 z+ N
/ b& \7 L* _9 N% ]7 p" y9 V6 F+ S, X- h' @
! N h9 {- U) | H( O
: t/ W2 d: Z# f
( M: m8 l- x9 o# B5 a
i = i 1;
6 }8 R. D7 S1 P
O& B3 m+ t/ M7 a2 s G4 I3 p: p1 c& d1 C3 X* h
: {" U4 R4 O" z
: p" G4 K+ k4 ?7 W9 J; d0 `) T0 T* k4 B
duplicateMovieClip ("/b0", "b" i, i);
2 T% i) L2 d( a m. i% b- }% f u
/ m& X7 A& n: o% H, ]
9 F$ f9 n/ ^/ K, } v- z& e5 _/ L1 x7 `
2 K1 @8 P6 N, Q8 A
3 `8 a5 _, y/ B/ }' h2 b //复制b0
% c+ j1 M$ y6 \
, F+ G( F6 a/ i& r, a" n5 d* {: W# L( ~$ t; k ]% f, a3 S
* ~; {* i: E9 [& @$ ^" b8 X. _! m, k+ `6 _! s' j2 ^2 n8 {+ ^
% t8 l2 }+ i. ?6 v7 t# z, b
} while (i$#@60;540);
$ _5 c) G( ^ t2 v8 y
5 G9 }& e+ t$ d9 U0 r2 N% t% z$ H
' x/ \# u( K9 H* X+ n
2 N2 D' P) p7 { s
$ Y8 F7 n6 O6 S% ^* B //其中d是半径,r是角度,pai已经转换成了弧度。
# w9 c5 T" {, C; G X! `
4 g; g" `9 ]2 Z$ U, C3 a1 u( t/ B2 k- S7 x) n
) g& [9 T8 @3 f1 v/ A) j& ]* |
% W; |" D" q5 v
' }/ L7 o j1 d& I, _& b Action动作脚本说明:首先初始化半径d、角度r和循环次数i(复制影片的个数),如果第一次进入循环,b0号Movie clip 会被定义一个位置,然后复制出下一个位于相对于b0的第1层中Movie clip,并起名叫“b1”(千万注意表达式要用“ ”,其中用到的sin和cos函数前面也一定要加“Math.”,不然就出错了);“Math.cos (pai*r) 200”中的“200”是圆心的原始位置,200这个位置靠中心比较近了,以后的循环是这样的:后一个Movie clip总会比前一个大i个像点,名称依次是“b2,b3,b4……”,圆的半径也会逐步以每次增1的速度增长,这样的Action做出来的圆就是那种从远方逐步靠过来的圆形通道。
) y. z* M. x/ @/ O5 x5 C' w7 }3 M: N% d( c7 @5 @( V2 S
6 Z+ C# e, N2 x7 ?! [
% u. _& q( N, g, T Q
% n7 c& [9 p& p9 b2 q( N
+ |' A6 W$ _2 P0 J 到此为止,这个不错的效果就制作完成了,看看,还不错吧?
! {- w N* ~: T# y
. a8 K. g3 W/ O3 b2 b, I2 F/ K3 z; p) q- `! V/ ]8 A6 y! a
2 I9 @2 F9 \! n0 Z4 D* _/ P" g! f% ]. u3 M4 |0 v1 _3 h8 q
8 _' w4 Y0 v. V' k' c* k+ u* f# A2 J6 [! ]5 Z% X& A$ b3 c
