読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

スプライトをドラッグするサンプル

Sprite#startDrag()で簡単に実現できます。

  • Sprite#startDrag()でドラッグ開始、Sprite#stopDrag()でドラッグ終了です。それぞれ、マウスダウン、マウスアップとかに割り当てておけばOK。
  • 2つめの引数でドラッグ可能な領域を指定することもできます。
package {

  import flash.display.*;
  import flash.events.*;
  import flash.geom.*;
  
  // スプライトをドラッグするサンプル
  public class Sample extends Sprite  {
    
    public function Sample(){

      // ドラッグできるスプライト
      var circle1:Sprite = create( 0xFF4444, 50,  100 );
      var circle2:Sprite = create( 0x44FF44, 150, 100 );
      var circle3:Sprite = create( 0x4444FF, 250, 100 );
      
      // マウスダウンでドラッグ開始
      circle1.addEventListener(MouseEvent.MOUSE_DOWN, function(event:MouseEvent):void {
        // circle1は自由に移動可能
        circle1.startDrag();
      });
      circle2.addEventListener(MouseEvent.MOUSE_DOWN, function(event:MouseEvent):void {
        // circle2は横方向にのみ移動可能
        circle2.startDrag(false, new Rectangle(-1000, 0, 2000, 0) ); // 座標はこんなんじゃまずいんだろうけど。
      });
      circle3.addEventListener(MouseEvent.MOUSE_DOWN, function(event:MouseEvent):void {
        // circle3は縦方向にのみ移動可能
        circle3.startDrag(false, new Rectangle(0, -1000, 0, 2000) );
      });
      
      // マウスアップでドラッグ終了。
      ([circle1,circle2,circle3]).forEach( function(item:*,i:int,arr:Array):void {
        item.addEventListener(MouseEvent.MOUSE_UP,  function(event:MouseEvent):void{
          item.stopDrag();
        });  
      });
    }
    
    // スプライトを作る。
    public function create( color:uint, x:int, y:int ):Sprite {
      var circle:Sprite = new Sprite();
      var g:Graphics = circle.graphics;
      g.beginFill( color );
      g.drawCircle( x, y, 20 );
      g.endFill();
      addChild(circle);
      return circle;
    }
  }
}

コンパイルしたモノはこちら

ドラッグ中も本体は動かさずに、半透明のエイリアス的なモノをドラッグさせたい!とかなるともっと実装が必要だけど、スライダーのハンドルとかはこれでさくっと作れそうだな。