1. flex是什么说得具体点
让程序员开发flash动画的一个界面程序,程序员主要是打代码,为了让这一部分人,做动画开发,专门跟他们定做了一个,程序员专用的flash.界面。就是这个flex.
我们普通人做动画用flash
程序员做动画用代码格式的flash,就是flex
2. 求帮助 flex中的工具栏组件是什么
flexlib 里面有一个设置个性化按钮的东西,具体可以查看gougle 的api,我写过一个你可以参考下,前提是你必须使用flexlib
Button {
upSkin:ClassReference('flexlib.skins.EnhancedButtonSkin');
overSkin:ClassReference('flexlib.skins.EnhancedButtonSkin');
downSkin:ClassReference('flexlib.skins.EnhancedButtonSkin');
disabledSkin:ClassReference('flexlib.skins.EnhancedButtonSkin');
selectedUpSkin:ClassReference('flexlib.skins.EnhancedButtonSkin');
selectedOverSkin:ClassReference('flexlib.skins.EnhancedButtonSkin');
selectedDownSkin:ClassReference('flexlib.skins.EnhancedButtonSkin');
selectedDisabledSkin:ClassReference('flexlib.skins.EnhancedButtonSkin');
corner-Radii: 6, 6, 6, 6;
border-Colors: #B2DC32, #4b5f0c;
over-Border-Colors: #B2DC32, #4b5f0c;
selected-Border-Colors: #B2DC32, #4b5f0c;
border-Thickness: 1;
border-Alpha: 0.95;
fill-Colors: #B2DC32, #4b5f0c;
fill-Color-Ratios: 0, 255;
over-Fill-Colors: #B2DC32, #4b5f0c;
over-Fill-ColorRatios: 0, 128, 255;
selected-Fill-Colors: #B2DC32, #4b5f0c;
selected-Fill-Color-Ratios: 0, 255;
color: black;
text-Roll-Over-Color: #4b5f0c;
}
3. Flex如何释放或优化内存
FLEX内存释放优化原则:
1. 被删除对象在外部的所有引用一定要被删除干净才能被系统当成垃圾回收处理掉;
2. 父对象内部的子对象被外部其他对象引用了,会导致此子对象不会被删除,子对象不会被删除又会导致了父对象不会被删除;
3. 如果一个对象中引用了外部对象,当自己被删除或者不需要使用此引用对象时,一定要记得把此对象的引用设置为null;
4. 本对象删除不了的原因不一定是自己被引用了,也有可能是自己的孩子被外部引用了,孩子删不掉导致父亲也删不掉;
5. 除了引用需要删除外,系统组件或者全局工具、管理类如果提供了卸载方法的就一定要调用删除内部对象,否则有可能会造成内存泄露和性能损失;
6. 父对象立刻被删除了不代表子对象就会被删除或立刻被删除,可能会在后期被系统自动删除或第二次移除操作时被删除;
7. 如果父对象remove了子对象后没有清除对子对象的引用,子对象一样是不能被删除的,父对象也不能被删除;
8. 注册的事件如果没有被移除不影响自定义的强行回收机制,但有可能会影响正常的回收机制,所以最好是做到注册的事件监听器都要记得移除干净。
9. 父对象被删除了不代表其余子对象都删除了,找到一种状态的泄露代码不等于其他状态就没有泄露了,要各模块各状态逐个进行测试分析,直到测试任何状态下都能删除整个对象为止。
内存泄露举例:
1. 引用泄露:对子对象的引用,外部对本对象或子对象的引用都需要置null;
2. 系统类泄露:使用了系统类而忘记做删除操作了,如BindingUtils.bindSetter(),ChangeWatcher.watch()函数时候完毕后需要调用ChangeWatcher.unwatch()函数来清除引用 ,否则使用此函数的对象将不会被删除;
类似的还有MUSIC,VIDEO,IMAGE,TIMER,EVENT,BINDING等。
3. 效果泄露:当对组件应用效果Effect的时候,当本对象本删除时需要把本对象和子对象上的Effect动画停止掉,然后把Effect的target对象置null; 如果不停止掉动画直接把 Effect置null将不能正常移除对象。
4. SWF泄露:要完全删除一个SWF要调用它的unload()方法并且把对象置null;
5. 图片泄露:当Image对象使用完毕后要把source置null;(为测试);
6. 声音、视频泄露: 当不需要一个音乐或视频是需要停止音乐,删除对象,引用置null;
内存泄露解决方法:
1. 在组件的REMOVED_FROM_STAGE事件回掉中做垃圾处理操作(移除所有对外引用(不管是VO还是组件的都需要删除),删除监听器,调用系统类的清除方法)
先remove再置null, 确保被remove或者removeAll后的对象在外部的引用全部释放干净;
2. 利用Flex的性能优化工具Profile来对项目进程进行监控,可知道历史创建过哪些对象,目前有哪些对象没有被删除,创建的数量,占用的内存比例和用量,创建过程等信息;
总结:关键还是要做好清除工作,自己设置的引用自己要记得删除,自己用过的系统类要记得做好回收处理工作。 以上问题解决的好的话不需要自定义强制回收器也有可能被系统正常的自动回收掉。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yjq8116/archive/2009/01/13/3766930.aspx
4. FLEX工具
德国富莱克斯(FLEX)电动工具
www.flex-tools.com.cn
5. Flex是什么
flex (fast lexical analyser generator) 是 Lex 的另一个替代品。它经常和自由软件 Bison语法分析器生成器 一起使用。Flex 最初由 Vern Paxson 于 1987 年用 C语言 写成。 Flex 手册里对 Flex 描述如下: “flex是一个生成扫描器的工具,能够识别文本中的词法模式。flex读入给定的输入文件,如果没有给定文件名的话,则从标准输入读取,从而获得一个关于需要生成的扫描器的描述。此描述叫做 规则,由正则表达式和 C代码对组成。flex 的输出是一个 C 代码文件--lex.yy.c--其中定义了 yylex() 函数。编译输出文件并且和 -lfl库链接生成一个可执行文件。当运行可执行文件的时候,它分析输入文件,为每一个正则表达式寻找匹配。当发现一个匹配时,它执行与此正则表达式相关的 C代码。” 一个相似的,用 C++语言 的词法分析器生成器是 flex++,包含在 flex 软件包里。 Flex 不是 GNU 工程,但是 GNU 为 Flex 写了手册。
6. FLEX,FLEX工具,FLEX TOOLS
FLEX为PORTER-CABLE的子公司,深圳市诺希德科技有限公司FLEX TOOLS、德国著名表面抛光组套工具生产厂家,其产品经久耐用与易操作性,用途广闻名世界。德国FLEX公司的成功在于创新。1922年,FLEX研发了电动手控工具;1954年,FLEX研发了第一台高速角磨机DL9;为了使角磨机更灵活高效,更人性化,1997年FLEX成为第一个生产天花板与墙壁使用长颈磨砂机的电动工具生产厂家。
7. 如何分析Flex应用的内存泄露问题
Flex采用ActionScript语言作为脚本语言,运行在FlashPlayer虚拟机之上,其垃圾回收机制概括如下:
Flex 应用的对象在内存中被映射成树形结构。这很好理解,每个Flex应用总有一个Application的入口被称为根节点(Root),垃圾收集器从根节点开始遍历每个对象,对可达对象标记为“有效”(有一种例外就是弱引用)。而在这棵树之外的孤岛对象或者由于循环引用形成的孤岛对象集合被标记为“无效”,垃圾收集器会在合适的时间销毁这些无效对象,完成一次垃圾收集。而垃圾收集器是运行在虚拟机中的一个低优先级的守护进程,为了不影响性能,它只在必要的时候才运行。例如在向操作系统申请新内存空间的时候,发生异常的时候等等,因此内存并不是实时回收的。
在Flex应用开发过程中,主要存在两种泄露情况:
显式引用:由于表达式赋值或者对象参数传递等原因,已经“无用”的对象被保持引用,导致虚拟机无法正常回收。
隐式引用:由于事件监听注册等操作,导致对象之间存在引用,产生泄露风险。
针对以上泄露问题,文章建议大家采用Adobe公司在Flex Builder 3中提供的Profiler工具来分析和定位泄露根源:
内存快照法:通过对于相同操作做反复内存快照(Profiler工具支持)比较,找出持续增加的对象实例,就可能发现泄露根源。
游荡对象法:当Flex应用特别复杂时,可以利用Profiler 工具中的“Find Loitoring Objects”查找游荡对象,比较不同状态转换之间的对象变化,可能会发现泄露的对象。
当然,凡事应以“预防为主”,所以作者最后总结了几点开发建议:
对于显式引用,要尽量减少对临时对象的引用,尤其是全局变量、静态变量、使用单例模式创建的变量对临时变量的引用。这些变量包含stage、systemManager、application、MVC框架中Model和Controller,还有以Manager命名的对象等等。另外,临时变量本身要尽量做到高内聚性,对象内部尽量减少对外部对象尤其是全局对象的依赖。
对于隐式引用,使用弱引用方式注册事件监听器,将最后一个参数useWeakReference设置为true:a.addEventListener("Leak", b.leakHandler, false, 0, true); 这样做的结果是垃圾回收器在做标记时,会忽略a对于b的引用,如果b没有被其他对象引用,垃圾回收器就把它标记为“无效”进而回收,从而避免内存泄露。
内存泄露一直是开发社区普遍关注的问题,即使在虚拟机时代,某些泄露问题仍然值得大家讨论和研究。
8. 词法分析工具flex的安装及使用(Ubuntu)
在ubutu上安装 yacc的命令:
yylex()是由flex创建的扫描程序的入口点,调用yylex()启动或者重新开始扫描。Lex编写的yylex()从名为yyin的FILE *文件指针中读取字符。 如果未设置yyin,则默认为标准输入。 它输出到yyout,如果未设置默认为stdout。 还可以在yywrap()函数中修改yyin,该函数在文件末尾调用。 它允许打开另一个文件,并继续解析。如果是这种情况,将其返回0。如果要结束此文件的解析,将其返回1。一般来说,每次调用yylex()都会返回一个表示标记类型的整数值。
flex的结构如下:
一个*.l的文件里的结构大概如上,用%%分隔开来。分为三个区:
使用诸如Flex的词法生成器的好处是使得程序员可以集中考虑词法的特点;而不是具体如何实现词法分析。
参考: https://zhuanlan.hu.com/p/65490271
9. 电动工具10大品牌
全球销量最好的十大电动工具品牌排行榜
泛音(FEIN)德国:
德国泛音(C.&E.FEIN GmbH),简称FEIN,是一家德国电动工具生产商,也是全球第一家专业电动工具生产商。总部位于德国SchwäbischGmünd的Bargau,占地 15000 m2。1895 年,C.&E.FEIN发明了第一台手持式电钻,这项发明奠定了高可信电动工具的基石。140 多年以来,FEIN泛音始终是全球领先的电动工具制造商,只研发牢固耐用的电动工具,直至今天德国泛音已拥有800多项有效专利和产权,以至这家位于 Schwaben(施瓦本)的传统企业在全球工业和手工业界都备受尊崇。
博世(BOSCH)德国:
博世电动工具创于1886年德国,博世集团旗下,全球电动工具领先生产商,以保持高标准的产品品质、技术革新及售后服务而备受追捧。博世电动工具是全球知名的电动工具及附件生产商,其产品在品质、技术革新及售后服务方面一直保持高标准。现在,博世电动工具的产品主要包括4大类:手持式电动工具,台式电动工具, 测量工具和电动工具附件。
麦太保(Metabo)德国:
Metabo麦太保成立于1924年,总部位于德国约廷根,是德国著名的专业电动工具制造商之一。旗下电动工具市场份额为德国第二,欧洲第三;木工机械的市场占有率更雄居欧洲第一。目前麦太保集团拥有2个品牌,22个子公司及全球5个制造基地。Metabo麦太保电动工具以优质满誉世界,产品输往100多个国家。其全球性的成功源于几十年的精益求精及对高品质的不懈追求。
富莱克斯(flex) 德国:
FLEX公司1922年在斯图加特成立,同年开始生产销售第一台研磨机。FLEX电动工具是德国著名表面抛光组套工具生产厂家,其产品经久耐用与易操作性,用途广闻名世界。德国FLEX公司的成功在于创新。1922年,FLEX研发了电动手控工具;1954年,flex研发了第一台高速角磨机DL 9;为了使角磨机更灵活高效,更人性化,1997年FLEX成为第一个生产天花板与墙壁使用长颈磨砂机的电动工具生产厂家。2015年研发了便携式电动工具,应用了“KEEP COOL”技术使得电池使用时长及寿命更佳。
费斯托(Festool)德国:
FESTOOL是全球享有盛名的气动、电动及工厂车间用专业工具系统的生产与供应商。90 多年来,我们追求高品质电动工具的热情从未熄灭。我们与我们的用户和粉丝一起分享这种激情:用我们的工具使得专业手工业者的工作更轻松,帮助他们更快地收获完美成果。我们始终从系统的角度来考虑,这非常重要:因为始终深入细节。350 多个专利,80 多次产品和企业奖项诠释了我们的创造力,更重要的是:让客户满意。
牧田(MAKITA)日本:
牧田株式会社是目前世界上大规模专门生产专业电动工具的制造商之一,总部位于日本国爱知县安城市,创业于1915年先后在日本东京,名古屋证券市场上市,注册资金达242亿日元,整个集团员工超过12000人。主营业务包括电动工具,木工机械,气动工具,家用及园艺用机器等的制造和销售。 牧田公司凭着100多年所积累的生产电机———电工工具心脏的丰富经验,率先采用世界上先进的大型电脑进行立体设计研发。同时与时俱进,不断把高科技融入产品中,并以全自动的机械设备生产,严格品质检验和安全测试,始终保持产品的高品质和创新性而闻名于世,深受全球广大用户的喜爱。牧田牌专业电动工具具有噪音小、动力强、性能好、质量稳定、寿命长、机身轻巧、坚固耐用、操作容易、应用广泛、修理方便等特点,是各行各业或DIY人员的至优之选。
日立(Hitachi)日本:
日立(HITACHI),是来自日本的全球500强综合跨国集团,1979年便在北京成立了第一家日资企业的事务所。日立工机株式会社公司主要产品:电动工具、充电式工具、气动工具、园林工具、燃油工具、发电机、空气压缩机、工业用吸尘设备及其附件和零配件,在日本、中国、马来西亚、欧洲等地超过800种以上的电动工具进行生产和制造。公司在向顾客提供丰富的日立电动工具及相关产品的同时,也同时为顾客提供迅速和一流的售后服务。
得伟(DEWALT)美国:
史丹利百得旗下高端专业级电动工具品牌,在耐用工业机械的设计/工艺/制造领域享有盛名,全球顶尖的高品质工具类制造商。2010年,史丹利公司与百得公司合并成立史丹利百得,得伟成为史丹利百得旗舰专业电动工具品牌。凭借长期的经验和最先进的制造技术,这些特征已经融入到了我们的多种系列的高性能”便携式”电动工具和配件的各项产品中。全球专业用户对得伟产品的广泛认可,使得伟成为了全球最好的专业电动工具品牌之一,也是过去五年中世界上增长最快的专业电动工具品牌。
史丹利(STANLEY)美国:
史丹利(STANLEY)是史丹利百得旗下旗舰品牌之一,是工业手工具品牌,也是工匠级电动工具品牌。致力于为消费者提供整合的五金工具、存储设备和安防系统的整体解决方案。近170年的历史,史丹利百得已经成长壮大为一个世界性的,具有高度信赖感,高价值的全球品牌,成为全世界最大的工具产品的制造商,奠定了在世界工具领域不可动摇的领导地位。
百塔(BETA) 意大利:
Beta Utensili,创立于1923年,专业工具制造商,拥有多项顶尖的技术和先进的生产设备,Beta Utensili 代表着高品质。根据ISO 9001标准,Beta对产品工艺进行严格测试确保每一件产品都具有符合标准的高质量。Beta Utensili 是一家世界性的企业,具备广泛的物流和销售网络,拥有在法国、英国、荷兰、西班牙、波兰、比利时、匈牙利和中国的8家海外分公司以及遍布200多个国家和地区的销售网点。