Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在cocos2d中同步精灵动画

在cocos2d中同步精灵动画
EN

Stack Overflow用户
提问于 2013-04-20 01:34:32
回答 2查看 260关注 0票数 1

每隔一段时间,我就会在场景中添加一些跳动的精灵,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CCSpriteBatchNode *batch = (CCSpriteBatchNode*) [scene getChildByTag: foo1];

sprite = [CCSprite spriteWithBatchNode:batch rect:CGRectMake(0, 0, 128, 128)];
sprite.position = foo2
CCTintTo *a = [CCTintTo actionWithDuration: .5 red:128 green: 128 blue: 128];
CCTintTo *b = [CCTintTo actionWithDuration: .5 red:255 green: 255 blue: 255];

[sprite runAction:[CCRepeatForever actionWithAction:
                   [CCSequence actionOne: a  two: b]]];

[batch addChild: sprite];

我想让我所有的精灵同步跳动,我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2013-04-20 02:50:31

嗯..。这可不容易。我能想到的唯一方法就是安排一个'flasherRamp‘,如下所示:

在.h中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSMutableArray *flashers;

在.m中,初始化方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
flashers = [[NSMutableArray array] retain]; // choose your own ARC flavor, if you retain 
                                            // dont forget to release in dealloc

[self schedule:@selector(flasherRamp) interval:1.0f];

在.m中,您可以在其中创建精灵

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
foo2.visible=NO;
[flashers addObject foo2];

最后

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-(void) flasherRamp {
    for (CCSprite *flasher in flashers) {
        CCTintTo *a = [CCTintTo actionWithDuration: .5 red:128 green: 128 blue: 128];
        CCTintTo *b = [CCTintTo actionWithDuration: .5 red:255 green: 255 blue: 255];

        [flasher runAction:[CCRepeatForever actionWithAction:
               [CCSequence actionOne: a  two: b]]];
        flasher.visible=YES;
    }
    [flashers removeAllObjects];
}

ps。最终可能会有一些漂移,这取决于这种情况会持续多久。

pps。从可用性的角度来看,这可能不是一个好主意,如果在闪烁的精灵的出现和一些可能在触发事件和闪光器的实际出现之间引起1秒的延迟的“异步”游戏事件之间存在某种因果关系,这可能不是一个好主意。

如图所示。:从内存中编码,未测试,但应接近。

票数 2
EN

Stack Overflow用户

发布于 2013-04-22 18:24:43

在这种情况下,我会避免使用CCRepeatForever。

创建一个定义当前色调状态(tintGray、tintWhite、tintDone)的枚举,然后创建一个检查状态的调度选择器。

状态完成后,对batchnode的每个子节点重复这些操作(假设这些子节点是唯一的子节点)。

要调度选择器,请在init或其他加载方法中放置以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// be sure to schedule the interval at a fast enough rate
[self schedule:@selector(tick:) interval:0.1f];

然后将该方法定义如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-(void)tick:(ccTime)dt
{
    if(tintState == tintDone)
    {
        [self unschedule:@selector(tick:)];
        [self tinter];
    }
}

然后为所有精灵安排染色操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-(void)tinter
{
    // could init and reuse this somewhere else to save on allocs
    CCSequence *actions = [CCSequence actions:
                       [CCCallBlockN actionWithBlock:^(CCNode* node)
                        {
                            tintState = tintGray;
                        }],
                       [CCTintTo actionWithDuration: .5 red:128 green: 128 blue: 128],
                       [CCCallBlockN actionWithBlock:^(CCNode* node)
                        {
                            tintState = tintWhite;
                        }],
                       [CCTintTo actionWithDuration: .5 red:255 green: 255 blue: 255],
                       [CCCallBlockN actionWithBlock:^(CCNode* node)
                        {
                            tintState = tintDone;
                        }],
                       nil];

    CCSpriteBatchNode *batch = (CCSpriteBatchNode*) [scene getChildByTag: foo1];
    for (CCSprite *flasher in batch.children) 
    {
        [flasher stopAllActions];
        [flasher runAction:actions];
    }

    // reschedule tick checking
    [self schedule:@selector(tick:) interval:0.1f];
}

显然这并不完美,因为旗帜将由第一个完成着色的精灵驱动,但延迟应该可以忽略不计。如果您想确保它们都完成,只需将标志更改为精灵数量的运行计数,以便只有当tintState等于批处理节点中的精灵数量时才会调用"tinter“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16115622

复制
相关文章
中远海运携手菜鸟试水全链路合作 首柜运抵比利时泽布吕赫码头“海外仓”
近日,从中国盐田港出发的中远海运旗下“中远海运土星轮”(CSCL SATURN)货轮抵达比利时安特卫普-布鲁日港,在中远海运港口泽布吕赫码头(CSP Zeebrugge Terminal)装卸作业。
老King
2022/12/09
3010
中远海运携手菜鸟试水全链路合作 首柜运抵比利时泽布吕赫码头“海外仓”
TSINGSEE智慧港口可视化智能监管解决方案,助力港口码头高效监管
全球经济一体化进程以及国际市场的不断融合,使得港口码头成为了大型货运周转中心,每天数以百计的大型货轮、数以千计的大型集装箱、数以万计的人员流动。港口作为货物、集装箱堆放及中转机构,具有昼夜不歇、天气多变、环境恶劣等特性,安全保卫工作显得更加重要。在如此异常繁复的环境中,如何保证运输生产和货物安全,成为港口码头管理人员最为关注的问题。
TSINGSEE青犀视频
2023/10/18
5680
世界500强马士基集团是如何利用边缘计算革新供应链的
2022年,供应链中断影响了几乎所有行业的企业。为了帮助缓解供应链中的运输环节,马士基集团进行了一场转型,采用尖端技术来加速和加强全球供应链,并与科技巨头开展合作,在其码头采用边缘计算技术、构建专用5G网络以及部署数千个物联网设备,以提高管理和调度运输货物的集装箱船的效率、质量和可见性。
静一
2023/02/28
4350
世界500强马士基集团是如何利用边缘计算革新供应链的
[入门]容器
在上个世纪50年代前,当时物流远没有现代这么普及,集装箱在当时并不被认可,几乎所有货物都是通过零散方式运输。
木禾wen
2019/11/15
7750
[入门]容器
个推消息推送RestAPI版
1.权鉴获取Token /** * 个推获取权鉴Token * @return bool */ public static function getAuthToken() { require_once(__DIR__ . '/../../common/libs/requests/library/Requests.php'); \Requests::register_autoloader(); $headers
素描
2019/09/19
1.5K0
个推消息推送模板详解
作为专业的消息推送服务商,个推为开发者提供了不同种类的推送模板,以实现相应的推送功能。推送模板可以单用,也可以组合使用。为帮助APP开发者更快速地找到适合的推送模板,实现所想要的推送效果,我们写下这篇教学普及贴,希望可以帮到大家。
个推君
2022/01/04
1.9K0
个推消息推送模板详解
港航业信息化发展新趋势:向智慧化、平台化和融合化方向发展
企鹅号小编
2017/12/25
2.5K0
港航业信息化发展新趋势:向智慧化、平台化和融合化方向发展
Docker系列学习文章 - 什么是容器技术?(一)
容器这个词,当你第一眼看它或许脑子里是这东西:瓶瓶罐罐、装水、装其他东西的玩意。
宝哥@上云专家
2018/05/07
7.2K13
Docker系列学习文章 - 什么是容器技术?(一)
SourceTree 推送没有分支选择
使用 SourceTree Checkout 了 远程分支,本地分支与远程分支名字不匹配,然后 push 的时候就没有分支选择。
晓晨
2020/05/29
1.4K0
智慧港口安全预警AI智能视频分析平台
智慧港口安全预警AI智能视频分析平台,各种算法识别精度达到90%以上,实现对动火作业的智能化全过程监管,减少港口安全事故发生的可能性,智慧港口安全预警AI智能视频分析平台紧跟港口物流智能化视频分析平台的发展趋势,从人力监管模式转变为高效、精准的智能化监管模式,提高了安全管理能力。港口AI智能视频分析平台、对大门、场桥、岸桥等关键节点内人员行为、设备状态、环境风险进行全天候高精度智能监控,极大地解决了港口的效率、管理和安全问题,打造智能港口码头。
燧机科技
2022/09/14
8660
智慧港口安全预警AI智能视频分析平台
出口集装箱堆场箱位分配问题(Slots Allocation Problem for Outbound Containers)
(Slots Allocation Problem for Outbound containers,简称OB-SAP)
用户1621951
2020/08/07
4.1K0
出口集装箱堆场箱位分配问题(Slots Allocation Problem for Outbound Containers)
☞【案例】大数据与数据挖掘的相对绝对关系
泄密者爱德华·斯诺登(Edward Snowden)还在寻求容身之所的时候,美国国家安全局(NSA)全方位收集电话和电子邮件记录之事经过他的披露,已经引发了不安和愤怒。奥巴马当局声称,监听数据带来了安全,然而左翼和右翼都在谴责这种窥探行为是对隐私的侵犯。 数据不是信息,而是有待理解的原材料。但有一件事是确定无疑的:当NSA为了从其海量数据中“挖掘”出信息,耗资数十亿改善新手段时,它正受益于陡然降落的计算机存储和处理价格。 麻省理工学院的研究者约翰·古塔格(John Guttag)和柯林·斯塔尔兹(Col
小莹莹
2018/04/20
8190
☞【案例】大数据与数据挖掘的相对绝对关系
FreeBuf 周报 | 微软3000万客户数据遭窃;人民大学回应大量学生信息被盗
据 Object First 调查称,由于 40% 的消费者对企业组织的数据保护能力心存怀疑,因此 75% 的消费者会在其遭到勒索软件攻击后转向其他品牌。
FB客服
2023/08/08
2760
FreeBuf 周报 | 微软3000万客户数据遭窃;人民大学回应大量学生信息被盗
H5+个推实现消息推送服务
网上看了几篇教程都是比较老的版本了,根据前人的智慧,然后自己摸索了下,简单几步实现了在手机上推送自定义的消息。
全栈程序员站长
2022/09/03
1.5K0
H5+个推实现消息推送服务
全球首创!这个“码头搬运工”可节约5000万元人工成本
当大多数厂商还在为无人驾驶汽车上路做最后路测的时候,国内已经有无人驾驶车要在今年正式投入运营了。据央视新闻报道,全球首台自主驾驶无人集装箱跨运车已经问世,预计2018年6月实现单车运行,年底实现整个车队的运行。 据了解,集装箱跨运车是一种在集装箱码头搬运和堆码集装箱的专用装卸机械,作业时,专业人员驾驶跨运车往返于码头前沿和堆场,行驶到集装箱的上方,放下吊具抓住箱子,随后驶往堆场放箱。 而新的自主驾驶无人集装箱跨运车装上了6个摄像头和4个激光雷达,它们就像是跨运车的眼睛一样,感知周围环境并传送给“大脑”。
机器人网
2018/04/18
9340
全球首创!这个“码头搬运工”可节约5000万元人工成本
日本最大港口遭勒索软件攻击,造成巨大经济影响
日本名古屋港位于伊势湾,是日本最大和最繁忙的贸易港口,占全国总贸易量的10%左右。值得注意的是,这个港口还是日本最大的汽车出口港,丰田汽车公司的大部分汽车都在这里出口。
FB客服
2023/08/08
2580
日本最大港口遭勒索软件攻击,造成巨大经济影响
每天3分钟 回顾过去24小时AI人工智能热点事件
企鹅号小编
2018/01/02
9930
每天3分钟 回顾过去24小时AI人工智能热点事件
亚洲首个,中国创造!码头空无一人,只有机器人
在印象中,码头是个熙熙攘攘的地方,而在青岛港,5月11日首次启用的一个新码头却空无一人,来回穿梭的机器人承担了粗活累活,它们到底是如何工作的?下面就来揭秘亚洲首个全自动化码头↓↓ △视频:亚洲首个全
机器人网
2018/04/25
8970
亚洲首个,中国创造!码头空无一人,只有机器人
Docker会是改变世界的那只“箱子”吗?
“很多时候,我们面临未来的预测和期望,其实很多答案已经存在在历史中。” 改变世界的“箱子” “没有集装箱,就不会有全球化。”,《经济学家》这个评论可以说是对于这个普通的箱子的历史性地位的一个总结。1956年4月26日,当集装箱之父麦克莱恩第一次将集装箱这种方式用于货物运输时,他肯定想像不到他的这个看似普通的发明,会对这个世界的影响如此深远。因为如果把全球经济比作一个高速运转的复杂的机器,那么以集装箱为核心的现代运输体系就是带动这台机器高速运转的齿轮和传送带。 这只普通的箱子,技术含量不高,也并不复杂。
腾讯大数据
2018/01/26
8610
天津港焦炭码头牵手图扑软件,可视化解锁智慧焦炭港口
2019 年 1 月 17 日,中共中央***、国家主席、中央军委主席在京津冀考察期间来到天津港,对天津港提出了要志在万里,努力打造世界一流的智慧港口、绿色港口,更好服务京津冀协同发展和共建“一带一路”的殷切嘱托。
HT for Web
2022/05/10
9120
天津港焦炭码头牵手图扑软件,可视化解锁智慧焦炭港口

相似问题

使用码头,刮起的飞溅在赫洛库

23

没有发现德拉维尔,赫洛库

10

“赫洛库”的CLI编辑?

10

赫洛库没有连接到蒙戈阿特拉斯数据库?

22

赫洛库霍比的Dyno小时

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文