cocos2d很新,所以这可能是一个学校男孩的问题。
我有ccMenu的ccMenuItemImage,并希望按顺序为每个菜单项设置动画以淡出。
我有一个包含所有CCMenuItemImages的数组:
menuItems = [[NSArray alloc] initWithObjects:button1, button2, button3, nil];
我试图遍历数组并淡出每个按钮:
CCFadeOut *fadeToAlpha = [CCFadeOut actionWithDuration:0.5];
for (CCMenuItemImage *nextOne in menuItems)
[nextOne runAction:fadeToAlpha];
这似乎有效,但只会淡出数组中的最后一个CCMenuItemImage。我知道我可以在实际的CCMenu上执行动作,但我想在每个菜单项上一个接一个地执行动画。
任何帮助将不胜感激。
答案 0 :(得分:0)
您必须使用CCSequence进行工作....
而不是使用循环使用像这样的CCSequence ..
[button1 runAction:[CCSequence actions:fadeToAlpha,use CCCallFuncN to call 2nd method, nil]];
第二种方法
[button2 runAction:[CCSequence actions:fadeToAlpha,use CCCallFuncN to call 3nd method, nil]];
还有另外一种方法......这很棘手...... 你的淡入淡出时间是0.5。
float duration = 0;
for (CCMenuItemImage *nextOne in menuItems)
{
[nextOne runAction:[CCSequence actions:[CCDelayTime actionWithDuraion:duration],fadeToAlpha,nil]];
value = value + 0.5;
}
检查语法..这样你就可以一个接一个地动画按钮......希望这会有所帮助.. :)
答案 1 :(得分:0)
尝试:
int index=0;
for (CCMenuItemImage *nextOne in menuItems){
CCFadeOut *fadeToAlpha = [CCFadeOut actionWithDuration:0.5];
id fader = [CCSequence actions:[CCDelayTime actionWithDuration:index*.5],
fadeToAlpha,nil];
[nextOne runAction:fader];
index++;
}
另外,避免对多个runActions使用相同的动作对象实例,为每个使用实例创建新动作。