文章转自:点击打开链接

自定义 列表内容

[参考]

1 List组件用法 http://www.starlinglib.com/wiki/Feathers:list

[ENGLISH] http://wiki.starling-framework.org/feathers/list

2 自定义列表 Creating Custom Item Renderers http://www.starlinglib.com/wiki/Feathers:item-renderers

[ENGLISH] http://wiki.starling-framework.org/feathers/item-renderers

[正文]

DefaultListItemRenderer只能改背景,位置,不能加文本,按钮,

要自定义
类似OBJ-C,要自定义CELL内容,要创建CELL类
参考2,是起点, 继承FeathersControl实现IListItemRenderer接口
解读>前3个方法是接口实现.index的getter/setter方法,父owner的getter/setter方法,data的getter/setter方法
isSelected比较特殊
initialize是添加自定义的地方,标签
draw?
commitData把数据显示出来
layout排列 怎么使用?INVALIDATION_FLAG_DATA 无效标签数据

//this._list.dataProvider = new ListCollection([一个数组,里面包括对象,数据放在对象里]);

官网Demo的显示--2种写法



写法1)指定渲染工厂

_list.itemRendererFactory =tileListItemRendererFactory;

protected function tileListItemRendererFactory():IListItemRenderer
{
const renderer:BasicItemRenderer = newBasicItemRenderer();
return renderer;
}
相关类
public class BasicItemRenderer extends FeathersControl implementsIListItemRenderer
写法2)指定渲染类型
this.list.itemRendererType = GalleryItemRenderer;
相关类
public class GalleryItemRenderer extendsFeathersControl implementsIListItemRenderer

2种做法,结果一样,都是指向FeathersControl 子类,很明显,用itemRendererType 更简单


写法:
public class GalleryItemRenderer extends FeathersControl implements IListItemRenderer

注意,不指定主题,组件不显示。
要显示组件,指定每个组件的textRendererFactory,相当于给每个组件指定不同的主题。
应该是
[java] view plaincopy

  1. var label:Label =newLabel();
  2. label.textRendererFactory= function():ITextRenderer
  3. {
  4. var renderer:TextFieldTextRenderer = newTextFieldTextRenderer();
  5. renderer.textFormat = newTextFormat("Arial",16,0xff0000,
  6. null,null,null,null,null, TextFormatAlign.CENTER );
  7. returnrenderer;
  8. }
  9. label.text = 'Hello';
  10. addChild(label);

而不是

[java] view plaincopy

  1. var label:Label =newLabel();
  2. label.text = 'Hello';
  3. addChild(label);






label要显示,

itemRendererType CELL的渲染类型

itemRendererFactoryCELL的渲染工厂,没有设置主题时.

defaultSkin,背景

http://feathersui.com/documentation/

//renderer.disabledSkin = new Image( texture01 );//禁用时的皮肤
//renderer.downSkin = new Image( texture01 );//按下时的皮肤
//renderer.downIcon//按下时的ICON
//renderer.hoverIcon //移上时的ICON
//renderer.hoverSkin  //移上时的皮肤
//renderer.iconPosition//icon的位置
//renderer.iconOffsetX//icon的偏移值
//renderer.iconOffsetY//icon的偏移值
//renderer.itemHasIcon = false;//不显示图标
//renderer.itemHasLabel = false;//不显示图标
renderer.maxWidth  = 150;//宽高
renderer.maxHeight  = 150;//宽高
renderer.minWidth  = 150;//宽高
renderer.minHeight  = 150;//宽高

,this._list.itemRendererFactory = tileListItemRendererFactory; 是设置样式.不能改变列表内容,

package view.thumbsview

_list = new List();
_list.layout = listLayout;
_list.backgroundSkin = new Quad( 100, AppSettings.THUMBS_PANEL_HEIGHT, 0x222222 );
_list.scrollerProperties.horizontalScrollPolicy = Scroller.SCROLL_POLICY_ON;
_list.scrollerProperties.snapScrollPositionsToPixels = true;
_list.itemRendererType = GalleryItemRenderer;
_list.itemRendererProperties.labelField = "title";
_list.addEventListener( Event.CHANGE, onListChange );
addChild( _list );

LIst类feathers.controls.List

itemRendererType实例化CELL的类

反编译怎么做

反编译Feathers组件.swf

反编译,复制examples包到feathers下面

报错。。。。。。修改代码->

1)把文档类ComponentsExplorerWeb的start函数,38-39行

//var _local1:Class = (getDefinitionByName("feathers.examples.componentsExplorer.Main") as Class); //this._starling = new Starling(_local1, this.stage);改称this._starling = new Starling(Main, this.stage);

2)修正图片类feathers.examples.componentsExplorer.screens.ButtonScreen,的 private static const SKULL_ICON:Class = skull_png$435b761c1197946c42f6421afff9c7eb-630982242;改称[Embed(source = "/assets/SKULL_ICON.png")]         private static const SKULL_ICON:Class;

成功。。。。。

修改ListScreen

[java] view plaincopy

  1. this._list =newList();
  2. this._list.dataProvider =newListCollection(_local1);
  3. //this._list.typicalItem = {"text":"项目 10"};//典型项目,,没什么用
  4. this._list.isSelectable =this.settings.isSelectable;//是否可选
  5. this._list.scrollerProperties.hasElasticEdges =this.settings.hasElasticEdges;//是否有弹性,废话
  6. this._list.itemRendererProperties.labelField ="text";
  7. this._list.addEventListener("change", list_changeHandler);//事件
  8. this.addChildAt(this._list,0);
  9. this._backButton =newButton();//回退按钮
  10. this._backButton.label ="返回";
  11. this._backButton.addEventListener("triggered", backButton_triggeredHandler);
  12. this._settingsButton =newButton();
  13. this._settingsButton.label ="设置";
  14. this._settingsButton.addEventListener("triggered", settingsButton_triggeredHandler);
  15. this._header =newHeader();
  16. this._header.title ="List";
  17. this.addChild(this._header);
  18. this._header.leftItems =new<DisplayObject>[this._backButton];//左按钮
  19. this._header.rightItems =new<DisplayObject>[this._settingsButton];//右按钮
  20. this.backButtonHandler =this.onBackButton;

根据下面

http://www.starlinglib.com/wiki/Feathers:item-renderers

博客

http://jackblog.diandian.com/

论坛

http://forum.starling-framework.org/forum/feathers

搜索list.dataProvider

作了自定义渲染项目.有效果,但是用List.dataProvider来更新,没有变化.如下

[java] view plaincopy

  1. function create()
  2. {
  3. //works
  4. list = newList();
  5. list.dataProvider = newListCollection(['1','2']);
  6. }
  7. function updateList()
  8. {
  9. //doesn't work
  10. list.dataProvider = null;
  11. list.dataProvider = newListCollection(['1','3']);
  12. }

list.dataProvider.updateItemAt(i)遍历所有项也灭有效果,

还用了item自己的invalidat,只是放在ENTERFRAME事件有用。这不好。。。。。

http://forum.starling-framework.org/topic/list-skin-icons#post-15016

List皮肤Icon

有没有办法在itemRendererFactory里面放个判断语句,来检查provider的数据。给渲染其加个默认icon。。。

列表第一行要加个icon,其他行不要。

[java] view plaincopy

  1. var data:Array = [
  2. { label: '', usehomeicon:true},
  3. { label: '01', usehomeicon:false}];
  4. list = newList();
  5. list.layout = newHorizontalLayout();
  6. list.itemRendererFactory = function():IListItemRenderer
  7. {
  8. var renderer:DefaultListItemRenderer = newDefaultListItemRenderer();
  9. var defSkin:Image = newImage(DataModel.DEVICE_PROFILE.UIAtlas.getTexture('button-up-skin'));
  10. var defSelSkin:Image = newImage(DataModel.DEVICE_PROFILE.UIAtlas.getTexture('button-down-skin'));
  11. var defDisabledSkin:Image = newImage(DataModel.DEVICE_PROFILE.UIAtlas.getTexture('button-disabled-skin'));
  12. //THIS IS WHERE I NEED TO MAKE AN ICON, BUT I THINK RENDERER.DATA ISN'T THE SAME THING AS THE list.dataProvider
  13. if(renderer.data && renderer.data.usehomeicon) renderer.defaultIcon =newImage(DataModel.DEVICE_PROFILE.UIAtlas.getTexture('homeicon_up'));
  14. renderer.defaultSkin = defSkin;
  15. renderer.defaultSelectedSkin = defSelSkin;
  16. renderer.disabledSkin = defDisabledSkin;
  17. renderer.paddingLeft = 22* model.scaleFactorH;
  18. renderer.height = 60* model.scaleFactorV;
  19. renderer.defaultLabelProperties.textFormat = newBitmapFontTextFormat(TextField.getBitmapFont(DataModel.FONT_APEX_MEDIUM),24* (model.scaleFactorV),0x585858);
  20. renderer.horizontalAlign = HAlign.LEFT;
  21. renderer.defaultSelectedLabelProperties.textFormat = newBitmapFontTextFormat(TextField.getBitmapFont(DataModel.FONT_APEX_MEDIUM),24* (model.scaleFactorV),0xFFFFFF);
  22. renderer.onRelease.add( renderer_onRelease );
  23. returnrenderer;
  24. }

加1行renderer.itemHasIcon =false;

这样就能用defaultIcon了。。。

这样所有按钮都有icon了,我只是第1行`要

噢。。。我知看你代码,,,用这个。。iconTextureFunction ,来设置itemHasIcon 。。。

感谢。。。。。。

Feathers组件--之--列表相关推荐

  1. Feathers组件的宽度或高度属性,为什么我得到的值是0

    Feathers组件使用一个失效系统延迟一会儿繁重的重绘,这样你可以在一个时间内改变多个属性.如果你还没有明确地设置宽度和高度,他们会自动 调整自身到一套"理想"的尺度.然而,这并 ...

  2. iview 下拉select样式_iview的select组件的列表样式和点击都无效

    iview的select组件用按需引入的方式加载这个组件之后列表样式和点击都无效,但是在main.js全局引入iview之后再用这个select组件又没有这个问题,main.js里面只引入了样式文件, ...

  3. uniapp实现组件化列表开发

    在使用uniapp开发的时候我们经常需要使用到组件化开发,这样可以减少代码的冗余,今天我来分享一下我的组件化列表开发 创建目录-MyUniapp-components-modeItem-index.v ...

  4. 微信小程序 scroll-view组件实现列表页实例代码

    这篇文章主要介绍了微信小程序 scroll-view组件实现列表页实例代码的相关资料,scroll-view组件介绍scroll-view是微信小程序提供的可滚动视图组件,其主要作用是可以用来做手机端 ...

  5. html 价格列表组件,评价列表ratings组件

    需要注意的是main.js里面需要取消vue-router的默认路由,src/main.js的router.replace('/goods');需要去掉 原因是在添加了其他页面(原来路由只有一个页面g ...

  6. CRM项目之stark组件之列表展示页面详细功能实现3

    分页 分页器组件代码 """ 分页组件 """class Pagination(object):def __init__(self, cur ...

  7. CRM项目之stark组件之列表页面功能补充4

    排序 用户可以在自定义的handle类中来决定排序的规则 StarkHandel类中编写如下代码,给用户留出接口 class StarkHandle(object):order_list = [] # ...

  8. 让element-ui的el-upload组件文件列表中文件图标自定义显示

    网上找了一堆都没有什么头绪, 其中有在上传文件过程中修改class达到突变更换的目的,但是引入了多文件和多组件的复杂场景后效果不尽人意, 比如删除文件或者回显没有办法正常显示图标了. 在研究了下, 因 ...

  9. 列表中滚动鼠标Tooltip文本提示组件在列表中出现错位问题优化、elememt库的组件;

    项目问题:为了展示隐藏标题全部的文本内容,通过引入el-element组件tooltip 文本提示组件:需求是列表中的标题,当列表展示条数超出规范区域长度时添加了隐藏滚轮效果.当鼠标点击标题提示too ...

最新文章

  1. TI公司dsp的cmd配置文件的说明
  2. 强化学习1——策略,价值函数,模型
  3. 5.MongoDB索引
  4. 基于python的文件加密传输_基于python实现文件加密功能
  5. java start打开cmd窗口并停住_浅析Java命令执行
  6. 数据结构经典问题——出栈顺序 转载至:canlynet微博
  7. 如果背单词,可能需要的参考辞典...
  8. JDK和JRE的区别和联系
  9. STM32硬件编程_学习思路
  10. 关于svn(客户端)在安装完成过程中所遇到的一点问题
  11. 基于贪婪的高效Lidar-SLAM特征选择(ICRA2021)
  12. 解决com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
  13. 稳压二极管工作在什么区域?稳压二极管VRWM和VBR是什么?
  14. 手写杀毒软件——放心的安全卫士
  15. CAMP模型——估计资本成本的模型
  16. 【微软Visual Studio面世20周年巨制】全宇宙功能最强大IDE Visual Studio 2017 正式版发布
  17. 微信小程序相关知识点和云音乐项目制作遇到的问题及解决
  18. 【make、makefile】
  19. 网站调用在线二维码生成 api
  20. vue学习之mintui picker选择器实现省市二级联动

热门文章

  1. nginx反向代理打印日志_nginx反向代理笔记
  2. 【小记】关于录屏大师录制视频的导出问题
  3. 2021年5月审核员考试《认证通用基础》审核员考试真题
  4. JavaScript中Object.getOwnPropertyNames()与Object.keys(obj)的区别
  5. Linux 文本三剑客—grep命令
  6. QtQuick资源文件问题
  7. 基于html的音乐播放设计,基于HTML5技术的音乐播放器的设计与实现
  8. 临床药师对眼科使用脑苷肌肽治疗白内障的干预结局
  9. 优化大量图片加载recyclerview列表的滑动效果
  10. 不到30行python代码爬取金庸小说