[Cocos2d-x For WP8]Layer 层
层(CCLayer) 从概念上说,层就是场景里的背景。 CCLayer同样是CCNode的子类,通常用addChild方法添加子节点。CCLayer对象定义了可描绘的区域,定义了描绘的规则。CCLayer可以实现半透明的效果,层的事件相应机制 : 最外层最先接受到事件(屏幕触碰),最后是底层,如果在某层处理了该事件,则后面的层不会在接受到事件信号。
CCLayer类的作用主要有三个。
(1)其他子节点的容器和组织者
例如对一个层使用动作,那么所有在这个层上的物体都会受到影响。这意味着同一层的所有物体可以一起移动、旋转和缩放。如果这些物体都是同一个层的子节点,就可以通过改变层的属性或者在层上执行动作,从而影响层上所有子节点。
(2)接收触摸事件
设置isTouchEnabled为YES,可以让层接收触摸事件。一旦启用isTouchEnabled属性,将会开始调用许多与接收触摸输入相关的方法。这些事件包括:当新的触摸事件开始时,当手指在触摸屏上移动时,以及当用户手指离开屏幕以后。
(3)接收加速计事件
和触摸输入一样,加速计必须在启用以后才能接收加速计事件。
头文件:
继承关系图:
1.CCLayerColor是一个透明的、可以按照RGB设置填充颜色的层,是实现CCRGBAProtocol协议的CCLayer子类。它继承了CCNode所有属性和方法,同时还可以接收触摸事件和加速计事件。
2.CCLayerGradient渐变色层,CCLayerColor有一个子类CCLayerGradient,可以在背景上绘制渐变色。CCLayerGradient继承了CCLayerColor的所有特性,增加了渐变方向、插值模式等属性。以下代码初始化带有特定渐变效果的色彩层。
3.CCMenu是表示菜单栏,用来创建游戏中的各种菜单,包括主菜单、游戏设置等,而实现菜单系统的就是CCMenu类及其子类。
CCMenu继承自CCLayer,是一个菜单管理选择画面层,该画面以Menu对象为集合类,由MenuItem类实例组成各种按钮。CCMenu类提供的方法主要用来按横向、竖向或者多行列排序展示MenueItem的类实例。同时,CCMenu只支持CCMenuItem节点作为它的子节点。
注意 CCMenuItem是基础类,不能直接用来创建菜单,它的作用主要是设置按钮状态以及处理回调方法。需要使用CCMenuItem的子类来创建定制菜单项。
4.CCLayerMultipex,CCLayer的子类CCLayerMultipex,可以容纳多个层,但每次只可激活其中的一个。通常不鼓励使用CCLayerMultipex。
下面代码示例CCLayerColor的使用:
class LayerTest1 : public cocos2d::CCLayer
{
public:
LayerTest1();
~LayerTest1();
virtual void onEnter();
void updateSize(cocos2d::CCPoint &touchLocation); virtual void ccTouchesBegan(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);
virtual void ccTouchesMoved(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);
virtual void ccTouchesEnded(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);
}; void LayerTest1::onEnter()
{
CCLayer::onEnter();
setTouchEnabled(true);
CCSize s = CCDirector::sharedDirector()->getWinSize();
//创建一个颜色的层,设置宽度和高度
CCLayerColor* layer = CCLayerColor::create( ccc4(0xFF, 0x00, 0x00, 0x80), , );
//将忽略锚点置为false。由于默认设置是忽略锚点,也就是以左下角为锚点,可以让布景层考虑锚点的影响,这时默认的锚点在中心。
layer->ignoreAnchorPointForPosition(false);
layer->setPosition( ccp(s.width/, s.height/) );
addChild(layer, , );
}
//根据触摸点修改颜色层的大小
void LayerTest1::updateSize(CCPoint &touchLocation)
{
CCSize s = CCDirector::sharedDirector()->getWinSize();
CCSize newSize = CCSizeMake( fabs(touchLocation.x - s.width/)*, fabs(touchLocation.y - s.height/)*);
CCLayerColor* l = (CCLayerColor*) getChildByTag();
l->setContentSize( newSize );
} void LayerTest1::ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent)
{
ccTouchesMoved(pTouches, pEvent);
}
//触摸在屏幕移动的时候将修改颜色层的大小
void LayerTest1::ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent)
{
CCTouch *touch = (CCTouch*)pTouches->anyObject();
CCPoint touchLocation = touch->getLocation(); updateSize(touchLocation);
} void LayerTest1::ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent)
{
ccTouchesMoved(pTouches, pEvent);
}
CCScene* HelloWorld::scene()
{
CCScene * scene = NULL;
do
{ // 'scene'是一个可以自动释放的对象
scene = CCScene::create();
//创建失败跳出循环
CC_BREAK_IF(! scene);
// 'layer'是一个可以自动释放的对象
HelloWorld *layer = HelloWorld::create();
//创建失败跳出循环
CC_BREAK_IF(! layer);
// 添加layer到scene上面
scene->addChild(layer); LayerTest1 *layer2 = new LayerTest1();
// 添加layer到scene上面
scene->addChild(layer2);
} while (); // 返回scene
return scene;
}
运行的效果如下:
[Cocos2d-x For WP8]Layer 层的更多相关文章
- 3.4 常用的两种 layer 层 3.7 字体与文本
3.4 常用的两种 layer 层 //在cocos2d-x中,经常使用到的两种 layer 层 : CCLayer 和 CCLayerColor //CCLayer 的创建 CCLayer* la ...
- 如果layer层在iframe下不居中滚动
需要在layer前面加上parent.layer. 2.运用layer层的步骤: 1.引入1.8版本以上的jquery文件 <script type="text/javascript& ...
- 当music-list向上滑动的时候,设置layer层,随其滚动,覆盖图片,往下滚动时候,图片随着展现出来
1.layer层代码: <div class="bg-layer" ref="layer"></div> 2.在mounted()的时候 ...
- caffe layer层cpp、cu调试经验和相互关系
对于layer层的cpp文件,你可以用LOG和printf.cout进行调试,cu文件不能使用LOG,可以使用cout,printf. 对于softmaxloss的layer层,既有cpp文件又有cu ...
- ZBrush中Layer层笔刷介绍
本文我们来介绍ZBrush®中的Layer层笔刷,该笔刷是一种类似梯田效果的笔刷,常用来制作鳞甲和花纹图腾.他还可以用一个固定的数值抬高或降低模型的表面,当笔刷在重合时,笔画重叠部分不会再次位移,这使 ...
- Layer层自定义
keras允许自定义Layer层, 大大方便了一些复杂操作的实现. 也方便了一些novel结构的复用, 提高搭建模型的效率. 实现方法 通过继承keras.engine.Layer类, 重写其中的部分 ...
- layer层、modal模拟窗 单独测试页面
layer_test.jsp <%@ page language="java" import="java.util.*" pageEncoding=&qu ...
- 非常好的分页组建layPage和 layer层特效
http://layer.layui.com/ http://sentsin.com/layui/laypage/
- caffe实现focal loss层的一些理解和对实现一个layer层易犯错的地方的总结
首先要在caffe.proto中的LayerParameter中增加一行optional FocalLossParameter focal_loss_param = 205;,然后再单独在caffe. ...
随机推荐
- 关于plsql连接oracle数据库session失效时间设置
http://bbs.csdn.net/topics/350152441 http://www.linuxidc.com/Linux/2015-09/123286.htm
- JustSniffer
http://blog.csdn.net/cnbird2008/article/details/5875781
- ***电商数据库设计参考:ecshop数据库+订单表结构等
ecshop订单表结构ecs_order_info说明 -- 表的结构 `ecs_order_info` CREATE TABLE IF NOT EXISTS `ecs_order_info` ...
- JAVA基础学习之流的简述及演示案例、用缓冲区方法buffer读写文件、File类对象的使用、Serializable标记接口(6)
1.流的简述及演示案例输入流和输出流相对于内存设备而言.将外设中的数据读取到内存中:输入将内存的数写入到外设中:输出.字符流的由来:其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表. ...
- HTML5学习之智能表单(二)
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- 在ubuntu上搭建开发环境3---解决Y470一键系统重装之后恢复ubuntu引导启动的方法
2015/08/18 将知识.常用的操作整理出来一定要完整,注意细节. 就像下面是再2015.04.27时候整理的,当时确实实验成功了,但是可能忘记记下具体的细节,尤其是3.4.5.6步骤中的关于盘符 ...
- 如何在java中使用别人提供的jar包进行导入,编译,运行
一步一步往前走, 现在折分! JAR包即为上篇文章的东东. 测试JAVA文件. package com.security; import com.security.AESencrp; /** * 实现 ...
- 玩转SSRS第十篇---自定义代码
提到SSRS 那么就不得不提一下自定义代码的功能,通过自定义代码,有时候可以解决一些比较复杂的问题,比如将让指定的数据行应用指定的属性值.此篇将演示如何通过简单结构的自定义代码进行报表样式的基本设计. ...
- 使用Visual Studio Code开发AngularJS应用
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:VSC发布之后,尤其最近刚刚更新到0.3之后,社区出现了很多介绍VSC使用的好文章.比 ...
- C泊车管理系统
// // main.c // 泊车管理系统 // // Created by 丁小未 on 13-7-14. // Copyright (c) 2013年 dingxiaowei. All ...