1.在pushScene和popScene时可以加特效吗?如何加?
pushScene可以 pushScene(TransitionFade::create(2.0, scene))//淡入淡出特效
2.scheduleOnce//触发器(一次时间调度)
void DrawTest::callOnce(float dt)
{
log("once");
unschedule("timeDown");
}
this->scheduleOnce(CC_CALLBACK_1(DrawTest::callOnce, this), 5.0, "Once");
3.内存管理
(1)对象创建出来引用计数为1。
(2)当对象通过addChild函数加入父节点后,引用计数为2.
(3)当对象从父节点上移除后,引用计数-1.
(4)当场景渲染结束(drawScene()结束)后对象引用计数-1.
(5)如果场景渲染结束前对象的引用计数为1,则渲染之后引用计数变为0,这时,这一帧结束时会自动清理自动释放池中的引用计数为0的对象。
4.动作特效
(1)MoveTo函数 平移移动 参数是:(时间,位置)(位置是相对于父节点坐标系的原点)
auto moveTo = MoveTo::create(1,Vec2(1200,375));
MoveBy函数 参数是(时间,位置)(位置相对于当前位置)
auto moveBy = MoveBy::create(1,Vec2(300,300));
sprite->runAction(moveBy);
sprite->runAction(moveTo);
(2)旋转(RotateTo)参数是:(时间,角度)(角度:正顺时针,最后精灵的角度= 角度%360,旋转的圈数=(度数-360)/360)
auto rotateTo = RotateTo::create(1.0,540);
auto rotateBy = RotateBy::create(5.0,720);
sprite->runAction(rotateBy);
(3)缩放 参数是(时间,缩放比例)
auto scaleTo = ScaleTo::create(1.5,2.0);//相对于精灵原始的尺寸
auto scaleBy = ScaleBy::create(1.5,-2.0);//相对于精灵当前尺寸
sprite->runAction(scaleBy);
(4)跳跃 参数是:(时间,位置,每次跳跃的距离,跳跃次数)
auto jumpTo = JumpTo::create(2.0,Vec2(1200,600),100,6);//位置是相对于父节点坐标系的原点
auto jumpBy = JumpBy::create(2.0,Vec2(1200,600),100,6);//位置是相对于当前位置
sprite->runAction(jumpBy);
(5)反动作 reverse(); 求一个动作的反动作 MoveTo需要另一个精灵run MoveTo动作才能求其反动作。
MoveBy 直接可以求其反动作 其他动作不能求其反动作。
ActionInterval * reverseMoveBy = moveBy->reverse();
(6)闪烁 Blink 参数(时间,次数)
auto blink = Blink::create(1.0,5);
(7)贝赛尔曲线
ccBezierConfig bezier;
bezier.controlPoint_1 = Ver2(0,160);
bezier.controlPoint_2 = Ver2(300,240);
bezier.endPosition = Ver2(300,100);
auto b = BezierTo::create(2.0,bezier);
auto by = BezierBy::create(2.0,bezier);
(8)//缓冲动作
auto m = MoveTo::create(2.0,Vec2(1200,375));
auto eMI = EaseIn::create(m,2.0);
auto eMO = EaseOut::create(m,2.0);
auto eMIO = EaseInOut::create(m,2.0);
auto easeBackIn = EaseBackIn::create(m);
auto easeBackOut = EaseBackOut::create(m);
auto easrBackInOut = EaseBackInOut::create(m);
auto easeBounceIn = EaseBounceIn::create(MoveTo::creatr(2.0,Vec2(1240,660)));
(9)组合动作(序列动作) Sequence['siːkw(ə)ns]
auto seq = Sequence::create(MoveTo::create(2.0,Vec2(1200.375)),RotateBy::create(1.5,1080),ScaleBy::create(2.0,2),ScaleBy::create(1.0,0.5),Blink::create(2.5,10),NULL);
(10)同步动作 Spawn[spɔːn] 里面的动作同时执行,互不影响
auto spw = Spawn::create(MoveTo::create(2.0,Vec2(1200,375)),RotateBy::create(2.0,1080),NULL);
sprite ->runAction(spw);