CCNode作为容器实现显示区域剪裁

  一直把ccnode当做ui元素的容器使用,比如一段带下划线的文字,我会在一个ccnode中加入一个label和一个sprite,然后作为一个整体传出。

  在主界面聊天的时候遇到一个问题,一段聊天信息需要由多个不同的元素拼凑而成,而主界面只有能显示一条不超过16个字的文字信息。一开始的想法是写一个算法,从第一个元素开始遍历到最后一个元素,

累加字数,直到16个字为止,但是这个涉及到在16个字的时候元素切割和重新创建末尾元素的问题,想来想去觉得甚是复杂,再加上工期紧,觉得需要另寻通途。既然要求的是16个字,后面是多少内容不管,

于是我想到为何不直接截断取整呢?但是多元素拼接而成无法进行截断,所以跳出元素这一层,我想到我可以把所有元素放到一个ccnode中,然后对ccnode的显示区域进行裁剪,这样我可以不用考虑ccnode内部的

元素有多长,最后通过百度和好友的指点下,发现通过继承ccnode,重写visit方法可以达到效果。代码如下:

  glEnabel后一定要glDisable,其次worldPos是世界坐标系,无论ScissorNode是作为child还是parent,worldPos需要传入的是世界坐标系的坐标。

  

时间: 2024-10-12 08:10:31

CCNode作为容器实现显示区域剪裁的相关文章

Win32 GDI 非矩形区域剪裁,双缓冲技术

传统的Win32通过GDI提供图形显示的功能,包括了基本的绘图功能,如画线.方块.椭圆等等,高级功能包括了多边形和Bezier的绘制.这样app就不用关心那些图形学的细节了,有点类似于UNIX上的X-window协议.你信或者不信,那些看上去很花哨的控件,其实就是一笔一划画上去的而已.GDI提供了画笔(用于线条).画刷(用于填充).调色板(用于支持256色显示).字体(用于文字).如果简单的图形不足以表达,你可以使用位图和画布(DC,设备上下文)直接将图像绘制到屏幕上去.此外,GDI还支持一些简

javascript超过容器后显示省略号效果(兼容一行或者多行)

javascript超过容器后显示省略号效果 在实际的项目中,由于文字内容的长度不确定性和页面布局的固定性,难免会出现文字内容超过div(或其他标签,下同)区域的情况,此时比较好的做法就是当文字超过限定的div宽度后自动以省略号(…)显示,这样,按照习惯,人们都会知道这儿有文字被省略了.css中有个属性叫做text-overflow:ellipsis;比如使用css可以这样写: {width:27em; white-space:nowrap; text-overflow:ellipsis; -o

苹果地图定位和显示区域

// // ViewController.m // mapdemo001 // // Created by apple on 14-4-28. // Copyright (c) 2014年 apple. All rights reserved. // #import "ViewController.h" #import <MapKit/MapKit.h> @interface ViewController () <MKMapViewDelegate> { MKM

delphi多屏显示区域查找

windows下多屏支持一个简单的思路就是找到显示器的区域(EnumDisplayMonitors),并把相应的窗口移动到目标区域(windows API: MoveWindow).下面是一个简单的查找显示区域方法,gRects为查找到的显示区域,gMCount为查找到的个数. 1 unit EnumMonitor; 2 3 interface 4 uses 5 MultiMon, windows; 6 const 7 MONITOR_MAX_COUNT = 10; //显示器个数上限 8 9

封装函数getClient获取当前显示区域的大小,即clientWidth和clientHeight

1 //获取当前显示区域的大小,即clientWidth和clientHeight 2 function getClient(){ 3 var isXHTML; //初始值默认 符合DOM的xHTML标准 4 var clientWidth,clientHeight; 5 if(document.documentElement.clientWidth = null || document.documentElement.clientWidth <=0){ 6 if(document.body.c

tableView 显示区域偏移

在SB拖了一个tableView , 在显示的时候显示区域和tableView的区域不一致, (UITableViewWrapperView 和 UITableView frame不一致) 在SB上看一下Controller的 Extend Edges中 的Under Top Bars 是否选中, 取消选择

拖动调整显示框的显示区域大小

<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>例子</title> <style> ul,li{margin:0;padding:0;} body{font:14px/1.5 Arial;color:#666;} #box

滚动到指定元素的id处+当元素出现在浏览器显示区域就会自动加载

//滚动到指定元素的id处 如:$("#Exam82") function Jump() { var scroll_offset = $("#Exam82").offset();  //得到Exam82这个div层的offset,包含两个值,top和left $("body,html").animate({ scrollTop: scroll_offset.top  //让body的scrollTop等于Exam82的top,就实现了滚动 },

Selenium2学习-024-WebUI自动化实战实例-022-网站不同分辨率下页面样式展示兼容性问题解决方案 -- 设置浏览器显示区域大小(无人值守,节约测试成本的福音,BOSS 最爱)

在 Web UI 自动化测试的过程中,通常会测试页面在不同分辨率下的显示效果,即在不同大小的显示器上全屏浏览器后的页面展示,此种测试方法需要购置不同大小的显示器,或者频繁的设置屏幕分辨率,不仅浪费了大量的金钱,同时也需要有人值守,从而使测试变成了半自动化,背离了自动化测试的初衷,也在一定程度上困扰了一定的自动化测试人员. 其实,不同分辨率下的测试,在一定程度上可以看做是浏览器窗口最大化后,浏览器可显示区域的页面样式兼容性测试.此文通过设置浏览器页面显示区域大小,从而摆脱上述种种问题的束缚.只需要