开源flash还是ajax画板?

开源flash还是ajax画板?,ajax,apache-flex,flash,open-source,drawing,Ajax,Apache Flex,Flash,Open Source,Drawing,对于非营利(慈善)网站,我需要一个简单的画板(绘图)组件 它应该能够: 让用户绘制一个简单的黑白草图 将完整的绘图步骤保存到服务器 将最终映像保存到服务器 向未来用户重新播放绘图步骤 具有类似的组件 你知道我在哪里可以找到一个开源组件在这个项目中使用吗 谢谢,这不会捕获绘图步骤,也不会将最终图像保存到服务器;但是,这可能会帮助您开始 (为这张可怕的素描道歉) MXML代码: <?xml version="1.0" encoding="utf-8"?> <s:Applica

对于非营利(慈善)网站,我需要一个简单的画板(绘图)组件

它应该能够:

  • 让用户绘制一个简单的黑白草图
  • 将完整的绘图步骤保存到服务器
  • 将最终映像保存到服务器
  • 向未来用户重新播放绘图步骤
具有类似的组件

你知道我在哪里可以找到一个开源组件在这个项目中使用吗


谢谢,

这不会捕获绘图步骤,也不会将最终图像保存到服务器;但是,这可能会帮助您开始

(为这张可怕的素描道歉)

MXML代码:

<?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"
               addedToStage="addedToStageHandler(event)">

    <fx:Script>
        <![CDATA[
            //------------------------------
            //  model
            //------------------------------

            protected var lastPoint:Point;


            //------------------------------
            //  lifecycle
            //------------------------------

            protected function addedToStageHandler(event:Event):void
            {
                beginDrawing();
            }

            protected function beginDrawing():void
            {
                canvas.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
            }

            protected function mouseDownHandler(event:MouseEvent):void
            {
                canvas.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);

                // mark mouse down location
                lastPoint = new Point(mouseX, mouseY);

                // listen for movement or up/out
                canvas.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
                canvas.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
                canvas.addEventListener(MouseEvent.MOUSE_OUT, mouseUpHandler);
            }

            protected function mouseMoveHandler(event:MouseEvent):void
            {
                var g:Graphics = canvas.graphics;
                g.lineStyle(1, 0x0);

                // draw line segment
                g.moveTo(lastPoint.x, lastPoint.y);
                g.lineTo(mouseX, mouseY);

                // mark end of line segment
                lastPoint.x = mouseX;
                lastPoint.y = mouseY;
            }

            protected function mouseUpHandler(event:MouseEvent):void
            {
                canvas.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
                canvas.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
                canvas.removeEventListener(MouseEvent.MOUSE_OUT, mouseUpHandler);

                beginDrawing();
            }

            override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
            {
                super.updateDisplayList(unscaledWidth, unscaledHeight);

                var g:Graphics = canvas.graphics;
                g.clear();
                g.beginFill(0xff0000, 0);
                g.drawRect(0, 0, unscaledWidth, unscaledHeight);
                g.endFill();
            }
        ]]>
    </fx:Script>

    <s:Label text="Sketchpad"
             fontSize="24"
             textAlign="center"
             paddingTop="12"
             width="100%" />

    <s:SpriteVisualElement id="canvas"
                           width="100%"
                           height="100%" />

</s:Application>

您可以捕获
mouseMoveHandler
上的步骤,并将它们推送到一个数组中。这将捕获绘图序列的每个起点和终点对,以便重播


要保存到服务器,您可以按照任意数量的教程通过创建
BitmapData
来捕获
canvas
,并将画布的
IBitMapable
绘制到BitmapData以保存到服务器。

这既不会捕获绘制步骤,也不会将最终图像保存到服务器;但是,这可能会帮助您开始

(为这张可怕的素描道歉)

MXML代码:

<?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"
               addedToStage="addedToStageHandler(event)">

    <fx:Script>
        <![CDATA[
            //------------------------------
            //  model
            //------------------------------

            protected var lastPoint:Point;


            //------------------------------
            //  lifecycle
            //------------------------------

            protected function addedToStageHandler(event:Event):void
            {
                beginDrawing();
            }

            protected function beginDrawing():void
            {
                canvas.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
            }

            protected function mouseDownHandler(event:MouseEvent):void
            {
                canvas.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);

                // mark mouse down location
                lastPoint = new Point(mouseX, mouseY);

                // listen for movement or up/out
                canvas.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
                canvas.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
                canvas.addEventListener(MouseEvent.MOUSE_OUT, mouseUpHandler);
            }

            protected function mouseMoveHandler(event:MouseEvent):void
            {
                var g:Graphics = canvas.graphics;
                g.lineStyle(1, 0x0);

                // draw line segment
                g.moveTo(lastPoint.x, lastPoint.y);
                g.lineTo(mouseX, mouseY);

                // mark end of line segment
                lastPoint.x = mouseX;
                lastPoint.y = mouseY;
            }

            protected function mouseUpHandler(event:MouseEvent):void
            {
                canvas.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
                canvas.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
                canvas.removeEventListener(MouseEvent.MOUSE_OUT, mouseUpHandler);

                beginDrawing();
            }

            override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
            {
                super.updateDisplayList(unscaledWidth, unscaledHeight);

                var g:Graphics = canvas.graphics;
                g.clear();
                g.beginFill(0xff0000, 0);
                g.drawRect(0, 0, unscaledWidth, unscaledHeight);
                g.endFill();
            }
        ]]>
    </fx:Script>

    <s:Label text="Sketchpad"
             fontSize="24"
             textAlign="center"
             paddingTop="12"
             width="100%" />

    <s:SpriteVisualElement id="canvas"
                           width="100%"
                           height="100%" />

</s:Application>

您可以捕获
mouseMoveHandler
上的步骤,并将它们推送到一个数组中。这将捕获绘图序列的每个起点和终点对,以便重播

要保存到服务器,您可以按照任意数量的教程通过创建
BitmapData
并将画布的
IBitMapable
绘制到BitmapData以保存到服务器上来捕获
canvas