zoukankan      html  css  js  c++  java
  • Flex4中使用Path实现画板功能,解决恢复,撤消问题


    近期需要做一个画板的功能,又鉴于SDK3.0的例子,现在都用SDK4.0在开发了,

    3.0里实现的一些在4.0里并不适合使用;

    找了很多相关的资料,也不基于Path实现画板功能

    最近在官方网上看找到一些资料,拿出来分享一下;

    再也不用纠结于 多条lineTo, 难解决操作记录的问题,尤其在解决恢复,撤消问题;

    不多说,贴上代码:

    <?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/halo"
                   mouseDown
    ="mouseDownHandler(event)"
                   minWidth
    ="1024" minHeight="768">
        
    <s:layout>
            
    <s:BasicLayout/>
        
    </s:layout>
        
    <fx:Declarations>
            
    <!-- Place non-visual elements (e.g., services, value objects) here -->
        
    </fx:Declarations>
        
        
    <fx:Script>
            
    <![CDATA[
                import mx.graphics.SolidColor;
                import mx.graphics.SolidColorStroke;           
                import spark.primitives.Path;           
                private var shape:Path           
                private var pathPoints:Vector.<Point>
                
                private function mouseDownHandler(evt:MouseEvent):void
                {
                    shape = new Path();
                    pathPoints = new <Point>[new Point(evt.localX, evt.localY)];
                    shape.stroke = new SolidColorStroke(0x66CCFF,5,1);
                    this.addElement(shape);
                    this.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler);
                    this.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
                }
                
                private function mouseMoveHandler(evt:MouseEvent):void
                {
                    pathPoints[pathPoints.length] = new Point(evt.localX, evt.localY);
                    constructPath();
                }
                
                private function mouseUpHandler(evt:MouseEvent):void
                {
                    pathPoints[pathPoints.length] = new Point(evt.localX, evt.localY);
                    constructPath();
                    this.removeEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler);
                    this.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);                    
                }
                
                private function constructPath():void
                {
                    var dataString = "M "+ pathPoints[0].x +" "+ pathPoints[0].y;
                    for(var i:int=1; i< pathPoints.length; ++i)
                    {
                        var pt:Point = pathPoints[i];
                        dataString += " L "+ pt.x +" "+pt.y;
                    }
                    shape.data = dataString;
                }        
            
    ]]>
        
    </fx:Script>
        
    </s:Application>
  • 相关阅读:
    iOS 从0到1搭建高可用App框架
    ios 判断用户是否开启权限---并跳转设置
    用PHP做服务器接口客户端用http协议POST访问安全性一般怎么做
    示例浅谈PHP与手机APP开发,即API接口开发
    iOS百度地图简单使用详解
    UICollectionViewCell「居左显示」
    IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息
    iOS开发融云即时通讯集成详细步骤
    iOS
    修改hosts文件
  • 原文地址:https://www.cnblogs.com/dzone/p/2109542.html
Copyright © 2011-2022 走看看