【potatoes游戏开发】cocos2dx3.X项目重写(八)观察者模式(中)

使用ccbpublish 导出ccbi 使用ccbpublish 导出ccbi 脚本及插件 立即下载


进来发现我的博客被无情的小批量转发,然后打上原创的名义,这么做很不绅士对吧,在此注明,

转载需注明 原文来源   http://blog.youkuaiyun.com/fried_potatoes


观察者模式中,也可以传递数据。

  void postNotification(const std::string& name, Ref *sender);
第二个参数就是可以传递的数据,格式是Ref*,如果想传递变量的话要强制转换一下。

我们要怎样得到这个消息的值呢。

在订阅函数里

void __NotificationCenter::addObserver(Ref *target, 
                                       SEL_CallFuncO selector,
                                       const std::string& name,
                                       Ref *sender)
其中第二个参数,也就是回掉函数的定义是这样的

typedef void (Ref::*SEL_CallFuncO)(Ref*);

参数是Ref*,也就是传来的消息。
················································分割线····················································

为了方便起见,我把地面和背景分别放在两个layer里面,在跳跃的时候,设置了屏幕跟随,也就是让地面的layer在player跳跃的时候下降,这个下降和上升的距离取决于player跳多高,这里我也给背景layer添加了效果。用观察者给背景layer实时传递player的y坐标。

在地面layer里

	   auto playerh= (int)player->getPositionY();
           auto  playerh2 = (Ref*)(playerh);
	   NotificationCenter::getInstance()->postNotification("h",playerh2);
在背景layer里面,因为订阅了消息,而player死亡之后要注意取消订阅,否则会有bug

void bglayer::call(Ref* r)
{
	if ((int)r<0)
	{
		NotificationCenter::getInstance()->removeAllObservers(this);
		this->unschedule(schedule_selector(bglayer::run));

	}
	else
	{
		this->setPositionY(this->getPosition().y-((int)r-h)/4);
		h=(int)r;

	}

}

这个简单的算法实现了地面,背景和人的呼应,有疑问请留言哦。



Cocos2d-x观察者模式其实很简单!!--之游戏开发《赵云要格斗》 《赵云要格斗》系列博文对应的代码与资源,不懂处看博文:http://blog.csdn.net/evankaka/article/details/42813085 立即下载

相关推荐

android反编译工具包,反编译和源码查看器

压缩包里已经反编译出QQ2012的源代码,还有酷狗的等等,教程优快云有,工具在此

‎CocosBuilder 学习笔记(1) CCBReader 解析 ccbi 文件流程

1. 简介 CocosBuilder是免费开源的Cocos2d UI编辑器。 .ccb文件是CCB项目的原始文件。 .ccbi文件是CCB项目发布后的生成的二进制文件。CCBReader可以快速通过该二进制文件,读取并设置CCB项目内容到引擎中。 .ccb文件是用map键值对的形式,保存了项目中所有Node的信息。 .ccbi文件是.ccb文件的精简,专门提供给CCBReade...

weixin_30544657的博客 703

cocos2dx 工具之CocosBuilder

COCOS2DX开发工具大全,免得开发者到处找,全部可以用,包括破解文件,具体包括: TexturePacker,CocosBuilder,cocos2dx粒子编辑器等

cocos2d 解密ccbi_cocos2dx进阶学习之CCBI文件

在马里奥这个游戏里,我们用到了几个ccbi文件,比如蘑菇怪,马里奥等,下面是加载马里奥代码从这个代码可以看出,马里奥不是个精灵,是一个CCNode对象,是CCBReader对象从一个文件读出来的CCNode,那mario.ccbi究竟是什么文件呢?ccbi文件是cocosbuilder软件制作的场景资源,现在可以包含动画,像mario.ccbi就包含了一些动画在里面。资源的加载:ccbi资源的加载...

weixin_42140625的博客 706

MitoZ|动物线粒体基因组组装注释软件

一、MitoZ是什么 是基于python3开发的可以自动过滤双端测序的原始数据、mt基因组组装、mt基因组注释以及mt基因组可视化的工具。 官方的说明文档地址:https://gitee.com/CHANyp/MitoZ#citation 二、MitoZ的安装 git clone https://gitee.com/CHANyp/MitoZ.git cd MitoZ/version_2.4-alpha tar -jxvf release_MitoZ_v2.4-alpha.tar.bz2 三、运行Mito

qq_50637636的博客 1万+

COMSOL相场法模拟枝晶生长:溶质偏析模型搭建全流程

凝固过程中枝晶形貌与溶质偏析直接决定铸件微观组织与力学性能,是材料加工领域长期关注的核心问题。相场法凭借弥散界面描述天然处理拓扑演化,成为模拟枝晶生长的主流数值方法,而通用有限元平台COMSOL为自定义偏微分方程求解提供了高度灵活的实现路径。从热力学驱动、界面各向异性到溶质再分配,模型需准确耦合相场方程与浓度扩散方程,才能在二元合金凝固模拟中还原真实枝晶尖端速度、二次臂形貌及界面富集行为。围绕溶质偏析这一关键变量,建模过程涉及无量纲化参数标定、反溶质截留项配置、分离式求解器与网格各向异性控制等核心细节。该方

weixin_30402231的博客 308

CocosCreator简单使用全局观察者模式进行节点事件派送与监听

最近做的农场游戏,一些界面变动(金币变动,或者一些操作等)都是通过查找节点得到挂载的脚本组件来控制界面的内容显示,而creator的监听和发射事件都是基于节点的.突发奇想会不会有全局的观察者模式来处理事件的监听和发射. 于是在论坛收到了jare回答的问题.根据回答就尝试了一下.于是有了本文的介绍,以便后来者方便使用. 首先把NotificationCenter做成全局的js脚本.这样就支持...

LANGZI7758521的专栏 1827

昇腾910B多卡环境下hccl-test性能调优实战

本文详细介绍了昇腾910B多卡环境下hccl-test性能调优的实战经验,包括环境搭建、CANN工具链配置、性能测试与高级调优技巧。通过优化缓冲区、PCIe拓扑和中断亲和性设置,显著提升多卡通信效率,为AI训练提供稳定高效的计算支持。

weixin_29216049的博客 849

游戏中的事件管理--观察者模式的解读

前言: 最近在网上浏览到一篇对软件设计模式概述的文章,说的相对通透易懂可以看看~ http://c.biancheng.net/view/1317.html 一、观察者模式的介绍 在现实世界中,许多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变。例如:红灯停路灯行;下课铃声响起所有的学生走出教室自由活动等等。 在软件世界也是这样,例如,Excel 中的数据与折线图、饼状图、柱状图之间的关系;MVC 模式中的模型与视图的关系;事件模型中的事件源与事件处理者。所有

星期一的博客 2171

CST软件中SPICE模型的高效导出与转换技巧(txt到cir实战指南)

本文详细介绍了在CST Studio Suite中高效导出与转换SPICE模型的实战技巧,重点讲解了如何将txt格式的模型转换为通用的cir格式。内容涵盖三种模型存在形式的处理方法、格式检查与内容清理、端口一致性验证等关键步骤,并提供了利用LTspice Export功能、批处理脚本以及结果一致性校验等进阶指南,帮助工程师实现场路协同仿真模型的无缝迁移与应用。

silver的专栏 1185

运维颠覆!一文解锁AI赋能运维实战秘籍,效率飙升!

将AI应用于运维工作是一场极具价值的变革,从故障预测与诊断到自动化任务执行,再到资源管理优化,AI都展现出巨大潜力。尽管在实践过程中会面临数据质量、模型复杂性等挑战,但通过合理的技术选型和解决方案,我们能够充分挖掘AI的优势,实现运维工作的高效、智能转型。持续探索和创新AI在运维领域的应用,将为企业的数字化发展提供坚实保障。在科技飞速发展的当下,运维领域正经历着深刻变革,AI的融入成为提升运维效率与质量的关键。本文将深入实战,带你领略AI如何在运维各环节大显身手,让你的运维工作开启智能高效新模式。

探索云原生与智能化驱动下的安全运维新范式。关注DevSecOps、可观测性、AIOps等前沿领域,与您共赴技术前沿。 401

cocos2dx中的观察者模式

**一、什么是观察者模式 当我们对感兴趣的消息进行订阅,一旦有新的动态,就可以收到这些消息。更重要的是,我们不需要时刻关注,消息会自动到达,这就是观察者模式。 在游戏中,观察者模式有很大的作用。比如游戏中的战斗,角色的死亡信息可以被订阅,当角色死亡时,订阅该消息的主体就能做出一些处理(比如怪物停止攻击,弹出死亡界面等等) **二、cocos中提供的观察者模式工具类1.addObserver(订

u014085140的博客 1533

华为OD面试八股真题 - 操作系统 - 1

华为OD技术面,操作系统相关八股真题提供详细解答,这篇博客主要涉及于进程和线程相关知识点

qq_45776114的博客 1644

cocos2d 解密ccbi_CocosBuilder 学习笔记(3) AnimationManager 与 ccbi 文件解析

1. 相关的类先介绍和AnimationManager相关的几个类:CCBSequence时间线。有成员duration(时间线时间,默认10秒)、name(时间线名)、SequenceId(Id)、ChainedSequenceId(重复执行的时间线Id)、SequenceProperty* mCallbackChannel(关键帧执行回调)、SequenceProperty* mSoundCh...

weixin_42116585的博客 588

Python爬招聘网站:Selenium+ActionChains破解滑动验证码,批量采集岗位数据(新手可跑)

通过本文实战,你不仅学会了用Selenium+ActionChains破解滑动验证码,还掌握了爬虫的核心优化思路——“模拟人类行为”是突破反爬的关键。这套逻辑不仅适用于招聘网站,还能迁移到其他有滑动验证码的平台(如电商、资讯网站)。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1188

【立创EDA-PCB设计基础】6.布线铺铜实战及细节详解

本文进行布线铺铜实战及详解布线铺铜的细节

嵌入式阿齐Archie 4万+

Cocos2D-X设计模式:观察者模式

1、应用场景 前面在介绍单例模式的时候,提到了一个类NotificationCenter,它除了应用单例模式以外,还应用了观察者模式。NotificationCenter类是观察者模式中的目标对象,而NotificationObserver则是观察者。(注意目前,cocos2d-x 3.0已经把该类deprecated了,替代方案是使用EventDispatcher的Custom Event

爱生活,爱编程 503

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

cocos2d-x 观察者模式

题目有点大,但是确实就是观察者模式。 游戏中经常遇到几个层之间互相通信的问题。比如,当前页是游戏页,游戏结束的时候,直接显示结算页,不进行转场了,结算页上又有按钮。这时如果要响应按钮点击事件处理一些数据之类的,需要包含别的头文件。这样不太好。 像上边这种类似的问题,就可以使用观察者模式。 1. 在需要发送消息的地方(比如点击下一关按钮的回调函数),post消息即可,post有两种类型,带数据...

weixin_34377065的博客 209

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

cocos2dx 设计模式 观察者模式 实现

注释: main(),主程序 IObservable,被观察者接口 CHanFeiZiObservable,被观察者韩非子 IObserver,观察者接口 CLiSiObserver,观察者李斯 CZhouSiObserver观察者周斯 说明:将观察者聚集到被观察者韩非子身边,韩非子的每一个举动都会通知给观察者,如李斯或周斯。 注意:最多允许一个对象既是观察者也是被观察者。

zhanghow的博客 1233

【cocos2d-x 3.x 学习与应用总结】2: 在cocos2d-x中使用ccbi

本文以3.9版本的cocos2d-x为例,总结了如何在代码中解析、加载ccbi文件。给出一个最简单的使用ccbi实现的helloworld的例子、一个加强版的HelloWorld示例、以及一个最贴近实际使用情况的ccbi使用示例, 并结合示例分析ccbi的解析过程。

Small Flows 1万+

c++读取ccbi

loader类文件: 需要定义CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(ButtonTestLayerLoader, loader); 这个宏定义是定义静态的loader方法,在注册registerCCNodeLoader("TestHeaderLayer", TestHeaderLayerLoader::loader());的时候调用 这里的注册是为

lijinchao2007的专栏 1041

Cocos2d-x3.0 触摸事件

TouchableSpriteTest auto winSize = Director::getInstance()->getWinSize(); Point origin = Director::getInstance()->getVisibleOrigin(); auto containerForSprite1 = Node::create();

杜甲同学的专栏 2547

cocos2dx_3.X项目重新写(一)帧动画的改变

以后用3.X版本。 重写以前的那个项目。首先去CC,然后,先建立Stage,建立精灵出来,给精灵加走动的动画。遇到错误,fatal error C1083: 无法打开包括文件:“extensions/ExtensionMacros.h”: No such file or directory”。  找到了如下解决方案。 Cocos2d-x 3.0 Alpha 1开始 对目录结构进行了整合。

Fried_potatoes的专栏 1710
上一篇: cocos2dx3.X项目重写(七)观察者模式以及schedule引起的bug
下一篇: 【Objective-C】objective-c的环境和helloworld
Fried_potatoes
博客等级 码龄12年 5粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值