发新话题
打印

用Flash模拟“穿越时空”

用Flash模拟“穿越时空”


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



点击图标进入精品网摘收藏 欢迎大家加入网络收藏夹

TOP

发新话题