网狐cocos2dx源码
1. cocos2dx 2.x源码还有用么
不建议再使用 cocos2d-x 2.x ,主要是 cocos2d-x 3.x 的 API 更合理,更规范,也使用了 C++ 11的诸多特性。
cocos2d-x 的教材比较混乱,建议不要看。
触控官网的文档都不一定靠谱,最靠谱还是看源码。
2. cocos2dx 3.x版本中导入tiled地图如何导入对象层中对象的自定义信息(源码+注释)
步骤如下:
1. cocos2d-x 中使用类 TMXTiledMap 创建瓦片地图
2. 使用 TMXTiledMap 中的 getObjectGroup 接口取得对象层
3. 使用对象层的 getObject 接口获取对象信息,对象信息是一个 ValueMap 实例
4. 从 ValueMap 中取出数据
测试地图如下所示:
3. vs2013 打开cocos项目找不到exe文件 编译也没有生成exe 修改项目属性 修复vs 重装系统都试过了 没用
您好,python和ndk没有用最新的
主要原因是之前搞的时候最新的有bug
于是沿用之前成功的版本
下面就是骨头一路上的碰壁:
流水帐开始:
1
首先在公司的win8上安装vs2013半点问题没有
用vs2013打开之前用vs2012下创建的项目提示不好用
愿意是我忽略的升级配置文件的选项。
2
尝试微软提供的项目管理软件:TFS,申请微软的免费服务器。
发现功能太强大,适合大项目的项目管理,但我只需要源代码管理就行。
放弃,尝试git。
3
被vs2013打开过的cocos2dx项目,在2012中打开又报错了。
看来需要彻底升级了。
4
下载解压cocos2dx3.0beta版本。
使用create_project.py创建项目比之前友好了
因为换成了图形界面
不过先进命令行的方式还是太麻烦
我们建个快捷方式:
建一个bat文件
输入D:\java\cocos2d-x-3.0beta\tools\project-creator\create_project.py
5
cocos2dx3.0beta建的新项目比之前大了
因为他直接把编译所需代码拷贝到项目文件夹下
而且可建立在任意位置
6
新项目建立之后vs2013运行ok
于是拷贝到github的本地代码库下
上传(几百M,略大,稍等)
上传ok之后直接打开本地代码库下的sln文件
此时,vs2013会自动配置好git
骨头实验了一下提交到本地和提交到服务器功能
ok
7
回家捣鼓笔记本安装vs2013
(win8.1已装vs2012)
老报核心什么什么的错
搜了网上几乎所有的办法:管理员、换显卡驱动、打补丁(个人不喜欢一切win的补丁)
还是不成功
于是系统还原到一个没装vs2012的ghost
可以安装了(不计较了 vs那么大,有点问题可以理解)
8
装完vs2013就开始装python装cygwin
结果到后来发现好像不需要cygwin了
cmd进入到proj.android下
虚缓仔敲入 python build_native.py 命令cmd开始编译
省去了之前版本需要用cygwin编译而且需要修改文件权限的步骤
心惊胆颤的直到发现 so文件ok
9
eclipse打开其中的android项目
导入不报错,运行黑屏。
果然没那么幸运
网上一搜说需要:
把cocos2d-x-3.0beta/cocos/2d/platform/android/java/src/org/cocos2d-x/lib整个文件夹拷贝到你的项目下proj.Android/src/org/cocos2d-x下
感觉这个步骤完全可以新建cocos2dx项目时脚本自动加上
应该是错误漏掉了
估计下次升级就不需要手动加了
加上之后再次运行哪扒
终于看到熟悉的薯仔了
10
下一步就差汪是在建一个cocos2dx的源码管理
由于之前试验过
应该没啥问题
就不加到流水帐了
11
回家搞vs2013和github果然有问题。
主要是新的cocos2dx3.0beta生成的项目太大了
空项目编译运行一次竟然高达800多M
于是学习了下git的配置文件的使用:
.gitignore
关键是这个文件正常来说windows不让建立
多敲一个。就行。
4. cocos2dx 3.10 事件机制
cocos2dx的事件机制里存在三类: Event、EventListener、EventDispatcher
先理解一下它们之间的关系
当我们按下按钮时(Event),会触发一个特定的事件(EventListener相当于回调函数),而这个特定的事件又存储在EventDispatcher里,可能按下这个按钮会触发多个事件,而事件的先后就是靠EventDispatcher来决定的。
Event的相关类
当出现来自鼠标,键盘,触屏,摇杆等输入源的输入时,这个事实称之为事件
引擎无时无刻都在感受事件。
Event
可以看出Event主要包含三个变量,一个是事件类型_type(也就是定义的枚举类型:触摸、键盘等),isStopped判断事件是否停止,只要事件停止,其相关的Listener都要停止callback调用。
EventTouch
它对应于四种触摸操作,不同的EventCode可以告诉Listener来调用不同的callback。
EventCustom
它是用户自定义事件,userData记录用户自定义数据,另一个eventName是用户给事件取的别名
上面的源码都有英文注释,我就不多解释了,我只说一个最重要的_isRegistered,它判断事件有没有被注册,如果没有被注册就不会触发。(如何注册事件?将事件加入dispatcher)
在讲它之前,我们先了解一下它的一个重要变量。
sceneGraphListeners: 一个事件(比如说触摸事件),需要按照一定的响应序列,依次对这些Node进行事件响应,所以该类型的事件都会绑定一个与此相关联的node,并且 响应顺序是与node在scene下的zorder相关的 。该类型下的事件优先级统一为0。(与渲染树有关)
fixedListeners: 优先级根据 fixedPriority 的数值从小往大排序、
只要出现了删除,修改,添加监听器的时候,监听器列表需要重新排序,都需要设置相应的 DirtyFlag 操作。但是 Cocos-2dx v3.10 里面的 updateListeners 函数有删除监听器的操作,然而并没有设置相应的 DirtyFlag 操作。
会抛出下面的异常
Gt0Index() 方法其实就是获取到当前监听器中 fixedPriority == 0 的监听器在监听器向量中的位置,它 只有在给 Listener 排序的时候会设置,但是如果更新了对应 ListenerID 的向量(EventListenerVector),但是没有重新排序,就会出现 _gt0Index 未及时更新的情况 ,导致抛出这个异常。
引用:
Cocos2dx游戏引擎(3.x)----新的事件分发机制
cocos2dx之event事件(一)
cocos2dx之event事件(三):事件分发器EventDispatcher
Cocos2dx-v3.10 事件分发机制源码解析
5. 网狐经典版 cocos2dx 怎么对接
网狐经典版 cocos2dx 怎么对接
上面的步骤完成以后,我们就有了一个简单的COM服务程序,而且已经被注册到当前系统中。
下面我们要完成一个简单的COM客户程序。一个COM客户程序简单地说是使用COM组件对象的程序。客户程序调用COM对象的基本流程是:
创建COM对象的实例。这可以通过调用Windows系统的API函数CoCreateInstance来完成。
通过接口调用函数。
调用IUnknown::Release释放COM对象实例
我们的客户程序是使用MFC编写的一个基于对话框的简单应用程序。具体的过程如下:
1.打开Visual C++集成开发环境;