Posts Tagged ‘flex’

Flex里的空闲检测-IDLE

分类于 生活随笔 十二月 29th, 2010 by marco – 1 Comment

Flex里面也有空闲检测,本来为了实现这个功能还要去全局侦听鼠标和键盘事件,有了IDLE这下可方便多了。
IDLE由SystemManager进行管理,所以要检测IDLE就要对SystemManager进行侦听,方法如下:

/**
 * 主程序初始化时对systemManager进行侦听
 */
public function init():void
{
	systemManager.addEventListener(FlexEvent.IDLE, idleHandler);
}
 
/**
 * idle事件处理
 */
private function idleHandler(event:FlexEvent):void
{
	var idleCounter:int = systemManager.mx_internal::idleCounter;
	if( idleCounter >= 900)// 100毫秒一次,900就等于90秒
		systmeIdle();
}
 
/**
 * 发送系统空闲消息
 */
private function systmeIdle():void
{
	// TO DO ...
}

这里要注意的是FlexEvent.IDLE事件派发规则是:当 1 秒内没有任何键盘和鼠标活动时,每隔 100 毫秒分派一次
根据API所知,我们不能去设定系统空闲多少秒以后才派发IDLE事件,这里我们只能在idleHandler事件处理方法里面根据systemManager对IDLE事件派发的次数来计算系统已经空闲了多长时间,悲剧的这个事件的派发次数还被隐藏起来了,在mx_internal命名空间下,如果要得到这个值我们不得不使用mx_internal这个命名空间,莫名其妙的多走了一步,方法如下:

// 先把名导入
import mx.core.mx_internal;
 
// 对象.命名空间::属性名
systemManager.mx_internal::idleCounter;

自定义图表刻度标签

分类于 原创文章 一月 6th, 2010 by marco – 4 Comments

Flex为我们提供了一套非常强大的图表组件,而且这些组件给我们开发人员提供了丰富的接口,在此基础上可以扩展出更加令人兴奋的应用。
下面是我扩展的AxisRenderer类,AxisRenderer是图表轴渲染器,所有图表的轴都是通过这个类来渲染的。而我这个例子所做就是在AxisRenderer的基础上提供几个接口(以Style方式),这几个接口的作用是给轴的刻度标签加上格式、前/后缀、千位符、单位。

Demo


read more »

StyleBindingUtils可以绑定样式的工具类

分类于 原创文章 一月 5th, 2010 by marco – 1 Comment

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;
		}
 
	}
}

read more »

Squiggly – Adobe开发的Flash/Flex拼写检查API

分类于 精品收藏 一月 5th, 2010 by marco – 1 Comment

今天逛labs看到的一个好东东,目前是2.0版本,Flex3/4都支持。
Squiggly使用起来很简单,在Flex里使用时,只要导入两个SWC:AdobeSpellingEngine.swc,AdobeSpellingUIEx.swc.从命名就可以看出来,两份个swc一个是负责拼写检查的引擎,另一个是负责UI显示.
使用时代码甚至只需要二行:

  • import com.adobe.linguistics.spelling.SpellUI;
  • SpellUI.enableSpelling(textArea, “usa.zwl”);//检查拼写
  • SpellUI.disableSpelling(textArea);//取消检查

其中textArea是一个Flex文本域组件,”usa.zwl”是英文语法字典的路径,此文件Squiggly下载包里面有。

spell check 

Squiggly官方网站:http://labs.adobe.com/technologies/squiggly/

在Tree上添加CheckBox(II) – 支持级联选择

分类于 原创文章 一月 4th, 2010 by marco – 4 Comments

以前也写过一遍关于Tree CheckBox ItemRenderer的文章,分析如何在Tree的节点上添加Checkbox,实现了在节点上添加了CheckBox并关联对应数据的selected:Boolean属性,也就是CheckBox的选择状态随selected属性的改变而改变,selected也随时更新当前节点上CheckBox的选择状态。

目前这个版本不仅实现了原有的功能,而且支持了树结构级联选择:支节点选中的话支节点下的子节点也会选中。

效果图:

示例
read more »

Flex在Tree控件上添加CheckBox

分类于 原创文章 十一月 15th, 2009 by marco – 添加评论

声明:原创文章,转载请注明出处: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 »