FileReference de Save

by nipx
♥2 | Line 81 | Modified 2010-07-23 20:15:24 | MIT License
play

ActionScript3 source code

/**
 * Copyright nipx ( http://wonderfl.net/user/nipx )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/gKIt
 */

package {
    
    import flash.display.*;
    import flash.events.*;
    import flash.net.*;
    import flash.text.*;
    import flash.utils.*;
    import mx.graphics.codec.*;
    import flashx.textLayout.formats.TextAlign;

    [SWF(backgroundColor="#000000", frameRate="30", width="500", height="500")]    
    
    public class FlashTest extends Sprite {
        public function FlashTest() {
            //flashだけで画像ファイルを保存するよ。
            var canvas:Canvas    = new Canvas();
            canvas.x = 50;
            canvas.y = 50;
            addChild( canvas );
             
            var btn:Sprite    = new Sprite();
            btn.mouseChildren = false;
            btn.buttonMode    = true;
            btn.x = 50;
            btn.y = 10;
            btn.graphics.beginFill( 0xCCCCCC );
            btn.graphics.drawRoundRect( 0, 0, 50, 20, 5, 5 );
            var label:TextField = new TextField();
            label.width    = 0;
            label.wordWrap = false;
            label.x        = 25;
            label.autoSize = TextFieldAutoSize.CENTER;
            label.defaultTextFormat = new TextFormat( "_ゴシック", 12, 0x333333);
            label.text = "Save";
            btn.addChild( label );
            addChild( btn );
            
            btn.addEventListener( MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void{
                var bmd:BitmapData    = new BitmapData( 400,400 );
                bmd.draw( canvas );
                var encorder:PNGEncoder   = new PNGEncoder();
                var bytes:ByteArray       = encorder.encode( bmd );
                var file:FileReference    = new FileReference();
                file.save( bytes, "Image.png" );
            });

        }
    }
}


import flash.display.*;
import flash.events.*;

class Canvas extends Sprite{
    
    public function Canvas(){
        var bg:Sprite        = new Sprite();
        g    = bg.graphics;
        g.beginFill( 0xFFFFFF );
        g.drawRect( 0, 0, 400, 400 );
        g.endFill();
        addChild( bg );
        
        var maskObject:Sprite = new Sprite();
        g    = maskObject.graphics;
        g.beginFill( 0xFF0000 );
        g.drawRect( 0, 0, 400, 400 );
        g.endFill();
        addChild( maskObject );
        mask    = maskObject;
        
        var layer:Sprite    = new Sprite();
        addChild( layer );
        g        = layer.graphics;
        g.lineStyle( 0, 0x000000 );
        
        mouseChildren    = false;
        addEventListener( MouseEvent.MOUSE_DOWN, onMouseDown );
    }
       
    private var g:Graphics;
    
    private function onMouseDown( e:MouseEvent ):void{
        g.moveTo( e.localX, e.localY );
        addEventListener( MouseEvent.MOUSE_MOVE, onMouseMove );
        addEventListener( MouseEvent.MOUSE_UP, onMouseUp );
    }
    private function onMouseMove( e:MouseEvent ):void{
        g.lineTo( e.localX, e.localY );
    }
    private function onMouseUp( e:MouseEvent ):void{
        g.lineTo( e.localX, e.localY );
        removeEventListener( MouseEvent.MOUSE_MOVE, onMouseMove );
        removeEventListener( MouseEvent.MOUSE_UP, onMouseUp );
    }

    
    
}