当前位置: > > > Flex - 鼠标动作(如拖拽)后立刻刷新界面显示

Flex - 鼠标动作(如拖拽)后立刻刷新界面显示

MouseEvent.updateAfterEvent()
如果已修改显示列表,则将指示 Flash Player 或 Adobe AIR 在此事件处理完成后呈现结果。
(比如拖拽的时候就不会有延迟现象)

下面是一个HGroup的样例,不使用滚动条,而是点击拖动内容区域实现滚动(如果不使用updateAfterEvent则会卡,不够流畅)
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx"
			   creationComplete="init(event)">
	<fx:Script>
		<![CDATA[
			import mx.events.FlexEvent;
			private var startMouseX:Number;
			private var startScrollPosition:Number;
			
			protected function init(event:FlexEvent):void
			{
				hg.addEventListener(MouseEvent.MOUSE_DOWN,hgMouseDown);
				hg.addEventListener(MouseEvent.MOUSE_MOVE,hgMouseMove);
			}
			
			private function hgMouseDown(event:MouseEvent):void{
				startMouseX = event.stageX;
				startScrollPosition = hg.horizontalScrollPosition;
			}
			
			private function hgMouseMove(event:MouseEvent):void{
				if(event.buttonDown){
					hg.horizontalScrollPosition = this.startMouseX - event.stageX + startScrollPosition;
				}
				event.updateAfterEvent();
			} 
		]]>
	</fx:Script>
	<s:HGroup id="hg" width="400" horizontalCenter="0" verticalCenter="0" clipAndEnableScrolling="true">
		<s:Button label="按钮1" />
		<s:Button label="按钮2" />
		<s:Button label="按钮3" />
		<s:Button label="按钮4" />
		<s:Button label="按钮5" />
		<s:Button label="按钮6" />
		<s:Button label="按钮7" />
		<s:Button label="按钮8" />
	</s:HGroup>
</s:Application>
评论0