我有这样的场景:
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
答案 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类实例中运行选择器。