位置: 编程技术 - 正文

/*--------------创建一个Scene的2个示例--------------*/(创游世界)

编辑:rootadmin
&#;&#;&#;&#;

推荐整理分享/*--------------创建一个Scene的2个示例--------------*/(创游世界),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:创作者服务中心,创作者服务中心,创游世界,创作者服务中心,创伤后应激障碍,创伤后应激障碍,闯红灯扣几分罚多少钱,创伤后应激障碍,内容如对您有帮助,希望把文章链接给更多的朋友!

//第一种:创建一个普通的Scene//从App入口AppDelegate找到这样两行代码://创建一个Scene对象的指针auto scene = HelloWorld::createScene();//导演运行这个场景(第一次运行用runWithScene(),切换场景用replaceScene())director->runWithScene(scene); //再来看看HelloWorld::createScene()具体的实现代码//首先找到HelloWorld.h文件,找到声明:static cocos2d::Scene* createScene(); //查看该声明的定义:Scene* HelloWorld::createScene(){ // 'scene' is an autorelease object auto scene = Scene::create(); // 'layer' is an autorelease object auto layer = HelloWorld::create();

// add layer as a child to scene scene->addChild(layer);

// return the scene return scene;}//*这四段代码的意思就是创建一个Scene的对象指针,一个Layer的对象指针,然后把layer添加进scene,最后返回scene。关于这段代码:auto layer = HelloWorld::create();为什么它能创建一个Layer的对象指针呢?因为HelloWorld继承了Layer,所以能用create()方法。细心的同学可能会发现HelloWorld.h文件里并没有声明create()方法啊,第二段代码为什么不会报错呢?答案是头文件有这么一个宏:CREATE_FUNC(HelloWorld);查看这段代码定义:#define CREATE_FUNC(__TYPE__) static __TYPE__* create() { __TYPE__ *pRet = new __TYPE__(); if (pRet && pRet->init()) { pRet->autorelease(); return pRet; } else { delete pRet; pRet = NULL; return NULL; } }这个宏里写了静态的方法:static _TYPE_ *create(),然后new分配了内存空间,又执行了init()方法。回到刚才:auto layer = HelloWorld::create();创建一个层Layer时执行了很多代码,包括init(),所以init()是层的元素。最后就可以在cpp文件里的init()函数里写各种元素吧!例如:bool HelloWorld::init(){ if ( !Layer::init() ) { return false; } //创建一个Sprite: Sprite *s = Sprite::create("Demo.jpg"); //设置位置 s->setPosition(Point(, )); //添加进层 addChild(s);

return true;}一个简单的场景就这样创建好了,最后调试看看效果吧!*/

/*--------------创建一个Scene的2个示例--------------*/(创游世界)

//第二种:创建一个带物理引擎的Scene//从App入口AppDelegate找到这样一行代码,代码不变auto scene = HelloWorld::createScene();//修改createScene()里的创建Scene的代码为包含物理引擎的Scene:auto scene = Scene::createWithPhysics();//可以添加一段,查看这个包含物理引擎Scene所有的调试信息scene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL);

//接着在bool HelloWorld::init()里修改具体的实现//把默认生成的代码删掉,改成这样bool HelloWorld::init(){ if ( !Layer::init() ) { return false; } return true;}

//获得视图大小,方便下面的操作Size s = Director::getInstance()->getVisibleSize();//第一步,先得创建一个Node(auto换成Node *也可以,这里使用到了c&#;&#;的特性,所以用auto)auto node = Node::create();//第二步,创建一个边框(这里的边框其实是一个静态物体:EdgeBox,它默认不受重力影响)//Edge:边缘的意思。//s:设置这个边框大小//PHYSICS_MATERIAL_DEFAULT:边框材料使用默认的(具体我没怎么研究)//3:设置边框粗细//还可以继续填参数,这里我只用3个参数auto bound = PhysicsBody::createEdgeBox(s, PHYSICS_MATERIAL_DEFAULT, 3);//第三步,把边框添加进node里node->setPhysicsBody(bound);

//调整节点的位置(不然会出现边框显示不全的情况)node->setPosition(Point(s.width, s.height));//不添加进Layer可是显示不出来的!addChild(node);

//一个带物理引擎的世界就这样创建好了,接下来只要在这个世界(bound)里添加各种元素就行了,例如://先创建一个Sprite对象指针auto b = Sprite::creat("hero.jpg");//添加进物理世界(bound)中//setPhysicsBody():设置(称添加或许更好)一个物体//PhysicsBody::createBox():创建一个Box类型的物体,也有其它的create方法,能创建不同的形状//getContentSize():获得容量大小,这里我用的是Spreite *b的大小来设置为物体的大小b->setPhysicsBody(PhysicsBody::createBox(b->getContentSize()));//位置随意b->setPosition(, );//添加进层addChild(b);

/*个人对于创建一个基础的物理世界的小结:物理世界在3.x版本中使用起来非常简单,只需在创建场景的时候写这样的代码就行了:Scene *scene = Scene::createWithPhysics();这样普通的场景就变成了带物理引擎的场景!然后就能直接在初始化函数init()中调用物理引擎相关的代码*/

关于cocos2d-x-3.x版本环境的搭建和自己创建工程的步骤 (一)环境搭建RichardMillings--::次阅读最近3.2版本更新出來了!这是自2.x分支以来修复了超过个bug,3.2版本是目前为止,官方发布的最稳

TexturePacker 如何使用自带的加密功能及在cocos2dx中的使用 在cocos2dx中使用纹理图集是非常节省资源的,在这里推荐TexturePacker,而且TexturePacker工具的加密接口也非常的好用,下面就来介绍一下。。。TexturePacker工

Cocos2D教程:使用SpriteBuilder和Cocos2D 3.x开发横版动作游戏——Part 1 本文是对教程HowToMakeASide-ScrollingBeatEmUpGameLikeScottPilgrimwithCocos2D–Part1的部分翻译,加上个人理解而成,最重要的是将文中所有代码转换为Cocos2D3.x版本。

标签: 创游世界

本文链接地址:https://www.jiuchutong.com/biancheng/369151.html 转载请保留说明!

上一篇:cocos2d-x 引擎分析:如何实现跨平台(cocos引擎教程)

下一篇:关于cocos2d-x-3.x版本环境的搭建和自己创建工程的步骤(关于我和鬼变成家人的那件事)

  • 刚打完发票可以注销税控盘吗
  • 增值税抵扣了,附加税怎么算
  • 小规模企业每月能开多少专票
  • 支票上的法人章和财务章是央行盖吗
  • 购销合同印花税怎么算
  • 税控盘备案在电子税务局操作流程
  • 转登记为小规模纳税人未抵扣的进项税额
  • 企业股权转让如何避税收
  • 查增应纳税所得额怎么算
  • 房地产收到客户房款如何做账
  • 企业房屋装修费如何入账
  • 留底进项税额办理退税需要什么手续
  • 携税宝可以全额抵扣吗
  • 工会开发票有税号吗?
  • 电子商务出纳的岗位职责
  • 股东转让股份怎么转让
  • 研发人员工资加计扣除
  • 土地出让金如何缴纳
  • 企业开具咨询费的发票
  • 现金折扣通过财务费用核算
  • 1697509966
  • 如何在excel中添加选项内容
  • 建筑业总产值的统计执法检查内容
  • 企业购入一批材料卖价5万元
  • 设备租赁公司怎么复制赚钱
  • macOS Big Sur 11.2 RC 2正式发布(附更新内容)
  • PHP:Memcached::getMulti()的用法_Memcached类
  • php ftp上传文件
  • CodeIgniter与PHP5.6的兼容问题
  • 公司搬家费用怎么入账
  • 支付境外培训费要交税吗
  • python模拟微信
  • yolov3简介
  • code structure
  • 库存股属于什么
  • 企业发生的利得或损失应计入企业的营业外收支
  • 销售费用可以开专票吗
  • php如何实现
  • 个税手续费增值税
  • 企业所得税应该怎么计算
  • 增值税专用发票和普通发票的区别
  • 个人收入如何开出发票
  • 发行的企业债券计入什么科目
  • 商品流通企业采购费用
  • 将自产的应税消费品用于连续生产非应税消费品
  • 以前年度应收账款贷方余额如何调整
  • 累计扣除包括哪些
  • 资质办理属于什么开票大类
  • 房地产公司收房款怎么分录
  • 初级会计实务中第二章第四节存货(5)费琪
  • 国有土地使用权是什么意思
  • 工程结算与工程施工的差额在哪填列
  • 收到预付卡的发票是否可以报销呢?
  • 企业给予第三方补贴
  • 增值税普通发票需要交税吗
  • 什么叫误餐费
  • 收到的普通发票被对方作废
  • 财务会计的基本概念
  • 产值和销售收入可以一样吗
  • mysql中增删改查语句
  • sqlserver用户权限不给增删查改表结构权限
  • Win7旗舰版系统安装
  • linux 详解
  • linux操作系统安装方法有哪几种
  • msworks.exe - msworks是什么进程 有什么用
  • win7防火墙在哪设置
  • TestOpenGL
  • python 字典怎么用
  • android实现天气预报
  • jquery.upload.js
  • pyinstaller指定python2
  • mongoose模块有什么用途
  • android网络访问异常提示有哪些
  • animate如何拖动图片
  • 由简入繁是成语吗
  • 国税局宁夏税务
  • 福建省国税局电话号码
  • 代发工资法律依据
  • 增值税借方有余额怎么调整
  • 宁波个人税务查询网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设