- A+
所属分类:cocos2dx
cocos2dx 基础概念
创建精灵的三种方式:
- 直接创建
auto sprite = Sprite::create("HelloWorld.png"); sprite->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); this->addChild(sprite, 0);
- 使用纹理来创建精灵
auto sprite1 = Sprite::createWithTexture(Director::getInstance()->getTextureCache()->addImage("HelloWorld.png")); sprite1->setAnchorPoint(Vec2::ANCHOR_MIDDLE); this->addChild(sprite1, 0);
- 使用精灵帧来创建精灵
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("ghosts.plist"); auto sprite2 = Sprite::createWithSpriteFrameName("child1.gif"); this->addChild(sprite2, 0);
在Cocos2dx中实现精灵显示的基本过程如下:
- 基本流程
//创建Scene auto scene = Scene::create(); //创建层 auto layer = HelloWorld::create(); //把层加入场景中 scene->addChild(layer); //创建一个精灵 auto sprite = Sprite::create("HelloWorld.png"); //把精灵加到层里 layer->addChild(sprite, 0);
三种调度器
每当Node不再可见或已从场景中移除时,调度器会停止
- 默认调度器schedulerUpdate()
void update(float dt) override; this->scheduleUpdate(); this->unscheduleUpdate();
- 自定义调度器schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay)
由于引擎的调度机制,自定义时间间隔必须大于两帧的间隔,否则两帧内的多次调用会被合并成一次调用。所以自定义时间间隔应在0.1秒以上。
void updateCustom(float dt); this->schedule(schedule_selector(TestScene1::updateCustom), 0.2f, kRepeatForever, 0); this->unschedule(schedule_selector(TestScene1::updateCustom));
- 单次调度器scheduleOnce(SEL_SCHEDULE selector, float delay)
void updateOnce(float dt); this->scheduleOnce(schedule_selector(TestScene1::updateOnce), 0.1f); this->unschedule(schedule_selector(TestScene1::updateOnce));