没认真看过...现在试试...

EXMl支持内部类

两种支持做为内部类的:Skin和ItemRenderer

优点:

这种最大的好处就是皮肤如果只用一次,不需要单独写成一个exml文件,只需要写在组件所在的exml里就行了。

如果是复用的皮肤,还是单独写成一个exml文件比较好,这样修改的时候只需要修改exml文件一处。

缺点:

没法可视化编辑...比如居个中 (horizontalCenter="0" verticalCenter="0"), 如果你对exml的语法不熟的话...你就...

下面是一个Button的内部皮肤Skin:

<e:Button id="btn" label="Button" x="" y="">
<e:skinName>
<e:Skin states="up,down,disabled" minHeight="" minWidth="">
<e:Image width="100%" height="100%" scale9Grid="1,3,8,8" alpha.disabled="0.5" source="button_up_png" source.down="button_down_png"/>
<e:Label id="labelDisplay" top="" bottom="" left="" right="" size="" textColor="0xFFFFFF" verticalAlign="middle" textAlign="center"/>
<e:Image id="iconDisplay" horizontalCenter="" verticalCenter=""/>
</e:Skin>
</e:skinName>
</e:Button>

一个List的内部皮肤itemRendererSkinName:

<e:List id="list" width="" height="" x="" y="">
<e:itemRendererSkinName>
<e:Skin states="up,down,disabled" minHeight="" minWidth="">
<e:Image width="100%" height="100%" scale9Grid="1,3,8,8" alpha.disabled="0.5" source="button_up_png" source.down="button_down_png"/>
<e:Label id="labelDisplay" top="" bottom="" left="" right="" size="" fontFamily="Tahoma" textColor="0xFFFFFF" text="{data}" verticalAlign="middle" textAlign="center"/>
</e:Skin>
</e:itemRendererSkinName>
</e:List>

将一个exml皮肤转成内部类时,只需要在组件上右键,转换皮肤为内嵌皮肤。

下图是将List的条目皮肤ItemRendererSkin转为内嵌皮肤

转换前:

<e:List width="" height="" x="" y="" itemRendererSkinName="skins.ItemRendererSkin"/>

转换后:

属性面板上的皮肤内嵌到exml里了...如果这个皮肤只使用一次,那么ItemRendererSkin.exml可以删掉了。

<e:List width="" height="" x="" y="">
<e:itemRendererSkinName>
<e:Skin states="up,down,disabled" minHeight="" minWidth="">
<e:Image width="100%" height="100%" scale9Grid="1,3,8,8" alpha.disabled="0.5" source="button_up_png" source.down="button_down_png"/>
<e:Label id="labelDisplay" top="" bottom="" left="" right="" size="" fontFamily="Tahoma" textColor="0xFFFFFF" text="{data}" verticalAlign="middle" textAlign="center"/>
</e:Skin>
</e:itemRendererSkinName>
</e:List>

内嵌皮肤怎么转成exml就不知道了...教程上说一键转换,没找着... ...

找不着就新建一个exml,然后复制粘贴...

立即返回高宽

组件实例化后,childrenCreated里访问立刻返回高宽。原来不是吗...忘了...

如果立刻获取不了,使用validateNow()...

class HomScene extends eui.Component{
private btn:eui.Button; public constructor() {
super();
this.skinName = "HomeSceneSkin";
console.log(this.btn.width); //0
} public childrenCreated(){
console.log(this.btn.width); //100
} private onChange(e:eui.UIEvent){ }
}

EUI EXML内部类Skin和ItemRenderer的更多相关文章

  1. egret之好友列表(滑动列表)

    本文采用List+Scroller实现列表滑动功能 首先新建两个皮肤,一个用做好友界面的显示,一个用作单个好友的显示,新建皮肤如下: 皮肤一取名为:wxMainSkin,添加如下控件 皮肤一取名为:w ...

  2. EUI库 - EXML

        EXML是可以运行时加载解析的   <e:Skin class="skins.ButtonSkin" states="up,down,disabled&qu ...

  3. EUI库 - 概述

        新特性 36k   访问EUI组件宽高时,也会跟原生显示对象的表现一致,立即能得到包含子项的宽高值   统一的显示列表  普通对象和eui对象都可用addChild来添加   一个逻辑组件只管 ...

  4. EUI库 - 皮肤

      皮肤分离机制    皮肤分离机制对制作可复用的外观比较有优势 那对于只使用一次的皮肤呢?如果也拆分出两个文件,显然不太方便.这里我们针对单次使用的皮肤定制了内部类的功能   每个组件都有一个chi ...

  5. 最近这两天看了关于H5游戏开发的一个教程,实践很短暂,看了很多理论的东西,现在呢也只是想回忆回忆关于EUI的部分知识吧

    首先我了解了什么是Egret: Egret中文就是白鹭的意思,Egret是一套H5游戏开发的软件.(纯粹属于个人理解) 其次我对以下几款软件的相关知识做了些了解: Egret Engine(引擎),E ...

  6. EUI ViewStack实现选项卡组件

    一  TabBar+ViewStack实现 这个教程确实没看懂...贼麻烦... 二 RadioButton+ViewStack 在exml中拖动组件RadioButton和ViewStack 设置e ...

  7. EUI HSlider 实现音量控制

    一 HSlider使用 直接拖动到exml上,并赋值默认皮肤 <?xml version="1.0" encoding="utf-8"?> < ...

  8. EUI ToggleButton ToggleSwitch 实现类似音乐开关按钮

    一 ToggleButton和ToggleSwitch区别 没区别,就是继承... export class ToggleSwitch extends ToggleButton { /** * @la ...

  9. Egret 生成 自带EUI 的微信小游戏 踩坑!

    1. 首先,再次被网上一大堆屎一样的资料搞得浪费了我一天时间.各种坑. 2. 本文先讲一种正确的方式,然后再列举坑. 去www.egret.com下载最新的引擎,我的最新版本是5.2.2. 然后就会被 ...

随机推荐

  1. Spring下获取项目根路径--good

    Spring 在 org.springframework.web.util 包中提供了几个特殊用途的 Servlet 监听器,正确地使用它们可以完成一些特定需求的功能.比如某些第三方工具支持通过 ${ ...

  2. js学习笔记12----json数据格式,语法,遍历

    1.json数据格式:var json={} 示例一: var user = {'name':'sese','age':'24','sex':'女'} console.log(user.age); / ...

  3. PHP框架之ThinkPHP项目CMS内容管理系统源码及开发手册视频

    http://download.csdn.net/download/duguqing/4203042

  4. 中国餐馆过程(Chinese restaurant process)

    也就是说假设空桌子有a0个人,然后顾客选择桌子的概率和桌子上人数成正比. 性质: 改变用户的排列方式,桌子的排列方式,概率不变换.

  5. WinInet 小例子

    #include <windows.h> #include <wininet.h> #include <string> #include <iostream& ...

  6. 【转载】C#进阶系列——动态Lamada(二:优化)

    前言:前几天写了一篇动态Lamada的文章C#进阶系列——动态Lamada,受园友xiao99的启发,今天打算来重新优化下这个动态Lamada的工具类.在此做个笔记,以免以后忘了. 一.原理分析 上篇 ...

  7. c++下面的一个单例

    Public FileManager { private FileManager(); public static FileManager Instance=new FileManager(); } ...

  8. 转载:15个最受欢迎的Python开源框架

    出自:http://python.jobbole.com/72306/?replytocom=57112 15个最受欢迎的Python开源框架 Django: Python Web应用开发框架 Dja ...

  9. 关于C++中using namespace std

    原文链接:http://www.kuqin.com/language/20080107/3532.html <iostream>和<iostream.h>是不一样,前者没有后缀 ...

  10. [渗透技巧] Windows命令行下载

    certutil简介 用于证书管理 支持环境: XP  -  Windows 10 全系统 更多:https://technet.microsoft.com/zh-cn/library/cc75534 ...