Posts Tagged ‘Flex4’

Flex4 实现拖拽缓动

分类于 原创文章 十月 10th, 2011 by marco – 5 Comments

你有在做类似Google地图这种拖拽缓动效果的应用吗?你还在为写缓动加速算法而头痛吗?如果是那么你看了下面的文章内容后你肯定会大骂一句:“TMD,原来这么简单!”。。。

费话少说,先看一下效果吧(由于是国外服务器,flash和图片加载有点慢,有请耐心等待):

效果怎么样,是不是很流畅呢!
read more »

Fex4中使用Group实现滑动翻页

分类于 生活随笔 六月 26th, 2011 by marco – 添加评论

在Flex4中Group取代了flex3时代的Canvas和Box容器,成为了主要的布局容器,相比Canvas和Box她更加轻量,因为至少Group中没有实现滚动条的代码。
现在这个例子展示了用Group配合Animate实现分页,并且实现翻页的动画:

<?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" 
			   minWidth="955" minHeight="600">
	<fx:Script>
		<![CDATA[
		import spark.core.NavigationUnit;
 
		/**
		 * 上一页
		 */
		private function prePageHandler():void
		{
			smp.valueBy = hGroup.getHorizontalScrollPositionDelta(NavigationUnit.PAGE_LEFT);
			anmiate.play();
		}
 
		/**
		 * 下一页
		 */
		private function nextPageHandler():void
		{
			smp.valueBy = hGroup.getHorizontalScrollPositionDelta(NavigationUnit.PAGE_RIGHT);
			anmiate.play();
		}
 
		]]>
	</fx:Script>
	<fx:Declarations>
		<s:Animate id="anmiate" target="{hGroup}" duration="800">
			<s:motionPaths>
				<s:SimpleMotionPath id="smp" property="horizontalScrollPosition"/>
			</s:motionPaths>
		</s:Animate>
	</fx:Declarations>
	<s:Panel title="Flex4 Group新特性">
		<s:HGroup id="hGroup" gap="10" height="100" width="320" clipAndEnableScrolling="true">
			<s:Button width="100" height="100" label="1" fontSize="30"/>
			<s:Button width="100" height="100" label="2" fontSize="30"/>
			<s:Button width="100" height="100" label="3" fontSize="30"/>
			<s:Button width="100" height="100" label="4" fontSize="30"/>
			<s:Button width="100" height="100" label="5" fontSize="30"/>
			<s:Button width="100" height="100" label="6" fontSize="30"/>
			<s:Button width="100" height="100" label="7" fontSize="30"/>
		</s:HGroup>
		<s:controlBarContent>
			<s:HGroup width="100%" horizontalAlign="center">
				<s:Button label="上一页" click="prePageHandler()"/>
				<s:Button label="下一页" click="nextPageHandler()"/>
			</s:HGroup>
		</s:controlBarContent>
	</s:Panel>
</s:Application>

使用motionPaths属于Animate可以同时设置目标的多个属于以实现更加复杂的动画,在这里我们只要改变Group的horizontalScrollPosition即可,因为在Group容器在不能把子集全部显示出来的时候,horizontalScrollPosition和verticalScrollPosition会自动计算出来,这个两个属性是给Scroller用的。
最灵活最巧妙的地方就是这两属性不光可以做为滚动条使用,可以通过Animate改变其值,实现滑动的效果。
NavigationUnit是一个枚举类,他定义了PAGE_UP、PAGE_DOWN、PAGE_LEFT、PAGE_RIGHT等等,这里我们用了HGroup,是横向的,所以只用PAGE_LEFT,PAGE_RIGHT就可以了,还有一点非常重要,那就是Group的两个方法:getHorizontalScrollPositionDelta()getVerticalScrollPositionDelta(),使用这个两个人方法和NavigationUnit枚举类的参数,可以计算出左移或者右移当前页时,所需要调整的horizontalScrollPosition值。以此类推,可以使用VGroup实现上下的翻页,TileGroup可以实现上下左右的翻动,而且修改起来非常简单。
就是这样,计算出滚动距离传给SimpleMotionPath 然后播放动画,一切就是这么简单,而且效率极高。

点击查看效果

Flex4中[Client.Error.DeliveryInDoubt]错误经验一例

分类于 生活随笔 二月 12th, 2011 by marco – 添加评论

最近遇到一个很奇怪的问题,我在使用RemoteObject调用后台.net rpc服务时老是报一个错:[faultCode:Client.Error.DeliveryInDoubt faultString:'通道已断开' faultDetail:'收到确认前通道已断开']。

把自己的代码查询了半天也找不出任何问题,后来还是调试.net代码的时候找到点眉目,原来.net接口本来应该返回给我视频文件路径的,它却把视频文件的整个二进制流读出来一下子返回给我了。我的RemoteObject是使用的RTMP通道,四个视频文件一共40MB,可能RTMP不支持这么大的数量,导致在传输过程中崩溃了!

希望我的教训对大家有用,在这里祝朋友们新年快乐,大吉大利!

对于Flex4正式版等Adobe其它产品的分析

分类于 原创文章, 生活随笔 十二月 7th, 2009 by marco – 2 Comments

距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等方面占据或捍卫其统治者地位。