gpt4 book ai didi

ios - Cocos2d 子节点中的调度选择器

转载 作者:行者123 更新时间:2023-11-29 04:32:58 24 4
gpt4 key购买 nike

我想在 GameScene 类的子节点中安排一个选择器,而不必在子节点类中调用 Schedule 方法(例如 [self Schedule 等..])。

这是我在 GameScene 类中调用的代码片段,用于调用子类中处理 GameScene 背景的方法。

ParallaxMultipleBackgrounds *background = [self getChildByTag:GameSceneBackgroundBase];
//I TRIED THIS:
[background schedule:@selector(([background changeSpeedFactorBy:3])) interval:1];
//AND
[background schedule:@selector(changeSpeedFactorBy:3)];
//AND
[[background schedule:@selector(changeSpeedFactorBy:3) interval:1] ];
//BUT..

不幸的是,当我从编译器收到各种错误消息时,这些方法调用都不起作用。我不确定我做错了什么,因为我在 ParallaxMultipleBackgrounds 类中声明了选择器 -(void) changeSpeedFactorBy:(float)factor

有什么帮助吗?

最佳答案

您不能向选择器提供参数。最简单的方法是在 ParallaxMultipleBackgrounds 类中添加一个 iVar,如下所示:int 修饰符。使其成为读写属性。然后分配并调用schedule方法。

像这样:

ParallaxMultipleBackgrounds *background = [self getChildByTag:GameSceneBackgroundBase];
background.modifier = 3;
[background schedule:@selector(changeSpeedFactorBy:) interval:1];

并在 changeSpeedFactorBy 方法中使用该修饰符变量进行更改。

希望这有帮助。

干杯!

编辑:您还可以通过调用 CCCallFuncND 发送参数。如果您随后声明 CCRepeatForever 操作,您确实可以使用参数永远调用选择器。像这样:

CCCallFuncND *call = [CCCallFuncND actionWithTarget:background selector:@selector(changeSpeedFactorBy:) data:amont];

CCDelay *delay = [CCDelay actionWithDuration:1];

CCSequence *seq = [CCSequence actions:call,delay,nil];

CCRepeatForever *repeat = [CCRepeatForever actionWithAction:seq];
[background runAction:repeat];

很抱歉出现任何语法错误,我现在不在 Mac 上。但这是一个完整的想法。不过需要注意的是,当您发送该数据参数时,它是一个 void* 。因此,您将无法在那里发送整数,但可以使用 NSString 发送。

关于ios - Cocos2d 子节点中的调度选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11453996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com