cocos2d-x3.0学习之场景切换代码-创新互联

HelloWorldScene.h

创新互联从2013年创立,先为武陟等服务建站,武陟等地企业,进行企业商务咨询服务。为武陟企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

#ifndef __HELLOWORLD_SCENE_H__

#define __HELLOWORLD_SCENE_H__

#include "cocos2d.h"

class HelloWorld : public cocos2d::Layer

{

public:

  // there's no 'id' in cpp, so we recommend returning the class instance pointer

  static cocos2d::Scene* createScene();

  // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone

  virtual bool init();

  // a selector callback

  void menuCloseCallback(cocos2d::Ref* pSender);

  // implement the "static create()" method manually

  CREATE_FUNC(HelloWorld);

void HelloWorld::menujumpCallback(cocos2d::Ref* pSender);

cocos2d::Scene*createfirst();

void HelloWorld::menureturn(cocos2d::Ref*pSender);

};

#endif // __HELLOWORLD_SCENE_H__

========================================================================================

HelloWorldScene.cpp

#include "HelloWorldScene.h"

USING_NS_CC;

Scene* HelloWorld::createScene()

{

  // 'scene' is an autorelease object

  auto scene = Scene::create();

  // 'layer' is an autorelease object

  auto layer = HelloWorld::create();

  // add layer as a child to scene

  scene->addChild(layer);

  // return the scene

  return scene;

}

void HelloWorld::menureturn(cocos2d::Ref*pSender)

{

auto ss=HelloWorld::createScene();

auto ts=TransitionZoomFlipY::create(1.0f,ss);

Director::getInstance()->replaceScene(ts);

}

Scene*HelloWorld::createfirst()

{

auto s=Scene::create();

auto layer=LayerColor::create(Color4B(100,10,128,128));

auto sprite=Sprite::create("bg.png");

layer->addChild(sprite);

auto l=LabelTTF::create("Welcome to play game","Arial",25);

auto d=Director::sharedDirector()->getWinSize();

auto width=d.width/2;

auto height=d.height/2;

l->setPosition(Point(width,height));

layer->addChild(l);

//create menu

auto returnmenu=MenuItemImage::create("leaf.png","icon.png",CC_CALLBACK_1(HelloWorld::menureturn , this));

returnmenu->setPosition(Point(400,400));

auto mm=Menu::create(returnmenu,NULL);

mm->setPosition(Point(400,400));

s->addChild(layer);

return s;

}

// on "init" you need to initialize your instance

bool HelloWorld::init()

{

  //////////////////////////////

  // 1. super init first

  if ( !Layer::init() )

  {

    return false;

  }

  Size visibleSize = Director::getInstance()->getVisibleSize();

  Vec2 origin = Director::getInstance()->getVisibleOrigin();

  /////////////////////////////

  // 2. add a menu item with "X" p_w_picpath, which is clicked to quit the program

  //   you may modify it.

  // add a "close" icon to exit the progress. it's an autorelease object

  auto closeItem = MenuItemImage::create(

                      "CloseNormal.png",

                      "CloseSelected.png",

                      CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));

closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 ,

                origin.y + closeItem->getContentSize().height/2));

  // create menu, it's an autorelease object

  auto menu = Menu::create(closeItem, NULL);

  menu->setPosition(Vec2::ZERO);

auto click=MenuItemImage::create("hagar1.png","hagar2.png",  CC_CALLBACK_1(HelloWorld::menujumpCallback , this));

click->setPosition(Point(100,100));

auto m=Menu::create(click,NULL);

m->setPosition(Vec2::ONE);

this->addChild(menu,1);

this->addChild(m,1);

  auto label = LabelTTF::create("cocos2d-x game", "Arial", 30);

  // position the label on the center of the screen

  label->setPosition(Vec2(origin.x + visibleSize.width/2,

              origin.y + visibleSize.height - label->getContentSize().height));

  // add the label as a child to this layer

  this->addChild(label, 1);

  // add "HelloWorld" splash screen"

  auto sprite = Sprite::create("HelloWorld.png");

  // position the sprite on the center of the screen

  sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));

  // add the sprite as a child to this layer

  this->addChild(sprite, 0);

  return true;

}

void HelloWorld::menujumpCallback(Ref* pSender)

{

auto scene=HelloWorld::createfirst();

auto s2=TransitionZoomFlipY::create(1.0f,scene);

Director::getInstance()->replaceScene(s2);

}

//导演类的结束方法

void HelloWorld::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

  Director::getInstance()->end();

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

  exit(0);

#endif

}

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:cocos2d-x3.0学习之场景切换代码-创新互联
当前网址:http://azwzsj.com/article/cdgdds.html