CocoStudio: UI控件的基类Widget
来源:互联网 发布:koolearn新东方网络在线课堂 编辑:程序博客网 时间:2024/06/05 04:46
CocoStudio中所有UI控件的基类都是Widget,我想在这里分析一下这个类的一些常用方法:1、继承class CC_EX_DLL Widget : public CCNodeRGBA2、addChild和addNode方法:这连个方法不同,addChild只能添加继承自Widget的控件,如Button等,而addNode可以添加不是继承自Widget的空间,如Node,layer等等。而且这里这几到两个成员变量CCArray* _widgetChildren(用于保存Widget*)和CCArray* _nodes(用于保存Node),但是最终都会添加到Widget继承的的Node上。因为可以添加两种类型的UI控件,所以很多方法都需要分别处理。所以我们在使用的时经常需要区别对待。void Widget::addChild(CCNode* child, int zOrder, int tag){ CCAssert(dynamic_cast<Widget*>(child) != NULL, "Widget only supports Widgets as children"); CCNode::addChild(child, zOrder, tag); _widgetChildren->addObject(child);}void Widget::addNode(CCNode* node, int zOrder, int tag){ CCAssert(dynamic_cast<Widget*>(node) == NULL, "Widget only supports Nodes as renderer"); CCNode::addChild(node, zOrder, tag); _nodes->addObject(node);}3、CCNode* Widget::getChildByTag(int aTag){ CCAssert( aTag != kCCNodeTagInvalid, "Invalid tag"); //只能获取_widgetChildren中保存的UI控件,也即是通过 //addChild方法添加的控件。 if(_widgetChildren && _widgetChildren->count() > 0) { CCObject* child; CCARRAY_FOREACH(_widgetChildren, child) { CCNode* pNode = (CCNode*) child; if(pNode && pNode->getTag() == aTag) return pNode; } } return NULL;}CCNode* Widget::getNodeByTag(int tag){ CCAssert( tag != kCCNodeTagInvalid, "Invalid tag"); //只能获取_nodes-中保存的UI控件,也即是通过 //addNode方法添加的控件。 if(_nodes && _nodes->count() > 0) { CCObject* renderer; CCARRAY_FOREACH(_nodes, renderer) { CCNode* pNode = (CCNode*) renderer; if(pNode && pNode->getTag() == tag) return pNode; } } return NULL;}4、void Widget::removeChild(CCNode *child, bool cleanup){ CCNode::removeChild(child, cleanup); _widgetChildren->removeObject(child);}void Widget::removeNode(CCNode* node){ CCNode::removeChild(node); _nodes->removeObject(node);}void Widget::removeAllChildren()void Widget::removeAllNodes()5、移除全部,包括添加的Widget和Node/** * Removes this node itself from its parent node with a cleanup. * If the node orphan, then nothing happens. * @see `removeFromParentAndCleanup(bool)` */ virtual void removeFromParent();6、触摸响应相关: virtual bool onTouchBegan(CCTouch *touch, CCEvent *unused_event); virtual void onTouchMoved(CCTouch *touch, CCEvent *unused_event); virtual void onTouchEnded(CCTouch *touch, CCEvent *unused_event); virtual void onTouchCancelled(CCTouch *touch, CCEvent *unused_event);
0 0
- CocoStudio: UI控件的基类Widget
- cocos2dx3.0之读取cocostudio的UI控件
- CocoStudio UI 编辑器的使用
- CocoStudio里面的UI编辑
- cocos2d-x的lua脚本如何获得Cocostudio中UI控件的对象
- cocos2d-x的lua脚本如何获得Cocostudio中UI控件的对象
- cocos2d-x UI控件 以及 cocostudio UI编辑器 注意细节
- Cocos2d-x3.0 从代码中获取cocostudio编辑的UI控件
- CocoStudio UI编辑器的简单使用
- cocoStudio工具的使用-----UI编辑器
- 在cocostudio的ui中嵌入CCEditBox
- Cocostudio生成的UI,触摸屏蔽问题
- Cocostudio控件
- Android系统UI设计之:Widget控件
- cocostudio中的一些控件的使用
- UI widget
- CocoStudio UI编辑器基础
- 【cocostudio】ui 1
- Android平台的IIR工频干扰陷波器
- Http协议详解
- 写在离职之前
- Haoop集群为何不使用RAID?
- zookeeper 安装 windows环境
- CocoStudio: UI控件的基类Widget
- PHP封装保存远程图片函数
- Unity3D Mac(苹果)版 破解安装方法,供学习用
- ACM HDU 1016 Prime Ring Problem
- 【计算几何】POJ 2653
- win7 和 Ubuntu 双系统安装 记录
- Appium自动化(一)-环境配置
- VS调试添加监视会触发变量的get方法
- 12 个最佳的免费网络监控工具 (转)