【amazing cocos2d-x 3.0之十】使用touch事件来拖拽精灵

本文详细介绍了如何在cocos2d-x 3.0中利用touch事件实现精灵的拖拽功能。首先加载背景和图片,接着通过touch事件选取精灵并应用动画,最后实现精灵和背景层基于touch事件的移动。通过这种方法,用户可以与游戏中的元素进行互动。
摘要由CSDN通过智能技术生成

本篇文章,你将学习到如下知识点:

(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)设置为ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值