`

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背景绘制 .rar

    CCScrollLayer-修正

    cocos2dx中的CCScrollLayer类 CCScrollLayer::create(); srollLayer->setOriginPosition(pos); 修正内容: visit() -> CCLayer::visit() 修改成 CCLayer::draw();

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

    图层在cocos2d-x中很重要,我们可以在其中添加精灵,也可以将图层添加到场景中。这几个图层类功能各不相同,具体的看代码的注释。大家只需要替换掉helloworld中的init函数就可以... //CCLayerColor继承自CCLayer,CCLa

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

    CCLayer::init()); CCSprite * sprite = CCSprite::create("image1.png"); this->addChild(sprite); //获得CCSprite的默认坐标,CCSprite设置坐标的时候是用自己的锚点位置占据在坐标上的。 CCLog(...

    Cocos2d开发教程

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

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

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

    Cocos2D-X核心类学习

    Cocos2D-X核心类 Cocos2D-X 引擎的设计思路是将游戏中的各个部分...布景层(CCLayer):一个场景可以由多个布景类组成。布景层就是关卡里面的背景。 人物精灵(CCSprite):人物精灵可以分为玩家控制的主角类、敌人类等。

    WP7坦克大战源码2012929

    1.创建好 CCLayer 的子类 2.重写 onEnter 方法添加一些基本按钮 跟一些初始化代码 3.通过schedule方法 控制 坦克 子弹的CCSprite对象 4.根据点击手机屏幕,确定出坦克的方向,根据坦克的方向修改坦克的X,Y轴坐标,...

    cocos2dx动画工具

    导出的类继承自CCLayer所以直接可以A_xx::create();添加到场景中。里面的CCSprite可以换成自己实现的类,这样添加一部分自定义的代码就能实现换皮功能。 简版工具,没有自定义的基类支持,所以现在就只支持循环动画...

    SwfTo2dX_V1.0

    导出的类继承自CCLayer所以直接可以A_xx::create();添加到场景中。里面的CCSprite可以换成自己实现的类,这样添加一部分自定义的代码就能实现换皮功能。 简版工具,没有自定义的基类支持,所以现在就只支持循环动画...

    cocos2d-xna 写的一个小游戏demo坦克大战

    1.创建好 CCLayer 的子类 2.重写 onEnter 方法添加一些基本按钮 跟一些初始化代码 3.通过schedule方法 控制 坦克 子弹的CCSprite对象 4.根据点击手机屏幕,确定出坦克的方向,根据坦克的方向修改坦克的X,Y轴坐标...

    Cocos2d x手机游戏开发与项目实战详解.part2

     第五章主要介绍Cocos2d-x核心技术,这里包括Cocos2d-x的核心类CCDirector、CCScene、CCNode、CCLayer、CCSprite、CCAction等,通过案例来介绍Cocos2d-x的场景、图层、交互、动作、动画、粒子效果、游戏地图、物理...

    Cocos2d x手机游戏开发与项目实战详解.part3

     第五章主要介绍Cocos2d-x核心技术,这里包括Cocos2d-x的核心类CCDirector、CCScene、CCNode、CCLayer、CCSprite、CCAction等,通过案例来介绍Cocos2d-x的场景、图层、交互、动作、动画、粒子效果、游戏地图、物理...

    Cocos2d x手机游戏开发与项目实战详解.part1

     第五章主要介绍Cocos2d-x核心技术,这里包括Cocos2d-x的核心类CCDirector、CCScene、CCNode、CCLayer、CCSprite、CCAction等,通过案例来介绍Cocos2d-x的场景、图层、交互、动作、动画、粒子效果、游戏地图、物理...

    cocos2dx 雷电MoonWarriors_游戏源码

    CCLayer::init()) { return false; } // 开启触摸 this->setTouchEnabled(true); // 创建数组,需要retain一下 play_bullet = CCArray::create(); play_bullet->retain(); enemy_bullet = CCArray::...

    Learn iPhone and iPad cocos2d Game Development

     3.6.5 cclayer  3.7 ccsprite类  3.7.1 定位点揭秘  3.7.2 纹理大小  3.8 cclabel类  3.9 菜单  3.10 动作  3.10.1 重复动作  3.10.2 流畅动作  3.10.3 动作序列  3.10.4 瞬时动作  3.11 cocos2d测试...

    Cocos2D-X游戏开发技术精解

    3.2.5 图层类(CCLayer) 64 3.2.6 精灵类(CCSprite) 68 3.2.7 精灵集合类(CCSpriteBatchNode) 72 3.2.8 精灵帧缓冲(CCSpriteFrameCache) 74 3.2.9 Zwoptex纹理编辑器 76 3.3 文字与字体 80 3.3.1 TTF类型标签...

Global site tag (gtag.js) - Google Analytics