当前位置:K88软件开发文章中心编程语言APP编程CrossApp → 文章内容

CAViewAnimation(动画实现)

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-23 13:52:50

由 ?﹏???ζ???﹏﹏? 创建, 最后一次修改 2016-09-08 类说明CAViewAnimation是CrossApp中提供实现动画效果的类,它的对外提供一系列的静态函数供使用者调用,通过对CAViewAnimation的属性设置,及对View属性的改变,来定制你所需要的动画效果。CAViewAnimation的使用方法类似于IOS开发中的Core AnimationCAViewAnimation 方法(点击查看方法介绍)方法说明beginAnimations表示动画开始commitAnimations表示动画结束setAnimationDuration动画所用的时间,默认为0.2秒setAnimationDelay动画延时多长时间后开始播放,默认为0秒setAnimationCurve设置动画的曲线方式setAnimationRepeatCount动画的重复次数,默认1次setAnimationRepeatAutoreverses画结束后,是否执行反向动作,默认为falsesetAnimationWillStartSelector动画开始时,调用SEL_CAViewAnimation0函数,SEL_CAViewAnimation0函数是一个无参数的函数setAnimationWillStartSelector动画开始时,调用SEL_CAViewAnimation2函数,SEL_CAViewAnimation2函数是一个有两个参数的函数,分别是const std::string& animationID和void* contextsetAnimationDidStopSelector动画结束时,调用SEL_CAViewAnimation0函数,SEL_CAViewAnimation0函数是一个无参数的函数setAnimationDidStopSelector动画结束时,调用SEL_CAViewAnimation2函数,SEL_CAViewAnimation2函数是一个有两个参数的函数,分别是const std::string& animationID和void* contextremoveAnimations根据animationID移除对应的动画removeAnimationsWithView移除对应的CAView的动画setAnimationsEnabled设置是否禁用动画效果areAnimationsEnabled动画是否被禁用areBeginAnimations动画是否开始执行areBeginAnimationsWithID对应的animationID的动画是否开始执行基本用法CALabel* label = CALabel::createWithCenter(DRect(winRect.size.width*0.5, winRect.size.height*0.5-270, winRect.size.width, 200)); label->setTextAlignment(CATextAlignmentCenter);label->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);label->setFontSize(_px(72));label->setText("Hello World!");label->setColor(CAColor_white); this->getView()->insertSubview(label, 1); /****************下面是ViewAnimation部分************************/CAViewAnimation::beginAnimations("animation1", NULL);//开始 //CAView属性的改变:缩放、位置、旋转、透明度等等.label->setScale(5); CAViewAnimation::commitAnimations();//结束这是CAViewAnimation最基本的用法,beginAnimations和commitAnimations函数都是成对出现的,上一段代码就能够实现让CAView放大5倍的动画效果,虽然我们没有设置它的时间,但默认时间为0.2秒CAViewAnimation::beginAnimations("animation1", NULL);//开始 CAViewAnimation::setAnimationDuration(0.8);//设置时间CAViewAnimation::setAnimationDelay(1.0);//设置延时时间 /**CAView属性的改变:缩放、位置、旋转、透明度等等.*例如:label->setScale(5);*/ CAViewAnimation::setAnimationCurve(CAViewAnimationCurveEaseInOut);//时间曲线CAViewAnimation::setAnimationRepeatAutoreverses(true);//是否执行反动作CAViewAnimation::setAnimationRepeatCount(2);//反动作执行次数 CAViewAnimation::commitAnimations();//结束我们可以根据自己的需求,定制更多的属性来实现我们想要的动画效果。这是CAViewAnimation最基本的用法,beginAnimations和commitAnimations函数都是成对出现的,上一段代码就能够实现让CAView放大5倍的动画效果,虽然我们没有设置它的时间,但默认时间为0.2秒动画的嵌套CAViewAnimation::beginAnimations("animation1", NULL);CAViewAnimation::setAnimationDuration(0.8);//设置animation1时间 //1部分的动画CAViewAnimation::beginAnimations("animation2", NULL);CAViewAnimation::setAnimationDuration(0.8);//设置animation2时间 //2部分的动画CAViewAnimation::commitAnimations();//结束1CAViewAnimation::commitAnimations();//结束2多个CAViewAnimation之间可以嵌套使用,可以设置不同的时间、延时、反函数及回调等。当一定要注意View属性改变的位置,要写在对应的嵌套层级。监听与回调CAViewAnimation::beginAnimations("animation1", NULL);//开始 //开始回调,在Animation开始时调用CAViewAnimation::setAnimationWillStartSelector(this, CAViewAnimation0_selector(FirstViewController::callbackStartAnimation0)); /**CAView属性的改变:缩放、位置、旋转、透明度等等.*例如:label->setScale(5);*/ //结束回调,在Animation结束时调用CAViewAnimation::setAnimationDidStopSelector(this, CAViewAnimation2_selector(FirstViewController::callbackStopAnimation2)); CAViewAnimation::commitAnimations();//结束开始回调函数如下void FirstViewController::callbackStartAnimation0(){ CCLog("callbackStartAnimation0-->");} 结束回调函数如下void FirstViewController::callbackStopAnimation2(const std::string& animationID , void* context){ //输出animationID CCLog("animationID:%s",animationID.c_str());}注意:回调的第二个参数“void* context”就是CAViewAnimation::beginAnimations("animation1", NULL);传入的第二个参数(我们这里传的是NULL),它本身是一个void指针类型,使用时候需要类型转换。开始回调函数如下例如:CALabel* label = CALabel::createWithCenter(DRect(winRect.size.width*0.5, winRect.size.height*0.5-270, winRect.size.width, 200)); this->getView()->insertSubview(label, 1); CAViewAnimation::beginAnimations("animation1", lable); CAViewAnimation::setAnimationDuration(0.8);//设置时间 label->setScale(5); CAViewAnimation2_selector(FirstViewController::callbackStopAnimation2));//结束回调,在Animation结束时调用 CAViewAnimation::commitAnimations();//结束 回调:void FirstViewController::callbackStopAnimation2(const std::string& animationID

[1] [2]  下一页


CAViewAnimation(动画实现)