武斗火柴人格斗论坛

首页 » Stick Animation Class » 相关动画教程 Animation Tutorial » 格斗动画专用镜头控制
solo - 2007-12-29 20:07:00
镜头已升级到2.0, 请重新下载!!http://wu-dou.com/showtopic-623.aspx


前言: 该教程介绍了一种有别于传统的Flash镜头控制方式, 其原理简单但确能在某种程度上提高工作效率, 增加动画的可看性, 让一个动画同时拥有不同角度的”拍摄”方式.那么就请先看以下示例
[flash=400,350]http://imo8.cn/attachments/All_Files/n200711611733.swf[/flash]

乍一看好似也看不出什么端倪, 无非就是过渡时多了双向缓冲罢了, 其实在这个动画中我并没有对图片作任何移动或缩放, 唯一处理的是一个称为”camera”的影片剪辑, 如下
[flash=800,400http://imo8.cn/attachments/All_Files/c2007116111035.swf[/flash]]


在影片中单纯的控制镜头的行为, 然后输出动画的时候, 动画的内容就是镜头内的内容.
有兴趣的直接进入教程内容
(注意: 教程对于初级的操作将不做多d 说明和截图, 如果是初级用户请先熟悉Flash一段时间再来学习此教程, 另外出于版本原因, 这里只提供Flash8.0版的源文件, 低版本的建议升级, 如真有需要低版本的源文件, 请E-mail联系:
imo8@163.com
)
一: 普通用户
对原理没什么兴趣的或AS掌握不多的, 我们直接打开原代码, 我来说明下如何使用即可.
[源文件下载]

mzs.rar
打开源文件, 你可以大致了解一下, 内容和元件不多, 看一看其实就知道该怎么操作了.
当你要作自己的动画的时候, 具体操作如下: 更改场景大小, 情况自定
2: 打开库(顺便查看下库里的文件), 双击”镜头”, 更改镜头大小, 与场景相同, 并且居中对齐
3: 返回场景, 解开遮罩锁, 居中遮罩层的镜头,移动”影片载体”, 使蓝色区域与场景重合(用边框模式查看, 方便对齐)
4: 打开库, 双击”影片内容”, 这里就是主要动画的编辑位置了
5: 在场景中, 镜头可根据情况和需要进行操作, 亦可删除, 结合使用, 没有一定的方式, 毕竟制作动画的类型和情况很多, 这只是一种选择方式, 至于适不适合还是依个人情况而定,更多的还是习惯问题…
二: 进阶的使用, 多镜头处理
这是这个镜头控制最有趣的地方了, 当你对源文件的AS作了初步了解的时候, 你会发现其实都是很基础的AS, 唯一的关联就是镜头”camera” , 那么如果我在动画中使用的多个镜头, 比如”camera1” “camera2””camera3”…
那么只要定义一个全局”camera”, 就可以随意的在动画中变换镜头了, 具体请查看下面这个flash[鬼斗测试版右键下载]
(建议下载后观看,否则后果自负…)
(播放片头动画的时候按”空格”可跳过, 然后在格斗过程中按”C”切换镜头, Fast!! )
http://wu-dou.com/bbs/topic.aspx?topicid=16

当然这还不是应用的典范, 典范就等着大家去创造了!!
在源文件中修改很简单, 使用eval 函数, 如果对eval函数不了解的下面有简单介绍:
1: 由于镜头的命名方式是camera1,2,3…所以就在主时间轴的帧上定义一个came , 作为数字1,2,3…的代号
2: 修改影片载体和影片内容上的AS ,如下:
影片载体:
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,
例:
came = 1 ; 就是使用镜头1;
came = random (3) 1;
就是随机镜头;
也可以用按钮控制镜头, 或者AS控制. 记得控制的是 _root.came ;
三: 进阶的基础上再进阶, 不同镜头在不同时间点上的切换
假设一个动画的某场景中有2个人物, 画面出现有20帧, 然后有2个镜头(camera1, camera2), 一个对准左边的人物, 一个对准右边的人物, 然后镜头1控制左边的人物20帧后, 要使镜头2再次控制右边的人物20帧, 这时就要在第二十帧加入代码:
//假设该场景出现的帧是40;
gotoAndPlay(40)
_root.came = 2如果单纯这样的话, 那动画不就进入无限循环了, 那就再想个方法吧:
在本时间轴上定义一个数: ova = 1; 然后在第60帧添加代码:
if (ova == 1) {
_root.came = 2
gotoAndPlay(20);
ova = ova 1;
}这样动画就只会循环1次而已, 因为判断条件是ova == 1, 而第二次回来的时候ova已经 ==2 了
以上就是该”镜头”的使用方式了, 至于还有没有更多的拓展性, 就看大家的巧思了!!
--------*关于eval函数--------------------------------------------------------------
其实AS我也是自学的, 算基础型的吧, 所以复杂的不会, 更多的是变相的搭配, 从0到如今的过程中自然会遇到很多问题, 每一次的突破就是一次进步, 所以致所有Flash初级爱好者, 别异想天开的希望有人能教你, 这个自学的过程所必经的, 如果走不了, 过不去, 那玩玩就好, 别当真啊…哈哈…(自学在于书本以及网络上的教程以及实践)
eval: 针对含有变量的表达式的引用, 中阶用户在AS上经常会遇到相对路径, 绝对路径, 相对引用等问题, _root, _parent, “mc_name”等…当mc_name中包含变量, 比如: 当came为动态变量时, 用以下方式将无法得到正确引用;
came = random(3) 1 //时间轴
setProperty(_root.camera _root.came , _x, 300) //某MC上的命令, 以前我就陷入了这个僵局, 后来意外看到eval函数,才…)
对于路径中含有多字符串组合的, 应采用eval(“_root.camera” _root.came)的格式来返回正确的目标路径
(解释可能不怎么清楚, 或有误点, 自己看自带的help 慢慢体会吧, 自学AS最好的方式还是Flash的自带help)
最后提供一个说明性较强的源文件, 还不了解的同学就下载来多学习研究吧 ,希望我的这个小教程能对你有所帮助.
[源文件]:

yzs.rar

转载请注明出处 http://www.wu-dou.com
恋恋 - 2008-1-14 13:21:00

顶...偶也学习了


 

逍遥鱼鱼 - 2008-1-15 10:33:00
谢谢老大,学习了。
灵魂伪装 - 2008-1-20 9:47:00

学习学习下....


          前面还听德懂````就是后面开始有代码勒..


                  迷茫勒...

风吹过的夏天 - 2008-1-29 21:24:00
一直都不太懂怎样控制镜头,学习了。
★一生愛你★ - 2008-2-29 21:15:00
做的好
★一生愛你★ - 2008-3-3 21:42:00
看不到
自由闪动 - 2008-3-20 11:53:00
代码全控制的么,是2.0的还是3.0的,先下来学习学习
游客 - 2008-3-20 22:50:00
不错,不错,顶
游客 - 2008-3-20 22:50:00
不错,不错,顶
xx0362 - 2008-3-21 2:57:00
学习学习,老大牛
明日闪客 - 2008-3-21 21:16:00
没得说,只能说谢谢,虽难表感激之情
atushasha - 2008-3-22 14:24:00
AS的运用~第一次接触到
很好玩
就是有点迷
zhq991 - 2008-3-22 16:41:00
学习。。。
现在可以用AS3进行编写了
鬼泣 - 2008-3-23 7:29:00
:Yoci8: :Yoci8: :Yoci8:
rain365 - 2008-3-25 8:15:00
这个镜头有没有不用AS办法可以实现的呢?而且用AS来控制镜头,对程序不熟的人很有难度~
solo - 2008-3-25 8:39:00
之后会推出傻瓜版
rain365 - 2008-3-25 8:57:00
期待中~~~
btyhd - 2008-3-26 22:50:00
真是太受用了,感谢老大指教!
crazy - 2008-3-29 9:35:00
:tosiki1: :) 好想法 下载下 好好看看
BMW530i - 2008-3-29 10:12:00
:Yoci11: 我很想多学学AS编程方面的知识和技巧,老大以后能不能多写写AS的教程呢?先感谢了!
BMW530i - 2008-3-29 10:16:00
:Yoci45: 老大,这句[setProperty(this, _x, -getProperty(eval("this.camera" _root.came), _x));]    getProperty前面的“-”是什么意思?
solo - 2008-3-29 13:12:00
-号 ,  减的意思... 这里的作用是反向运动, 相对0坐标一个移动 5px 一个移动-5px ,左右反向移动
ningtieying - 2008-3-29 16:55:00
我是新来的我有个问题啊。就是镜头的轮廓线是那样大小照背景都好不容易调整好了,最后出影片的时候为什么比我之前调整的图片要大好多,就是构图突然变大了 ,我想在编辑中的大小,出片子以后还要一样的大小,怎么弄啊?:Yoci11:
lleispl - 2008-3-29 18:30:00
鬼哥教导有方,愚人学习蛮快
lxp19870118 - 2008-3-31 14:10:00
:Yoci11: 鬼大人用心凉苦  为我们这些傻瓜做傻瓜镜头  感动  上面的排好队行  向大人敬礼
JZ臭小子 - 2008-3-31 14:47:00
不錯
lxp19870118 - 2008-3-31 21:16:00
爽  好东东
chinadolls - 2008-4-1 10:56:00
学习了!感谢楼主以前一直搞不明白
hxcartoon - 2008-4-3 14:04:00
:Yoci11: :Yoci8: :Yoci8: :Yoci4: 学习中~
12
查看完整版本: 格斗动画专用镜头控制