昨天没有写博客,今天将内容一并补上。API以及C++类的运用有待进一步清晰。
我是一个有阅读障碍的人,能够读的出来的东西我就很容易理解。但API的代码没法读。对于还不理解的东西,用的时候会不踏实。总感觉像借来的,随时会还回去。
屏幕滚动:
这一点跟之前做flabby bird游戏时,底板移动的逻辑是一样的,举例说明:
首先要获取到场景的尺寸和坐标
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
假设场景的锚点在左下角(0,0),背景图片的锚点在正中间(0.5,0.5)。
那么第一张图片的初始位置就是(场景宽度/2,场景高度/2)
sprite1->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2));
那么第二张图片的初始位置就是(场景宽度/2,图片1的高度+图片2高度/2)
sprite2->setPosition(Vec2(visibleSize.width / 2, sprite1->getContentSize().height + sprite2->getContentSize().height/2));
图片需要向下偏移,偏移的速度需要用到一个计时器,这里有一个API:
/*添加背景计时器,计时器有一个回调方法,后面的数字代表频率,单位为秒,数字类型为float型*/
schedule(CC_SCHEDULE_SELECTOR(GameScene::autoremove), 0.002f);
/*在计时器的回调方法中实现屏幕的滚动*/
void GameScene::autoremove(float dt)
{
Size visibleSize = Director::getInstance()->getVisibleSize();
auto b1 = this->getChildByTag(1); //这是按标签获取子节点
auto b2 = this->getChildByTag(2);
b1->setPositionY(b1->getPositionY(