2016-10-21 5 views
1

マウスカーソルを移動しているときに、マウスカーソルを描くためのMOUSE_MOVE MouseEventとコードを作成しました。問題は、マウスをあまりにも速く動かすと、すべての単一の円を引き出すことができないということです。 After I move the mouse cursor in a line with moderate speedコードの読み込みが速すぎる

ここには、MOUSE_MOVEイベントのコードがあります。

stage.addEventListener(MouseEvent.MOUSE_MOVE, mCursor); 

public function mCursor(e:MouseEvent):void 
{ 

    var cursor:Shape = new Shape(); 

    cursor.graphics.beginFill(1, 1); 
    cursor.graphics.drawCircle(e.stageX, e.stageY, 10); 
    cursor.graphics.endFill(); 
    addChild(cursor); 
} 

は、それが、間に空白なしで直線を描くことができるような一つ一つの円を追加持っている演算式や物理学の数式はありますでしょうか?

+0

描画アプリケーションを作成するときに、シェイプではなくピクセル(ビットマップデータ)を使用してみてください。これらの全ての 'addChild(cursor);'は、あまりにも多くをメモリに追加すると、システムの速度を落とす可能性があります。 –

+0

ビットマップデータを使用するためのチュートリアルはありますか?私はShapeが理解するために基本的なものであるので、それにあまり慣れていません – Zulu

+0

多くのチュートリアルがあります。あなたの問題は現在 'cursor'が変数です。追加されたすべてのシェイプは、複数の**変数**をシステムに作成しています。特定の幅と高さの単一の空のビットマップデータを作成し、setpixel(キャンバス内の特定の座標で色を変更する)を使用します。その特定の円の形状/サイズが必要な場合は、最初に 'cursor_BMP'として' draw'してから 'canvas_BMP'の周りに" rubberstamp "してください。 –

答えて

2

だけではなく、離散的な個々の円を加算したポイント間の連続線を描画するには

cursor.graphics.lineTo(…); 

を使用しています。

私は上記のコードを消去し、ちょうど私がそれをテストし、あなたがgraphicslineStyle()メソッドを呼び出すことにより、最初の線幅を設定する必要が

間でのブランクがあったコード cursor.graphics.lineTo(e.localX, e.localY);のこの1行を追加しましたオブジェクト。それ以外の場合、線幅はゼロ(デフォルト値)です。

package 
{ 
    import flash.display.Sprite; 
    import flash.display.Shape; 

    import flash.events.MouseEvent; 

    public class Main extends Sprite 
    { 
     private var cursor:Shape; 

     public function Main() 
     { 
      cursor = new Shape(); 
      cursor.graphics.lineStyle(2); 
      addChild(cursor);    

      stage.addEventListener(MouseEvent.MOUSE_MOVE, mCursor); 
     } 

     private function mCursor(e:MouseEvent):void 
     { 
      cursor.graphics.lineTo(e.stageX, e.stageY); 
     }  
    } 
} 

あなたはおそらく、適切な開始位置を設定するためにmoveToと周りいじるする必要があります。

はここで完全に動作するドキュメントクラスです。コードは今のところ、0/0から始まります。

+0

このコードを使用しようとしましたが、結果は同じですが、私が描いていたラインの間に空白があります – Zulu

+0

@Zuluどのように正確にそれをしましたか?お気軽に質問にコードを追加してください。行については、カーソルオブジェクトを1つだけ使用してください。 – null

+0

上記のコードを消去し、この1行のコードを追加しました。 mouseClick.graphics.lineTo(e.localX、e.localY); 私はそれをテストし、その間に空白がありました – Zulu

関連する問題