不是为不同的精灵和动画设置不同的scheduleUpdate函数,而是为他们关联不同的schedule,然后通过各自schedule的setTimeScale来改变各自执行动作的速度,director的getSchedule的setTimeScale是设置全局的,如何给我想要的任意一个节点关联一个呢?
每个动画不是可以设置帧率吗? 这个来控制他得播放速度。
不只是动画。。还有动作,比如我有一个精灵要给他一个sequence执行,其中还要播放动画,然后另外有一个和他一样的精灵,但是在他们执行的过程中我点击其中一个精灵,他的速度就加快(sequence的所有action和自身的动画都要加快),而另一个精灵不变,我昨天研究了下好像只有设置schedule的timeScale才行,但是用director获得的schedule是全局的,所以想知道怎么给每个精灵单独关联一个schedule,这样我就可以随时设置他的速度了
你可以设置一个状态啊,点击的时候就使用加快的动画和动作。
楼主的意思是不是想问,如何给具体的某个schedule函数设置速度。?
其实就是不想让我设置的速度是全局的,而是关联到某个精灵 我找到一篇文章 http://cocos2d.9tech.cn/news/2013/1202/39023.html ,这里面的第三点就是我想实现的内容,但是这个文章好像是旧版本的,而且是c++的,lua里面好像没这个函数了,所以不知道该怎么实现
你需要自己new Scheduler 和 ActionManager
我这里是 c++ 写的 然后导出到lua 使用的
defaultSche = Director::getInstance()->getScheduler();
Scheduler* _scheduler = new Scheduler();
defaultSche->scheduleUpdate(_scheduler, 0, false);
ActionManager* _actionMgr = new cocos2d::ActionManager();
_scheduler->scheduleUpdate(_actionMgr, 0, false);
然后 把所有需要控制速度的node 的scheduler 和actionManager 设置为 你自己new的 对象
node->setActionManager(this->getActionMgr(name));
node->setScheduler(this->getScheduler(name));
然后在需要变速的时候调用相应的scheduler的 setTimeScale 方法 就可以了,当然最好不要使用默认的scheduler变速,这会影响到其他所有的自己new的scheduler,需要多个不同的速度的话,可以多new几个scheduler,自己管理好
这些代码都是我自己写的类里截取的片段,就是大致跟你说下思路。理论上schduler和actionmanager 在 lua中也是可以new 的。
如果不知道怎么在lua 里new的话 我刚才试了下
这样就可以了,当然版本是3.2的
local scheduler = cc.Scheduler:new();
local actionMgr = cc.ActionManager:new();
(代码不加分号不给换行。。:893: )
actionManager和Scheduler是用new()来创建的,不过lua里的Scheduler类没有scheduleUpdate函数,所以不知道怎么关联到节点,不过还是没解决,还是谢谢你的回复
楼主解决这个问题了吗?同样遇到这个问题 lua里的Scheduler类没有scheduleUpdate函数
这个问题至今没有解决,不过由于后来我们的需求改了,也就不必研究这个了。时间也过去比较久,我还记得当初最主要要解决的问题是比如有多个精灵在做不同的action。然后可以改变其中的一个或者多个精灵的执行action的速度。 印象里当初最后看到ActionManager那里了,你可以从那里着手继续研究