创建一个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的一点问题相关推荐

  1. java swt 双屏_Java中AWT、Swing与SWT三大GUI技术的原理与效率差异

    看了一下对Java GUI讨论的帖子,所以写了一篇文章来阐述一下各种GUI技术的优劣. Java世界中,目前最知名的三大GUI库分别是: 1.AWT(Abstract Window Toolkit)抽 ...

  2. 在 GUI 控件中使用布局和容器: CBOX 类

    目录 1. 介绍 2. 目标 3. 类 CBox 3.1. 布局样式 3.2. 计算控件之间的间隔 3.3. 对齐 3.4. 部件渲染 3.5. 部件大小调整 3.6. 递归渲染 4. 在对话框窗口里 ...

  3. java GUI版坦克大战

    ★最近闲的无聊,刚好看了下java的GUI,然后就做了个坦克大战练练手. ★以下是效果图 ★用到的知识也就j算ava的基础,包括java的语法,面向对象的思路,GUI,多线程,一点文件操作知识等. ★ ...

  4. CMake结合Visual Studio中开发Qt应用程序注意事项

    Qt工程管理 个人比较偏爱于使用CMake来管理C++工程,因为只要编写一个CMakeLists.txt文件,就可以在Windows和Mac上生成各自的IDE工程.在Windows上, CMake自然 ...

  5. android的窗口机制分析------ViewRoot类

    ViewRoot是GUI管理系统与GUI呈现系统之间的桥梁,根据ViewRoot的定义,我们发现它并不是一个View类型,而是一个Handler. 它的主要作用如下: A. 向DecorView分发收 ...

  6. Qt-Threads和QObjects详解

    简述 QThread继承自QObject,它发射信号(signals)以表明线程执行开始或结束,并提供了一些槽函数(slots). 更有趣的是,QObjects可以在多线程中使用,发射信号以在其它线程 ...

  7. Qt之Threads和QObjects

    简述 QThread继承自QObject,它发射信号(signals)以表明线程执行开始或结束,并提供了一些槽函数(slots). 更有趣的是,QObjects可以在多线程中使用,发射信号以在其它线程 ...

  8. matlab7 fig exe 阴影,Matlab 生成完全独立运行的 EXE文件的问题请教

    如何将matlab gui文件编辑成exe可执行文件 我现在用Matlab M文件写了一个计算程序,当输入一些数时,通过程序,计算出一些结果.(比如我的 程序是sum=(a+b+c)/d,即给定a,b ...

  9. 训练好的深度学习模型是怎么部署的?

    训练好的深度学习模型是怎么部署的? 来源:https://www.zhihu.com/question/329372124 作者:田子宸 先说结论:部署的方式取决于需求 需求一:简单的demo演示,只 ...

最新文章

  1. atom配置python环境_Win10如何配置Python的环境变量
  2. Microsoft Office企业项目管理(EPM)解决方案
  3. MySQL中用户授权/删除授权的方法
  4. jmeter 循环使用csv数据_如何通过jmeter读取csv文件行数来设置循环控制器的总数...
  5. 快速数据库框架_快速学习新的数据科学概念的框架
  6. 小数点化分数的过程_分数和小数的互化
  7. STM32F103单片机使用内部RC振荡器做时钟源
  8. tensorflow python2迁移python3_tensorflow在python2和python3上的安装教程
  9. 打造物联网+WiFi融合新模式 华三通信发布卫星AP
  10. php 图片 中文乱码,php utf8页面验证码图片中文乱码
  11. danfoss 变频器的profinet通讯调试_西门子G120变频器S7-300之间的PN通讯
  12. 插座断电提醒(测试阶段)
  13. 解决Windows服务器localhost可以访问,IP无法访问的问题
  14. Typora文字变红
  15. 锤子终究走起了小米的路子
  16. 芯片学生党必会的行业英文术语
  17. 智能车图像部分——摄像头寻迹
  18. Docer镜像的导入导出
  19. 丰田生产方式确实很经典
  20. JAVA SE、JAVA EE、JAVA ME区别

热门文章

  1. python apply_async函数_进程池未执行apply_async中添加的函数就直接结束了
  2. redis是什么_什么是Redis?为什么我们要用Redis?
  3. android monitor突然不能显示
  4. pdh光端机的优点介绍
  5. PoE交换机的4种连接方法
  6. 【渝粤教育】国家开放大学2018年春季 8623-22T燃气行业法律法规 参考试题
  7. 【渝粤教育】国家开放大学2018年春季 4996T水土保持技术 参考试题
  8. 【渝粤教育】 国家开放大学2020年春季 1050金融理论前沿课题 参考试题
  9. 【渝粤教育】电大中专幼儿园课程论 (1)作业 题库
  10. 【渝粤教育】电大中专消费者心理学_1作业 题库