Murayama blog.

プログラミングと、その次の話

2点間の距離を計測するプログラム


1人でこつこつActionScript3.0アニメーションを読み進める会。。


2つの座標の距離を計測してテキストボックスに出力します。
なんてことのないプログラムです。


肝なのは、

      var dx:Number = mouseX - sprite.x;
      var dy:Number = mouseY - sprite.y;
      
      var dist:Number = Math.sqrt(dx * dx + dy * dy);


ピタゴラスの定理
まさか人生でまたこの名前を聞くとは。。算数役に立つやん。


ソース。

package
{
  import flash.display.Sprite;
  import flash.events.MouseEvent;
  import flash.text.TextField;
  
  public class MouseDistance extends Sprite
  {
    
    private var sprite:Sprite;
    private var textField:TextField;
 
    public function MouseDistance()
    {
      init();
    }
    
    public function init():void
    {
      sprite = new Sprite();
      addChild(sprite);
      
      sprite.graphics.beginFill(0x000000);
      sprite.graphics.drawRect(-2, -2, 4, 4);
      sprite.graphics.endFill();
      
      sprite.x = 100;
      sprite.y = 100;
      
      textField = new TextField();
      addChild(textField);
      
      stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove_stage);
    }
 
 
    private function onMouseMove_stage(evt:MouseEvent):void
    {
      graphics.clear();
      graphics.lineStyle(1, 0, 1);
      graphics.moveTo(sprite.x, sprite.y);
      graphics.lineTo(mouseX, mouseY);
      
      var dx:Number = mouseX - sprite.x;
      var dy:Number = mouseY - sprite.y;
      
      var dist:Number = Math.sqrt(dx * dx + dy * dy);
      textField.text = dist.toString();
    }
  }
}

自己満足。