关于gui的skinnableContainer的一点问题
创建一个UIAsset
var uiAsset = new egret.gui.UIAsset();uiAsset.source = "bgImage";
把UIAsset添加到SkinnableContainer上
var container = new egret.gui.SkinnableContainer();container.addElement(uiAsset);
然后把container添加到stage上会发现uiAsset并没有显示出来。这是什么原因呢?
这时我去看了一下SkinnableContainer的代码,发现
public addElement(element:IVisualElement):IVisualElement {return this._getCurrentContentGroup().addElement(element); }public _getCurrentContentGroup():Group {if (this.contentGroup == null) {if (this._placeHolderGroup == null) {this._placeHolderGroup = new Group();this._placeHolderGroup.visible = false;this._addToDisplayList(<DisplayObject><any>this._placeHolderGroup);}this._placeHolderGroup.addEventListener(ElementExistenceEvent.ELEMENT_ADD, this._contentGroup_elementAddedHandler, this);this._placeHolderGroup.addEventListener(ElementExistenceEvent.ELEMENT_REMOVE, this._contentGroup_elementRemovedHandler, this);return this._placeHolderGroup;}else {return this.contentGroup; } }
SkinnableContainer的addElement是默认如果没有contentGroup的话是加在_placeHolderGroup上的,而placeHolderGroup默认的visible是false的,而在partAdded中如果发现有皮肤里有contentGroup,则会把placeHolderGroup的children放到contentGroup里。
皮肤里若没有contentGroup,则skinnableContainer所有的addElement的子项都不会显示。
我们给container赋一个皮肤。
var container = new egret.gui.SkinnableContainer();container.skinName = testSkin;container.addElement(uiAsset);//皮肤类 class testSkin extends egret.gui.Skin {private contentGroup:egret.gui.Group;public get skinParts() {return ["contentGroup"]}constructor() {super();}public createChildren():void {super.createChildren();var group = new egret.gui.Group();this.contentGroup = group;this.addElement(group);} }
testSkin当中有一个contentGroup,这样uiAsset才会显示出来。
转载于:https://www.cnblogs.com/guessWhat/p/4306331.html
关于gui的skinnableContainer的一点问题相关推荐
- java swt 双屏_Java中AWT、Swing与SWT三大GUI技术的原理与效率差异
看了一下对Java GUI讨论的帖子,所以写了一篇文章来阐述一下各种GUI技术的优劣. Java世界中,目前最知名的三大GUI库分别是: 1.AWT(Abstract Window Toolkit)抽 ...
- 在 GUI 控件中使用布局和容器: CBOX 类
目录 1. 介绍 2. 目标 3. 类 CBox 3.1. 布局样式 3.2. 计算控件之间的间隔 3.3. 对齐 3.4. 部件渲染 3.5. 部件大小调整 3.6. 递归渲染 4. 在对话框窗口里 ...
- java GUI版坦克大战
★最近闲的无聊,刚好看了下java的GUI,然后就做了个坦克大战练练手. ★以下是效果图 ★用到的知识也就j算ava的基础,包括java的语法,面向对象的思路,GUI,多线程,一点文件操作知识等. ★ ...
- CMake结合Visual Studio中开发Qt应用程序注意事项
Qt工程管理 个人比较偏爱于使用CMake来管理C++工程,因为只要编写一个CMakeLists.txt文件,就可以在Windows和Mac上生成各自的IDE工程.在Windows上, CMake自然 ...
- android的窗口机制分析------ViewRoot类
ViewRoot是GUI管理系统与GUI呈现系统之间的桥梁,根据ViewRoot的定义,我们发现它并不是一个View类型,而是一个Handler. 它的主要作用如下: A. 向DecorView分发收 ...
- Qt-Threads和QObjects详解
简述 QThread继承自QObject,它发射信号(signals)以表明线程执行开始或结束,并提供了一些槽函数(slots). 更有趣的是,QObjects可以在多线程中使用,发射信号以在其它线程 ...
- Qt之Threads和QObjects
简述 QThread继承自QObject,它发射信号(signals)以表明线程执行开始或结束,并提供了一些槽函数(slots). 更有趣的是,QObjects可以在多线程中使用,发射信号以在其它线程 ...
- matlab7 fig exe 阴影,Matlab 生成完全独立运行的 EXE文件的问题请教
如何将matlab gui文件编辑成exe可执行文件 我现在用Matlab M文件写了一个计算程序,当输入一些数时,通过程序,计算出一些结果.(比如我的 程序是sum=(a+b+c)/d,即给定a,b ...
- 训练好的深度学习模型是怎么部署的?
训练好的深度学习模型是怎么部署的? 来源:https://www.zhihu.com/question/329372124 作者:田子宸 先说结论:部署的方式取决于需求 需求一:简单的demo演示,只 ...
最新文章
- atom配置python环境_Win10如何配置Python的环境变量
- Microsoft Office企业项目管理(EPM)解决方案
- MySQL中用户授权/删除授权的方法
- jmeter 循环使用csv数据_如何通过jmeter读取csv文件行数来设置循环控制器的总数...
- 快速数据库框架_快速学习新的数据科学概念的框架
- 小数点化分数的过程_分数和小数的互化
- STM32F103单片机使用内部RC振荡器做时钟源
- tensorflow python2迁移python3_tensorflow在python2和python3上的安装教程
- 打造物联网+WiFi融合新模式 华三通信发布卫星AP
- php 图片 中文乱码,php utf8页面验证码图片中文乱码
- danfoss 变频器的profinet通讯调试_西门子G120变频器S7-300之间的PN通讯
- 插座断电提醒(测试阶段)
- 解决Windows服务器localhost可以访问,IP无法访问的问题
- Typora文字变红
- 锤子终究走起了小米的路子
- 芯片学生党必会的行业英文术语
- 智能车图像部分——摄像头寻迹
- Docer镜像的导入导出
- 丰田生产方式确实很经典
- JAVA SE、JAVA EE、JAVA ME区别
热门文章
- python apply_async函数_进程池未执行apply_async中添加的函数就直接结束了
- redis是什么_什么是Redis?为什么我们要用Redis?
- android monitor突然不能显示
- pdh光端机的优点介绍
- PoE交换机的4种连接方法
- 【渝粤教育】国家开放大学2018年春季 8623-22T燃气行业法律法规 参考试题
- 【渝粤教育】国家开放大学2018年春季 4996T水土保持技术 参考试题
- 【渝粤教育】 国家开放大学2020年春季 1050金融理论前沿课题 参考试题
- 【渝粤教育】电大中专幼儿园课程论 (1)作业 题库
- 【渝粤教育】电大中专消费者心理学_1作业 题库