本篇文章,你将学习到如下知识点:
(1)如何使用touch事件拖拽精灵的基本方法
(2)如何通过touch事件来滚动视图本身
(3)如何方便地计算坐标
1. 加载背景和图片
新建一个工程,名为“DragSprite”。打开HelloWorldScene.h,增加三个成员变量:
public:
cocos2d::Sprite* background; //背景图片
cocos2d::Sprite* selSprite; //当前选中的精灵
cocos2d::Vector<cocos2d::Sprite*> movableSprites; //一个在处理touch事件时需要移动的精灵的数组
打开HelloWorldScene.ccp,把init方法的代码替换成如下:
bool HelloWorld::init()
{
if ( !Layer::init() )
{
return false;
}
Size winSize = Director::getInstance()->getWinSize();
Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGB565);
background = Sprite::create("blue-shooting-stars.png");
background->setAnchorPoint(Point(0, 0));
this->addChild(background);
Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::DEFAULT);
std::string images[] = {"bird.png", "cat.png", "dog.png", "turtle.png"};
int images_length = 4;
for(int i =0; i < images_length; ++i)
{
std::string image = images[i];
Sprite *sprite = Sprite::create(image);
float offsetFraction = ((float)(i+1))/(images_length+1);
sprite->setPosition(winSize.width*offsetFraction, winSize.height/2);
this->addChild(sprite);
movableSprites.pushBack(sprite);
}
selSprite = NULL;
return true;
}
这段代码由两部分组成:
(1)加载背景
代码的第一部分加载了一张背景图片(blue-shooting-stars.png)。要注意的是,这里把图片的锚点(anchor point)设置为ÿ