forked from: dragging example for stackoverflow
/**
* Copyright lean ( http://wonderfl.net/user/lean )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/c8zZ
*/
// forked from www0z0k's dragging example for stackoverflow
package {
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.events.ContextMenuEvent;
import flash.events.Event;
import flash.events.FocusEvent;
import flash.events.MouseEvent;
import flash.display.Sprite;
import flash.ui.ContextMenu;
import org.libspark.betweenas3.BetweenAS3;
import org.libspark.betweenas3.easing.*;
import org.libspark.betweenas3.events.TweenEvent;
import org.libspark.betweenas3.tweens.IObjectTween;
[SWF(frameRate='30')]
public class NewClass extends Sprite {
private var drag:Sprite;
private var down:Boolean = false;
public function NewClass() {
init();
}
private function init():void{
drag = new Sprite();
addChild(drag);
with(drag.graphics){
beginFill(0x0000ff);
lineTo(0, 24);
lineTo(24, 24);
lineTo(24, 0);
lineTo(0, 0);
endFill();
}
/*4*/ /*var t:Timer = new Timer(10);
t.addEventListener(TimerEvent.TIMER, tick);
t.start();*/
/*5*/ var t1:Timer = new Timer(100);
t1.addEventListener(TimerEvent.TIMER, tickTween);
t1.start();
stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
/*1*/ //stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
stage.addEventListener(MouseEvent.MOUSE_UP, onUp);
stage.addEventListener(Event.MOUSE_LEAVE, onLeave);
stage.addEventListener(FocusEvent.FOCUS_OUT, onLeave);
stage.addEventListener(Event.DEACTIVATE, onLeave);
/*2*/ //addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
// Parameters are:
// .tween(Target, ToValues, FromValues, Time, Easing, Delay)
// [http://www.libspark.org/wiki/BetweenAS3/en#Easing]
private function tickTween(e:TimerEvent):void{
if(down){
BetweenAS3.tween(
drag,
{x: mouseX - drag.width / 2, y: mouseY - drag.height / 2},
null,
0.1,
/*Expo*/Quad.easeOutIn
).play();
}
}
private function tick(e:TimerEvent):void{
onEnterFrame();
}
private function onEnterFrame(e:Event = null):void{
if (down) {
drag.x = mouseX - drag.width / 2;
drag.y = mouseY - drag.height / 2;
}
}
private function onLeave(e:Event):void {
trace(e.type);
drag.x = 0;
drag.y = 0;
onUp();
}
private function onMove(e:MouseEvent):void {
if (down) {
drag.x = e.stageX - drag.width / 2;
drag.y = e.stageY - drag.height / 2;
}
}
private function onDown(e:MouseEvent):void {
down = true;
/*3*/ //drag.startDrag(true);
}
private function onUp(e:Event = null):void {
down = false;
/*3*/ //drag.stopDrag();
}
}
}