cocos2dx精灵动作设计

BadClass 2014-10-16 12:26:58
如何设计下列精灵动作:
动作A(伴随动作1重复执行)——动作B(伴随动作2重复执行)——...?
执行CCSequence(A或B)?好像不能CCRepeatForever(1或2),
...全文
226 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
BadClass 2014-10-17
  • 打赏
  • 举报
回复
-- 主要思路:-- 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); 这个可以,但是貌似太麻烦了当我动作组合过多时不好处理
BadClass 2014-10-16
  • 打赏
  • 举报
回复
这是一个办法,但是不能完美解决这个问题,我试了下,Repeat里面次数不好设置,多了,移动到了还得等待旋转动作完成,少了,没移动到就停止旋转了,不知道是我这边程序的问题么 CCRepeat *pRepeat = CCRepeat::create(animate,10); CCSpawn *pSpawn=CCSpawn::create(pMove,pRepeat,NULL); 中间一段其他代码 CCSequence* pAct=CCSequence::create(pActLib); pSprite->runAction(CCRepeatForever::create(pAct)); 上面是我的代码 期待完美解答
笨木头 2014-10-16
  • 打赏
  • 举报
回复
我现在算是完全明白你的意思了,可以实现的,不过要折腾一下,并不是你说的“很简单”~虽然也不复杂

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,不然就会有问题了~
BadClass 2014-10-16
  • 打赏
  • 举报
回复
这么简单的问题,就没人能帮我吗
BadClass 2014-10-16
  • 打赏
  • 举报
回复
引用 7 楼 a515360208 的回复:
[quote=引用 6 楼 BadClass 的回复:] [quote=引用 4 楼 a515360208 的回复:] auto ss = Sprite::create(); ss->runAction(RepeatForever::create(Sequence::create(action1, action2, action3,..., NULL)));
按这样写,动作应该是移动结束后旋转,结束后闪烁,结束后缩放,顺序执行,然后再重复 我要的效果是 移动到指定点A+不停旋转,,然后移动到指定点B+不停闪烁,然后移动到指定点C+不停缩放[/quote] 就不会举一反三吗??action1、action2、action3并一定只是一个动作,你用Spawn组合起来不就可以了吗??[/quote] 谢谢你一直帮我,可能我没表达清楚。 我想在移动到点A前让精灵一直旋转,而不是只旋转一次,问题是能加CCRepeatForever吗?因为还需要CCSequence
漂浮一生 2014-10-16
  • 打赏
  • 举报
回复
引用 6 楼 BadClass 的回复:
[quote=引用 4 楼 a515360208 的回复:] auto ss = Sprite::create(); ss->runAction(RepeatForever::create(Sequence::create(action1, action2, action3,..., NULL)));
按这样写,动作应该是移动结束后旋转,结束后闪烁,结束后缩放,顺序执行,然后再重复 我要的效果是 移动到指定点A+不停旋转,,然后移动到指定点B+不停闪烁,然后移动到指定点C+不停缩放[/quote] 就不会举一反三吗??action1、action2、action3并一定只是一个动作,你用Spawn组合起来不就可以了吗??
BadClass 2014-10-16
  • 打赏
  • 举报
回复
引用 4 楼 a515360208 的回复:
auto ss = Sprite::create(); ss->runAction(RepeatForever::create(Sequence::create(action1, action2, action3,..., NULL)));
按这样写,动作应该是移动结束后旋转,结束后闪烁,结束后缩放,顺序执行,然后再重复 我要的效果是 移动到指定点A+不停旋转,,然后移动到指定点B+不停闪烁,然后移动到指定点C+不停缩放
笨木头 2014-10-16
  • 打赏
  • 举报
回复
引用 3 楼 BadClass 的回复:
举个例子把, 初始位置A,精灵不停旋转到位置B,然后不停闪烁到位置C,然后不停缩放到位置D 有没简单点的动作设置 第一次接触这个,应该比较简单啊
大概明白你的意思了,你需要的应该是Spawn、Sequence这2个动作,前者是可以让多个动作同时执行,后者是让多个动作按顺序执行
漂浮一生 2014-10-16
  • 打赏
  • 举报
回复
auto ss = Sprite::create(); ss->runAction(RepeatForever::create(Sequence::create(action1, action2, action3,..., NULL)));
BadClass 2014-10-16
  • 打赏
  • 举报
回复
举个例子把, 初始位置A,精灵不停旋转到位置B,然后不停闪烁到位置C,然后不停缩放到位置D 有没简单点的动作设置 第一次接触这个,应该比较简单啊
BadClass 2014-10-16
  • 打赏
  • 举报
回复
都是指某种精灵动作,比如移动,缩放,动画等等
笨木头 2014-10-16
  • 打赏
  • 举报
回复
不是很理解楼主说的动作A、B、1、2是什么....

8,305

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧