cocos setPosition 之坑

对相对布局Panel里的UI控件的setPosition()时,在该panel创建的前一帧对ui set是无效的,等到该panel创建完之后,set可有效,如果要在创建之前改变位置,方法如下:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值