In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: stalking arrow

Get Adobe Flash player
by l.dijkman 06 Nov 2010
/**
 * Copyright l.dijkman ( http://wonderfl.net/user/l.dijkman )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/7Tov
 */

// forked from 883108's stalking arrow
package {
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.geom.Point;
    import flash.text.TextField;
    
    public class StalkerDocument extends Sprite {

    
        private var _arrow:Arrow;
        private var _crossLine:CrossLine;
        
        public function StalkerDocument(){
            init();
        }
        
        private function init():void{

            // 矢印インスタンスを生成し、ステージ中央に配置
            _arrow = new Arrow();
            addChild(_arrow);
            _arrow.x = stage.stageWidth / 2;
            _arrow.y = stage.stageHeight / 2;

            // 十字線を作成し、ステージに配置
            _crossLine = new CrossLine(stage.stageWidth, stage.stageHeight);
            addChild(_crossLine);


            stage.addEventListener(Event.ENTER_FRAME, stalk);
        }
        
        private function stalk($event:Event):void{
            var vector:Point = new Point(mouseX - _arrow.x, mouseY - _arrow.y);
            var radians:Number = Math.atan2(vector.y, vector.x);
            _arrow.rotation = radians * 180 / Math.PI;
            _crossLine.update(new Point(mouseX, mouseY), new Point(_arrow.x, _arrow.y));
        }    
    }
}

import flash.display.Sprite;
import flash.geom.Point;
import flash.text.TextField;
class Arrow extends Sprite{
    public function Arrow(){
        init();
    }
    
    private function init():void{
        graphics.lineStyle(1, 0, 1);
        graphics.beginFill(0xd33000);
        graphics.moveTo(20, 0);
        graphics.lineTo(0, 20);
        graphics.lineTo(0, 10);
        graphics.lineTo(-20, 10);
        graphics.lineTo(-20, -10);
        graphics.lineTo(0, -10);
        graphics.lineTo(0, -20);
        graphics.lineTo(20, 0);
        graphics.endFill();
    }
}

class CrossLine extends Sprite{
    var _xLine:Sprite;
    var _yLine:Sprite;
    var _line:Sprite;
    var _line2:Sprite;
    var _field:TextField;
    var _field2:TextField;
    var _lineColor:uint = 0x999999;
    var _lineColor2:uint = 0x666666;
    
    function CrossLine($width, $height){
        init($width, $height);
    }
    
    internal function init($width, $height){
        // 線のインスタンスを作成
        _xLine = new Sprite();
        _xLine.graphics.beginFill(0x003399);
        _xLine.graphics.lineStyle(0, _lineColor);
        _xLine.graphics.moveTo(0, 0);
        _xLine.graphics.lineTo($width, 0);
        _xLine.graphics.endFill();
        
        addChild(_xLine);

        _yLine = new Sprite();
        _yLine.graphics.beginFill(0x003399);
        _yLine.graphics.lineStyle(0, _lineColor);
        _yLine.graphics.moveTo(0, 0);
        _yLine.graphics.lineTo(0, $height);
        _yLine.graphics.endFill();
        addChild(_yLine);
        
        _line = new Sprite();
        addChild(_line);
        
        _line2 = new Sprite();
        addChild(_line2);

        _field = new TextField();
        addChild(_field);
        _field.width = 200;
        _field.height = 100;
        
        _field2 = new TextField();
        addChild(_field2);
        _field2.width = 100;
        _field2.height = 50;
    }
    
    public function update($mousePoint:Point, $arrowPoint:Point){
        _xLine.y = $mousePoint.y;
        _yLine.x = $mousePoint.x;
        //
        _line.graphics.clear();
        _line.graphics.beginFill(0x003399);
        _line.graphics.lineStyle(0, _lineColor2);
        _line.graphics.moveTo($arrowPoint.x, $arrowPoint.y);
        _line.graphics.lineTo($mousePoint.x, $mousePoint.y);
        _line.graphics.endFill();
        //
        
        _line2.graphics.clear();
        _line2.graphics.beginFill(0x003399);
        _line2.graphics.lineStyle(0, _lineColor2);
        _line2.graphics.moveTo($arrowPoint.x, $arrowPoint.y);
        _line2.graphics.lineTo($mousePoint.x, $arrowPoint.y);
        _line2.graphics.endFill();
        
        _field.x = $mousePoint.x;
        _field.y = $mousePoint.y;
        _field.text = (
                        'mouseX : ' + $mousePoint.x + '\n' + 
                        'mouseY : ' + $mousePoint.y + '\n' + 
                        'distance:Point : ' + ($mousePoint.x - $arrowPoint.x) + ',' + ($mousePoint.y - $arrowPoint.y) + '\n'
                       );
        _field2.x = $arrowPoint.x + ($mousePoint.x - $arrowPoint.x) / 3;
        _field2.y = $arrowPoint.y + ($mousePoint.y - $arrowPoint.y) / 3;        
        _field2.text = (
                        'tan : ' + (($mousePoint.y - $arrowPoint.y) / ($mousePoint.x - $arrowPoint.x)) + '\n' +
                        'atan2 : ' + Math.atan2($mousePoint.y - $arrowPoint.y, $mousePoint.x - $arrowPoint.x) + '\n' + 
                        'degree : ' + ( - (Math.atan2($mousePoint.y - $arrowPoint.y, $mousePoint.x - $arrowPoint.x)) * 180 / Math.PI)
                    );
    }
}