首先建立一个新的类,把它称作ImageScene,放在Classes之中
然后这里贴一下代码:
头文件:
ImageScene.h
#include <iostream>
#include <cocos2d.h>
USING_NS_CC;
class ImageScene :public Layer{
public:
virtual bool init();
static Scene* createScene();
CREATE_FUNC(ImageScene);
};
CPP:
#include "ImageScene.h"
Scene* ImageScene::createScene(){
Scene* scene = Scene::create();
ImageScene * layer = ImageScene::create();
scene -> addChild(layer);
return scene;
}
bool ImageScene::init(){
Size size = Director::getInstance()->getVisibleSize();
Sprite * s = Sprite::create("0840.png"); //此处()里的为切换后的图片场景文件
s->setPosition(size.width / 2, size.height / 2); //此处设置位置
addChild(s);
return true;
}
然后呢,在HelloWorldScene.cpp中,老样子找到位置,详见第四节,该删除的删除掉。
然后添加代码段,这里展示添加完全的。
先介绍如何切换图片~轻轻点击就可以切换
bool HelloWorld::init()
{
if (!Layer::init())
{
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
Sprite * label = Sprite::create("0842.png"); //设置前一个场景的图片,()里为图片文件名
label->setPosition(visibleSize.width/2,visibleSize.height/2); //设置位置
addChild(label); //加入图层
label->setPosition(visibleSize.width / 2, visibleSize.height / 2);
EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = [label](Touch *t, Event *e){
if (label->getBoundingBox().containsPoint(t->getLocation())){
Director::getInstance()->replaceScene(ImageScene::createScene());
}
return false;
};
Director::getInstance()->getEventDispatcher()->
addEventListenerWithSceneGraphPriority(listener, label);
return true;
}
这里介绍如何由文字到图片切换
bool HelloWorld::init()
{
if (!Layer::init())
{
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
LabelTTF *label = LabelTTF::create("show the next scene", "Andalus", 20); //设置显示文字,第二个为字体,随意选,第三个为字号。
addChild(label); //把这个加入图层
label->setPosition(visibleSize.width / 2, visibleSize.height / 2);
EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = [label](Touch *t, Event *e){
if (label->getBoundingBox().containsPoint(t->getLocation())){
Director::getInstance()->replaceScene(ImageScene::createScene());
}
return false;
};
Director::getInstance()->getEventDispatcher()->
addEventListenerWithSceneGraphPriority(listener, label);
return true;
}
然后,至于其他的,比如文字转文字,图片转文字,稍微修改一下就可以了~
原文:http://www.cnblogs.com/aprillie/p/5022270.html