UI组件设计
tiangej
这个作者很懒,什么都没留下…
展开
-
TextLine 与 buttonMode
执行下面代码,你会发现当鼠标移入TextLine区域时,光标变成手型。这与预期相反。怀疑这是AS的Bug。当把 s.mouseChildren=false; 有效后,光标不再变成手型。package { import flash.display.Sprite; import flash.text.engine.ElementFormat; import flash.text.en原创 2016-12-26 13:41:45 · 1041 阅读 · 0 评论 -
设计:DataGrid内部不支持列排序
DataGrid根据外部的数据源的顺序来显示内容。如果其内部调整数据显示顺序,1:不一定满足具体的需求 2:对于大数据的排序,AS执行效率是个问题 3:增加了DataGrid自身的复杂性,不利于维护和扩展。 设计思路:1. DataGrid内部不提供数据排序2. 将排序功能交给DadaGrid外部的应用去实现。3. DataGrid内部提供触发排序的接口4原创 2016-02-05 17:58:19 · 613 阅读 · 0 评论 -
as3 性能相关的帖子
http://www.asarea.cn/diary/160http://blog.163.com/sjy_814/blog/static/7780116420125161920292/http://as3.iteye.com/blog/905039http://bbs.9ria.com/thread-132842-1-1.html原创 2016-01-08 17:45:39 · 359 阅读 · 0 评论 -
500个TextField周期性更新数据,帧频在更新时刻,降到了15帧/秒
如果使用TextField作为Grid单元格,在以下前提下测试,帧频降到了15帧/秒。所以为了提高帧频,需要另外想辙。package { import flash.events.Event; import flash.text.TextField; import iAS.MyApp; public class aaa extends M原创 2016-01-27 15:05:14 · 573 阅读 · 0 评论 -
List/Grid: 预先规定了项目的显示方式,因此不用在渲染器中对其布局
List/Grid的初次布局是由渲染器根据宽高尺寸和显示内容的实际大小计算完成的。在宽高不变的前提下,滚动条滚动也会更改UI布局(行位置的调整),但此时的UI布局变化不需要渲染器,而是组件内部控制的。这样,【布局】这个功能将分散在组件本体和渲染器两处。对于UI的显示控制,如果不加以规则限制,则代码看起来会分工不明确。代码严谨的结构性受到影响。*当然,任何事情都有特例,结原创 2016-01-22 11:00:33 · 581 阅读 · 0 评论 -
Gird: 两种结构设计
>>实验条件: 200条数据,每条数据中有40个项目 Grid宽高= 1300*700>>实验结果:1. 一次性实例化所有单元格(200*40=8000个) 优点: Scroll性能好,帧频可达60 缺点: 初始化时间相对长,占用更多的内存 设计上的特点:把消耗性能的处理集中在初始化。以原创 2016-01-19 13:54:10 · 491 阅读 · 0 评论 -
Chart: 计算X轴标签个数
在图表中,横轴通常表示分类,纵轴表示数值。纵轴的数值标签表示,是需要算法支持的,参见【图表轴刻度的思路,算法: 转载X】,略过。这里说说横轴(X轴)的标签。 用K线图做例子,在一个图中表示的蜡烛线非常多,每根线对应一个时间,这些时间就是X轴上要表示的标签。如果每根线的时间都在X轴表示出来,由于数量太多,就会相互重叠,根本分不清彼此,上面的文字让看不出来。因此就要减少其数量。原创 2015-09-08 13:17:47 · 4341 阅读 · 0 评论 -
图表轴刻度的思路,算法: 转载2【关于坐标轴刻度取值的问题】
http://www.cnblogs.com/pengcl/p/3278388.html 由于工作原因,需要画图表,但在图表的该度的取值上就出现了问题,但现在关于图表的控件已经很多了,那应该也有成熟的算法了,经过在网上努力寻找前人们是足迹,算给我找到了这编文章,问题总算解决了!!!---故记。(1)步长规范化是关键 一般地,我们在标定坐标轴时,给出的参数是:起点、终点和刻度数,因为转载 2015-08-17 20:36:52 · 2946 阅读 · 0 评论 -
图表轴刻度的思路,算法: 转载1【最简易的坐标刻度校正算法】
转载: http://www.cppblog.com/guogangj/archive/2009/08/26/94451.html?opt=admin为了防止信息找不到,复制了全文,如下: blog好一些时间没更新了,一方面是自己有些懒散了,另一方面是觉得难找到一个自己很满意的blog空间,看来看去综合上来说还是cppblog.com最好,虽然也有许多不尽人意之处。今天转载 2015-08-17 20:35:15 · 4533 阅读 · 0 评论 -
图表轴刻度的思路,算法: 转载4【Excel是如何自动计算坐标轴刻度】
http://office.wps.cn/officeexcel/18720-2013-04-10-16-35-12-822.html 当创建一个图表时,Excel会分析数据然后设置坐标轴刻度.Excel是如何计算最小和最大刻度值的呢?在Microsoft产品支持服务网站上,可以找到部分答案.Excel计算坐标轴刻度使用一种相对复杂的算法.根据最小值和最大值的符号不同,计算也不同(转载 2015-08-17 20:41:00 · 6385 阅读 · 0 评论 -
图表轴刻度的思路,算法: 转载3【求算法:图表控件,如何确定坐标轴的范围和刻度?】
http://bbs.csdn.net/topics/340165746转载 2015-08-17 20:39:56 · 1665 阅读 · 0 评论 -
List/Datagrid与滚动条的关联
滚动条需要外部提供至少如下信息才能起作用:1. min / max2. 步长 List/Datagrid需要滚动条,那么把什么值传给滚动条呢?: 以“行”为单位进行内容更新 min = 0 max = 行数-1 步长 = 1 : 以“像素”为单位进行内容更新原创 2015-05-05 14:54:23 · 769 阅读 · 0 评论 -
List是Datagrid的基类
Datagrid = 外壳 + 横滚动条 + 纵滚动条 + 内容容器 + 遮罩 + 标题List = 外壳 + 横滚动条(可无) + 纵滚动条 + 内容容器 + 遮罩 ================================Datagrid的【内容容器】 = 若干【行】构成List 的【内容容器】 = 若干【原创 2015-05-05 10:29:49 · 654 阅读 · 0 评论 -
Menu: 只能通过隐藏和显示控制,而不能物理增减项目
只是规则。Menu在获得数据源时,实例化所有子项。只有更换数据源的时候,才会发生实质的增减子项。在数据源不变的前提下,子项通过显示和隐藏来改变整体外观原创 2016-07-28 15:34:13 · 225 阅读 · 0 评论 -
Menu: 是对已经存在的菜单项目进行状态更新,而非重新实例化各个项目
如题原创 2016-07-18 15:02:17 · 289 阅读 · 0 评论 -
图表概述
>>轴的分类-----------------------------------------------------------------1. 类目轴 ( 时间轴也属于类目轴 )2. 数值轴>>图表分类(按照轴的种类进行分类)-------------------------------------------------------原创 2016-11-28 11:38:51 · 544 阅读 · 0 评论 -
图表基类功能
1 能够在指定位置绘制X轴,Y轴( 能够将X轴绘制到上部,也能绘制到下部; 能够将Y轴绘制到左侧,也能绘制到右侧 )2 能够为轴绘制刻度线。对于X轴,刻度线可以在轴下部也可以在轴上部。对于Y轴,刻度线可以在左侧也可以在右侧3 能够反转轴的方向( 比如: 在笛卡尔坐标系中,Y轴向上代表数量的增加。反转后,Y轴向下代表数量的增加)4 能够计算数值轴的标签间隔( interv原创 2016-11-28 11:19:26 · 298 阅读 · 0 评论 -
Chart原则: 没有万能图表,如果足够简单那么定制化是最好的
如题原创 2016-11-28 09:41:33 · 662 阅读 · 0 评论 -
性能优化1: 能在一个循环内处理的事情,不要分成多个循环
观察如下代码,分开循环会造成运行时间增加。时间分别为:167213package{ import flash.display.Sprite; import flash.utils.getTimer; public class ddd extends Sprite { public function ddd() { var i:int ;原创 2016-11-02 15:48:38 · 836 阅读 · 0 评论 -
图表分类
>>概念1. 等间隔图(类目图) 序列在某方向上(X或Y)等间隔排列。 比如: K线图,柱状图2. 不等间隔图 序列在任何方向上都不是等间隔排列。 比如: 散点图===============================================================通过分析各类图原创 2016-11-29 16:40:00 · 1178 阅读 · 0 评论 -
非大数据条件下,使用Array而不是用Vector
Vector比Array运行速度快,在大循环中有体现。循环次数1万以内,速度差别不大。而准备Vector数据却比Array麻烦得多。准备数据是使用者的工作,Vector使用体验不够友好。让使用者使用不爽的API接口是不会得到很好评价的Array = [ a,b,c,d] ----------一步Vector = new Vector();原创 2016-10-19 16:35:41 · 422 阅读 · 0 评论 -
Chart: 计算X轴标签个数1 (正确的分析) --- 确定标签间隔数
这是对【eCharts】版本3源码的分析结果: 通过遍历,尝试找出标签间隔数。源代码位置: echarts-master\src\coord\axisHelper.js 函数名:axisHelper.getAxisLabelInterval【思路】===================================================原创 2016-09-14 18:38:37 · 2051 阅读 · 0 评论 -
转载: 《Flash:DisplayObject的矩阵旋转(移动/修改注册点,修改旋转点)》
http://www.cnblogs.com/kenkofox/p/3305241.html为防止网页消失,复制其内容如下:=========================================================var a:Sprite = new Sprite();a.graphics.beginFill(0);a.graphics.draw转载 2016-10-14 11:59:19 · 366 阅读 · 0 评论 -
图表: 要素构成
轴 : axis刻度 :tick系列 : series图例: legend原创 2016-09-08 17:36:00 · 2316 阅读 · 0 评论 -
Chart: 计算X轴标签个数1 (错误的分析)
>>问题描述1. 字符串数组S,有多个元素(个数>1)2. 数组每个元素的字符串长度不等。例如: S[0]="你好吗" , S[1]="不好" , S[2]="为什么呢" , S[3]="壮志未酬呢" , S[4]="那就" , S[5]="好好干" , S[6]="好" 。。。 *可以假定每个字符宽度统一占10个像素3. 有限宽原创 2016-09-13 18:14:30 · 367 阅读 · 0 评论 -
Chart: 备份
package base{import iAS.myNamespace.myInternal;use namespace myInternal;public class Chart_Base1 extends Container_Base{ //***************************************************************原创 2016-09-13 15:53:09 · 243 阅读 · 0 评论 -
Menu暴露出的接口内容
1. 设定 / 更改数据源2. 获取指定节点状态(比如: 有效无效状态,显隐状态,是否有子项,是否被选择等)3. 修改指定节点状态(例子同上)原创 2016-07-21 13:43:17 · 400 阅读 · 0 评论 -
组件主流程
组件实例化期间 1. 生成固态子组件 2. 设置默认属性 3. 添加事件监听器 4.为组件附着渲染器(由组件外部调用)EnterFrame周期 5.渲染 5.1.将子组件的引用设置给渲染器 5.2.设置渲染器默认属性 5原创 2015-04-12 17:34:40 · 448 阅读 · 0 评论 -
DataGrid
DataGrid: 显示有重复性的数据集。不能无规律地任意合并单元格。 *DataGrid是通用型组件,有适用范围。它不是万能的。 通常,那些需要灵活合并单元格的场合都不用来显示重复性数据集。需要根据需求自定义个性化组件。原创 2015-04-07 11:57:01 · 487 阅读 · 0 评论 -
带滚动条的文本控件特点
在WepApp领域,表现大段文字的原创 2014-04-04 11:41:48 · 942 阅读 · 0 评论 -
Slider和Scroll
Slider和Scroll(除去上下左右箭头的剩余部分)从结构上和动作触发机制上是相同的,从机能上是相似的。因此可以划归到一类当中。Slider是基类,Scroll是派生类。 下面以横向Slider和Scroll为例进行说明:===========================================================>>相同点1. 结构原创 2014-04-03 15:43:31 · 1772 阅读 · 0 评论 -
UI组件设计:减少冗余代码--类继承关系的考量
以横纵滚动条为例。在类继承关系的设计中,就是如下关系 BaseScroll | |-------------------| HScroll VScroll BaseScroll中将抽象出HScroll/VScroll的共性。有一种设计思路:在BaseSc原创 2014-04-01 10:20:05 · 1523 阅读 · 0 评论 -
现存Slider的动作类型
1. Flex 鼠标在滑竿上原创 2014-04-16 17:09:42 · 924 阅读 · 0 评论 -
类设计要点: 变量/函数的命名要泛化,减少代码”冗余“
类继承的情况下,可能会产生某种“冗余”,举例说明。 //横向滚动条class A{ public var _const_height:int = 20; //固定边长:高度 。。。} //纵向滚动条(继承自A)class B extends A{ public var _const_w原创 2014-03-19 15:51:42 · 1244 阅读 · 0 评论 -
Scroll设计
min :max :/ CurrentValue 代表原创 2014-04-15 12:01:09 · 625 阅读 · 0 评论 -
UI组件宽高: 不必设最小宽高
>>最小宽高的目的为宽高设定负值会造成宽高自动变为系统默认值(100*100)。设定最小宽高,可以防止这一点>>可能引发的问题(例)1. 缩放动画 缩小对象的宽高,达到最小值的时候,动画效果消失2. 遇到有内边距的设置时,如果内边距过大,可能使得有效空间缩小到最小宽高以下,从而产生预期外的效果>>措施既然最小宽高的引入会引发负面影响,莫不原创 2014-03-10 10:56:44 · 792 阅读 · 0 评论 -
UI组件: 使用命名空间,既保证私密性,又具有“隐秘”的开放性 (圣诞节彩蛋)
UI组件的结构(功能)部分和皮肤是分开的独立对象。皮肤内部不应该定义和功能有关的任何方法。有些情况下皮肤的确需要完成一些功能,所以需要调用结构部分的函数。常规方法是将这些函数定义为Public。Public过于开放。如果不想公开给外部,那么怎么办?使用自定义命名空间。这些自定义命名空间属于UI组件的内部“潜规则”。既具有“隐秘”的开放性,对外又具有私密性(不可见)。原创 2014-03-14 17:57:49 · 798 阅读 · 0 评论 -
UI组件设计: 不完全编程
UI组件直接的使用者是IT工程师。遵循组件使用规范作为开发规则,需要IT工程师严格遵守。比如设置按钮的宽度时,不应该小于零。于是乎,在UI组件设计和开发中,不必要去检查宽度是否小于零(因为使用规则上不允许这么去设置)。于是乎,“不完全编程”出现了。用规则约束使用者,而不是讲规则固化到UI组件代码中。这就是我命名的“不完全编程”。好处在哪里?代码少原创 2014-03-13 16:34:09 · 818 阅读 · 1 评论 -
UI组件: 向皮肤注入Callback函数是否有必要?是否有更合理的结构?----取消本文章
Callback方式的增加,无疑增加了充分理解代码的难度。Callback方式是否真的有必要?有么有更合理更容易理解的代码结构? 有必要。皮肤不能完成的角色和功能通过Callback函数来完成(例如:文本框皮肤不能处理文字渲染,必须调用主体TextField来完成。这里利用了Callback函数)。注意:Callback不是用来传递数据的。传递数据完全交由事件机制来处理。原创 2014-03-06 18:18:53 · 729 阅读 · 0 评论 -
UI组件设计:充分利用事件机制
UI组件 = 容器 + 子组件(复数) 以下拉框为例,点击三角形按钮,将弹出下拉框体。此时事件的发出者(event.target)是三角形按钮(子组件),而非下拉框本体。 是否要阻止子组件事件向外传播?否(1)。UI组件的嵌套层次通常不多(3层以上的很少)。由子组件发出的事件途经的显示列表很短,传播产生的运行性能损失完全可以忽略不计。(2)。事件机制使得代码结构设计变得原创 2014-03-06 17:34:47 · 689 阅读 · 0 评论