0

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

然后,我在添加所有这些对象的父节点类的更新方法中检查该数组。

有没有办法通过 schedule 方法做到这一点?

共享导演没有给我任何帮助的方法。我对我的解决方案相当满意,但不确定它是否是最好的解决方案。

编辑:我尝试了建议的答案,但不幸的是没有奏效。

这是代码:

    [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)。

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

4

2 回答 2

1

如果你使用 cocos2d 2.0,你可以使用schedule:interval:repeat:delay方法。

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

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

于 2012-12-03T09:22:12.523 回答
0

遗憾的是,建议的解决方案没有奏效。见编辑。

我创建了一个特定的操作类并创建了一个填充此类实例的 NSMutableArray,并且在我需要安排这些操作的类的更新方法中,我执行以下操作:

-(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;
    }
}    

}

于 2012-12-16T14:46:10.490 回答