cocos2dx 基础概念

  • A+
所属分类:cocos2dx

cocos2dx 基础概念

创建精灵的三种方式:

  1. 直接创建
    auto sprite = Sprite::create("HelloWorld.png");
    sprite->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT);
    this->addChild(sprite, 0);
    
  2. 使用纹理来创建精灵
    auto sprite1 = Sprite::createWithTexture(Director::getInstance()->getTextureCache()->addImage("HelloWorld.png"));
    sprite1->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
    this->addChild(sprite1, 0);
    
  3. 使用精灵帧来创建精灵
    SpriteFrameCache::getInstance()->addSpriteFramesWithFile("ghosts.plist");
    auto sprite2 = Sprite::createWithSpriteFrameName("child1.gif");
    this->addChild(sprite2, 0);
    

在Cocos2dx中实现精灵显示的基本过程如下:

  1. 基本流程
    //创建Scene
    auto scene = Scene::create();
    //创建层
    auto layer = HelloWorld::create();
    //把层加入场景中
    scene->addChild(layer);
    //创建一个精灵
    auto sprite = Sprite::create("HelloWorld.png");
    //把精灵加到层里
    layer->addChild(sprite, 0);
    

三种调度器

每当Node不再可见或已从场景中移除时,调度器会停止

  1. 默认调度器schedulerUpdate()
    void update(float dt) override;
    this->scheduleUpdate();
    this->unscheduleUpdate();
    
  2. 自定义调度器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));
    
  3. 单次调度器scheduleOnce(SEL_SCHEDULE selector, float delay)
    void updateOnce(float dt);
    this->scheduleOnce(schedule_selector(TestScene1::updateOnce), 0.1f);
    this->unschedule(schedule_selector(TestScene1::updateOnce));
    
百分购

发表评论

您必须才能发表评论!