cocos2dx 与 cocos2dcocos2dx游戏开发发哪个好?

Java1234官方群20:
Java1234官方群20:
《Cocos2d-x游戏开发之旅》PDF 下载
《Cocos2d-x游戏开发之旅》PDF 下载
提醒:假如百度云分享链接失效,请联系站长,我会补上的。
《Cocos2d-x游戏开发之旅》PDF 下载
下载地址:
电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍:
图书简介:
本书主要讲解了Cocos2d-x游戏图形引擎的使用方法,对常用的API使用方式以及重要的函数进行了深入的分析,并通过详细的游戏实例来介绍Cocos2d-x在实际开发中的应用,书中还大量穿插了在实际的手机游戏开发过程中遇到的问题以及解决方案。&
相关截图:
图书目录:
第1章 开学典礼 / 1
1.1 出场人物介绍 / 1
1.2 入学要求&&本书适合人群 / 2
1.3 这内容有点糟糕&&本书风格 / 2
1.4 你需要这些技能&&学Cocos2d-x需要什么知识 / 3
1.5 我们为什么要学Cocos2d-x / 4
1.6 先给我们的代码找个温馨的家&&环境搭建 / 4
1.6.1 紫色风暴之VS2010 / 4
1.6.2 我的Cocos2d-x版本 / 5
1.6.3 看看前辈们的毕业设计&&运行官方Demo / 6
1.7 广告时间&&提供一些学习资源 / 8
第2章 不离不弃的HelloWorld / 10
2.1 简单到无法想象&&直接运行HelloCpp项目 / 10
2.2 新建Cocos2d-x项目遇到的麻烦&&成功新建一个HelloWorld / 12
2.2.1 创建Cocos2d-x项目 / 12
2.2.2 解决编译报错的方案1&&直接复制源文件 / 14
2.2.3 解决编译报错的方案2&&修改项目配置 / 17
2.3 HelloWorld,没有想象中的简单&&简单解析HelloWorld / 19
2.3.1 HelloWorld是如何显示到窗口的 / 19
2.3.2 场景其实不是真正的场景 / 20
2.4 实例来了 / 23
第3章 我们来学习怎么爬行 / 29
3.1 环游世界&&场景 / 29
3.2 一切的主宰&&导演 / 30
3.2.1 加载第一个场景 / 30
3.2.2 简单的切换场景 / 30
3.2.3 包含特效的切换场景 / 32
3.2.4 赠送的&&推进和弹出场景 / 34
3.3 你走你的,我走我的&&层 / 36
3.4 比对象还要可爱的对象&&精灵来了 / 37
3.5 我得下命令&&菜单 / 38
3.6 当个背包客&&节点 / 40
第4章 我们来学习怎么走路 / 43
4.1 吉他独奏《天空之城》&&播放声音 / 43
4.2 控件篇1&&我最爱的九妹和按钮事件 / 44
4.2.1 你好,九妹&&可拉伸图片 / 44
4.2.2 解决使用extensions库时编译报错的问题 / 46
4.2.3 九妹和按钮搭配 / 48
4.2.4 丰富多彩的按钮事件 / 49
4.2.5 啰嗦一下&&CCControlButton特别的小功能 / 51
4.3 控件篇2&&我不是DJ之圆形音量按钮 / 51
4.3.1 圆形音量按钮 / 51
4.4 控件篇3&&我要战斗之血量条 / 54
4.4.1 又是一个音量控制按钮 / 54
4.4.2 我要的血量条 / 55
4.5 动作篇1&&简简单单的运动 / 56
4.5.1 你想去哪,你想走多远&&CCMoveTo和CCMoveBy / 56
4.5.2 我要减肥&&CCScaleTo和CCScaleBy / 58
4.5.3 卡牌翻转特效&&用CCScaleTo就可以实现 / 61
4.5.4 闪亮登场&&CCBlink / 62
4.6 动作讲解2&&更复杂的运动 / 63
4.6.1 我要你按照我的路线走&&CCBezierTo和CCBezierBy / 63
4.6.2 我没让你停,重复动作&&CCRepeatForever / 66
4.6.3 动作一起做,一边走一边转一边跳&&CCSequence / 67
4.7 动作讲解3&&动作监听 / 69
4.7.1 小若,到家了告诉我一声&&动作结束监听 / 69
4.7.2 动作家族族谱 / 70
4.8 屏幕触摸事件 / 72
4.8.1 屏幕事件初探 / 72
4.8.2 复数形式的函数&&每个CCLayer都能获取屏幕事件 / 75
4.8.3 单数形式的函数&&截断事件,一个CCLayer的垄断 / 77
第5章 是时候跑起来了&&《LittleRunner》 / 80
5.1 这是一个什么游戏 / 80
5.2 找个主角回来&&创建主角精灵 / 81
5.2.1 创建筛选器 / 81
5.2.2 创建实体基类 / 82
5.2.3 创建主角类 / 83
5.2.4 创建游戏场景 / 84
5.2.5 修改游戏窗口大小 / 87
5.3 其实她不想跑&&创建无限滚动地图 / 87
5.3.1 每一帧都可以操作&&scheduleUpdate初探 / 87
5.3.2 翻滚吧,地图&&地图无限滚动 / 89
5.4 开心的时候&&让主角跳起来 / 91
5.4.1 CCControlButton的应用&&创建跳跃按钮 / 91
5.4.2 CCJumpBy的应用&&给主角添加跳跃动作 / 93
5.5 金钱诱惑&&加入怪物 / 95
5.5.1 怪物诞生 / 95
5.5.2 怪物巢穴&&创建怪物管理器 / 97
5.5.3 贪婪的主角&&怪物碰撞检测 / 99
5.5.4 疼了就退后&&增加主角受伤时的动作 / 103
5.6 监控一切&&创建分数标签、血量条等属性对象 / 105
第6章 精灵来了第二季 / 109
6.1 一大波精灵来袭&&大量精灵单独绘制的缺陷 / 109
6.2 把相同的精灵装上车&&使用CCSpriteBatchNode优化绘制 / 110
6.2.1 一次渲染&&CCSpriteBatchNode的特别之处 / 110
6.2.2 什么是纹理&&CCTexture简单解说 / 112
6.3 遇到不同的精灵怎么办&&TexturePacker工具使用 / 114
6.3.1 同一张图片,同一个纹理 / 114
6.3.2 将多张图片打包到一起 / 115
6.3.3 加载打包后的图片 / 117
6.4 是动画,不是动作&&CCAnimation / 118
6.4.1 用打包前的图片创建动画 / 118
6.4.2 用打包后的图片创建动画 / 121
6.4.3 额外赠送&&动画创建辅助类 / 123
第7章 游戏实例之《跑跑跑》 / 127
7.1 更丰富的世界&&使用Tiled地图 / 127
7.1.1 世界诞生&&创建跑步场景 / 127
7.1.2 Tiled地图来了&&使用Tiled Map Editor创建地图文件 / 129
7.1.3 你报错了吗&&Tiled Editor常见路径错误 / 130
7.2 嘿,培养新人&&创建新的主角 / 131
7.2.1 主角诞生&&创建实体类和主角类 / 131
7.2.2 固定主角出生点&&对象层的使用 / 134
7.2.3 让主角跑&&添加主角动画 / 136
7.3 更智能的主角&&添加角色控制器 / 137
7.3.1 创建控制器基类 / 137
7.3.2 带着它就能跑&&主角移动控制器 / 138
7.3.3 焦点是主角&&让地图随着主角滚动 / 141
7.4 更多的内容 / 144
7.4.1 让主角上下移动&&三方移动控制器 / 144
7.4.2 添加障碍物&&Tiled障碍层的使用 / 148
7.4.3 添加能吃的物品以及胜利条件 / 153
第8章 用多线程做定时器?你疯了&&schedule很强大 / 158
8.1 我爱单线程&&schedule介绍 / 158
8.2 每一帧都有我&&scheduleUpdate和update / 158
8.3 定时器可以这么做&&schedule和回调函数 / 160
8.3.1 不调用update函数,调用自己的函数 / 160
8.3.2 真正的定时器 / 162
8.4 让一切都停下来&&unSchedule / 162
8.5 触发器可以这么做&&scheduleOnce和回调函数 / 164
8.6 额外赠送,我总是很关注我暗恋的女孩&&观察者模式 / 165
8.6.1 你喜欢谁?我帮你留意&&观察者模式扫盲 / 165
8.6.2 Cocos2d-x提供的观察者模式工具类&&CCNotificationCenter / 166
8.6.3 addObserver和postNotification函数传递数据的区别 / 170
8.6.4 额外赠送&&自己实现简单的观察者 / 172
第9章 野外生存训练 / 177
9.1 师父走了,你怎么办&&学会查看官方Demo / 177
9.2 迟早都要学会&&学习查看Demo源代码 / 178
9.3 别忘了开源&&学习查看Cocos2d-x源代码 / 179
9.3.1 为什么addObserver和postNotification不能同时传递数据 / 179
9.4 物竞天择,没用的就要被淘汰&&retain和release / 183
9.4.1 为什么会有retain / 183
9.4.2 真正的凶手autoRelease / 183
9.4.3 看代码实际点 / 183
9.4.4 原理来了 / 186
9.4.5 实际情况 / 187
9.4.6 倒底什么时候要retain / 187
9.5 再传授几招 / 188
9.5.1 在调试项目时,跟踪并进入Cocos2d-x的源码 / 188
9.5.2 什么?你忘了保存记忆?我们一起十年了啊&&保存数据 / 189
9.6 我能摆脱编译的噩梦&&读取Csv配置文件 / 191
9.6.1 什么是Csv文件&&Csv格式文件扫盲 / 191
9.6.2 如何创建一个Csv文件 / 192
9.6.3 预热&&编写字符串工具类 / 193
9.6.4 辅助工具&&编写文本读取工具类 / 196
9.6.5 进入主题&&编写Csv文件读取工具类 / 197
第10章 睡觉的时候不要吃东西&&有限状态机 / 205
10.1 花5分钟告诉你什么是有限状态机 / 205
10.1.1 简单认识 / 205
10.1.2 一个很&好玩&的游戏 / 205
10.1.3 实现简单有限状态机的类 / 206
10.2 状态模式之我很胖但我很强 / 209
10.2.1 什么是状态模式 / 209
10.2.2 用状态模式实现有限状态机 / 211
10.3 真正的状态机来了 / 216
10.3.1 创建状态机类 / 216
10.3.2 被释放的木头类 / 218
10.4 事件驱动,你想象不到的强大 / 221
10.4.1 彻底抛弃update函数&&新的状态机类 / 221
10.4.2 更智能的状态类 / 224
10.4.3 见证新的运作情况 / 225
第11章 我比Csv更厉害&&强大的Lua / 228
11.1 让Lua和C++牵手 / 228
11.1.1 Lua的堆栈和全局表 / 228
11.1.2 Lua和C++的第一次通信 / 228
11.2 Demo讲解之Lua和C++牵手 / 229
11.2.1 引入头文件 / 230
11.2.2 开始使用 / 231
11.2.3 执行Lua脚本 / 232
11.2.4 重置栈顶索引,将全局变量放到堆栈中 / 233
11.2.5 最后一步,C++取得字符串 / 233
11.3 简单解析Lua的堆栈 / 234
11.4 来点高难度的,获取Lua表结构的数据 / 235
11.4.1 什么是table / 235
11.4.2 获取table变量 / 236
11.4.3 lua_gettable函数 / 236
11.5 C++调用Lua函数 / 239
11.6 Lua调用C++的函数 / 240
第12章 额外奉献,状态机代码生成工具&&SMC / 244
12.1 加快状态机开发速度&&SMC是什么 / 244
12.2 永远都从HelloWorld开始 / 245
12.2.1 这是令牌&&sm配置文件 / 245
12.2.2 化令牌为力量&&使用Smc.jar将配置文件转换为代码 / 246
12.2.3 一劳永逸&&更方便的代码转换方式 / 247
12.2.4 整装待发&&导入所需文件到项目中 / 247
12.2.5 最后的最后&&编写主体类 / 248
12.2.6 简单解析原理 / 249
12.3 实例之SMC版木头写代码 / 252
12.3.1 木头的逻辑 / 252
12.3.2 编写剧本&&sm配置文件 / 253
12.3.3 主角诞生&&编写Mutou主体类 / 255
12.3.4 导演开拍&&编写触发状态切换的功能 / 259
第13章 自力更生&&自己写一个UI模块 / 264
13.1 刚开始必须要轻松一下&&UI模块思路简介 / 264
13.1.1 它能为我们做些什么&&UI模块包含的功能 / 264
13.1.2 一览众山小&&UI模块设计思路图 / 265
13.2 XML文件和属性模块 / 266
13.2.1 一切的源头&&UI的XML配置文件 / 266
13.2.2 知识补充1&&TinyXML介绍 / 268
13.2.3 知识补充2&&TinyXML的HelloWorld / 268
13.2.4 知识补充3&&用TinyXML读取UI模块的XML配置文件 / 272
13.2.5 封装,我们要记住封装&&XML标签节点对象 / 276
13.2.6 我负责保存,你负责修饰&&XML标签节点属性设置器 / 283
13.3 尝点甜头&&创建控件 / 286
13.4 主角来了&&组件 / 288
13.4.1 控件基类&&MMBase / 289
13.4.2 普通窗口控件&&MMNormalWin / 290
13.4.3 标签控件&&MMLabel / 291
13.4.4 甜点来了&&测试新的控件类 / 293
13.5 控件管理模块 / 296
13.5.1 我是老大&&MMWinManager控件管理器 / 296
13.5.2 我是先锋&&MMWinSystem控件系统 / 300
13.5.3 我是前台&&MMWinDesktop控件顶层桌面 / 304
13.6 控件工厂 / 305
13.6.1 抽象工厂之MMWinBaseFactory / 305
13.6.2 控件工厂之MMWinFactory / 306
13.6.3 装饰工厂之MMWinProperityFactory / 307
13.6.4 最后的事情&&运行项目 / 310
13.7 更完整的UI模块 / 311
第14章 倾情奉献&&因为偷懒而诞生的《卡牌塔防》游戏(上篇) / 313
14.1 开篇&&最后的游戏实例 / 313
14.1.1 为什么是塔防游戏 / 313
14.1.2 《卡牌塔防》功能简介&&我们能学到哪些知识 / 313
14.2 启程&&关卡编辑器 / 315
14.2.1 一个英雄一个坑&&炮台坐标编辑器 / 315
14.2.2 按照我给的路径走&&怪物坐标编辑器 / 335
14.2.3 添加更多方便的操作 / 343
14.3 磨刀不误砍柴工&&预备知识 / 350
14.3.1 导演的助手&&场景管理器 / 350
14.3.2 数据读取模块 / 353
14.3.3 全局参数 / 354
14.3.4 请说英文好吗?不,说中文&&I18N工具类 / 356
14.3.5 导入UI模块和TinyXml模块 / 360
第15章 倾情奉献&&因为偷懒而诞生的《卡牌塔防》游戏(下篇) / 363
15.1 英雄诞生 / 363
15.1.1 创建关卡场景 / 363
15.1.2 地图层 / 364
15.1.3 实体基类 / 367
15.1.4 英雄管理器1&&炮台对象 / 370
15.1.5 英雄管理器2&&英雄对象 / 375
15.1.6 英雄管理器3&&炮台和英雄的关系 / 379
15.1.7 英雄管理器4&&加入创建英雄的功能 / 380
15.2 怪物来袭 / 382
15.2.1 怪物管理器 / 382
15.2.2 移动控制器1&&控制器基类 / 388
15.2.3 移动控制器2&&移动控制器基类 / 389
15.2.4 移动控制器3&&按指定坐标列表移动 / 391
15.2.5 怪物来了 / 395
15.3 英雄进攻 / 399
15.3.1 英雄的一次攻击流程 / 399
15.3.2 在Hero里获取怪物列表 / 400
15.3.3 查找并锁定攻击目标 / 403
15.3.4 英雄的攻击 / 404
15.3.5 子弹管理器1&&子弹类 / 407
15.3.6 子弹管理器2&&子弹管理器 / 410
15.3.7 子弹管理器3&&英雄开始发射子弹 / 414
15.4 华丽的装饰 / 415
15.4.1 怪物血量条 / 415
15.4.2 炮台操作按钮&&英雄华丽升级 / 419
15.4.3 怪物起点和终点魔法台 / 423
第16章 倾情奉献&&因为偷懒而诞生的《卡牌塔防》游戏(终结篇) / 427
16.1 关卡信息UI / 427
16.1.1 利用自定义UI模块制作关卡信息面板 / 427
16.1.2 关卡信息数据刷新&&CCNotificationCenter的应用 / 432
16.1.3 怪物数量刷新 / 437
16.1.4 怪物安息&&怪物死亡后塔魂数量刷新 / 438
16.1.5 堡垒安息&&怪物到达堡垒后扣除魔力值 / 439
16.1.6 打怪升级&&英雄升级扣除塔魂 / 443
16.2 谢幕 / 444
16.2.1 关卡选择&&根据关卡数加载游戏 / 445
16.2.2 胜利条件判断 / 448
16.2.3 失败条件判断 / 452
16.3 移植游戏到Android平台 / 452
16.3.1 傻瓜式的Android环境搭建1&&准备工作 / 453
16.3.2 傻瓜式的Android环境搭建2&&解压和安装 / 454
16.3.3 傻瓜式的Android环境搭建3&&测试一下吧 / 457
16.3.4 不需要Cygwin&&生成并导入Android项目 / 458
16.3.5 怎么编译C++文件&&创建Builder / 459
16.3.6 开始编译&&Android.mk文件 / 464
第17章 额外的一些东西 / 468
17.1 常见错误及解决方案 / 468
17.1.1 调用可变参数函数时,总是莫名报错 / 468
17.1.2 无法解析的外部符号(或命令) / 468
17.1.3 Android移植编译报错&&undefined reference to / 469
17.1.4 使用了TinyXML后,移植到Android中运行报错 / 469
17.1.5 CCLabelTTF变成了一个黑块&&多线程引起的Bug / 470
17.2 最后的内容 / 470
17.2.1 不管游戏多快,一帧就是一帧,我们能做很多事情 / 470
17.2.2 给读者的惊喜&&丁小若寄语 / 471
17.2.3 请提供你的意见以及你发现的Bug / 471
(责任编辑:小锋)
------分隔线----------------------------
《Android开发实战经典》PDF 下载...
《Android群英传》PDF 下载...
《Android NFC开发实战详解》PPDF 下载...
《第一行代码——Android》PDF 下载...
《Android开发应用实战详解》PDF 下载...
《Cocos2d-x实战:C++卷》PDF 下载...
免责声明:网站所有作品均由会员网上搜集共同更新,仅供读者预览及学习交流使用,下载后请24小时内删除,如果喜欢请购买正版资源!原作者如果认为本站侵犯了您的版权,请QQ告知,我们会立即删除!<!-- super cache查看: 25328|回复: 532
【9秒原创】Cocos2d-x游戏开发示例——登录系统
阅读权限255
在线时间 小时
一.登录界面:
登录界面通常包括用户的登录、用户注册、快速登录等等菜单选项。
如下简单的登录界面,里面的所有菜单都是用CCMenuItemImage,这也是使用最频繁的菜单项。
1.png (33.07 KB, 下载次数: 1053)
14:03 上传
实际开发中应该尽量将同一场景中各模块的图片资源打包成大图,这里使用TexturePacker打包图片.CCMenuItemImage使用大图中图片时可以使用如下方式加载.
代码如下:CCSpriteFrameCache::sharedSpriteFrameCache()-&addSpriteFramesWithFile(&login.plist&);//加载plist文件,login.png会自动加进缓存
CCMenuItemImage* login_btn = CCMenuItemImage::create();
login_btn-&setNormalSpriteFrame(CCSpriteFrameCache::sharedSpriteFrameCache()-&spriteFrameByName(&loginA.png&));//设置正常状态的图片
login_btn-&setSelectedSpriteFrame(CCSpriteFrameCache::sharedSpriteFrameCache()-&spriteFrameByName(&loginB.png&));//设置选中状态的图片
login_btn-&setTarget(this, SEL_MenuHandler(&LoginScene::loginCallback));//回调函数
//不使用时应该清除掉plist,同时清除纹理缓存.
CCSpriteFrameCache::sharedSpriteFrameCache()-&removeSpriteFramesFromFile(&login.plist&);
CCTextureCache::sharedTextureCache()-&removeTextureForKey(&login.png&);复制代码1.快速登录即不用输入账号密码,游戏记录上一次登录信息,这个功能相对简单,可以使用cocos2d-x自带的CCUserDefault类,这是一个单例类,可以实现简单的数据存储功能,它会在本地生成一个xml文件保存用户存储的键值对数据.
代码如下:CCUserDefault::sharedUserDefault()-&setStringForKey(&userName&, editBoxUsername-&getText());
CCUserDefault::sharedUserDefault()-&setStringForKey(&password&, editBoxPassword-&getText());
//所以在快速登录的回调函数中只需要获取对应的&userName&和&password&即可.
CCUserDefault::sharedUserDefault()-&getStringForKey(&userName&).c_str()
CCUserDefault::sharedUserDefault()-&getStringForKey(&password&).c_str()
复制代码2.本例中在登录主页面最重要的两个功能是更多游戏和注册,更多游戏说白了也就是通过指定url在手机上显示一个网页。以android平台为例,在android手机上显示一个网页肯定需要android本身的支持,但cocos2d-x使用的是c++语言,这就需要我们去从c++调用android的东西,对于做第三方sdk接入必不可少.下面就来看看如何cocos2d-x中调用android,本例中希望实现的是点击屏幕上方的更多游戏打开对应的页面.
代码如下://首先添加android平台必要的头文件
#if(CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID)
#include &jni.h&
#include &platform/android/jni/JniHelper.h&
#include &android/log.h&
#endif
/*然后就是对回调函数的处理,调用android的静态函数相对简单,这里以调用非静态函数为例。调用非静态函数通常需要通过静态函数的单例对象来调用非静态函数,因而需要在android端返回类的单例对象,然后再通过这个对象去调用android的非静态方法。*/
#if(CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID)
& & JniMethodI
& & bool& & & &&&isHave= JniHelper::getStaticMethodInfo(minfo,&org/sgcommunity/test/test&,&getInstance&,&()L org/sgcommunity/test/&);
& &
if (isHave)
{
& && &&&CCLog(&静态函数存在&);
& && &&&//调用Java静态函数,取得单例对象。
& && &&&jobj = minfo.env-&CallStaticObjectMethod(minfo.classID, minfo.methodID);
& & }
& & isHave= JniHelper::getMethodInfo(minfo,&org/sgcommunity/test/test &,&moreGame&,&()V&);//moreGame即对应的android处理方法
if (isHave)
{
& && &&&CCLog(&非静态函数存在&);
& && &&&minfo.env-&CallVoidMethod(jobj, minfo.methodID);//调用java非静态函数,第一个参数为上面取得的对象
& & }
#endif
Java代码:
static test ts=
public class test extends Cocos2dxActivity{
& & protected void onCreate(Bundle savedInstanceState){
& & & & super.onCreate(savedInstanceState);& & & &
& & & & fyqFengyanqi=
}
public static test getInstance(){//返回单例对象
& & Log.d(&INSTANCE&, &Return instance&);
& &
}复制代码整个调用过程就这么简单,剩下就是android的具体实现,通常做sdk接入时,android的处理方法已经封装好,只需要把moreGame换成对应的接口.
3. 注册功能的实现使用的是http协议,这也是cocos2d-x开发中很常用的通信协议。在本例中点击登录页面的注册按钮会弹出注册页面,如下图所示。
2.png (86.96 KB, 下载次数: 1048)
14:04 上传
页面很简单就3个CCEditBox和一个CCMenuItemImage.那如何实现注册功能呢?我们需要的是将注册的用户名和密码发送给服务器保存下来,并且获知是否注册成功,以及是否已经注册过.下面就来实现如何注册,cocos2d-x现在已经支持http请求,但我们在这里使用更加方便的curl来处理http请求.
代码如下://首先必须添加头文件
#include &curl/curl.h&
//使用get方式进行http请求,将注册的数据拼接到url的后面.
& && &&&CURL *
& && &&&CURL
& && &&&curl = curl_easy_init();//初始化curl指针
& && &&&if (curl)
& && &&&{
& && && && &char ipstr[100]=&&;
& && && && &sprintf(ipstr, &http://182.50.2.240:11008/register?username=%s&password=%s&,registerusername-&getText(),secPassword-&getText());//将用户名和密码拼接在url最后
& && && && &CCLog(&%s&,ipstr);
& && && && &char output[500]=&&;
& && && && &curl_easy_setopt(curl, CURLOPT_URL, ipstr);// curl_easy_setopt是具体的操作行为函数,根据参数指明进行何种操作
& && && && &curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, registerLayer::process_data);
& && && && &CCLog(&%s&,output);
& && && && &res = curl_easy_perform(curl);//执行所有的curl操作
& && && && &if(res==0)
{
& && && && && & CCLog(&Succeed!&);
& && && && &}
else
{
& & & & CCLog(&Failed!&);
& && && && &}
& && && && &curl_easy_cleanup(curl);//调用结束,清除指针
& && &&&}
/*获取服务器返回信息,CURLOPT_WRITEFUNCTION对应的回调函数的原型size_t function( char *ptr, size_t size, size_t nmemb, void *userdata),使用这个函数接收服务器返回的信息*/
static const char* message=& &;
size_t registerLayer::process_data(void *buffer, size_t size, size_t nmemb, void *user_p)
{
& & FILE *fp = (FILE *)user_p;
& & size_t return_size = fwrite(buffer, size, nmemb, fp);
& & messag=(char *)
& & CCLog(&%s&,messag);
& & if(!strcmp(messag, &b&))//假定注册成功,服务器返回字符b。
& & {
& && &&&CCMessageBox(&注册成功&);
& & }
& & else
& & {
& && &&&CCMessageBox(&此用户已经注册过,请重试&, &警告!&);
& & }
& & return return_
}
复制代码源码下载(免铜板):
游客,如果您要查看本帖隐藏内容请
阅读权限120
在线时间 小时
goooooooooooooooooooooooood!
阅读权限50
在线时间 小时
阅读权限80
在线时间 小时
貌似 很不错的样子啊~~~~~
阅读权限120
在线时间 小时
好东西.顶了!!!
阅读权限100
在线时间 小时
先赞 后看~!
阅读权限80
在线时间 小时
很好!学习!前排吗?!
阅读权限50
在线时间 小时
正需要 看看~~~
阅读权限50
在线时间 小时
顶~正需要参考呢
阅读权限50
在线时间 小时
很好。very good.
搜鱼小程序-专业的小程序开发管理系统
版本号:4.24 - 新微信淘宝客[正式版]
**** 本内容被作者隐藏 ****
特别声明(务必查看!)
1、Unity3D 保卫萝卜游
特别声明(务必查看!)
1、HTML5 老鼠没糖吃游
特别声明(务必查看!)
1、Unity2D 撞击行星游
| 联系方式
COPYRIGHT(C)2015 ZHONGQINGLONGTU NETWORK CO.LTD ALL RIGHTS RESERVED.ICP备号-4
北京中清龙图网络技术有限公司

我要回帖

更多关于 cocos2dx游戏开发教程 的文章

 

随机推荐