图像处理 - 绘图之复制图像数据

package
{
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.filters.GlowFilter;
    import flash.text.TextField;
    
    public class test002 extends Sprite
    {
        public function test002()
        {
            super();
          
            init();
        }
        
        private const INIT_SEGMENTS:uint=10;
        private const THICKNESS:uint=2;
        private const COLOR:uint=0xFF0000;
        private const ROTATION_RATE:uint=1;
        
        private var shapeHolder:Sprite;
        private var shapes:Vector.<Shape>;
        private var myFilters:Array;
        
        private function init():void
        {
            shapeHolder = new Sprite;
            shapeHolder.x = stage.stageWidth>>1;
            shapeHolder.y = stage.stageHeight >>1;
            addChild(shapeHolder);
            
            var bu:Sprite = new Sprite();
            bu.graphics.beginFill(0x66CC);
            bu.graphics.drawRect(0,0,100,30);
            bu.graphics.endFill();
            var t:TextField = new TextField;
            t.text = "清理";
            bu.addChild(t);
            addChild(bu);
            bu.mouseChildren = false;
            bu.addEventListener(MouseEvent.CLICK,clickHandler);
            
            shapes = new Vector.<Shape>();
            for(var i:uint=0;i<INIT_SEGMENTS;i++){
                addSegments();
            }
            postionSement();
            myFilters = [new GlowFilter()];
            
            stage.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown);
            stage.addEventListener(MouseEvent.MOUSE_UP,mouseUp);
        }
        
        private function addSegments():void
        {
            var shape:Shape = new Shape;
            if(shapes.length>0){
                shape.graphics.copyFrom(shapes[0].graphics);
            }else{
                shape.graphics.lineStyle(THICKNESS,COLOR);
            }
            shapes.push(shape);
            shapeHolder.addChild(shape);
        }
        
        private function postionSement():void
        {
            var segments:uint = shapes.length;
            var angle:Number = 360/segments;
            for(var i:uint=1;i<segments;i++){
                shapes[i].rotation = i*angle;
            }
        }
        
        private function mouseDown(e:MouseEvent):void
        {
            var shape:Shape = shapes[0];
            shape.graphics.lineTo(shape.mouseX,shape.mouseY);
            addEventListener(Event.ENTER_FRAME,enterframe);
        }
        
        private function mouseUp(e:MouseEvent):void
        {
            removeEventListener(Event.ENTER_FRAME,enterframe);
        }
        
        private function enterframe(e:Event):void
        {
            shapeHolder.rotation = ROTATION_RATE;
            draw();
        }
        
        private function draw():void
        {
            var shape:Shape = shapes[0];
            shape.graphics.lineTo(shape.mouseX,shape.mouseY);
            var segments:uint = shapes.length;
            for(var i:uint=1;i<segments;i++){
                shapes[i].graphics.copyFrom(shape.graphics);
            }
        }
        
        private function clickHandler(e:MouseEvent):void
        {
            e.stopImmediatePropagation();
            while(shapeHolder.numChildren){
                var s:Shape = shapeHolder.removeChildAt(0) as Shape;
                s.graphics.clear();
                s = null;
            }
            shapeHolder = null;
            init();
        }
    }
}

 

posted @ 2014-08-15 20:47  ybsk  阅读(177)  评论(0编辑  收藏  举报