Cocos2d:有没有办法安排相同的选择器n次?

时间:2012-11-30 13:56:33

标签: cocos2d-iphone scheduler

我目前在对象上安排相同选择器n次的解决方案是通过创建一个“messanger”类的实例数组,其中作为属性我有调用时间和我想要调用的选择器的类型加上对象引用应该调用选择器。

然后我在父节点类的update方法中检查这个数组,在那里我添加了所有这些对象。

有没有办法通过计划方法这样做?

共享主管并没有给我任何帮助的方法。我对我的解决方案非常满意,但不确定它是否是最好的解决方案。

编辑:我尝试了建议的答案,但遗憾的是没有用。

以下是代码:

    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:1.0f];
    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:3.0f];
    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:5.0f];
    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:7.0f];
    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:9.0f];
    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:12.0f];
     ....
    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:152.0f];
    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:177.0f];
    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:199.0f];
    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:212.0f];

f是一个对象,它只调用选择器“activateForShort”一次。

我尝试将间隔和重复值修改为1,但没有效果。

我想要达到的目的是在特定时间(例如1.0f,212.0f)调用它。

任何建议都会好受欢迎:)

2 个答案:

答案 0 :(得分:1)

如果您使用的是cocos2d 2.0,则可以使用schedule:interval:repeat:delay方法。

repeat参数是选择器在初始运行后再次运行的次数。即如果重复是10,则选择器将运行11次。

延迟参数确定初始延迟,因此您可以在选择器第一次运行之前等待更长或更短。

答案 1 :(得分:0)

解决方案建议遗憾地没有用。见编辑。

我创建了一个特定的动作类,并创建了一个NSMutableArray,它填充了这个类的实例,并且在我需要安排这些动作的类的update方法中,我做了:

-(void ) update:(ccTime) delta
{
timeElapsed+=delta;

for(int i=lastButtonCallIndex; i<[callsSchedulers count]; i++ )
{
    Call * buttonCall = [callsSchedulers objectAtIndex:i];
    if (buttonCall.callingTime<timeElapsed)
    {
        if(buttonCall.called==FALSE)
        {
            [buttonCall call]; //Where the call method has a reference to the button object I wanted to activate - a Call object is initialized with this reference.
            lastButtonCallIndex++;
        }
    }
    else
    {
        break;
    }
}    

}