cocos2dx 添加一个新建层的方法。
来源:互联网 发布:软件自带音效 编辑:程序博客网 时间:2024/06/05 17:27
以Helloworld修改为例。
1. 库文件添加新层类 继承自CCLayer
class NewLayer1 : public cocos2d::CCLayer
{
public:
virtual bool init();
CREATE_FUNC(NewLayer1);
};
2. 场景中添加NewLayer::create()接口
CCScene* HelloWorld::scene()
{
// 'scene' is an autorelease object
CCScene *scene = CCScene::create();
// 'layer' is an autorelease object
HelloWorld *layer = HelloWorld::create();
// masai NewLayer
NewLayer1 *NewLayer_1 = NewLayer1::create();
// add layer as a child to scene
scene->addChild(layer);
scene->addChild(NewLayer_1);
// return the scene
return scene;
}
3. NewLayer初始化
bool NewLayer1::init()
{
CCSprite* NLayer = CCSprite::create("NLayer.png");
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
NLayer->setPosition(ccp(visibleSize.width/2, visibleSize.height/2));
//NLayer->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
addChild(NLayer);
return true;
}
==================
全部代码示例:
HelloWorldScene.h
#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__
#include "cocos2d.h"
class HelloWorld : public cocos2d::CCLayer
{
public:
// Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
virtual bool init();
// there's no 'id' in cpp, so we recommend returning the class instance pointer
static cocos2d::CCScene* scene();
// a selector callback
void menuCloseCallback(CCObject* pSender);
// implement the "static node()" method manually
CREATE_FUNC(HelloWorld);
};
class NewLayer1 : public cocos2d::CCLayer
{
public:
virtual bool init();
CREATE_FUNC(NewLayer1);
};
class NewLayer2 : public cocos2d::CCLayer
{
public:
virtual bool init();
CREATE_FUNC(NewLayer2);
};
#endif // __HELLOWORLD_SCENE_H__
=========
HelloWorldScene.cpp
#include "HelloWorldScene.h"
USING_NS_CC;
CCScene* HelloWorld::scene()
{
// 'scene' is an autorelease object
CCScene *scene = CCScene::create();
// 'layer' is an autorelease object
HelloWorld *layer = HelloWorld::create();
// masai NewLayer
NewLayer1 *NewLayer_1 = NewLayer1::create();
// add layer as a child to scene
scene->addChild(layer);
scene->addChild(NewLayer_1);
// return the scene
return scene;
}
// on "init" you need to initialize your instance
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
}
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
CCPoint origin = CCDirector::sharedDirector()->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
CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
this,
menu_selector(HelloWorld::menuCloseCallback));
pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 ,
origin.y + pCloseItem->getContentSize().height/2));
// create menu, it's an autorelease object
CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
pMenu->setPosition(CCPointZero);
this->addChild(pMenu, 1);
/////////////////////////////
// 3. add your codes below...
// add a label shows "Hello World"
// create and initialize a label
CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Arial", 24);
// position the label on the center of the screen
pLabel->setPosition(ccp(origin.x + visibleSize.width/2,
origin.y + visibleSize.height - pLabel->getContentSize().height));
// add the label as a child to this layer
this->addChild(pLabel, 1);
// add "HelloWorld" splash screen"
CCSprite* pSprite = CCSprite::create("HelloWorld.png");
// position the sprite on the center of the screen
pSprite->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
// add the sprite as a child to this layer
this->addChild(pSprite, 0);
return true;
}
bool NewLayer1::init()
{
CCSprite* NLayer = CCSprite::create("NLayer.png");
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
NLayer->setPosition(ccp(visibleSize.width/2, visibleSize.height/2));
//NLayer->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
addChild(NLayer);
return true;
}
void HelloWorld::menuCloseCallback(CCObject* pSender)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
CCMessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");
#else
CCDirector::sharedDirector()->end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit(0);
#endif
#endif
}
- cocos2dx 添加一个新建层的方法。
- 新建一个cocos2dx-3.3项目
- cocos2dx之新建图层、新建场景实例
- caffe: 新建一个loss层
- ubuntu14.04 新建一个cocos2dx项目
- Sharepoint2013 列表的NewForm 页面添加一个 保存新建 按钮
- 在当前页面新建一个div浮动层显示选中的图片(div浮动层)
- cocos2dx一个场景添加多个层
- RAC添加新节点绕过dbca新建实例的方法
- cocos2dx添加文本的三种方法及适用情况
- innerHTML的运用:新建层
- 添加找回鼠标右键新建菜单里的新建office2003/2007/2010文档的简洁方法
- Cocos2dx 3.x 新建项目方法及编译很慢的解决方案
- Cocos2dx 关于层的屏蔽
- cocos2dx阴影层的实现
- ARX 创建组实例(新建组,选择实体添加到组,输入层,修改组所在的层)
- 在Android studio的一个新建的Activity中添加Toolbar以及相应的功能添加
- 为clojure的jar包新建一个.bat批处理文件方法
- Linux 文本 查找命令小结之grep
- 腾讯QQ企业邮箱POP3/SMTP设置
- 杭电 1392 Surround the Trees
- MFC六大核心机制之二:运行时类型识别(RTTI)
- POJ 3276(第二篇)开关问题
- cocos2dx 添加一个新建层的方法。
- Android单元测试
- 黑马程序员-java面试题-银行业务调度系统
- SCN号概述
- D:\VC98\CRT\SRC\DBGHEAP.C
- DSBase的最初的初衷
- 编程命名基本方法
- Setting Up AUTOTRACE in SQL*Plus
- 第七题(俩个链表是否相交)