设置了 tweenanimation 动画曲线的动画曲线animationcurve,为什么还是沿直线运动

2010年12月 移动平台大版内专家分月排行榜第二2010年11月 移动平台大版内专家分月排行榜第二
2011年5月 移动平台大版内专家分月排行榜第三2011年4月 移动平台大版内专家分月排行榜第三2011年3月 移动平台大版内专家分月排行榜第三
2010年12月 移动平台大版内专家分月排行榜第二2010年11月 移动平台大版内专家分月排行榜第二
2011年5月 移动平台大版内专家分月排行榜第三2011年4月 移动平台大版内专家分月排行榜第三2011年3月 移动平台大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。itween动画和animationcurve
最近项目里面要做一些简单的动画,因为是一个比较小的2D游戏。所以游戏里面的动画都不用animation来做,所以就只能用补间动画插件
Itween。另外说一下,不推荐itween,性能低,还会有一点点bug。unity3d的群主等人都推荐hotween,dotween...
& 其实itween很简单。我写的也只是一些简简单单的使用方法。
说道itween或者其他的插件,一定要去这个网站看看你要的动画效果。&
& 这个是HaSH里面的easytype的参数类型。
一。。先介绍一下itween的内容。(容我百度)
void Start()
iTween.RotateFrom(gameObject, iTween.Hash("y", 90.0f, "time", 2.0f, "easetype", iTween.EaseType.easeInExpo));
iTween.MoveFrom(gameObject, iTween.Hash("y", 3.5f, "time", 2.0f, "easetype", iTween.EaseType.easeInExpo));
iTween.ShakePosition(Camera.main.gameObject, iTween.Hash("y", 0.3f, "time", 0.8f, "delay", 2.0f));
iTween.ColorTo(gameObject, iTween.Hash("r", 1.0f, "g", 0.5f, "b", 0.4f, "delay", 1.5f, "time", 0.3f));
iTween.ScaleTo(gameObject, iTween.Hash("y", 1.75f, "delay", 2.8f, "time", 2.0f));
iTween.RotateBy(gameObject, iTween.Hash("x", 0.5f, "delay", 4.4f));
iTween.MoveTo(gameObject, iTween.Hash("y", 1.5f, "delay", 5.8f));
iTween.MoveTo(gameObject, iTween.Hash("y", 0.5f, "delay", 7.0f, "easetype", iTween.EaseType.easeInExpo));
iTween.ScaleTo(gameObject, iTween.Hash("y", 1.0f, "delay", 7.0f));
iTween.ShakePosition(Camera.main.gameObject, iTween.Hash("y", 0.3f, "time", 0.8f, "delay", 8.0f));
iTween.ColorTo(gameObject, iTween.Hash("r", 0.165f, "g", 0.498f, "b", 0.729f, "delay", 8.5f, "time", 0.5f));
iTween.CameraFadeAdd();
iTween.CameraFadeTo(iTween.Hash("amount", 1.0f, "time", 2.0f, "delay", 10.0f));
MoveFrom类似于以前,应该简单地理解用来代替旋转运动。
iTween.MoveFrom(gameObject, iTween.Hash("y", 3.5f, "time", 2.0f, "easetype", iTween.EaseType.easeInExpo));
ShakePosition用在这种情况下,以贯彻落实“惊天”的相机。此方法将导致通过降低幅度移动的对象,不使用插值,对象将在他指定的部分出现在随机点。有一种所谓“新说法延迟
“,这是很重要的动画选项用于指定秒的动画之前必须经过数。
iTween.ShakePosition(Camera.main.gameObject, iTween.Hash("y", 0.3f, "time", 0.8f, "delay", 2.0f));
ColorTo顺利改变物体的颜色随着时间的推移。
iTween.ColorTo(gameObject, iTween.Hash("r", 1.0f, "g", 0.5f, "b",
0.4f, "delay", 1.5f, "time", 0.3f));
ScaleTo,从方法的名称作为看出,改变对象的大小。
iTween.ScaleTo(gameObject, iTween.Hash("y", 1.75f, "delay", 2.8f,
"time", 2.0f));
RotateBy提醒RotateFrom,有必要在那些需要部署超过360度(尽管,在这种情况下,可以通过进行分配情况RotateTo)。假设我们已经指定Z
= 2.0F,那岂不是对象应转了两圈绕Z轴的一段时间。
iTween.RotateBy(gameObject, iTween.Hash("x", 0.5f, "delay",
MOVETO,或许,整个类的main方法的ITween。他移动的对象在规定的时间指定的坐标。插值是根据所有相同的easetype,你已经知道了。
以下新方法:
iTween.MoveTo(gameObject, iTween.Hash("y", 1.5f, "delay", 5.8f));
iTween.MoveTo(gameObject, iTween.Hash("y", 0.5f, "delay", 7.0f,
"easetype", iTween.EaseType.easeInExpo));
CameraFadeAdd创建一个用于模拟停电一个新的对象。深度变化从当前值到指定的参数。以下过载:
iTween.CameraFadeAdd(); iTween.CameraFadeTo(iTween.Hash("amount",
1.0f, "time", 2.0f, "delay", 10.0f));
CameraFadeAdd()
CameraFadeAdd(Texture2D texture)
CameraFadeAdd(Texture2D texture, int depth)
如果没有的Texture2D,将使用黑色。 从我所没有描述,也有重要的点。例如,该参数可以指定将在事件发生时调用的方法。假设:
publicclass iTweenController : MonoBehaviour
int clbkN = 0;
void Awake()
style = new GUIStyle();
style.fontSize = 60;
void Start()
iTween.MoveTo(gameObject, iTween.Hash("position", new Vector3(5.0f, 1.0f, 0.0f), "oncomplete", "myClbk",
"loopType", iTween.LoopType.loop, "speed", 2.0f));
void myClbk()
void OnGUI()
GUI.Label(new Rect(10, 10, 0, 0), "Callback # "+clbkN, style);
上面一部分代码,推荐去这个Blog去看看。我就是抄到上面的。希望大神不骂我。&
谢谢赵青青,我好多都是学他的。
具体用法看到了
二。。。Itween的path用法。
Itween的path的用法其实是和animationcurve.path用法是一样的,我就写一起了
animationcurve是unity的动画系统里面的自动曲线动画,作用是编辑一条任意变化的曲线用在任何你想用在的地方。
如曲线地形,曲线轨迹等。也被用在了模型动画播放时的碰撞盒缩放及重力调节。AnimationCurve
曲线的绘制方法和Ragespline中的物体轮廓勾勒的方法类似。
基本使用:
public Animationcurve m_a;//申明一个animationcurve的动画曲线。
这个曲线是xy的坐标轴,x和y轴是你后面自己定义的坐标轴代表什么。一般x轴是长度,y轴是时间,其实也能是速度。
图二就是坐标轴。图三里面的代表你设置的曲线是往那边凹凸的。
如果你只是设置了图一里面的anim的曲线,然后再update里面设置了方法。:
transform.position =&new&Vector3(Time.time,
anim.Evaluate(Time.time),&0);
vector3(x, y, z); &
& &这是根据时间变换而变化的。
但是有一点,如果这是用曲线的话,屏幕可能不适应、至少在我的试验中,xyz的值无论怎么设定,都有很大的问题(在屏幕适应上面)
所以我就使用了animation.path的用法。
注:animationcurve曲线做好了,要点new。不然不会保存的。
三。。animationcurve.path
上面说了,animationcurve不会自动适应屏幕,所以我只能通过设置好的位置来做,这个位置是根据屏幕大小固定的比例。
public AnimationCurve anima = new
AnimationCurve();
void Start() {
Keyframe[] ks = new
Keyframe[3];//这个数组代表有多少个路线点,这个路线点代表你的动画在哪些地方会有变化
ks[0] = new Keyframe(0,0); //第一个点,(0,0)分别代表
第一个0是时间,第二个0是value。这个数值我一般不定义。
ks[0].inTangent = 90;//或者ks[0].outTangent =
90;这是曲线呕吐的方向。
。。。。定义好3个点
void Update()
&&transform.position
=&new&Vector3(Time.time,
anim.Evaluate(Time.time),&0);//这里面就是你根据屏幕比例做的位置点了。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
@android:anim/accelerate_interpolator: 越来越快,它对应Android代码中的AccelerateInterpolator对象@android:anim/decelerate_interpolator:越来越慢,它对应Android代码中的AccelerateInterpolator对象@android:anim/accelerate_decelerate_interpolator:先快后慢。它对应Android代码中的AccelerateDecelerateInterpolator对象@android:anim/anticipate_interpolator: 先后退一小步然后向前加速。它对应Android代码中的AnticipateInterpolator对象@android:anim/overshoot_interpolator:快速到达终点超出一小步然后回到终点@android:anim/anticipate_overshoot_interpolator:到达终点超出一小步然后回到终点。@android:anim/bounce_interpolator:到达终点产生弹球效果,弹几下回到终点。@android:anim/linear_interpolator:均匀速度。@android:anim/cycle_interpolator:周期运动示例4-1my_anim_interpolator.xml文件(放在anim目录下)&?xml version="1.0" encoding="utf-8"?&&decelerateInterpolator android:factor="2.5"& xmlns:android="/apk/res/android" /&my_anim_window_close_in.xml(放在anim目录下)&?xml version="1.0" encoding="utf-8"?&&set xmlns:android="/apk/res/android"& & android:fillAfter="true"& & android:fillBefore="true"& & android:fillEnabled="true"& & android:interpolator="@anim/my_anim_interpolator"& & android:shareInterpolator="true"& & android:zAdjustment="bottom" && & &translate& & & & android:duration="1000"& & & & android:fillAfter="true"& & & & android:fillBefore="true"& & & & android:fillEnabled="true"& & & & android:fromXDelta="0.0%p"& & & & android:toXDelta="100.0%p" /&&/set&android:shareInterpolator代表&set&里面的多个动画是否要共享插值器,默认值为true,即共享插值器,如果设置为false,那么&set&的插值器就不再起作用,我们要在每个动画中加入插值器。如果只简单地引用这些插值器还不能满足需要的话,我们要考虑一下个性化插值器。我们可以创建一个插值器资源修改插值器的属性,比如修改AnticipateInterpolator的加速速率,调整CycleInterpolator的循环次数等。为了完成这种需求,我们需要创建XML资源文件,然后将其放于/res/anim下,然后再动画元素中引用即可。我们先来看一下几种常见的插值器可调整的属性:&accelerateDecelerateInterpolator& 无&accelerateInterpolator& android:factor 浮点值,加速速率,默认为1&anticipateInterploator& android:tension 浮点值,起始点后退的张力、拉力数,默认为2&anticipateOvershootInterpolator& android:tension 同上 android:extraTension 浮点值,拉力的倍数,默认为1.5(2 &* 1.5)&bounceInterpolator& 无&cycleInterplolator& android:cycles 整数值,循环的个数,默认为1&decelerateInterpolator& android:factor 浮点值,减速的速率,默认为1&linearInterpolator& 无&overshootInterpolator& 浮点值,超出终点后的张力、拉力,默认为2下面我们就拿两个插值器来举例示例4-1&?xml version="1.0" encoding="utf-8"?& &&overshootInterpolator xmlns:android="/apk/res/android" && & android:tension="7.0"/& &上面的代码中,我们把张力改为7.0,然后将此文件命名为my_overshoot_interpolator.xml,放置于/res/anim下,我们就可以引用到自定义的插值器了:&scale xmlns:android="/apk/res/android" && & android:interpolator="@anim/my_overshoot_interpolator" && & .../& &示例4-2my_anim_interpolator.xml文件(放在anim目录下)&?xml version="1.0" encoding="utf-8"?&&decelerateInterpolator android:factor="2.5"& xmlns:android="/apk/res/android" /&my_anim_window_close_in.xml(放在anim目录下)&?xml version="1.0" encoding="utf-8"?&&set xmlns:android="/apk/res/android"& & android:fillAfter="true"& & android:fillBefore="true"& & android:fillEnabled="true"& & android:interpolator="@anim/my_anim_interpolator"& & android:shareInterpolator="true"& & android:zAdjustment="bottom" && & &translate& & & & android:duration="1000"& & & & android:fillAfter="true"& & & & android:fillBefore="true"& & & & android:fillEnabled="true"& & & & android:fromXDelta="0.0%p"& & & & android:toXDelta="100.0%p" /&&/set&如果以上这些简单的定义还不能满足我们的需求,那么我们就需要考虑一下自己定义插值器类了。我们可以实现Interpolator接口,因为上面所有的Interpolator都实现了Interpolator接口,这个接口定义了一个方法:float getInterpolation(float input);此方法由系统调用,input代表动画的时间,在0和1之间,也就是开始和结束之间。线性(匀速)插值器定义如下:public float getInterpolation(float input) { && & return input; &} &加速减速插值器定义如下:public float getInterpolation(float input) { && & return (float)(Math.cos((input + 1) * Math.PI) / 2.0f) + 0.5f; &} &
阅读(418)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'Tween Animation动画之插值器interpolator',
blogAbstract:'本文参照自:http://blog.csdn.net/liuhe688/article/details/6660823android:interpolator 用于设置插值器interpolator&。首先要了解为什么需要插值器,因为在补间动画中,我们一般只定义关键帧(首帧或尾帧),然后由系统自动生成中间帧,生成中间帧的这个过程可以成为“插值”。插值器定义了动画变化的速率,提供不同的函数定义变化值相对于时间的变化规则,可以定义各种各样的非线性变化函数,比如加速、减速等。下面是几种常见的插值器,非常有用的属性,可以简单理解为动画的速度,可以是越来越快,也可以是越来越慢,或者是先快后忙,或者是均匀的速度等等。',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:7,
publishTime:6,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:true,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}您所在的位置: &
2.9.2 补间动画(Tween Animation)
2.9.2 补间动画(Tween Animation)
机械工业出版社
《Android和PHP开发最佳实践》第2章Android开发准备,本章将先对Android系统框架、Android应用框架以及Android应用开发过程中的几个要点做一个整体性的介绍,让大家尽快做好Android应用开发的准备工作。另外,在本章的最后两节,我们还将学会如何安装Android开发环境和Android开发的必备工具(Eclipse加ADT),并建立你的第一个Android项目,即Hello World项目,由此开始你的Android开发之旅。本节为大家介绍补间动画(Tween Animation)。
2.9.2 补间动画(Tween Animation)
补间动画与逐帧动画在本质上是不同的,逐帧动画通过连续播放图片来模拟动画的效果,而补间动画则是通过在两个关键帧之间补充渐变的动画效果来实现的。目前Android应用框架支持的补间动画效果有以下5种。具体实现在android.view.animation类库中。
AlphaAnimation:透明度(alpha)渐变效果,对应&alpha/&标签。
TranslateAnimation:位移渐变,需要指定移动点的开始和结束坐标,对应&translate/&标签。
ScaleAnimation:缩放渐变,可以指定缩放的参考点,对应&scale/&标签。
RotateAnimation:旋转渐变,可以指定旋转的参考点,对应&rotate/&标签。
AnimationSet:组合渐变,支持组合多种渐变效果,对应&set/&标签。
补间动画的效果同样可以使用XML语言来定义,这些动画模板文件通常会被放在Android项目的res/anim/目录下。比如,代码清单2-36中就定义了一个组合式的渐变动画效果。
代码清单 2-36&xmlns:android="/apk/res/android"&& &&&&&android:interpolator="@android:anim/decelerate_interpolator"&&& &&&&&&&&&&&&&&android:fromAlpha="0.0"&&&&&&&&&android:toAlpha="1.0"&&&&&&&&&android:duration="1000"&&&&&&&&&&&&&&&android:fromXScale="0.1"&&&&&&&&&android:toXScale="1.0"&&&&&&&&&android:fromYScale="0.1"&&&&&&&&&android:toYScale="1.0"&&&&&&&&&android:duration="1000"&&&&&&&&&android:pivotX="50%"&&&&&&&&&android:pivotY="50%"&&&&&&&&&android:startOffset="100"&&&
以上补间动画有两个效果:首先,在1秒(1000ms)的时间内,透明度从0(完全透明)变成1(不透明);同时,大小从原先的1/10变成正常大小,缩放的中心点是元素的中心位置。假设以上动画效果的模板文件名为demo_tween_anim.xml,现在我们要把该动画效果应用到一张ID为img_tween_anim的图片上,实现方法见代码清单2-37。
代码清单 2-37...& &ImageView&iv&=&(ImageView)&findViewById(R.id.img_tween_anim); &Animation&anim&=&AnimationUtils.loadAnimation(this,&R.anim.demo_tween_anim); &iv.startAnimation(anim); &...&&
在实际项目中,我们经常使用补间动画,原因是补间动画使用起来比较方便,功能也比逐帧动画强大不少,而且还可以很方便地进行动画叠加,实现更加复杂的效果。实际上,代码清单2-36中的&set/&标签对应的就是AnimationSet类,即“动画集合”的概念,支持加入多种动画效果,如渐变动画(alpha)、大小动画(scale),线性动画(translate)等。另外,在Android系统中,所有与动画相关的类都归类在android.view.animation包之下,大家可以参考SDK文档进行进一步学习。
至此,我们已经初步了解了如何在Android系统中使用各种动画效果,包括逐帧动画和补间动画。显而易见的是,在Android平台之上,开发者们可以很方便地使用各种动画效果来为应用产品增色。此外,使用动画效果还可以帮助我们制作出简单的Android游戏,更多与Android游戏开发有关的内容请参考本书第13章。【责任编辑: TEL:(010)】&&&&&&
关于&&&&的更多文章
本书以Android 4.X进行开发示范,通过大量图示与step by step方
本书描述了黑客用默默无闻的行动为数字世界照亮了一条道路的故事。
使用 iOS 6游戏开发入门经典(第2版) ,学习为iPhone 5
本书是一本系统讲解Android应用开发安全的书籍。它首
产品经理发展到一定阶段,再要成长,光靠学习一些知识
本书面向企业网络应用需求,详细介绍了Windows网络互联解决方案、中小企业共享上网解决方案、基于ISA Server 2006的代理服务器与
51CTO旗下网站

我要回帖

更多关于 uiviewanimationcurve 的文章

 

随机推荐