




全文预览已结束
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章 如何添加一个精灵 Posted on 2012 03 28 15 44 39 1 1 在iPhone上添加资源 1 2 在Android上添加资源 1 3 在win32上添加资源 1 4 在沃Phone上添加资源 2 添加一个精灵 要点1 要点2 教程中的源码可以在这下载 你可以自己按照文章一步步来完成游戏 或者直接下载完整的代码 简单地编译运行 1 加入图片资源 这里有三张由Ray Wenderlich的妻子所做的图片 它们将会用在Cocos2dSimpleGame里 学完第一章 在多种平台上创建新的cocos2d x项目后 你现在应该有一个cocos2d x Cocos2dxSimpleGame文件夹 请下载这些图片 并把它们复制到cocos2d x Cocos2dxSimpleGame Resources文件夹里 之后回到各种平台上的IDE上来 1 1在iPhone上添加资源 非常简单 打开Xcode 然后点击Add Existing Files from the context menu of Cocos2dxSimpleGame Resources group 添加上面的三张图片 请注意 你应当在 Add To Targets 一栏里勾选Cocos2dxSimpleGame 1 2在Android上添加资源 如果你是运行build native sh 来编译的话 你应该把图片复制到Resources文件夹 否则 就把图片文件复制到 assets 文件夹 1 3在win32上添加资源 开发资源 首页 开发资源 第二章 如何添加一个精灵 首页游戏展示开发资源参考资料博客论坛引擎下载 Win32的可执行文件会在它的相关路径中寻找资源 因此我们必须手动的把图片文件从 cocos2d x Cocos2dxSimpleGame Resources 文件夹复制到cocos2d x Debug win32 文件 夹 但像我这样的懒人 总能找到偷懒的办法 把这行写入Post Build Event Command Line xcopy Y E Resources OutDir 每次编译完成时 VistualStudio会复制资源到可执行的路径 1 4在沃Phone上添加资源 在沃Phone 游戏里使用zip格式的资源包是非常推荐的 如果你仍然对此不太清楚 请阅读 How to use ZIP resource package on cocos2d uphone 2 添加一个精灵 你现在会发现把cocos2d 游戏从objc移植到c 是多么的简单 打开 HelloWorldScene cpp 替换init方法如下所示 1bool HelloWorld init 2 3 bool bRet false 4 do 5 6 7 super init first 8 9 10 CC BREAK IF CCLayer init 11 12 13 add your codes below 14 15 16 1 Add a menu item with X image which is clicked to quit the program 17 18 Create a close menu item with close icon it s an auto release object 19 CCMenuItemImage pCloseItem CCMenuItemImage itemFromNormalImage 20 CloseNormal png 21 CloseSelected png 22 this 23 menu selector HelloWorld menuCloseCallback 24 CC BREAK IF pCloseItem 25 26 Place the menu item bottom right conner 27 pCloseItem setPosition ccp CCDirector sharedDirector getWinSize width 20 20 28 29 Create a menu with the close menu item it s an auto release object 30 CCMenu pMenu CCMenu menuWithItems pCloseItem NULL 31 pMenu setPosition CCPointZero 32 CC BREAK IF pMenu 33 34 Add the menu to HelloWorld layer as a child layer 35 this addChild pMenu 1 36 37 38 2 add your codes below 39 40 CCSize winSize CCDirector sharedDirector getWinSize 41 CCSprite player CCSprite spriteWithFile Player png 42 CCRectMake 0 0 27 40 43 player setPosition ccp player getContentSize width 2 winSize height 2 44 this addChild player 45 46 bRet true 47 while 0 48 49 return bRet 50 上面的代码中 我实际上仅添加了 2 Add your codes below 那一节的内容 你可以从下面 的对比中 看到如何一行一行地把cocos2d iphone代码简单地转化为cocos2d x跨平台的代 码 1 cpp with cocos2d x 2bool HelloWorld init 3 4 if CCLayer init 5 6 CCSize winSize CCDirector sharedDirector getWinSize 7 CCSprite player CCSprite spriteWithFile Player png 8 CCRectMake 0 0 27 40 9 player setPosition ccp player getContentSize width 2 10 winSize height 2 11 this addChild player 12 13 return true 14 1 objc with cocos2d iphone 2 id init 3 4 if self super init 5 6 CGSize winSize CCDirector sharedDirector winSize 7 CCSprite player CCSprite spriteWithFile Player png 8 rect CGRectMake 0 0 27 40 9 player position ccp player contentSize width 2 10 winSize height 2 11 self addChild player 12 13 return self 14 要点1 1 不要使用C 里的 super来替代objc里的super 关键字 super仅能在VC 中被识 别 但是无法被GCC给编译 因此你最好调用其父类名称 CCLayer init 2 这里没有属性的概念 因此在objc里的属性 我们用get set方法来代替 例如 如果你 想要获取CCSprite的contentSize属性 你必须调用sprite getContentSize 方法 contentSize的第一个字母应该为大写的 C 之后为它加上 get 前缀 3 使用setter来设置属性的值 player position 应变为player setPosition 4 但是访问结构体的成员不遵循这一规则 例如 在winSize结构体中 没 有 width 直接转换为CCSprite spriteWithFile 6 我们已经完成了一些常用的CGGeometry函数 诸如CGRectMake CGPointMake CGSizeMake CGPointZero CGSizeZero CGRectZero 你可以在 cocos2dx include CCGemoetry h中找到它们 它们的用途和iOS一样 仅有一点点不同在 于它们的前缀 为了避免命名上的冲突 在cocos2d x里 前缀为CG NS UI的类都统一 改成了CC前缀 7 所有cocos2d x里的游戏元素 例如sprite layer scene label action都在heap里被 分配了内存 因此我们必须用指针 来调用它们的方法 8 在cpp里 用关键字 this 来代替objc里的 self 9 现在init方法的返回值是 bool 类型了 在cpp里没有关键字 id 因此那些返回值 为 id 的方法要么替换成对象的指针 要么换成bool 10 对于Android 由于标题栏占用了一些空间 因此你需要在cpp里这样设置玩家的位置 player contenSize width 2 40 winSize height 2 好了 我们可以编译并运行代码了 现在忍者一袭黑衣 躲在黑暗中闪着红眼 要玩游戏 的话 我们必须把背景改成白色的 这非常简单 修改HelloWorld 使它继承 CCLayerColor 而不是CCLayer 首先 修改HelloWorldScene h的声明部分 1 cpp with cocos2d x 2class HelloWorld public cocos2d CCLayerColor 1 objc with cocos2d iphone 2 interface HelloWorld CCLayerColor 之后修改HelloWorld init 内的初始部分 把 1if CCLayer init 2 3 return false 4 改成 1if CCLayerColor initWithColor ccc4 255 255 255 255 2 3 return false 4 这里有些和RayWenderlich的代码不同 因为我偏好防守型的代码风格 正常的代码是 if super init 成功了 then 执行什么什么 我比较偏好if init失败了 先做出错的处理 之后 再编写正确的流程 好了 回到正题 让我们来继续比较c 与objc的转换 1 cpp with cocos2d x 2if CCLayerColor initWithColor ccc4 255 255 255 255 1 objc with cocos2d iphone 2if self super initWithColor ccc4 255 255 255 255 要点2 1 在c 里继承默认为private继承 因此需要在CCLayerColor类声明前加上 public 2 Cocos2d iphone的主要作者RicardoQuesada建议我们在cocos2d x中使用命名空间 检
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年贵州云岩区第十六幼儿园教师招聘考试试题(含答案)
- 2025年大连市属国有企业招聘考试笔试试题(含答案)
- 2024年体育教师编制考试体育专业基础知识必考题库和答案
- 2025中药治疗执业药师继续教育试题及参考答案
- 2024新 公司法知识竞赛题库与答案
- 120急救考试题及答案
- 2024年公路养护工、检修工职责技能及理论知识考试题与答案
- 脑卒中吞咽障碍护理技能培训试题及答案
- 标准化沟通课件
- 化肥品牌知识培训课件
- 《空调维护培训资料》课件
- 底泥资源化利用研究进展
- 医院节能培训课件
- 大企业税收风险分析典型案例汇编
- 混凝土质量保证措施
- 烟气CEMS在线比对验收调试报告附表D.1-12计算公式(HJ-75-2017)
- 学生请假安全协议书
- 隐形眼镜项目风险管理分析
- 砍伐桉树合同范文
- 过敏性休克应急处置流程
- GB/T 3520-2024石墨细度试验方法
评论
0/150
提交评论