Flex4 实现拖拽缓动
分类于 原创文章 十月 10th, 2011 by marco – 5 Comments你有在做类似Google地图这种拖拽缓动效果的应用吗?你还在为写缓动加速算法而头痛吗?如果是那么你看了下面的文章内容后你肯定会大骂一句:“TMD,原来这么简单!”。。。
费话少说,先看一下效果吧(由于是国外服务器,flash和图片加载有点慢,有请耐心等待):
效果怎么样,是不是很流畅呢!
read more »
你有在做类似Google地图这种拖拽缓动效果的应用吗?你还在为写缓动加速算法而头痛吗?如果是那么你看了下面的文章内容后你肯定会大骂一句:“TMD,原来这么简单!”。。。
费话少说,先看一下效果吧(由于是国外服务器,flash和图片加载有点慢,有请耐心等待):
效果怎么样,是不是很流畅呢!
read more »
Flex为我们提供了一套非常强大的图表组件,而且这些组件给我们开发人员提供了丰富的接口,在此基础上可以扩展出更加令人兴奋的应用。
下面是我扩展的AxisRenderer类,AxisRenderer是图表轴渲染器,所有图表的轴都是通过这个类来渲染的。而我这个例子所做就是在AxisRenderer的基础上提供几个接口(以Style方式),这几个接口的作用是给轴的刻度标签加上格式、前/后缀、千位符、单位。
Flex自带的有一个BindingUtils类,可以把两个类的属性绑定起来,但是不能绑定样式(Style),样式是Flex中常用的特性,看其BindingUtils源码,绑定技术本身是依靠于ChangeWatcher,所以照着BindingUtils写一个可以绑定样式的方法。
StyleBindingUtils:
package org.beasy.binding.utils { import mx.binding.utils.ChangeWatcher; import mx.styles.IStyleClient; /** * Flex的绑定功能为我们的日常提供很多的方便 * 但是Flex只提供了属性的绑定类->BindingUtils; * 如果要实现绑定控件的Style还要自己用ChangeWatcher去侦听事件 * 有了StyleBindingUtils这一切将变的简单 * StyleBindingUtils封装了ChangeWatcher进行了Style的绑定实现, * 为您的开发提供了更多方便和快捷 * @author Marco */ public class StyleBindingUtils { public function StyleBindingUtils() { } public static function bindStyle( site:IStyleClient, prop:String, host:Object, chain:Object, commitOnly:Boolean = false):ChangeWatcher { var w:ChangeWatcher = ChangeWatcher.watch(host, chain, null, commitOnly); if(w != null ) { var assign:Function = function(event:*):void { site.setStyle(prop, w.getValue()); } w.setHandler( assign ); assign(null); } return w; } } }
以前也写过一遍关于Tree CheckBox ItemRenderer的文章,分析如何在Tree的节点上添加Checkbox,实现了在节点上添加了CheckBox并关联对应数据的selected:Boolean属性,也就是CheckBox的选择状态随selected属性的改变而改变,selected也随时更新当前节点上CheckBox的选择状态。
目前这个版本不仅实现了原有的功能,而且支持了树结构级联选择:支节点选中的话支节点下的子节点也会选中。
效果图:

示例
read more »
距08年初Flex3的发布已经快两年了,Flex4目前还是只Beta2的版本,正式版迟迟没有发布,目前AIR2.0和Flash Player 10.1也都是测试版。
Adobe官方说Flex4今年底或明年初会放出,这里做一个分析:我想到时Flex4、AIR2.0、Flash Plyaer 10.1和Adobe CS5产品套件应该会相继发布,Adobe的整个产品线将会又上一个档次。随着Flex4、Flash Catalyst、CS5套件的完美融合(FXG格式),Adobe的整个产品线将会一脉相承更加成熟和更加紧密的联系。
Adobe将在媒体处理、RIA等方面占据或捍卫其统治者地位。
前不久adobe刚刚发布了air2.0 bate版,其中包含了很多令人兴奋的新特性。
最主要的几点是:
我最最喜欢的是多点触摸和Socket的增强,因为我觉得多点触摸在以后是一种趋势,随便IT的发展,多点触摸能给用户带来更好的体验,多点触摸是必备的。另外Socket的增强,包括ServerSocket、 UDP Socket、TLS/SSL Socket,这是多么令我振奋的三个功能啊,这说明air从此可以做为Socket服务器端,并且支持P2P和TLS/SSL套接层加密。前早以前我写过用as3去做邮件客户端的程序,连接网易163这样的国内邮件服务器是没有问题的,但是像Gmail这样采用SSL加密的服务器那时候就没有办法了,因为那时Socket根本就没有SSL加密。现在有了AIR2.0就可以做一个AIR版的Gmail客户端了!
很多人都不知道XML标签里面的冒号代表什么含义,用通常的办法不能解析出带冒号的XML。那冒号正是XML的一个重要的特性–Namespace,更多资料请去Google,我这时只说怎么用as3来解析带有namespace的XML;
testXml:
<fx:XML id="textXml" xmlns="http://www.beasy.org" xmlns:beasy="http://blog.beasy.org"> <root> <website>http://www.beasy.org</website> <beasy:name>Marco</beasy:name> <beasy:email>***@gmail.com</beasy:email> </root> </fx:XML>
上面是一个xml变量, 我现在要获得website,name和email;
注意虽然前面没有”*:”这样的符号,也看看根节点上的命名空间定义xmlns=”http://beasy.org”,这一名就定义了一个空注解的命名空间.虽然前面没有符号, 但节点也在命名空间限制内的,想要获取他的值要这样写:
var emptyNS:Namespace = testXml.namespace(""); trace( testXml.emptyNS::website ); //输出:www.beasy.org var beasyNS:Namespace = testXml.namespace("by"); trace( testXml.beasyNS::name ); //输出:marco trace( testXml.beasyNS::email ); //输出:***@gmail.com
声明:原创文章,转载请注明出处:http://www.beasy.org/archives/17
网上遇到很多需要在Tree控件添加CheckBox等控件的问题, 本以为把Tree的itemRenderer设置成mx.controls.CheckBox 就可以完事了, 但是试了之后才发现没有这么简单 . . .
今天看了Tree的源码, Tree在初始化的时候默认给自己设置itemRenderer属性. 此属性值也是Flex现成的:mx.controls.treeClasses.TreeItemRenderer.它内部分为三部分:1,icon也是就三角形的小图标. 2,disclosureIcon文件夹图标. 3,label显示的文字.
我想我只要继承TreeItemRenderer再扩展一番,在label前面加上一个CheckBox不就行了.
read more »