开源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