Cocos2d iphone 按行为分类
我一直在为我的俄罗斯方块克隆实现一些Cocos2D动画(工作非常完美,没有逻辑错误,我只想在删除行时执行一些平滑的动画) 当前代码(无动画)仅删除块位置,如下所示:Cocos2d iphone 按行为分类,cocos2d-iphone,tetris,ccaction,Cocos2d Iphone,Tetris,Ccaction,我一直在为我的俄罗斯方块克隆实现一些Cocos2D动画(工作非常完美,没有逻辑错误,我只想在删除行时执行一些平滑的动画) 当前代码(无动画)仅删除块位置,如下所示: block.position = ccp(block.position.x, block.position.y - kBlockSize); id move = [CCMoveBy actionWithDuration:0.5f position:(0, -kBlockSize)]; [block runAction:mov
block.position = ccp(block.position.x, block.position.y - kBlockSize);
id move = [CCMoveBy actionWithDuration:0.5f position:(0, -kBlockSize)];
[block runAction:move];
这在for循环中发生,经典的俄罗斯方块编程。但当我尝试制作动画时,就像这样:
block.position = ccp(block.position.x, block.position.y - kBlockSize);
id move = [CCMoveBy actionWithDuration:0.5f position:(0, -kBlockSize)];
[block runAction:move];
有些块只向下移动一次,甚至同一块的动作可能会被调用多次(例如,当打断多行时)
为什么会这样?我知道这有点让人困惑,但关键是我在做同样的事情,得到不同的结果…我可以发布更多代码来帮助澄清
谢谢 我非常确定操作是并行操作,因此您可以在前一个操作完成之前调用CCMoveBy操作。我用过的一些选择是
希望这些能对我有所帮助。谢谢你们,这些答案对我帮助很大 在这里发布之前我已经尝试过了,但是没有成功。 问题如下: 在删除一行的CCSequence中,我有两个动作:第一个动作淡出整行块(持续时间为x秒),第二个动作将所有块放在行上方(持续时间为y秒) 如果只需要删除一行,这种方法很好,因为如果有多行,下一个CCSequence几乎与上一个CCSequence同时启动,读取上面块的错误位置,导致错误的块级联 我解决了使用较长的CCSequence,将CCCallFunnd作为最后一个参数的问题:
id fadeOutSequence = [CCSequence actions:fadeout, destroyBlocks, notifyFadeFinish, nil];
//inside method specified for notifyFadeFinish:
id dropAbove = [CCSequence actions: dropBlocks, notifyDropFinish, nil];
//inside method specified for notifyDropFinish
//start a new delete sequence, if there is more rows to delete.
现在开始实施重力模式,再次感谢!您是否尝试过放置id move=[CCMoveBy Action WithDuration:0.5f位置:(0,-kBlockSize)];[block runAction:move];在更新方法中,是否经常调用它?我会尝试使用CCMoveTo而不是CCMoveBy,如果在移动完成之前多次调用它,至少最终MoveTo会将其移动到正确的最终位置。