我可以多次运行CCActionSequence吗?

时间:2014-02-26 16:26:28

标签: ios cocos2d-iphone

我有这样的场景:

MyScene:CCScene

MyScene有一个属性CCButton * myMenu

当我触摸myMenu时,myMenu运行CCActionSequence(包含一个调用选择器的CCActionCallFunc)。

我第一次触摸myMenu时工作正常(可以在CCActionCallFunc中调用选择器)。 但是CCActionCallFunc并没有为后续请求调用选择器。

我该如何解释?我用过cocos2d v3

示例:

在第一个场景中,我让myMenu设定了这样的目标:

[self.myMenu setTarget:self selector:@selector(touchMyMenu:)];
[self.myMenu setTarget:self selector:@selector(touchMyMenu:)];
- (void)touchMyMenu:(id)sender {
NSArray *actions = [NSArray arrayWithObjects:[CCActionCallFunc actionWithTarget:self selector:@selector(callFunction1)], [CCActionCallFunc actionWithTarget:self selector:@selector(callFunction2)], nil];
CCActionSequence *sequence = [CCActionSequence actionWithArray:actions]; 
[self.myMenu runAction:sequence];
}

我第一次触摸myMenu时效果很好。 但之后我使用CCDirector弹出到第一个场景。 现在我再次触摸myMenu,但它既不调用callFunction1也不调用callFunction2

1 个答案:

答案 0 :(得分:0)

由于您在同一个类中调用选择器(self是目标),而不是这样做:

- (void)touchMyMenu:(id)sender {
NSArray *actions = [NSArray arrayWithObjects:
    [CCActionCallFunc actionWithTarget:self selector:@selector(callFunction1)],
    [CCActionCallFunc actionWithTarget:self selector:@selector(callFunction2)], nil];
CCActionSequence *sequence = [CCActionSequence actionWithArray:actions]; 
[self.myMenu runAction:sequence];
}

...你可以直接调用选择器:

- (void)touchMyMenu:(id)sender {
[self callFunction1];
[self callFunction2];
}

结果将是相同的。

如果这不是您想要的,那么您的操作设置开始时是不正确的。首先,哪个节点正在运行,上面的动作序列实际上并不重要,它仍将在MyScene类实例中运行选择器。