flash on 2013-1-7
♥0 |
Line 80 |
Modified 2013-01-07 04:45:34 |
MIT License
archived:2017-03-20 01:30:27
ActionScript3 source code
/**
* Copyright yurij.shaulov ( http://wonderfl.net/user/yurij.shaulov )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/nnKI
*/
package{
import flash.display.DisplayObjectContainer;
import flash.display.Graphics;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.geom.Point;
public class Circle extends Sprite {
public function get color():uint { return _color; }
public function set color(value:uint):void {
_color = value;
draw();
}
private var _color:uint = 0x55FFFF;
public function get radius():Number { return _radius; }
public function set radius(value:Number):void {
_radius = value;
draw();
}
private var _radius:Number;
//public function onMouseUp(e:MouseEvent):void {
//stopDrag();
//}
public var onMouseUp:Function;
public function Circle( x:Number = 0, y:Number = 0 ,radius_:Number = 30) {
this.x = x;
this.y = y;
//this._radius = radius;
_circleView = new Sprite();
addChild(_circleView);
_circleView.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void {
startDrag();
});
_circleView.addEventListener(MouseEvent.MOUSE_UP, function(e:MouseEvent):void {
stopDrag();
});
_scaleView = new Sprite();
var sg:Graphics = _scaleView.graphics;
sg.beginFill(0xFFCCCC);
sg.drawRect( -5, -5, 5, 5);
sg.endFill();
_scaleView.y = +_scaleView.height / 2;
addChild(_scaleView);
var scaleOnEnterFrame :Function = function(e:Event):void {
_scaleView.x = mouseX ;//+ _scaleView.width/2;
radius = _scaleView.x ;//- _scaleView.width/2;
}
var scaling:Boolean = false;
_scaleView.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void {
if (!scaling) {
addEventListener(Event.ENTER_FRAME, scaleOnEnterFrame);
}
scaling = true;
});
_scaleView.addEventListener(MouseEvent.MOUSE_UP, function(e:MouseEvent):void {
if (scaling) {
removeEventListener(Event.ENTER_FRAME, scaleOnEnterFrame);
}
scaling = false;
});
this.radius = radius_;
_scaleView.x = radius ;//+_scaleView.width / 2;
onMouseUp = function(e:MouseEvent):void {
stopDrag();
if (scaling) {
removeEventListener(Event.ENTER_FRAME, scaleOnEnterFrame);
}
scaling = false;
};
}
private var _circleView:Sprite;
private var _scaleView:Sprite;
private function draw():void {
var g:Graphics = _circleView.graphics;
g.clear();
g.beginFill(color,0.5);
g.drawCircle(0, 0, radius);
g.endFill();
}
public override function toString():String {
return "new Circle("+x+","+y+","+radius+")";
}
}
}