Skip to content

Commit

Permalink
endlayer
Browse files Browse the repository at this point in the history
结束界面
  • Loading branch information
dawnfan committed Aug 7, 2014
1 parent ea8fea0 commit 0859a79
Show file tree
Hide file tree
Showing 3 changed files with 144 additions and 3 deletions.
101 changes: 101 additions & 0 deletions EndLayer.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
#include "EndLayer.h"
#include "GameLayer.h"
#include "SimpleAudioEngine.h"
#include "HelloWorldScene.h"
USING_NS_CC;


Scene *EndLayer::createScene()
{
auto scene = Scene::create();
auto layer = EndLayer::create();
scene->addChild(layer);
return scene;
}

bool EndLayer::init()
{
if ( !Layer::init() )
{
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Point origin = Director::getInstance()->getVisibleOrigin();
//背景初始化
end_bg= Sprite::create("main_game/bg_success.png");
end_bg->setPosition(Point(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
this->addChild(end_bg,0);
//步数初始化
end_step = LabelTTF::create("step", "fonts/fzmwt.ttf", 70);
end_step->setPosition(ccp(visibleSize.width/2+30,visibleSize.height/2+130));
end_step->setColor(Color3B::RED);

//返回主界面按键
auto closeItem = MenuItemImage::create(
"main_game/home1.png",
"main_game/home2.png",
CC_CALLBACK_1(EndLayer::menuCloseCallback, this));

closeItem->setPosition(ccp(-110,-200));

//重新开始按钮
auto end_retry = MenuItemImage::create(
"main_game/retry1.png",
"main_game/retry2.png",
CC_CALLBACK_1(EndLayer::Retry, this));
end_retry->setPosition(ccp(80,-135));

//分享按钮
auto end_share = MenuItemImage::create(
"main_game/share1.png",
"main_game/share2.png",
CC_CALLBACK_1(EndLayer::Share,this));
end_share->setPosition(ccp(-30,-155));

// create menu, it's an autorelease object
auto menu = Menu::create(closeItem,end_retry,end_share,NULL);
this->addChild(menu,1);

//响应键盘消息
auto keyListener = EventListenerKeyboard::create();
keyListener->onKeyReleased = CC_CALLBACK_2(EndLayer::onKeyReleased, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(keyListener, this);

return true;
}

void EndLayer::Retry(Ref* pSender)
{
auto newScene = GameLayer::createScene();
CCDirector::sharedDirector()->replaceScene(newScene);
}

void EndLayer::Share(Ref* pSender)
{
//待修改——分享
auto newScene = GameLayer::createScene();
CCDirector::sharedDirector()->replaceScene(newScene);
}

void EndLayer::menuCloseCallback(Ref* pSender)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)
MessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");
return;
#endif
auto newScene = HelloWorld::createScene();
CCDirector::sharedDirector()->replaceScene(CCTransitionCrossFade::create(0.3,newScene));
//Director::getInstance()->end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit(0);
#endif
}

//响应安卓返回键
void EndLayer::onKeyReleased(EventKeyboard::KeyCode keycode,Event* event)
{
if(keycode == EventKeyboard::KeyCode::KEY_BACKSPACE)
{
Director::sharedDirector()->replaceScene(CCTransitionCrossFade::create(0.3,HelloWorld::createScene()));
}
}
27 changes: 27 additions & 0 deletions EndLayer.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#ifndef __EndLayer_H__
#define __EndLayer_H__

#include "cocos2d.h"

USING_NS_CC;

class EndLayer : public Layer
{
public:
static Scene* createScene();
CREATE_FUNC(EndLayer);
bool m_isRun;
int m_step;
//分享按键回调函数
void Share(cocos2d::Ref* pSender);
//重新开始按键回调
void Retry(cocos2d::Ref* pSender);
//返回主界面回调
void menuCloseCallback(cocos2d::Ref* pSender);
virtual void onKeyReleased(EventKeyboard::KeyCode keycode,Event* event)override;
virtual bool init();
LabelTTF* end_step;
Sprite* end_bg;
};

#endif /* defined(__EndLayer_H__) */
19 changes: 16 additions & 3 deletions GameLayer.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include "GameLayer.h"
#include "EndLayer.h"

#define MATRIX_WIDTH (9)
#define MATRIX_HEIGHT (9)
Expand Down Expand Up @@ -288,13 +289,25 @@ void GameLayer::moveRaindrop()
m_raindrop->setCol(next->getCol());
m_raindrop->setRow(next->getRow());
if(m_isRun){
Director::getInstance()->end();
//雨滴逃脱
//更换到endlayer
Scene* newScene = EndLayer::createScene();
EndLayer* layer = EndLayer::create();
//更换显示背景
layer->end_bg->setTexture(TextureCache::sharedTextureCache()->addImage("main_game/bg_fail.png"));
newScene->addChild(layer);
Director::sharedDirector()->replaceScene(newScene);
}
}else{
//雨滴被围住了
//更换到endlayer
Director::getInstance()->end();
//CCDirector::sharedDirector()->replaceScene(EndLayer::createScene());
Scene* newScene = EndLayer::createScene();
EndLayer* layer = EndLayer::create();
//显示步数,背景不需要更换
layer->end_step->setString(CCString::createWithFormat("%d",m_times)->getCString());
layer->addChild(layer->end_step,1);
newScene->addChild(layer);
Director::sharedDirector()->replaceScene(newScene);
}

}
Expand Down

0 comments on commit 0859a79

Please sign in to comment.