1.设置控件旋转
// 逆时针90度
pImg->runAction(CCRotateBy::create(0.15f, 90.0));
// 顺时针90度
pImg->runAction(CCRotateBy::create(0.15f, -90.0));
2.连续触发一个动画(比如移动到某个位置),防止发生位置错乱
// 先停掉上次可能还未结束的动画,否则容易失控
pBtn_Set->stopAllActions();
// 再执行相应的动作(最好使用CCMoveTo到具体的CCPoint,使用CCMoveBy容易错乱)
if(true){
pBtn_Set->runAction(CCEaseBackOut::create(CCMoveTo::create(0.4f,ccp(x1,y1))));
}else{
pBtn_Set->runAction(CCEaseBackOut::create(CCMoveTo::create(0.4f,ccp(x2,y2))));
}
3.反转设置骨骼动画,将骨骼动画左右、上下对称显示,一个动画可以设置不同的方向
cocos2d::extension::CCArmature *armature = XXX ;
// scale为负就对称显示动画,为正就是原方向显示动画,既可以设置大小,也可以换个方向
// X轴方向对称反转显示,并缩小为原来的一半
armature->setScaleX(-0.5f);
// Y轴方向对称正常显示,并缩小为原来的一半
armature->setScaleY(0.5f);
4.镜像反转,(比如想要动态反转一张卡片,又不想改变卡片的原始坐标值)
// X方向反转动画
pImage->runAction(CCSequence::create(CCScaleTo::create(1.0f, -s_fScale,fScale),NULL));
// 设置X轴镜像反转
pImage->setFlipX(true);
反转动画执行完毕,显示想要的卡片(正面或反面)
pImage->loadTexture(卡片正面image,UI_TEX_TYPE_PLIST);
如果反转之后,想恢复原初始化状态,就再来一次
pImage->setScaleX(-s_fScale);
pImage->setFlipX(true);
5.根据数据条数,动态设置UIScrollView的大小和位置
// 滚动层可纵向滑动,宽度固定为W,高度为H
// 假如每条元素的高度为w,元素个数为n,实际容纳的高度为nContainerHeight
float H = pScroll_Rank->getSize().height;
float W = pScroll_Rank->getSize().width;
if (w*n <= H){
nContainerHeight = H;
}else
nContainerHeight = w*n;
}
// 设置内部真实高度
pScroll_Rank->setInnerContainerSize(CCSizeMake(W,nContainerHeight));
// 设置初始位置
pScroll_Rank->getInnerContainer()->setPositionY(-nContainerHeight+H);
6.动态创建item,监听UIScrollView滑动到底部事件
// nIndexCreate 创建下标(第几次创建) nCountCreate 总共可创建次数
// nCountTotal需要创建的总数目 nCountOnce 每次创建个数
pScroll_Rank->addEventListenerScrollView(this,scrollvieweventselector(MyRankLayer::onScroll));
int nIndexCreate = 0; // 初始化全局变量
// 创建item
ceateRank(0);
void MyRankLayer::onScroll(CCObject* pSend, cocos2d::ui::ScrollviewEventType emType){
if (emType == SCROLLVIEW_EVENT_SCROLL_TO_BOTTOM){
nIndexCreate ++;
if (nIndexCreate < nCountCreate && nCountTotal > nIndexCreate * nCountOnce ){
// 符合条件,创建item
createRank(nIndexCreate);
}
}
}
7.动画后,延迟执行一些内容(精灵从一个位置弧线跳到另一个位置后,移除自身)
pImg->runAction(CCSequence::create(CCJumpTo::create(0.25f, ccp(0, 0), 150.0f ,1),
CCScaleTo::create(0.15f,0.9f,0.9f),CCScaleTo::create(0.15f,1.0f,1.0f),
CCDelayTime::create(1.8f), CCFadeOut::create(0.2f), CCRemoveSelf::create() ,NULL));
8.执行动画后,在方法doSomething里做一些逻辑处理
pImg->runAction(CCSequence::create(pAction,CCCallFunc::create(this,callfunc_selector(MyLayer::doSomething)),NULL));
9.执行闪烁动画结束后,有时候精灵消失,setVisible(true)
// CCRepeatForever 循环执行闪烁动画,一秒3次
pImg->runAction(CCRepeatForever::create(CCBlink::create(1.0f, 3)));
// 停止动画后,记得setVisible(true)
pImg->stopAllActions();
pImg->setVisible(true);
10.一个震屏效果
pLayout->runAction(CCSequence::create(
CCMoveTo::create(0.00f,ccp(-4.0-2,-3.5-2)),
CCDelayTime::create(0.07f),
CCMoveTo::create(0.00f,ccp(+1.0+2,+1.6+2)),
CCDelayTime::create(0.07f),
CCMoveTo::create(0.00f,ccp(+1.0+2,-4.5-2)),
CCDelayTime::create(0.07f),
CCMoveTo::create(0.00f,ccp(-4.0-2,-0.5-2)),
CCDelayTime::create(0.07f),
CCMoveTo::create(0.00f,ccp(0.0,0.0)),
NULL
));
11.CCSpawn同时执行几种(如:缩放和移动)动画,CCSequence按顺序执行队列里的动画
pImg>runAction(
CCSequence::create(
CCSpawn::create(CCScaleTo::create(0.00f,0.4f),CCMoveTo::create(0.00f,ccp(size.width*0.5,size.height*0.5-60.0f)), NULL),
CCSpawn::create(CCScaleTo::create(0.1f,1.1f), CCMoveTo::create(0.1f,ccp(size.width*0.5, size.height*0.5+50.0f)), NULL),
CCSpawn::create(CCScaleTo::create(0.15f,1.0f),CCMoveTo::create(0.15f,ccp(size.width*0.5,size.height*0.5+30.0f)), NULL),
NULL));
12.待续
网友评论