cocos2d-x 3.0开发实例:点击屏幕,换一幅图片

cocos2d-x 3.0开发实例:点击屏幕,换一幅图片

转载地址:http://user.qzone.qq.com/14280784/2

第一步:新建一个cocos2d-x 3.0的工程

步:在网上下载5幅图片,用photoshop做成一样大,并都用jpg方式存盘,把名字有意的序列化为1.jpg,2.jpg,3.jpg,4.jpg,5.jpg,这样序列化的目的是为了用程序进行批量控制 。

    步:将这5个文件全部拷贝到工程的资源文件夹Resource 中.

 

第四步:HelloWorld的头文件中加入

virtual void onEnter(); 

        bool onTouchBegan(cocos2d::Touch *touch,cocos2d::Event *pEvent);

        void onTouchEnded(cocos2d::Touch *touch,cocos2d::Event *pEvent);

目的是为了写触屏事件。

第五步:在HelloWorld的实现文件中,加入如下代码:

 

void HelloWorld::onEnter()  /*进入本类时做什么事*/

{

        Layer::onEnter();//初始化基类的onEnter()

        auto dispatcher = Director::getInstance()->getEventDispatcher();//导演获取监听分发

        auto listener = EventListenerTouchOneByOne::create();//建立一个单触点的监听器

        listener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan,this);//监听按下事件,如果为真才可以有后面的事件

        listener->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded, this);//绑定抬键事件

        dispatcher->addEventListenerWithSceneGraphPriority(listener, this);//分发事件

}

 

/*只有onTouchBegan事件返回为真,才有可能判断其它的触屏事件*/

bool HelloWorld::onTouchBegan(cocos2d::Touch *touch,cocos2d::Event *pEvent)

{

        return true;

}

/*触屏抬起的事件*/

void HelloWorld::onTouchEnded(Touch *touchEvent *unused_event)

{

        this->removeChild(sprite);//首先清除己经显示的图片

        ++i;  //点击一下,i的值加1,目的是为了换图片

        if(i>5) i=1;    //因为只有5幅图片,所以,大于5,就从头来

        char x[50];    //目的是为了将整数转换为字符串

        sprintf_s(x,"%d.jpg",i);    //转整数为字符串

        CCLOG(x);   //调式用的,成功后,可以将此句删除

        auto sprite = Sprite::create(x);    //x字符串为准,建精灵

        sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));  //实位屏幕中央

        this->addChild(sprite, 0);    //显示图片

}

 

第六步:将以下几个变量全部弄成全局变量

        int i;

        cocos2d::Size visibleSize;

        cocos2d::Vec2 origin;

cocos2d::Sprite *sprite;

 

第七步:编译

附类的声明代码:

#ifndef __HELLOWORLD_SCENE_H__

#define __HELLOWORLD_SCENE_H__

#include "cocos2d.h"

class HelloWorld : public cocos2d::Layer

{

public:

        HelloWorld();

    static cocos2d::Scene* createScene();

    virtual bool init(); 

    void menuCloseCallback(cocos2d::Ref* pSender);

    CREATE_FUNC(HelloWorld);

        bool onTouchBegan(cocos2d::Touch *touch,cocos2d::Event *pEvent);

        void onTouchEnded(cocos2d::Touch *touch,cocos2d::Event *pEvent);

        virtual void onEnter();  /*正常监听的写法*/

        int i;

        cocos2d::Size visibleSize;

        cocos2d::Vec2 origin;

        cocos2d::Sprite *sprite;

};

 

#endif // __HELLOWORLD_SCENE_H__

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值