cocos2d-x3.0学习之场景切换代码

cocos2d-x3.0学习之场景切换代码,第1张

概述HelloWorldScene.h #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 r

HelloWorldScene.h

#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" image,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",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

}

总结

以上是内存溢出为你收集整理的cocos2d-x3.0学习之场景切换代码全部内容,希望文章能够帮你解决cocos2d-x3.0学习之场景切换代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1018877.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存