细节均在代码中注释,如下
bool HelloWorld::init()
{
//
// 1. super init first
if ( !CCLayer::init() )
{
return false;
}
Size screensize = Director::getInstance()->getVisibleSize();
Point orignsize = Director::getInstance()->getVisibleOrigin();//区域的初始坐标,确保结点在不同分辨率下一致
img1 = Sprite::create("img1.jpg");//记得在.h里定义
img1->setContentSize(screensize);//与屏幕适应
img1->setAnchorPoint(Point::ZERO);//瞄点设为左下角
img1->setPosition(orignsize);//精灵初始坐标
this->addChild(img1);
img2 = Sprite::create("img2.jpg");
img2->setContentSize(screensize);
img2->setAnchorPoint(Point::ZERO);
img2->setPosition(Vec2(orignsize.x, orignsize.y + screensize.height));//在精灵1上面
this->addChild(img2);
this->schedule(schedule_selector(HelloWorld::imgrotate), 0.005);//第二个参数为触发时间间隔(小于0.01)
//第三个参数repeat为触发一次事件后还会触发的次数,默认值为kRepeatForever,表示无限触发次数
//第四个参数delay表示第一次触发之前的延时
return true;
}
void HelloWorld::imgrotate(float a)
{
Size screesize = Director::getInstance()->getVisibleSize();
Point imgorign = Director::getInstance()->getVisibleOrigin();
img1->setPositionY(img1->getPositionY() - 0.3);//-0.3使精灵之间衔接自然
img2->setPositionY(img1->getPositionY() + screesize.height);//精灵2与精灵1始终保持1个屏幕的距离
if (img2->getPositionY() <= 0)
{
img1->setPositionY(0);//精灵2到底后,重置精灵1
}
}