8,305
社区成员
发帖
与我相关
我的任务
分享
local sp = cc.Sprite:create("menu1.png");
sp:setPosition(200, 200);
layerMenu:addChild(sp);
-- 移动位置A,停止。开始闪烁到位置B
local action1 = cc.Sequence:create(cc.MoveTo:create(2, cc.p(250, 200)), cc.CallFunc:create(function()
sp:stopAllActions();
-- 不停闪烁到位置B
local action1 = cc.Sequence:create(cc.MoveTo:create(2, cc.p(300, 200)), cc.CallFunc:create(function()
sp:stopAllActions();
-- 不停缩放到位置C
local action1 = cc.Sequence:create(cc.MoveTo:create(2, cc.p(350, 200)), cc.CallFunc:create(function()
-- 三个动作都完成了,停止动作,或者继续你喜欢的动作
sp:stopAllActions();
end));
local scales = cc.Sequence:create(cc.ScaleTo:create(1, 0.5), cc.ScaleTo:create(1, 1));
local action = cc.Spawn:create(cc.Repeat:create(scales, 99999), action1);
sp:runAction(action);
end));
local action = cc.Spawn:create(cc.Blink:create(3, 99999), action1);
sp:runAction(action);
end));
-- 主要思路:
-- 1.使用Repeat代替RepeatForever,只要次数足够大,就相当于无限循环了
-- 2.使用Spwan,虽然在无限旋转着,但同时也会执行action1,action1里会有动作回调,在回调里停止精灵的所有动作
-- 3.因此,每次回调的时候,就执行新的一组动作。这样就可以完成你的需求了。
local action = cc.Spawn:create(cc.Repeat:create(cc.RotateBy:create(3, 300), 99999), action1);
sp:runAction(action);
我是用Lua实现了,因为我要不断修改调试,不想一直重复编译~
已经测试能达到你的要求了:
1.不断旋转,并且移动到A点
2.停止旋转,不断闪烁,并且移动到B点
3.停止闪烁,不断缩小放大,并且移动到C点
总之思路是这样,你随便怎么改都好喇~
主要要注意的就是,使用Repeat代替RepeatForever,不然就会有问题了~