注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

无线时代辐射无穷

抓紧生宝宝,小心辐射

 
 
 

日志

 
 

Flex4.5中的可视化对象多点触控屏幕中缩放和旋转功能  

2011-06-08 20:37:12|  分类: flex |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

我的一个朋友曾说起让图像在多触点屏幕中缩放和旋转效果应该像程序中“hello world”一样基础,我认为这个说法非常有道理。在视频中第一部分(总共两部分),我将讲解如何使得Flex组件旋转和缩放。下面的类可以使图片实现缩放和旋转的效果,就像“hello world”一样经典,而且它同样适用于视频、容器等,这将会大大增强用户的体验性。

Flex4.5中的可视化对象多点触控屏幕中缩放和旋转功能 - wolfgangkiefer - 向冯诺依曼致敬
下面是类的内容,可以应用在大部分的程序中。
  RotatableScalable:
package com.mlegrand
{
        import flash.display.DisplayObject;
        import flash.events.TransformGestureEvent;
        import flash.geom.Matrix;
        import flash.geom.Point;
        import flash.ui.Multitouch;
        import flash.ui.MultitouchInputMode;
 
        public class RotatableScalable
        {
 
                protected var disO:DisplayObject
 
                public function RotatableScalable(displayObject:DisplayObject)
                {
                        disO = displayObject;
                        if(Multitouch.supportsGestureEvents)
                        {
                                Multitouch.inputMode = MultitouchInputMode.GESTURE;
                                addGestureEventListeners()
                        }
 
                }
 
                protected function addGestureEventListeners():void
                {
                        disO.addEventListener(TransformGestureEvent.GESTURE_ROTATE, gestureRotateHandler);
                        disO.addEventListener(TransformGestureEvent.GESTURE_ZOOM, gestureZoomHandler);
                }
 
                protected function gestureRotateHandler(event:TransformGestureEvent) : void
                {
                        event.stopImmediatePropagation();
                        var m:Matrix = disO.transform.matrix;
                        var p:Point = m.transformPoint(new Point(disO.width/2, disO.height/2));
                        m.translate(-p.x, -p.y);
                        m.rotate(event.rotation*(Math.PI/180));
                        m.translate(p.x, p.y);
                        disO.transform.matrix = m;
                }
 
                protected function gestureZoomHandler(event:TransformGestureEvent):void
                {
                        event.stopImmediatePropagation();
                        var m:Matrix = disO.transform.matrix;
                        var p:Point = m.transformPoint(new Point(disO.width/2, disO.height/2));
                        m.translate(-p.x, -p.y);
                        m.scale(event.scaleX, event.scaleY);
                        m.translate(p.x, p.y);
                        disO.transform.matrix = m;
                }
 
        }
}
复制代码
注:我在 Justin Imhoff’s blog.看的过一些关于矩阵变化的内容,我强烈建议你通过feed订阅他的博客,我也注意到Natural User Interface Group,这个论坛非常好,建议对多点触控感兴趣的兄弟姐妹们去看看
  评论这张
 
阅读(1675)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017