几个cocos2d面试题个人分析

1.简述Scence,Layer,Sprite,Node
Scence创建场景
Layer触摸事件
Sprite创建精灵
Node事件,节点管理,场景进入,退出接口
2.简述Action,ActionMessage
Action
瞬时动作,间隔动作,组合动作,网格动作,帧动画
ActionMessage
动作管理类
3.常用的cocos2d-x工具
参见另一博客
4.简述Director,EGLView,EGLViewProtocol
Direct
场景,视图,坐标转换,主循环的接口
EGLView
继承自GLViewProtocol,创建视图,管理视图
EGLViewProtocol视图相关接口
5.简述SpriteFrameCache,SpriteBatchNode,并说出Node,Sprite是如何实现绘制的?
SpriteFrameCache
纹理缓存的创建和管理
SpriteBatchNode
批处理,提高渲染效率
Node,Sprite都有draw函数
但真正的绘制命令执行时Sprite中执行
6.简述cocos2d-x的屏幕适配解决方案
Director::getInstance()->getOpenGLView()->setDesignResolutionSize()
enum class ResolutionPolicy{
EXACT_FIT,NO_BORDER,SHOW_ALL,FIXED_HEIGHT,FIXED_WIDTH,UNKNOWN,
}
7.cocos2d-x游戏储存
FileUtils本地文件处理
UserDefault数据持久化
8.cocos2d-x内存管理
ref,CCObject
引用计数
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一些常见的Cocos面试: 1. 什么是Cocos2d-x?它的主要特点是什么? Cocos2d-x是一个跨平台的2D游戏引擎,支持iOS、Android、Windows、Mac等多个平台。它的主要特点包括易用性、高效性、灵活性、可扩展性和开源性。 2. Cocos Creator和Cocos2d-x有什么区别? Cocos Creator是基于Cocos2d-x引擎的图形化开发工具,它通过可视化编辑器和JavaScript脚本来创建2D游戏。而Cocos2d-x则是一个原生的2D游戏引擎,需要使用C++来编写游戏代码。 3. 什么是Cocos Studio? Cocos Studio是一个可视化的游戏UI编辑器,它可以让开发者轻松地创建游戏中的各种UI元素,包括按钮、标签、进度条等等。Cocos Studio还支持导出UI资源,方便在Cocos2d-x引擎中使用。 4. Cocos2d-x中的精灵(Sprite)是什么?如何创建和操作它? 精灵是Cocos2d-x中最基础的图像元素,可以用来表示游戏中的角色、背景、道具等等。创建精灵可以使用Sprite类的create()方法,例如: ``` auto sprite = Sprite::create("sprite.png"); ``` 要调整精灵的位置、大小、旋转角度等属性,可以使用精灵的setPosition()、setScale()、setRotation()等方法,例如: ``` sprite->setPosition(Vec2(100, 100)); sprite->setScale(0.5f); sprite->setRotation(45); ``` 5. Cocos2d-x中的场景(Scene)是什么?如何创建和切换场景? 场景是Cocos2d-x中用来管理游戏中各种元素的容器,一个游戏通常由多个场景组成。创建场景可以使用Scene类的create()方法,例如: ``` auto scene = Scene::create(); ``` 要在场景中添加精灵或其他元素,可以使用场景的addChild()方法,例如: ``` scene->addChild(sprite); ``` 要切换场景,可以使用Director类的replaceScene()方法,例如: ``` auto newScene = NewScene::create(); Director::getInstance()->replaceScene(newScene); ``` 6. Cocos2d-x中的动作(Action)是什么?如何创建和使用动作? 动作是Cocos2d-x中用来控制精灵运动、变换等行为的机制。创建动作可以使用Action类的各种静态方法,例如: ``` auto moveBy = MoveBy::create(2.0f, Vec2(100, 0)); auto rotateBy = RotateBy::create(2.0f, 360); auto sequence = Sequence::create(moveBy, rotateBy, nullptr); ``` 这里创建了一个移动和旋转的动作序列,先是2秒内向右移动100像素,再在2秒内旋转360度。要让精灵执行动作,可以使用精灵的runAction()方法,例如: ``` sprite->runAction(sequence); ``` 7. Cocos2d-x中的碰撞检测(Collision Detection)是什么?如何实现? 碰撞检测是指在游戏中检测两个元素是否重叠或相交的技术。Cocos2d-x提供了一些碰撞检测相关的类,例如PhysicsBody、PhysicsContact等。要实现碰撞检测,需要为需要检测碰撞的元素添加PhysicsBody组件,例如: ``` auto physicsBody = PhysicsBody::createCircle(sprite->getContentSize().width / 2); sprite->addComponent(physicsBody); ``` 这里为精灵添加了一个圆形的物理体。然后可以通过设置碰撞回调函数来检测碰撞事件,例如: ``` auto contactListener = EventListenerPhysicsContact::create(); contactListener->onContactBegin = [](PhysicsContact& contact) { // 处理碰撞事件 return true; }; ``` 这里创建了一个碰撞监听器,并设置了碰撞开始回调函数。当两个元素发生碰撞时,就会触发这个回调函数,可以在里面进行相应的处理。最后将监听器添加到场景中即可。 以上是一些常见的Cocos面试,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值