#include “MainGame.h”
MainGame::MainGame(void)
{
}
MainGame::~MainGame(void)
{
Director::getInstance()->getEventDispatcher()->removeEventListener(m_listener);
Director::getInstance()->getEventDispatcher()->removeEventListener(m_touchListener);
}
Scene * MainGame::createScene()
{
auto scene = Scene::create();
auto layer = MainGame::create();
scene->addChild(layer);
return scene;
}
bool MainGame::init()
{
if(!Layer::init())
return false;
m_size = Director::getInstance()->getWinSize();
//添加地图层
auto background = Background::create();
this->addChild(background);
//添加android返回键的监听器
m_listener = EventListenerKeyboard::create();
m_listener->onKeyReleased = CC_CALLBACK_2(MainGame::onKeyReleased,this);
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(m_listener,this);
//add Car
//加载缓存文件
SpriteFrameCache::getInstance()->addSpriteFramesWithFile(“Player.plist”);
m_player = Player::create();
m_player->setPosition(Vec2(m_size.width/2, m_size.height*0.15));
this->addChild(m_player);
/auto MyFone = Sprite::create(“MyFone.png”);
MyFone->setTag(110);
MyFone->setPosition(Vec2(320, 80));
this->addChild(MyFone);/
auto turnRight = Sprite::create(“turnRight.png”);
turnRight->setTag(200);
turnRight->setPosition(Director::getInstance()->convertToGL(Vec2(600, 800)));
this->addChild(turnRight);
auto turnLeft = Sprite::create(“turnLeft.png”);
turnLeft->setTag(300);
turnLeft->setPosition(Director::getInstance()->convertToGL(Vec2(40, 800)));
this->addChild(turnLeft);
m_touchListener = EventListenerTouchOneByOne::create();
m_touchListener->onTouchBegan = CC_CALLBACK_2(MainGame::onTouchBegan,this);
m_touchListener->onTouchMoved = CC_CALLBACK_2(MainGame::onTouchMoved,this);
m_touchListener->setSwallowTouches(true);
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(m_touchListener,this);
return true;
}
void MainGame::onKeyReleased(EventKeyboard::KeyCode keyCode,Event * pEvent)
{
//切换到开始游戏场景
Director::getInstance()->replaceScene(StartGame::createScene());
}
bool MainGame::onTouchBegan(Touch * touch,Event * pEvent)
{
auto point = touch->getLocation();
auto rect = m_player->getBoundingBox();
if(rect.containsPoint(point))
return true;
return false;
}
void MainGame::onTouchMoved(Touch * touch,Event * pEvent)
{
auto addPoint = touch->getLocation()-touch->getPreviousLocation();
m_player->setPosition(m_player->getPosition()+addPoint);
auto size = m_player->getContentSize();
if(m_player->getPositionX() < size.width/2)
{
m_player->setPositionX(size.width/2);
}
else if(m_player->getPositionX() > m_size.width-size.width/2)
{
m_player->setPositionX(m_size.width-size.width/2);
}
if(m_player->getPositionY() < size.height/2)
{
m_player->setPositionY(size.height/2);
}
else if(m_player->getPositionY() > m_size.height-size.height/2)
{
m_player->setPositionY(m_size.height-size.height/2);
}
}
#ifndef MAIN_GAMES_H
#define MAIN_GAMES_H
#include “cocos2d.h”
//包含地图层
#include “Background.h”
//开始游戏场景
#include “StartGame.h”
#include “Player.h”
USING_NS_CC;
//游戏主场景
class MainGame : public Layer
{
public:
MainGame(void);
~MainGame(void);
public:
static Scene * createScene();
bool init();
CREATE_FUNC(MainGame);
public:
//对返回键的监听函数
void onKeyReleased(EventKeyboard::KeyCode keyCode,Event * pEvent);
//触摸控制的监听函数
bool onTouchBegan(Touch* touch, Event* pEvent);//点击开始事件响应函数
void onTouchMoved(Touch *touch, Event *pEvent);//点击移动事件响应函数
private:
EventListenerKeyboard * m_listener;
EventListenerTouchOneByOne * m_touchListener;
Size m_size;
Player * m_player;
};
#endif
求大神帮忙
代码高亮一下啊 好难看啊