发新话题
打印

[分享] 全新Flash镜头的控制处理

全新Flash镜头的控制处理

↓↓↓↓↓↓↓↓↓↓↓↓点击查看其它网站与此相关的信息!↓↓↓↓↓↓↓↓↓↓↓↓
↑↑↑↑↑↑↑↑↑↑↑点击查看其它网站与此相关的信息!↑↑↑↑↑↑↑↑↑↑↑↑↑
2 d: C& M) ^9 Q% q
( P/ e/ @3 e5 Z" U
前言: 该教程介绍了一种有别于传统的Flash镜头控制方式, 其原理简单但确能在某种程度上提高工作效率, 增加动画的可看性, 让一个动画同时拥有不同角度的”拍摄”方式.那么就请先看以上示例。
% q# O7 M6 L1 r! d) `$ }* d6 l
2 _6 e& ]3 X# n: I  O  好似也看不出什么端倪, 无非就是过渡时多了双向缓冲罢了, 其实在这个动画中我并没有对图片作任何移动或缩放, 唯一处理的是一个称为”camera”的影片剪辑, 如下:
% l2 Q* G2 C$ S0 K3 {. U↓↓↓↓↓↓↓↓↓↓↓↓点击查看其它网站与此相关的信息!↓↓↓↓↓↓↓↓↓↓↓↓
↑↑↑↑↑↑↑↑↑↑↑点击查看其它网站与此相关的信息!↑↑↑↑↑↑↑↑↑↑↑↑↑

$ J7 ?9 h7 i, Y8 y: n0 N
- K1 L3 A8 T1 \7 a; J在影片中单纯的控制镜头的行为, 然后输出动画的时候, 动画的内容就是镜头内的内容. ! r" E! {) z- ~# O8 q

; ]8 `- g9 K* `6 L) W/ x有兴趣的直接进入教程内容
  o1 i4 `$ @$ Q  l(注意: 教程对于初级的操作将不做多d 说明和截图, 如果是初级用户请先熟悉Flash一段时间再来学习此教程, 另外出于版本原因, 这里只提供Flash8.0版的源文件, 低版本的建议升级, 如真有需要低版本的源文件, 请E-mail联系: imo8@163.com)
5 S1 p+ L  ~" t9 \
- p8 L" L, C8 C- k一: 普通用户1 ~9 S1 ^4 |& b, X
对原理没什么兴趣的或AS掌握不多的, 我们直接打开原代码, 我来说明下如何使用即可.
0 b2 ?8 E: y* e& `- z2 K% ^! |[local]1[/local]7 a0 `& p0 ~. ]5 s3 a
打开源文件, 你可以大致了解一下, 内容和元件不多, 看一看其实就知道该怎么操作了.
4 t9 M2 N$ O0 W9 G" ?当你要作自己的动画的时候, 具体操作如下:9 g0 Q8 P0 v$ Y; S) {* P1 ^( l  f$ X3 w
1: 更改场景大小, 情况自定
, {; |$ S" Y9 O6 j( S( o2: 打开库(顺便查看下库里的文件), 双击”镜头”, 更改镜头大小, 与场景相同, 并且居中对齐
6 I$ O, z. ~3 _* y3: 返回场景, 解开遮罩锁, 居中遮罩层的镜头,移动”影片载体”, 使蓝色区域与场景重合(用边框模式查看, 方便对齐)
( G/ L  x* J( a( ?( |4: 打开库, 双击”影片内容”, 这里就是主要动画的编辑位置了
9 e& l5 _! N) |! a4 o, C; r5: 在场景中, 镜头可根据情况和需要进行操作, 亦可删除, 结合使用, 没有一定的方式, 毕竟制作动画的类型和情况很多, 这只是一种选择方式, 至于适不适合还是依个人情况而定,更多的还是习惯问题…
( f3 f+ _7 u, i( h2 K( `8 e* }1 s" @& C
* |  A" p9 w9 C5 \$ S
二: 进阶的使用, 多镜头处理
0 Q; x  c. ]1 Z% Z' O这是这个镜头控制最有趣的地方了, 当你对源文件的AS作了初步了解的时候, 你会发现其实都是很基础的AS, 唯一的关联就是镜头”camera” , 那么如果我在动画中使用的多个镜头, 比如”camera1” “camera2””camera3”…
  p$ m) E; M/ |. ~# k( W那么只要定义一个全局”camera”, 就可以随意的在动画中变换镜头了, 具体请查看下面这个flash:
6 [* y5 o8 i8 ?9 u& A* r8 n3 }+ q5 O[鬼斗测试版右键下载:http://www.imo8.cn/gf2008.swf](建议下载后观看,否则后果自负…)
' G* x) P; @2 S- Z(播放片头动画的时候按”空格”可跳过, 然后在格斗过程中按”C”切换镜头, Fast!! )
- p; j9 K, K3 A( V2 w↓↓↓↓↓↓↓↓↓↓↓↓点击查看其它网站与此相关的信息!↓↓↓↓↓↓↓↓↓↓↓↓
↑↑↑↑↑↑↑↑↑↑↑点击查看其它网站与此相关的信息!↑↑↑↑↑↑↑↑↑↑↑↑↑
2 t  i9 ^( e. d+ |1 E8 p

* l) @. p. G. d! ^7 k5 `当然这还不是应用的典范, 典范就等着大家去创造了!!! e$ p- ]# {$ m) L
' I7 k4 S% \6 Y! l, J4 p& k* V* ]
在源文件中修改很简单, 使用eval 函数, 如果对eval函数不了解的下面有简单介绍:5 n/ Z  V6 V1 S4 |$ l
1: 由于镜头的命名方式是camera1,2,3…所以就在主时间轴的帧上定义一个came , 作为数字1,2,3…的代号: |" ]4 B/ `- J
2: 修改影片载体和影片内容上的AS ,如下:
+ T- b# s, D5 ^, n7 d影片载体:
复制内容到剪贴板
代码:
onClipEvent (enterframe) {

setProperty(this, _xscale, 10000/getProperty(eval("this.all.camera"+_root.came), _xscale));

setProperty(this, _yscale, 10000/getProperty(eval("this.all.camera"+_root.came), _yscale));
}
影片内容:
复制内容到剪贴板
代码:
onClipEvent (EnterFrame) {
setProperty(this, _x, -getProperty(eval("this.camera"+_root.came), _x));

setProperty(this, _y, -getProperty(eval("this.camera"+_root.came), _y));
}
3:可根据不同情况去定义came,3 I6 ?7 o4 O# @& j9 C
例:' i3 B1 q; {  ^) N) D, L1 q
came = 1 ; 就是使用镜头1;
9 q) C$ _" D8 z! _  gcame = random (3)+1;
7 C2 A$ E; s# l# [9 ^2 b$ F就是随机镜头;# w4 r: Q8 t$ ?5 L- F( s, J
也可以用按钮控制镜头, 或者AS控制. 记得控制的是 _root.came ;
1 w% j2 O! U4 J! }9 B4 p! V' k% Y" g( _

  O& u6 b6 _' }6 N三: 进阶的基础上再进阶, 不同镜头在不同时间点上的切换
/ B; s/ D7 [0 j% o假设一个动画的某场景中有2个人物, 画面出现有20帧, 然后有2个镜头(camera1, camera2), 一个对准左边的人物, 一个对准右边的人物, 然后镜头1控制左边的人物20帧后, 要使镜头2再次控制右边的人物20帧, 这时就要在第二十帧加入代码:
复制内容到剪贴板
代码:
//假设该场景出现的帧是40;
gotoAndPlay(40)

_root.came = 2
如果单纯这样的话, 那动画不就进入无限循环了, 那就再想个方法吧:
8 H+ f4 u- s& p; Y4 ~+ Q在本时间轴上定义一个数: ova = 1; 然后在第60帧添加代码:
复制内容到剪贴板
代码:
if (ova == 1) {
_root.came = 2

gotoAndPlay(20);

ova = ova+1;
}
这样动画就只会循环1次而已, 因为判断条件是ova == 1, 而第二次回来的时候ova已经 ==2 了3 q0 c. M$ o1 K/ F

. X+ B- |, ?% B# H# N以上就是该”镜头”的使用方式了, 至于还有没有更多的拓展性, 就看大家的巧思了!!$ s. `4 |6 S) _# w! J" U+ X5 \

  ^. I: M$ \! o# f6 w6 Q) V--------*关于eval函数--------------------------------------------------------------
7 K2 V/ @& u  \2 O- o% c其实AS我也是自学的, 算基础型的吧, 所以复杂的不会, 更多的是变相的搭配, 从0到如今的过程中自然会遇到很多问题, 每一次的突破就是一次进步, 所以致所有Flash初级爱好者, 别异想天开的希望有人能教你, 这个自学的过程所必经的, 如果走不了, 过不去, 那玩玩就好, 别当真啊…哈哈…(自学在于书本以及网络上的教程以及实践)! k, r2 A7 [/ i/ ~
eval: 针对含有变量的表达式的引用, 中阶用户在AS上经常会遇到相对路径, 绝对路径, 相对引用等问题, _root, _parent, “mc_name”等…当mc_name中包含变量, 比如: 当came为动态变量时, 用以下方式将无法得到正确引用;' L' D" R: L3 f' X$ l# j  N

, R) e/ I: Z$ H) R' V0 wcame = random(3)+1 //时间轴, d/ Q" g5 d6 y/ W% ?
setProperty(_root.camera+_root.came , _x, 300) //某MC上的命令, 以前我就陷入了这个僵局, 后来意外看到eval函数,才…)) v0 V2 E4 R/ a+ E4 j" k* @$ i

  @: j& K' j: z" {& l) }' M& W对于路径中含有多字符串组合的, 应采用eval(“_root.camera”+_root.came)的格式来返回正确的目标路径+ r" M# s8 T3 p
(解释可能不怎么清楚, 或有误点, 自己看自带的help 慢慢体会吧, 自学AS最好的方式还是Flash的自带help)" \4 O3 k: l* U+ p8 u! q9 ~) w) t

0 d2 u- [7 ]4 [! a  S最后提供一个说明性较强的源文件, 还不了解的同学就下载来多学习研究吧 ,希望我的这个小教程能对你有所帮助.
. \9 n+ q3 b: V  H, L[local]2[/local]
赠人玫瑰,手有余香。

TOP

a s

In one second ,you may meet a  person ;in an hour ,you may know a person ;in a day ,you may learn more from a person;in a month ,you may like a person ;and in a year ,you may love a person ,but to forget a person who you are love ever ,you need all your life !
本帖最近评分记录
  • 迷失的亲 金币 +20 感谢支持,EZU有你更精彩! 2007-12-3 13:37
不是自己的不要强求,毕竟强求的东西没意义!!

TOP

发新话题