发新话题
打印

Flash 3d效果精彩实例--互动线框

Flash 3d效果精彩实例--互动线框


本实例中一对立体的线框会不断旋转运动,并且可以感应到鼠标的活动,从而产生运动的变化,本实例最终效果如图1所示;
$ ?* R7 b- z- v
# X) S( W( v; g$ R
5 R* B" R) e$ {( v  u0 L# m
5 A' k; X( \4 W# B5 L5 W8 F
3 E# {- R0 n: |5 y! u4 H
+ b; `( _* t# m" r: s: k  t& D1 P
7 T8 p& R5 f5 K1 Q# A5 Y4 u7 t1 [8 Z1 u) g5 l
! R, u* u/ _6 o5 c
图1  最终效果* u1 C$ N3 w/ k  E* k' p4 M( m7 L

! y9 H% T& u5 s4 O- }4 a, u# z% `# H% [) y7 U4 I
& |# t5 m- v/ e8 S5 O. O2 K; p

/ t% B' ^" X) x8 ^) p0 v4 w5 c8 g% m7 C/ B* b' m  k7 ?
  1.首先启动Flash,新建一个影片,设置影片舞台大小为400px*300px(单位为象素),设置影片背景色为浅黄色,颜色代码为#FFCC00.
9 G0 d+ ]1 o8 i, M# A5 Q& ^
1 [# N9 o' G7 T, {
2 `$ s& T$ h  t  H/ G1 ]
+ m0 p  q$ @5 S+ ?  `& U( d
/ o0 Q) z: d$ d. e* T$ r5 D7 a
. [6 F" k1 i) U7 c% h; }9 Z0 M0 x  2.将影片默认的图层重命名为BackLine,为了使线框的运动能比较明显的看出来,可以给影片背景加一些参照物,这里我们给影片添加一个简单的坐标系统.使用直线工具和文本工具绘制如图2所示的坐标系统,这个左边系统比较简单,你也可以根据自己的需要来修改:
3 P: f* `; k1 n+ q! Z
0 \: U* l: z' F- K8 W
6 G8 F& T6 w3 H( A8 U
2 C8 r5 _* s9 f% V
! e7 G; S( ^% Y7 Y( Q& M: G8 }; W& B! F. G9 H

) u" Y1 U7 G9 O6 Q, v' {
# l2 A  I+ O- |8 W0 d5 L2 I  L7 A$ _, f/ V# N# \! p6 p
图2  绘制坐标系统" x2 _# r. @+ B  _

- Q5 D/ E4 F5 V; G
0 u/ j! ~% A) R
" S# N7 t4 T5 i- |4 O' [9 q1 P; P+ E+ \* U3 v5 ~% }

: D2 ~4 M% E' S5 l: v  3.接下来制作组成线框的直线部分.新建一个影片剪辑元件,命名为line,进入元件的编辑区后,使用直线工具绘制一条水平直线即可,如图3所示;
) A1 P/ m9 s' ^4 M3 R+ G/ k
6 T: _6 P! V5 j9 Y
2 Y" x  J' s% i- Y1 M5 l% b
% Q5 S* U2 x1 u! J8 j# T0 i4 Q

% z% v) c5 ^2 n* `$ w  k( i
; K4 o, s3 v* O! E, R$ T  s: R1 H! L) x, r$ G" p$ u) A* r
; \9 E& j0 C1 r/ S* J2 x7 M
图3  绘制直线
) ^& B/ I. e- c* v
1 ~2 v1 }5 p: U! R# c( T; ^5 w% p" X; b* Z0 @" }# C5 ?

9 Z! n! f; z: ^0 N1 H4 F9 Y4 o
. [/ X( h( ]# u9 ?. p
0 J' f1 x; Q5 `: f9 P# ~# B( ^  4.因为影片中线框和鼠标会发生感应,需要得到类似鼠标坐标这样的信息,所以还需要建立一个空的影片剪辑,然后用鼠标对其拖动,只要得到这个空剪辑的坐标,就相当于得到拉鼠标的坐标,这也是Flash动画中常用到的小技巧,这里我们就建立影片剪辑run,里面什么都不用设置,空的即可.; T- }' ~: }' E/ z) v/ h9 V
( I2 G2 O# D: {# E9 s" }1 f$ U) }

7 Q' T! `0 F% M+ R0 r) T+ V; d0 N0 p

% G: v" d. ]. ]0 ~1 G
. ]8 F0 O$ A" N1 L. \$ ^0 T4 F  5.回到主场景,新建一个图层命名为line,然后将元件run拖到场景中的任意位置,在属性面板中设置其实例名为run,如图4所示;
9 _2 t* T* P8 g# d1 i
2 I4 ~" F" t3 N5 `* Y' Q) ~& }6 ^" R1 b" m" k8 n

! `& l* J+ s/ h- @% ?
' C1 @3 B9 \/ a$ J) k/ N( i7 N9 h  Q* q0 s, l; g( J

9 X8 B8 H/ h& B2 |3 {6 O& E
  M! g6 ~* g/ B6 u- n9 ~# V7 e: V; e2 A1 m" I- z0 x6 P+ k
图4  给空剪辑设置实例名
, a1 ^. t. o7 g  u# T8 U3 D- i. i# U% L5 a; z* }
& `, O) x4 J0 ]. q

& l% {! u( j" m/ s
* a! Y. A4 G1 q; D; m* t8 Y: f- V* J+ k/ ^9 m2 X
  6.接下来还需要将元件line拖到舞台中,因为影片中的线框其实是用一些直线借助Action来生成的,而影片中一共两个线框,每个线框四条边,这样就需要分8次将直线line拖到工作区中,注意不要拖到舞台中,不然在最后的影片中会被看到,如图5所示;6 t* K$ r0 g; F

5 X, M! {3 Z: X, j0 d2 y% d, E+ [

1 f2 S( x& y5 s  f5 E" U
. h, N5 w# F( L. y9 F* L( W& w- H! |) Y* L
/ \, U9 D/ u' }: ]

. c. ]. ?) c" O1 b, o8 d
% ~& f5 f1 \* j# k' y( q图5  在影片中添加直线& W' ^1 q- Z7 x0 d

. `* h8 x& N. b
8 f1 c& ?4 @# q% n# Z! a* p  r( A+ {5 R9 {' `" j- e
% X7 ^9 _4 ~' l

8 l7 B+ b9 x8 `8 h0 ]( V5 R6 c  7.同样需要给每条直线设置实例名,按照从上向下的顺序分别设置8条直线为line1到line8,最后在第1帧添加如下action:: V4 N6 ^( I& C" m
( C: w9 p  \8 u

8 T( D0 z, ~* x2 \$ O/ G
$ M2 T8 z4 w. e- e' n& m! c3 Y7 {& f) P/ m/ |1 }

+ C3 O' ?4 B: G0 k/ M. Xcenter_x=200;& W5 C  @% z4 j# w& G& `% s% x4 e/ }+ ^* h
0 k" I  T& R5 I$ |. K  l$ X
center_y=150;  2 }8 j6 Y* o" P0 F7 N/ l8 l
+ `/ P8 V9 `  T: t2 A3 n, ^1 V+ p
d= 500;  * q) r9 ]- O" Q* L; F* B
8 S& G% B0 @" a4 ]
  $ V( C5 N, o( L8 D+ g
1 u: |7 |1 j7 j: |7 B9 ~
function drawline (x1,y1,z1,x2,y2,z2,num) {  
& D9 z, T& o! @8 p9 x* T/ x0 R7 N% n2 [
x1=(x1/(z1 d))*d;  
7 c9 {0 h0 ~% s1 F
5 m# V" `5 i! `  s+ Z6 u6 ey1=(y1/(z1 d))*d;  
( ?$ U% A+ d& d: q% H" T. L9 a9 Z+ E( V' ^' O9 i+ e+ X
x2=(x2/(z2 d))*d;  
- v, {, B# B/ r8 l& T2 k& X) ]
0 ]* Y) u. \7 t) S  Y) W/ @8 Uy2=(y2/(z2 d))*d;  9 z" p5 x- `% {, S/ M, m) v4 D

: E$ @. H0 C" N  g2 y! X  {x1  = center_x;  
, k- w* `& w& {0 B
1 x, {9 H0 F7 I  ry1 = center_y - y1;  3 Z4 Z% K6 Z% [0 j. C* s
+ E5 e; g) Z8 N* J: k8 [
x2  = center_x;  
1 u2 Z! J: n7 f8 L0 r* ?
6 s1 X& G, C, @y2 = center_y - y2;  - o- B- g9 U) W# s6 ]

4 \4 e& |* _/ bdx= x2 - x1;  : k( o9 U2 [9 g  Z

# k$ j+ z  C" z  k% b$ wdy= y2 - y1;  7 _9 E2 Y7 @# |: }
3 T- a0 b, O* F  X0 F. ~0 u
line_length = Math.sqrt(dx*dx dy*dy);  
$ b+ m+ N. B8 t+ ~3 |8 Q! N4 A
$ t8 B* O4 e& u6 H( L3 M8 cangle = Math.atan(dy/dx);  
. N; c) @) j, x! }6 V$ B. }. Z
  l, y4 p! t+ Aangle = angle*180/Math.PI;  
+ n' z3 N+ _/ f: P5 u$ W- i3 N/ Y# z
setProperty (line add num, _x, x1);  - s$ [! v! l* W; |: p/ q
7 X/ b6 b: \, r, s
setProperty (line add num, _y, y1);  0 }& t4 v+ @& [: h, a

- _1 U7 y5 W7 lif (dx  0){  . U) {9 _( o5 Z% r5 w" T% b
; t+ M8 i  O+ \
angle = angle-180;  
5 \5 @7 v4 _5 s2 K! m# \; J( l  c" s
' @2 [. T1 T7 K& U, O/ ~}   : r1 {4 W, x, X" q* t, W4 u

9 L! }; A# N0 `$ B6 y' _setProperty (line add num, _rotation, angle);  ! Q* \/ P* K: J  _

0 D, L1 Y* a: GsetProperty (line add num, _xscale, line_length);  
4 ^. f* L7 k# {6 K" |9 B* P- k' Q) v% o. n5 `
}  2 P" ]$ M' [' W1 ?5 F" r$ [

; E% \  Z$ t- V7 B3 l) W////////////////////////  ) h% n3 l! L' c3 P, S# _# O

% ]' n# {9 {3 `: r! p" t7 |% g) Ppx = new Array(8)  / i" x/ X% B+ J) |, J
: o1 S% d5 b  k, ~
py = new Array(8)  $ \% y2 Z) {0 K9 y

: p3 c- x. K4 K& Epz = new Array(8)  
- F: }' E5 g/ {4 w: n
9 x- W" G, V& }5 t" ?& n* ppx[0] = 100;  8 E  }' t) e, g4 n7 d
0 ?, U( B  ~& i+ Z5 L
py[0] = 100;  
& s' @! I5 R+ \0 s
( R5 f; c( k- b: hpz[0] = 25;  
6 O+ I$ f3 H- s& `- L; B- b2 P- r' \6 l2 T; r3 G
px[1] = -100;  
' J! Z1 K1 ]/ B3 q
7 K. s5 U& y7 |# npy[1] = 100;  
! [: F# {" F& q$ ?% L
) B; J; E$ h( W' T" G* Wpz[1] = 25;  ( C; V: K7 V) L
6 d. \8 R, l$ E# q/ P2 p
px[2] = -100;  3 r( k  ?0 d) T' y% t7 T. K

3 r1 h" y$ q$ ?- I" l5 L# gpy[2] = -100;  : w% u; t1 Q9 w% E. ~5 O) t
- {# n8 {. b2 f
pz[2] = 25;  
6 ?; D: B: a9 L: G7 r3 K* P
$ z, u) T1 L0 d. ~# T/ ~px[3] = 100;  * {; s5 h0 q- [6 O& `
. h) a! `& \  Z  v7 n: x% q- d) n
py[3] = -100;  ; Q: g; [+ S; A3 g" o& b6 ?. r

& {1 R8 D9 V; ~9 ]6 m$ N" b: ^pz[3] = 25;  3 M" [& _5 m$ t% O

0 [) u, z6 P6 L% qpx[4] = 100;  
) k' C5 \6 ~8 D
& U: O3 C$ H  w  S) Ypy[4] = 100;  
, R( G- S3 J: {" @$ ~1 Z( ]5 T" o6 d/ p  }. Z; N
pz[4] = -25;  
9 i8 w0 }& e" S2 h+ u1 x
7 U9 v' F6 A3 U, A- {" Z  Mpx[5] = -100;  
2 f- U8 k6 d' t% y  {4 Y  ^0 J/ T  C3 Q, Y' b! M
py[5] = 100;  5 K3 p! L6 W6 B  T
0 i" u( J5 c9 [$ \4 R: j5 w$ f
pz[5] = -25;  - a- Q6 e' {: {- T: G3 b/ n& \
6 h, z% E6 g3 I2 U
px[6] = -100;  " q  b7 E9 a5 \8 r0 C& b  v' t) `

" c( L5 K& o8 V$ n& Fpy[6] = -100;  1 B; A  E$ W7 [" y  u
6 F& [9 o' c- U  n' y
pz[6] = -25;  
0 V  l5 R% x' Q! l. h
' I6 X4 e3 `  K) |  s2 H7 @  wpx[7] = 100;  
2 {% y- T$ _7 q& Y- ]+ n+ B  x: t2 p' e2 T9 [8 g/ Y+ F" Z
py[7] = -100;  4 T3 Q. K4 S+ x

6 ]8 x9 c1 t* mpz[7] = -25;



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

TOP

发新话题