`

CCLayer

阅读更多
一个场景(Scene)上可能有多个Layer
引用
CCLayer 对象定义了可描绘的区域,定义了描绘的规则。CCLayer可以实现半透明的效果,令您看到它背后的layers。概括地说:CCLayer 用于定义外观和事件behavior。所以,当编写cocos2d程序的时候,大部分工作就是编写CCLayer的子类去实现所要的效果。
CCLayer 负责处理事件event。Events 会从第一个向最后一个layers传递,直至某个layer获取event并处理它。
虽然某个时候,你需要客户化一个CCLayer类, 但cocos2d已经实现了多种功能的layers(比如菜单layer: CCMenu, 颜色层layer: CCColorLayer,等等)。
Layers 可以包含CCSprite 对象, CCLabel 对象 和其它layer对象。layers是CCNode的子类,所以他们也可以使用actions来转 换坐标. See Actions for more detail about actions.

+(id) scene
{
    CCScene* scene = [CCScene node];
    CCLayer* backgroundLayer = [HelloWorldBackground node];
    [scene addChild: backgroundLayer];
    CCLayer* layer = [HelloWorld node];
    [scene addChild:layer];
    CCLayer* userInterfaceLayer = [HelloWorldUserInterface node];
    [scene addChild: userInterfaceLayer];
    return scene;
} 

* 和Scene一样,Layer没有宽高,只是一群可视对象的概念集合

获取Touch 输入

self.isTouchEnabled = YES; 


用户Touch动作跟以下方法相关
Called when a finger just begins touching the screen:
-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
Called whenever the finger moves on the screen:
-(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
Called when a finger is lifted off the screen:
-(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
Called to cancel a touch:
-(void) ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event


获取Touch坐标

UITouch *touch = [touches anyObject];
CGPoint touchLocation = [touch locationInView: [touch view]];
return [[CCDirector sharedDirector] convertToGL:touchLocation]; 


如果要指定层消耗触摸

-(void) registerWithTouchDispatcher
{
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self
priority:INT_MIN+1 swallowsTouches:YES];
} 

如果此方法内容什么都不写,则不会接收任何触摸事件
这种情况下要用以下方法获取触摸事件
-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {}
-(void) ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event {}
-(void) ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event {}
-(void) ccTouchCancelled:(UITouch *)touch withEvent:(UIEvent *)event {}
和上面的方法略有不同,并且,注意ccTouchBegan:withEvent:返回是BOOL类型,如果返回YES,则触摸事件不会冒泡到优先级较低的Layer

接收accelerometer事件

didAccelerate:(UIAcceleration *)acceleration
{
CCLOG(@"acceleration: x:%f / y:%f / z:%f",
acceleration.x, acceleration.y, acceleration.z);
} 
分享到:
评论

相关推荐

    cocos2d-x学习笔记(4)--CCLayer背景绘制 .rar

    《cocos2d-x学习笔记(4)--CCLayer背景绘制》 在移动游戏开发领域,cocos2d-x是一个广泛使用的2D游戏引擎,它为开发者提供了强大的图形渲染、动画处理以及游戏逻辑管理功能。本篇笔记主要探讨的是如何在cocos2d-x中...

    CCScrollLayer-修正

    首先,CCScrollLayer是继承自CCLayer的一个子类,它的主要功能是允许开发者在二维游戏中或应用中创建一个滚动的视图层。这个层可以包含多个子层,也就是页面,通过滑动操作可以在这些页面之间进行切换。这个类特别...

    Cocos2d-x学习笔记之CCScene、CCLayer、CCSprite的默认坐标和默认锚点实验

    在Cocos2d-x游戏开发框架中,理解各个节点如CCScene、CCLayer和CCSprite的默认坐标和锚点是非常关键的。这些组件是构建游戏场景的基础,它们的坐标系统和锚点设置直接影响到元素的布局和动画效果。下面我们将深入...

    cocos2d-x学习笔记之CCLayer、CCLayerColor、CCLayerGradient、CCLayerMultiplex场景层介绍

    在cocos2d-x游戏开发框架中,图层(CCLayer)是构建游戏界面的基础元素,它允许开发者在上面添加精灵、文本等其他游戏对象。CCLayer本身是一个无色的空容器,但可以通过其子类来实现不同的效果。 1. CCLayerColor:...

    cocos2d-x 游戏菜单选项卡的实现

    在选项卡系统中,每个选项卡通常对应一个`CCLayer`,用户切换选项卡时,实际上是在不同的`CCLayer`间进行切换。 实现选项卡功能,我们可以采用以下步骤: 1. **创建选项卡层**:为每个功能或菜单项创建一个`...

    Cocos2d开发教程

    1 场景 (CCScene)...................................................................................................................2 层(CCLayer)..........................................................

    CCLayerMultiplex测试

    CCLayerMultiplex是Cocos2d-x库中的一个类,它允许开发者在一个CCLayerMultiplex实例中管理和切换多个CCLayer子类。这种功能对于实现选项卡式界面或者在游戏的不同场景之间进行平滑过渡非常有用。 首先,我们要理解...

    添加触摸的两种方式1

    接着,使用`addTargetedDelegate()`方法添加触摸委托,该方法接受三个参数:你要添加的委托对象(通常是你的CCLayer或CCNode子类实例)、优先级(数字越小,优先级越高)以及是否独占触摸。例如: ```cpp ...

    Cocos2d-x学习笔记之CCLayerColor层的使用实例

    CCLayerColor层的使用方法,写的详细了一些,和上篇文章基本差不多的(查看CCLayer的更多介绍),只不过这次HelloWorld继承自CCLayerColor。 bool HelloWorld::init() { bool bRet = false; do { //ccc4这个...

    cocos2d-touch事件

    在本篇文章中,我们将深入探讨cocos2d中的touch事件机制以及如何添加cclayer层。 首先,让我们理解什么是cclayer。在Cocos2d-x中,ccLayer是一个继承自ccNode的类,它是场景(ccScene)中的基本元素,用于组织和...

    cocos2d-x面试题DOCX文档

    本文档总结了cocos2d-x面试题,涵盖了CCScene、CCLayer、CCSprite、CCNode、CCAction、CCDirector、CCEGLView等重要概念,并提供了相关的知识点。 一、CCScene和CCLayer CCScene是app工作流程上独立的块,一个app...

    Cocos2D-X开发学习笔记-渲染框架之布景层类的使用示例

    首先,我们要理解Cocos2d-x中的“布景层”(CCLayer)。在Cocos2D-X中,布景层是场景(CCScene)的一个子类,用于承载游戏中的各种元素,如角色、背景、交互对象等。布景层可以看作是一个容器,可以包含多个子节点,...

    Cocos2d手势源码

    `CCGestureRecognizer`通常会关联到一个`CCLayer`或者`CCNode`,当用户在屏幕上执行特定手势时,它会触发相应的回调方法,让开发者可以处理这些手势事件。 在提供的文件列表中,`CCNode.h`和`.m`、`CCLayer.h`和`.m...

    Cocos2d手势

    在这个场景中,我们看到一个关于Cocos2d手势支持的自定义实现,通过改写CCLayer、CCNode和CCGestureRecognizer这三个核心类。 首先,`CCLayer`是Cocos2d中的一个基础类,它提供了一个可以添加子节点、处理事件(如...

    事件处理机制之触屏事件.

    在Cocos2D-X中,CCLayer类作为场景的一部分,它继承了CCTouchDelegate协议,允许它检测和响应触屏事件。CCTouchDelegate有两个主要的子协议:CCStandardTouchDelegate用于处理多点触摸,而CCTargetedTouchDelegate则...

    全面剖析Cocos2d游戏触摸机制

    本部分内容将详细探讨Cocos2d中的触摸事件处理,特别是CCLayer层如何注册和处理触摸事件,以及与UIAccelerometerDelegate协议的交互。 描述:“cocos2d作为手机2d游戏开发的优秀工具,在实际应用时多与屏幕触摸结合...

    coco2d-x面试题(无脑码农).pdf,这是一份不错的文件

    1. **CCScene、CCLayer与CCSprite** - **CCScene** 是应用程序工作流程中的独立单元,可以有多个,但只有一个处于活动状态。它由一个或多个**CCLayer** 组成,层之间按照前后顺序排列。CCScene通过`runWithScene`、...

Global site tag (gtag.js) - Google Analytics