cocos2dx node layer怎么把摄像头加在layer上

主题 : cocos2dx中,layer的响应问题
级别: 新手上路
UID: 278929
可可豆: 122 CB
威望: 117 点
在线时间: 37(时)
发自: Web Page
cocos2dx中,layer的响应问题&&&
参看如下代码:class CLayer1: public CCLayer{public:    CREATE_FUNC(CCallMainLayer, create);    CLayer1()    {        cocos2d::gui::TouchGroup* pUILayer1 = cocos2d::gui::TouchGroup::create();        addChild(pUILayer1);        cocos2d::gui::Layout* pLayout1 = dynamic_cast&cocos2d::gui::Layout*&(GUIReader::shareReader()-&widgetFromJsonFile(&json/layer1.json&));        pUILayer1-&addWidget(pLayout1);        addChild(pUILayer1);    };};class CLayer2: public CCLayer{public:    CREATE_FUNC(CCallMainLayer, create);    CLayer2()    {        cocos2d::gui::TouchGroup* pUILayer2 = cocos2d::gui::TouchGroup::create();        addChild(pUILayer2);        cocos2d::gui::Layout* pLayout2 = dynamic_cast&cocos2d::gui::Layout*&(GUIReader::shareReader()-&widgetFromJsonFile(&json/layer2.json&));        pUILayer2-&addWidget(pLayout2);        addChild(pUILayer2);    };};class CLayer3: public CCLayer{    CLayer3()    {        CCNode* pLayer1 = CLayer1::create();        CCNode* pLayer2 = CLayer2::create();        this-&addChild(pLayer1);        this-&addChild(pLayer2);    }}在我用CLayer3生产的页面中, 只能响应json/layer1.json中的button.  而在json/layer2.json的button不响应??原因何在?
级别: 风云使者
UID: 183396
发帖: 4881
可可豆: 5742 CB
威望: 5905 点
在线时间: 1806(时)
发自: Web Page
楼主,&&&&addChild(pUILayer2); 你的层都是加了两次么?另外,是否有示例截图,这两个层的按钮是同一个位置么?
级别: 新手上路
可可豆: 54 CB
威望: 54 点
在线时间: 81(时)
发自: Web Page
楼主你好,按照你的代码测试过了,没有问题。代码如下:CLayer1::CLayer1(){&&&&}CLayer1::~CLayer1(){&&&&}CLayer1* CLayer1::create(){&&&&CLayer1* pRet = new CLayer1();&&&&if (pRet && pRet-&init())&&&&{&&&&&&&&pRet-&autorelease();&&&&&&&&return pR&&&&}&&&&else&&&&{&&&&&&&&CC_SAFE_DELETE(pRet);&&&&&&&&return NULL;&&&&}}bool CLayer1::init(){&&&&if (CCLayer::init())&&&&{&&&&&&&&cocos2d::gui::TouchGroup* pUILayer1 = cocos2d::gui::TouchGroup::create();&&&&&&&&addChild(pUILayer1);&&&&&&&&cocos2d::gui::Layout* pLayout1 = dynamic_cast&cocos2d::gui::Layout*&(GUIReader::shareReader()-&widgetFromJsonFile(&cocosgui/UITest/UITest.json&));&&&&&&&&pUILayer1-&addWidget(pLayout1);&&&&&&&&&&&&&&&&Button* left_button = static_cast&Button*&(UIHelper::seekWidgetByName(pLayout1, &left_Button&));&&&&&&&&left_button-&addTouchEventListener(this, toucheventselector(CLayer1::callback));&&&&&&&&&&&&&&&&&&&&}&&&&}void CLayer1::callback(CCObject *sender, TouchEventType type){&&&&CCLOG(&clayer1 button&);}CLayer2::CLayer2(){&&&&}CLayer2::~CLayer2(){&&&&}CLayer2* CLayer2::create(){&&&&CLayer2* pRet = new CLayer2();&&&&if (pRet && pRet-&init())&&&&{&&&&&&&&pRet-&autorelease();&&&&&&&&return pR&&&&}&&&&else&&&&{&&&&&&&&CC_SAFE_DELETE(pRet);&&&&&&&&return NULL;&&&&}}bool CLayer2::init(){&&&&if (CCLayer::init())&&&&{&&&&&&&&cocos2d::gui::TouchGroup* pUILayer2 = cocos2d::gui::TouchGroup::create();&&&&&&&&addChild(pUILayer2);&&&&&&&&cocos2d::gui::Layout* pLayout2 = dynamic_cast&cocos2d::gui::Layout*&(GUIReader::shareReader()-&widgetFromJsonFile(&cocosgui/UITest/UITest.json&));&&&&&&&&pUILayer2-&addWidget(pLayout2);&&&&&&&&&&&&&&&&Button* left_button = static_cast&Button*&(UIHelper::seekWidgetByName(pLayout2, &left_Button&));&&&&&&&&left_button-&addTouchEventListener(this, toucheventselector(CLayer1::callback));&&&&&&&&&&&&&&&&&&&&}&&&&}void CLayer2::callback(CCObject *sender, TouchEventType type){&&&&CCLOG(&clayer2 button&);}CLayer3::CLayer3(){&&&&}CLayer3::~CLayer3(){&&&&}CLayer3* CLayer3::create(){&&&&CLayer3* pRet = new CLayer3();&&&&if (pRet && pRet-&init())&&&&{&&&&&&&&pRet-&autorelease();&&&&&&&&return pR&&&&}&&&&else&&&&{&&&&&&&&CC_SAFE_DELETE(pRet);&&&&&&&&return NULL;&&&&}}void CLayer3::onEnter(){&&&&CCLayer::onEnter();&&&&&&&&CLayer1* pLayer1 = CLayer1::create();&&&&CLayer2* pLayer2 = CLayer2::create();&&&&this-&addChild(pLayer1);&&&&this-&addChild(pLayer2);&&&&&&&&pLayer2-&setPosition(ccp(40, 40));}CCLOG(&clayer1 button&);CCLOG(&clayer2 button&);都可以打印出来楼主能否给出资源,我们对楼主的资源再测试一遍
图片:屏幕快照
下午5.26.46.png
级别: 新手上路
可可豆: 54 CB
威望: 54 点
在线时间: 81(时)
发自: Web Page
我们对 CLayer1 和 CLayer2 中方向向左的剪头绑定了 touch 事件
级别: 新手上路
UID: 304955
可可豆: 74 CB
威望: 66 点
在线时间: 80(时)
发自: Web Page
回 2楼(pipu) 的帖子
。。。。。人家没说显示不出来,是有一个会没响应
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版2418人阅读
cocos2d-x(10)
最近做个小游戏需要调用手机图库和摄像头并裁减图片,发现网上很多教程不是太全,有的安卓端裁减不了大图,下面是完整代码,可以裁减高清图的。
完整拼图游戏下载:
1、首先是跨平台入口代码,iOS平台需要把ImageCrop.cpp改成ImageCrop.mm,并且在AppController.mm里调用setViewController(void* viewController)把rootView传进来初始化m_viewController
#ifndef ImageCrop_hpp
#define ImageCrop_hpp
#include &stdio.h&
#include "cocos2d.h"
USING_NS_CC;
#define kImageCropEvent "ImageCropEvent"
class ImageCrop
ImageCrop();
static ImageCrop* getInstance();
static void destroyInstance();
void openCamera(std::function&void(std::string)& callback);
void openPhoto(std::function&void(std::string)& callback);
#if ( CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
void setViewController(void* viewController);
void *m_viewC
static ImageCrop* _
std::function&void(std::string)& _
#include "ImageCrop.hpp"
#if ( CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
#import "ImagePickerViewController.h"
#import "RootViewController.h"
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include "platform/android/jni/JniHelper.h"
#include &jni.h&
#define JAVA_CLASS "org/cocos2dx/cpp/ImageCrop"
#define JAVA_FUNC_OPEN_PHOTO
"openPhoto"
#define JAVA_FUNC_OPEN_CAMERA
"openCamera"
ImageCrop::ImageCrop()
:_callback(nullptr)
Director::getInstance()-&getEventDispatcher()-&addCustomEventListener(kImageCropEvent, [=](EventCustom *event)
std::string *imgPath = (std::string*)event-&getUserData();
_callback(*imgPath);
ImageCrop* ImageCrop::_instance =
ImageCrop* ImageCrop::getInstance()
if (!_instance)
_instance = new (std::nothrow) ImageCrop();
void ImageCrop::destroyInstance()
CC_SAFE_DELETE(_instance);
void ImageCrop::openCamera(std::function&void (std::string)& callback)
_callback =
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
ImagePickerViewController * imagePickerViewController = [[ImagePickerViewController alloc]initWithNibName:nil bundle:nil];
RootViewController *_viewController = (RootViewController*)m_viewC
[_viewController.view addSubview:imagePickerViewController.view];
[imagePickerViewController takePhoto];
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodI
bool ret = JniHelper::getStaticMethodInfo(info,JAVA_CLASS,JAVA_FUNC_OPEN_CAMERA,"()V");
info.env-&CallStaticVoidMethod(info.classID,info.methodID);
void ImageCrop::openPhoto(std::function&void (std::string)& callback)
_callback =
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
ImagePickerViewController * imagePickerViewController = [[ImagePickerViewController alloc]initWithNibName:nil bundle:nil];
RootViewController *_viewController = (RootViewController*)m_viewC
[_viewController.view addSubview:imagePickerViewController.view];
[imagePickerViewController localPhoto];
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodI
bool ret = JniHelper::getStaticMethodInfo(info,JAVA_CLASS,JAVA_FUNC_OPEN_PHOTO,"()V");
info.env-&CallStaticVoidMethod(info.classID,info.methodID);
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
void ImageCrop::setViewController(void *viewController)
m_viewController = viewC
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
extern "C"
void Java_org_cocos2dx_cpp_ImageCrop_onImageSaved(JNIEnv *env,jobject thiz,jstring path)
std::string strPath = JniHelper::jstring2string(path);
Director::getInstance()-&getScheduler()-&performFunctionInCocosThread([=,strPath]()mutable{
Director::getInstance()-&getEventDispatcher()-&dispatchCustomEvent(kImageCropEvent,&strPath);
2、iOS端代码,.m文件改成.mm文件
#ifndef ImagePickerViewController_h
#define ImagePickerViewController_h
#import &UIKit/UIKit.h&
@interface ImagePickerViewController:UIViewController&UINavigationControllerDelegate,UIImagePickerControllerDelegate&
NSString *fileP
-(void)localP
-(void)takeP
#import &Foundation/Foundation.h&
#import "ImagePickerViewController.h"
@interface ImagePickerViewController ()
@implementation ImagePickerViewController
-(void)viewDidLoad
[super viewDidLoad];
-(void)viewDidUnload
[super viewDidUnload];
-(void)didReceiveMemoryWarning
[super didReceiveMemoryWarning];
-(void)localPhoto
NSLog(@"-(void)localPhoto");
UIImagePickerController *picker = [[UIImagePickerController alloc]init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypePhotoL
picker.allowsEditing = YES;
[self presentViewController:picker animated:YES completion:^(void)
NSLog(@"ImageViewController is presented");
[picker release];
-(void)takePhoto
UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeC
if ([UIImagePickerController isSourceTypeAvailable:sourceType])
UIImagePickerController *picker = [[UIImagePickerController alloc]init];
picker.delegate = self;
picker.allowsEditing = YES;
picker.sourceType = sourceT
[self presentViewController:picker animated:YES completion:^(void)
NSLog(@"ImageViewController is presented");
NSLog(@"模拟器无法使用相机,请在真机中调试");
NSLog(@"-(void)takePhoto");
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary&NSString *,id& *)info
NSString *type = [info objectForKey:@"UIImagePickerControllerMediaType"];
if ([type isEqualToString:@"public.image"])
UIImage *image = [info objectForKey:@"UIImagePickerControllerEditedImage"];
if (UIImagePNGRepresentation(image) == nil)
data = UIImageJPEGRepresentation(image, 1.0);
data = UIImagePNGRepresentation(image);
NSString *documentsPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *imgPath = [documentsPath stringByAppendingPathComponent:@"image"];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *uuid = [[NSUUID UUID]UUIDString];
NSString *fileName = [NSString stringWithFormat:@"%@.png",uuid];
[fileManager removeItemAtPath:imgPath error:nil];
[fileManager createDirectoryAtPath:imgPath withIntermediateDirectories:YES attributes:nil error:nil];
[fileManager createFileAtPath:[imgPath stringByAppendingPathComponent:fileName] contents:data attributes:nil];
filePath = [[NSString alloc]initWithFormat:@"%@",[imgPath stringByAppendingPathComponent:fileName]];
[picker dismissViewControllerAnimated:YES completion:^(void){}];
std::string strFilePath = [filePath UTF8String];
cocos2d::Director::getInstance()-&getEventDispatcher()-&dispatchCustomEvent("ImageCropEvent",&strFilePath);
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
NSLog(@"您取消了照片选择");
[picker dismissViewControllerAnimated:YES completion:^(void){}];
3、安卓端,安卓平台需要把ImageCrop.java导入工程包里(src下org.cocos2dx.cpp包里),在主activity(AppActivity.java)的onCreate里调用ImageCrop.getInstance().initImageCrop(this)初始化,然后重载onActivityResult并回调ImageCrop的onActivityResult方法
ImageCrop.java:
package org.cocos2dx.
import java.io.F
import java.io.FileNotFoundE
import android.app.A
import android.content.I
import android.graphics.B
import android.graphics.BitmapF
import android.net.U
import android.os.E
import android.provider.MediaS
import android.util.L
public class ImageCrop {
public static final int NONE = 0;
public static final int PHOTOHRAPH = 1;
public static final int PHOTOZOOM = 2;
public static final int PHOTORESOULT = 3;
public static final String IMAGE_UNSPECIFIED = "image/*";
private static ImageCrop instance = null;
private static Activity activity = null;
private static String TAG = "ImageCrop";
public static native void onImageSaved(String path);
private static String savePath = Environment.getExternalStorageDirectory() +"/CropImage";
private static String photoName = "";
private static Uri imgUri = null;
public static ImageCrop getInstance()
if(null == instance)
instance = new ImageCrop();
public void init(Activity activity)
ImageCrop.activity =
static public void openPhoto()
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, IMAGE_UNSPECIFIED);
activity.startActivityForResult(intent, PHOTOZOOM);
static public void openCamera()
File destDir = new File(savePath);
if (!destDir.exists())
destDir.mkdirs();
photoName = "temp.jpg";
File file = new File(savePath + "/" + photoName);
imgUri = Uri.fromFile(file);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imgUri);
activity.startActivityForResult(intent, PHOTOHRAPH);
public void onActivityResult(int requestCode,int resultCode,Intent data)
if (resultCode == NONE)
if (requestCode == PHOTOHRAPH)
if (imgUri == null)
Log.e(TAG, "PHOTOHRAPH imgUri is null");
startPhotoZoom(imgUri);
if (requestCode == PHOTOZOOM)
if (data==null )
Log.e(TAG, "data is null");
if (data.getData()==null)
Log.e(TAG, "data.getData() is null");
startPhotoZoom(data.getData());
if (requestCode == PHOTORESOULT)
Bitmap bitmap = decodeUriAsBitmap(imgUri);
if (bitmap == null)
Log.e(TAG, "bitmap is null");
Log.e("ImageCrop", "图片已经保存,通知c++层,");
onImageSaved(savePath + "/" + photoName);
public void startPhotoZoom(Uri uri)
photoName = System.currentTimeMillis() + ".jpg";
File file = new File(savePath,photoName);
imgUri = Uri.fromFile(file);
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, IMAGE_UNSPECIFIED);
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 600);
intent.putExtra("outputY", 600);
intent.putExtra("return-data", false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imgUri);
activity.startActivityForResult(intent, PHOTORESOULT);
private Bitmap decodeUriAsBitmap(Uri uri)
Bitmap bitmap = null;
bitmap = BitmapFactory.decodeStream(activity.getContentResolver().openInputStream(uri));
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
HelloWorld工程里直接引入ImageCrop.hpp,调用拍照或者打开相册即可,裁减完成后会返回图片保存路径,直接就可以在C++环境里创建精灵等操作了,欧了!
#include "HelloWorldScene.h"
#include "ImageCrop.hpp"
USING_NS_CC;
Scene* HelloWorld::createScene()
auto scene = Scene::create();
auto layer = HelloWorld::create();
scene-&addChild(layer);
bool HelloWorld::init()
if ( !Layer::init() )
return false;
Size visibleSize = Director::getInstance()-&getVisibleSize();
Vec2 origin = Director::getInstance()-&getVisibleOrigin();
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));
auto openPhoto = MenuItemFont::create("打开相册", [=](Ref*)
ImageCrop::getInstance()-&openPhoto([=](std::string path)
CCLOG("photo path:%s",path.c_str());
_img -& removeFromParent();
_img = Sprite::create(path);
this-&addChild(_img);
_img-&setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
openPhoto-&setPosition(Vec2(origin.x + openPhoto-&getContentSize().width/2 ,
origin.y + openPhoto-&getContentSize().height/2));
auto openCamera = MenuItemFont::create("打开相机", [=](Ref*)
ImageCrop::getInstance()-&openCamera([=](std::string path)
CCLOG("photo path:%s",path.c_str());
_img -& removeFromParent();
_img = Sprite::create(path);
this-&addChild(_img);
_img-&setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
openCamera-&setPosition(Vec2(origin.x + openCamera-&getContentSize().width/2 ,
origin.y + openCamera-&getContentSize().height));
auto menu = Menu::create(closeItem,openPhoto,openCamera, NULL);
menu-&setPosition(Vec2::ZERO);
this-&addChild(menu, 1);
auto label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", 24);
label-&setPosition(Vec2(origin.x + visibleSize.width/2,
origin.y + visibleSize.height - label-&getContentSize().height));
this-&addChild(label, 1);
_img = Sprite::create("HelloWorld.png");
_img-&setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
this-&addChild(_img, 0);
return true;
void HelloWorld::menuCloseCallback(Ref* pSender)
Director::getInstance()-&end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:18838次
排名:千里之外
原创:20篇
(1)(1)(1)(2)(3)(1)(1)(2)(1)(5)(1)(2)(2)Cocos2d-x之LayerMultiplex的使用 - 推酷
Cocos2d-x之LayerMultiplex的使用
用于管理Layer的切换,而不用切换场景。
#include &cocos2d.h&
#include &ui/CocosGUI.h&
#include &VisibleRect.h&
USING_NS_CC;
class LayerMultiplexDemo : public Scene
CREATE_FUNC(LayerMultiplexDemo);
virtual bool init();
class BaseLayer : public Layer
CREATE_FUNC(BaseLayer);
virtual bool init();
class MainLayer : public BaseLayer
CREATE_FUNC(MainLayer);
virtual bool init();
void menuCallback1(Ref* sender);
void menuCallback2(Ref* sender);
void menuCallback3(Ref* sender);
class Layer1 : public BaseLayer
CREATE_FUNC(Layer1);
virtual bool init();
void touchEvent(cocos2d::Ref *pSender, cocos2d::ui::Widget::TouchEventType type);
class Layer2 : public BaseLayer
CREATE_FUNC(Layer2);
virtual bool init();
void touchEvent(cocos2d::Ref *pSender, cocos2d::ui::Widget::TouchEventType type);
class Layer3 : public BaseLayer
CREATE_FUNC(Layer3);
virtual bool init();
void touchEvent(cocos2d::Ref *pSender, cocos2d::ui::Widget::TouchEventType type);
2).cpp文件
#include &LayerMultiplexDemo.h&
bool LayerMultiplexDemo::init()
bool bRet =
CC_BREAK_IF(!Scene::init());
MenuItemFont::setFontSize(20);
auto layer
= MainLayer::create();
auto layer1 = Layer1::create();
auto layer2 = Layer2::create();
auto layer3 = Layer3::create();
auto layerMultiplex = LayerMultiplex::create(layer,layer1, layer2, layer3, nullptr);
addChild(layerMultiplex, 0);
}while(0);
bool BaseLayer::init()
bool bRet =
CC_BREAK_IF(!Layer::init());
winSize = Director::getInstance()-&getWinSize();
text = Text::create();
text-&setFontSize(40);
text-&setPosition(Vec2(winSize.width/2,winSize.height - 100));
addChild(text);
}while(0);
bool MainLayer::init()
bool bRet =
CC_BREAK_IF(!BaseLayer::init());
text-&setString(&Hello! This is MainLayer!&);
auto label1 = Label::createWithBMFont(&bitmapFontTest3.fnt&, &Layer 1&);
auto item1 = MenuItemLabel::create(label1, CC_CALLBACK_1(MainLayer::menuCallback1, this));
auto label2 = Label::createWithBMFont(&bitmapFontTest3.fnt&, &Layer 2&);
auto item2 = MenuItemLabel::create(label2, CC_CALLBACK_1(MainLayer::menuCallback2, this));
auto label3 = Label::createWithBMFont(&bitmapFontTest3.fnt&, &Layer 3&);
auto item3 = MenuItemLabel::create(label3, CC_CALLBACK_1(MainLayer::menuCallback3, this));
auto menu = Menu::create(item1,item2,item3,nullptr);
menu-&alignItemsVertically();
addChild(menu);
menu-&setPosition(Vec2(winSize.width/2,winSize.height/2));
}while(0);
void MainLayer::menuCallback1(cocos2d::Ref *sender)
static_cast&LayerMultiplex*&(_parent)-&switchTo(1);
void MainLayer::menuCallback2(cocos2d::Ref *sender)
static_cast&LayerMultiplex*&(_parent)-&switchTo(2);
void MainLayer::menuCallback3(cocos2d::Ref *sender)
static_cast&LayerMultiplex*&(_parent)-&switchTo(3);
bool Layer1::init()
bool bRet =
CC_BREAK_IF(!BaseLayer::init());
text-&setString(&Hello! This is Layer1&);
auto layout = Layout::create();
layout-&setContentSize(Size(300,300));
layout-&setBackGroundColorType(cocos2d::ui::Layout::BackGroundColorType::SOLID);
layout-&setBackGroundColor(Color3B::GRAY);
layout-&ignoreAnchorPointForPosition(false);
layout-&setAnchorPoint(Vec2::ANCHOR_MIDDLE);
layout-&setPosition(Vec2(winSize.width/2,winSize.height/2));
addChild(layout);
auto button = Button::create(&btn-about-normal.png&,&btn-about-selected.png&);
button-&setPosition(Vec2(layout-&getContentSize().width/2,layout-&getContentSize().height/2));
layout-&addChild(button);
button-&addTouchEventListener(CC_CALLBACK_2(Layer1::touchEvent, this));
}while(0);
void Layer1::touchEvent(cocos2d::Ref *pSender, cocos2d::ui::Widget::TouchEventType type)
static_cast&LayerMultiplex*&(_parent)-&switchTo(0);
bool Layer2::init()
bool bRet =
CC_BREAK_IF(!BaseLayer::init());
text-&setString(&Hello! This is Layer2&);
auto layout = Layout::create();
layout-&setContentSize(Size(300,300));
layout-&setBackGroundColorType(cocos2d::ui::Layout::BackGroundColorType::SOLID);
layout-&setBackGroundColor(Color3B::GRAY);
layout-&ignoreAnchorPointForPosition(false);
layout-&setAnchorPoint(Vec2::ANCHOR_MIDDLE);
layout-&setPosition(Vec2(winSize.width/2,winSize.height/2));
addChild(layout);
auto button = Button::create(&btn-about-normal.png&,&btn-about-selected.png&);
button-&setPosition(Vec2(layout-&getContentSize().width/2,layout-&getContentSize().height/2));
layout-&addChild(button);
button-&addTouchEventListener(CC_CALLBACK_2(Layer2::touchEvent, this));
}while(0);
void Layer2::touchEvent(cocos2d::Ref *pSender, cocos2d::ui::Widget::TouchEventType type)
static_cast&LayerMultiplex*&(_parent)-&switchTo(0);
bool Layer3::init()
bool bRet =
CC_BREAK_IF(!BaseLayer::init());
text-&setString(&Hello! This is Layer3&);
auto layout = Layout::create();
layout-&setContentSize(Size(300,300));
layout-&setBackGroundColorType(cocos2d::ui::Layout::BackGroundColorType::SOLID);
layout-&setBackGroundColor(Color3B::GRAY);
layout-&ignoreAnchorPointForPosition(false);
layout-&setAnchorPoint(Vec2::ANCHOR_MIDDLE);
layout-&setPosition(Vec2(winSize.width/2,winSize.height/2));
addChild(layout);
auto button = Button::create(&btn-about-normal.png&,&btn-about-selected.png&);
button-&setPosition(Vec2(layout-&getContentSize().width/2,layout-&getContentSize().height/2));
layout-&addChild(button);
button-&addTouchEventListener(CC_CALLBACK_2(Layer3::touchEvent, this));
}while(0);
void Layer3::touchEvent(cocos2d::Ref *pSender, cocos2d::ui::Widget::TouchEventType type)
static_cast&LayerMultiplex*&(_parent)-&switchTo(0);
3、使用效果
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 cocos2dx scene layer 的文章

 

随机推荐