2011-10-26 8 views
3

マウスを使用してスクリーン/キャンバスに矢印を描くことができるFlashアプリケーションを作成しようとしています。したがって、座標23,12でマウスの左ボタンをクリックして保持し、84,45で左ボタンを放すと、2つの点の間に線が引かれ、2つ目の座標の矢印の頭になります。マウスで矢印を描き、それを選択できるようにする必要があります

個々の矢印を選択して移動または削除できるようにする必要があります(この部分の操作方法はわかります)。

誰かが私を助けて正しい方向に向ける(例やチュートリアルなど)場合は、大変感謝しています。

答えて

3

それはあなたの最初の質問ですので:

enter image description here

package 
{ 
    import flash.display.CapsStyle; 
    import flash.display.Graphics; 
    import flash.display.JointStyle; 
    import flash.display.LineScaleMode; 
    import flash.display.Sprite; 
    import flash.display.StageAlign; 
    import flash.display.StageScaleMode; 
    import flash.events.Event; 
    import flash.events.MouseEvent; 
    import flash.geom.Point; 

    [SWF(percentWidth = 100, percentHeight = 100, backgroundColor = 0xefefef, frameRate = 30)] 
    public class Arrows extends Sprite 
    { 

     public var arrows:Vector.<Sprite> = new Vector.<Sprite>(); 

     public var canvas:Sprite; 

     public var lineColor:uint = Math.random() * 0xffffff; 

     public var lineWeight:Number = 5; 

     private var startPoint:Point; 


     public function Arrows() 
     { 
      super(); 

      addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler); 
     } 

     protected function addedToStageHandler(event:Event):void 
     { 
      stage.scaleMode = StageScaleMode.NO_SCALE; 
      stage.align = StageAlign.TOP_LEFT; 

      addCanvas(); 
     } 

     protected function addCanvas():void 
     { 
      canvas = new Sprite(); 
      addChild(canvas); 

      lineColor = Math.random() * 0xffffff; 

      // give alpha for interaction 
      var g:Graphics = canvas.graphics; 
      g.beginFill(0x0, 0.0); 
      g.drawRect(0, 0, stage.stageWidth, stage.stageHeight); 
      g.endFill(); 

      // listen for mouse down 
      canvas.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
     } 

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

      // mark start point 
      startPoint = new Point(event.localX, event.localY); 

      // start rendering 
      canvas.addEventListener(Event.ENTER_FRAME, enterFrameHandler); 

      // listen for mouse up/out to end arrow 
      canvas.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); 
      canvas.addEventListener(MouseEvent.MOUSE_OUT, mouseUpHandler); 
     } 

     protected function enterFrameHandler(event:Event):void 
     { 
      var angle:Number = polarAngle(new Point(mouseX, mouseY), new Point(startPoint.x, startPoint.y)); 

      // draw line 
      var g:Graphics = canvas.graphics; 
      g.clear(); 

      // give alpha for interaction 
      g.beginFill(0x0, 0.0); 
      g.drawRect(0, 0, stage.stageWidth, stage.stageHeight); 
      g.endFill(); 

      g.lineStyle(lineWeight, lineColor, 1, true, LineScaleMode.NORMAL, CapsStyle.SQUARE, JointStyle.MITER); 
      g.moveTo(startPoint.x, startPoint.y); 
      g.lineTo(mouseX, mouseY); 

      // draw arrow head 
      g.moveTo(mouseX - (20 * Math.cos((angle - 45) * Math.PI/180)), 
        mouseY - (20 * Math.sin((angle - 45) * Math.PI/180))); 

      g.lineTo(mouseX + (5 * Math.cos((angle) * Math.PI/180)), 
        mouseY + (5 * Math.sin((angle) * Math.PI/180))); 

      g.lineTo(mouseX - (20 * Math.cos((angle + 45) * Math.PI/180)), 
        mouseY - (20 * Math.sin((angle + 45) * Math.PI/180))); 
     } 

     protected function polarAngle(point:Point, center:Point=null):Number 
     { 
      if (!center) 
       center = new Point(0, 0); 

      return Math.atan2(point.y - center.y, point.x - center.x) * 180/Math.PI; 
     } 

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

      // stop rendering 
      canvas.removeEventListener(Event.ENTER_FRAME, enterFrameHandler); 

      // push canvas to arrows collection 
      arrows.push(canvas); 

      // add a fresh canvas 
      addCanvas(); 
     } 

    } 
} 

あなたがそれらを移動する方法を知っているので、私はあなたにそれを任せると言います。

+1

こんにちは - ありがとうコードです!私はFlash&AS3にはまったく新しいですが、私はこのプロジェクトに取り組んでいます。私はこれを私のFlashプロジェクトに持っています。このようなオブジェクトを見つけることができます(アクセス可能であることが分かります):var a:Arrows = new Arrows();しかし、私は次に何をすべきかわからない...私はまじめな気分だが、今は厳しい締め切りにいる。そんな初心者のために申し訳ありません! – Nutkraker

+1

私はあなたのコードをArrows.asと呼ばれるファイルに追加しました。私はこのファイルをflaファイルに追加しました(両方のファイルが同じディレクトリにあります):var a:Arrows = new Arrows(); – Nutkraker

+1

心配しないでください!私はそれをステージに追加していませんでした:addChild(a);あなたの答えをありがとう - 私は時間のトンを救った! – Nutkraker

関連する問題