我正在使用Flex 4和AS3,我試圖讓用戶可以用光標繪製一個手繪線 - 我已經完成了這部分。使用光標繪製手繪線條時,如何使其成爲虛線?
但是,我也需要該行是一條虛線,而不是像現在這樣一條實線。下面是我使用的代碼。我已經找到了一些關於如何做到這一點的例子,但是它們都是直線,而不是徒手畫線。
任何人都可以幫我完成這件事嗎?
類文件(繪圖區):
package
{
import flash.display.BitmapData;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.FileReference;
import flash.utils.ByteArray;
import mx.core.UIComponent;
import mx.events.FlexEvent;
import mx.graphics.codec.PNGEncoder;
public class DrawingArea extends UIComponent
{
private var isDrawing:Boolean = false;
private var x1:int;
private var y1:int;
private var x2:int;
private var y2:int;
public var drawColor:uint = 0x0000FF;
public function DrawingArea()
{
super();
addEventListener(FlexEvent.CREATION_COMPLETE, function(event:FlexEvent):void {
graphics.clear();
graphics.beginFill(0xffffff, 0.00001);
graphics.drawRect(0, 0, width, height);
graphics.endFill();
});
addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
addEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
addEventListener(MouseEvent.MOUSE_UP, mouseUp);
function mouseDown(event:MouseEvent):void {
x1 = mouseX;
y1 = mouseY;
isDrawing = true;
}
function mouseMove(event:MouseEvent):void {
if (!event.buttonDown)
{
isDrawing = false;
}
x2 = mouseX;
y2 = mouseY;
if (isDrawing)
{
graphics.lineStyle(1, drawColor);
graphics.moveTo(x1, y1);
graphics.lineTo(x2, y2);
x1 = x2;
y1 = y2;
}
}
function mouseUp(event:MouseEvent):void {
isDrawing = false;
}
}
}
}
應用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" minWidth="955" minHeight="600">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<DrawingArea id="drawingArea" xmlns="*" width="100%" height="100%"/>
</s:Application>
感謝您的幫助提前!
感謝 - 如果你將鼠標移動速度快,但我現在必須弄清楚如何使它做同樣的,如果你慢慢地移動鼠標,它的工作原理。有什麼建議麼? – Nutkraker
我已經使用此代碼用於我的項目,並根據鼠標的移動完美地工作。我爲你的問題重建了這段代碼。請調試此代碼找出錯誤顯示的位置。 –