cocos2d sprite执行完动作之后调用回调自行销毁

本文详细介绍了Cocos2d-x中函数调用的三种方式:无参调用、带对象参数调用及带对象和数据参数调用,并通过具体示例解释了如何在动作序列中调用这些函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自:http://www.devdiv.com/home.php?mod=space&uid=23234&do=blog&id=3317

原文标题:

函数调用 cccallfunc

之前曾遇到一个关于传值的问题,刚好今早遇到,把相关的都贴进来,知易教程上的内容


1,函数
在动作序列中间或者结束调用某个函数,执行任何需要执行的任务:动作、状态修改等。代码如下:
- (void) OnCallFunc:(id) sender {
id ac1 = [CCMoveBy actionWithDuration:2 position:ccp(200, 200)];
id ac2 = [ac1 reverse];
id acf = [ CCCallFunc actionWithTarget:self selector:@selector(CallBack1)];
[sprite runAction:[CCSequence actions:ac1, acf, ac2, nil]];
}
对应的函数为:(再做一个动作,这就实现了动作、动作序列癿任意扩展和连接)

- (void) CallBack1 {
[sprite runAction:[CCTintBy actionWithDuration:0.5 red:255 green:0 blue:255]];
}

2,带对象参数 调用自定义函数时,传递当前对象。
- (void) OnCallFuncN:(id) sender {
id ac1 = [CCMoveBy actionWithDuration:2 position:ccp(200, 200)];
id ac2 = [ac1 reverse];
id acf = [ CallFuncN actionWithTarget:self selector:@selector(CallBack2:)];
[sprite runAction:[CCSequence actions:ac1, acf, ac2, nil]];
}
对应的自定义函数:(这里,我们直接使用了该对象)
- (void) CallBack2:(id)sender {
[sender runAction:[CCTintBy actionWithDuration:1 red:255 green:0 blue:255]]; }

3,带对象、数据参数 调用自定义函数时,传递当前对象和一个常量(也可以是指针)。
- (void) OnCallFuncND:(id) sender {
id ac1 = [CCMoveBy actionWithDuration:2 position:ccp(200, 200)];
id ac2 = [ac1 reverse];
id acf = [CCCallFuncND actionWithTarget:self selector:@selector(CallBack3:data:) data:(void*)2];
[sprite runAction:[CCSequence actions:ac1, acf, ac2, nil]];
}
对应的自定义函数,我们使用了传递的对象和数据:
-(void) CallBack3:(id)sender data:(void*)data {
[sender runAction:[CCTintBy actionWithDuration:(NSInteger)data red:255 green:0 blue:255]]; }

着重注意 CCCallFuncN 与 CCCallFunc 的区别:

前者的回调函数签名为(欲执行完一些列动作之后自动将sprite从母层中移除,就得用这个!!):

- (void) CallBack2:(id)sender

sender 表示执行动作序列的 CCSprite 对象~

而后者的回调函数签名为:

- (void) CallBack1

是不带参数的!!经我试验,CCCallFunc也可以采用带参数的回调,虽然不报错,但也没法发挥作用~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值