Action Script 3.0 で絵を描くその2

今回は,前回のお絵かきに少し機能をプラスしました。

ペイントのカラーを3色追加したのと、
以前,カメラでキャプチャを撮る回でやると言っていた画像の保存機能を追加しました。

前回の記事はこちら
http://buchayaty.blogspot.com/2012/01/web-web-web-swf-ww-web-package-flash.html

画像の保存にはadobeのJPGEncoder を使いました。
JPGEncoder はhttp://code.google.com/p/as3corelib/こちらからDLしてください。

前回から追加した部分を載せます。(前回と同じ部分は ~略~ と表示します。)

↑クリアボタンを押すとリセット。各カラーボタンで色変更。C-studioを押すと画像のDLが出来ます。

package {

  ~略~

  import com.adobe.images.JPGEncoder;
  import flash.utils.ByteArray;
  import flash.net.*;
  
  public class Main extends Sprite {

    ~略~

    //各ボタン
    private var Clear:Clear1 = new Clear1();
    private var colorRed:colorRed1 = new colorRed1();
    private var colorGreen:colorGreen1 = new colorGreen1();
    private var colorBlue:colorBlue1 = new colorBlue1();
    private var cs:cs1 = new cs1();

    public function Main() {
       // constructor code
       ~略~
    }

    //赤に変更ボタン
    addChild(colorRed);
    colorRed.x = 100;
    colorRed.y = 400;
    colorRed.buttonMode = true;
    colorRed.addEventListener(MouseEvent.CLICK, changeColorRed);
    function changeColorRed(e:MouseEvent):void {
      canvas.graphics.lineStyle(3, 0xFF0000);
    }

    //緑に変更ボタン
    addChild(colorGreen);
    colorGreen.x = 200;
    colorGreen.y = 400;
    colorGreen.buttonMode = true;
    colorGreen.addEventListener(MouseEvent.CLICK, changeColorGreen);
    function changeColorGreen(e:MouseEvent):void {
      canvas.graphics.lineStyle(3, 0x00FF00);
    }

    //青に変更ボタン
    addChild(colorBlue);
    colorBlue.x = 300;
    colorBlue.y = 400;
    colorBlue.buttonMode = true;
    colorBlue.addEventListener(MouseEvent.CLICK, changeColorBlue);
    function changeColorBlue(e:MouseEvent):void {
      canvas.graphics.lineStyle(3, 0x0000FF);
    }

    //画像保存ボタン
    addChild(cs);
    cs.x = 400;
    cs.y = 400;
    cs.buttonMode = true;
    //保存イベント
    cs.addEventListener ( MouseEvent.CLICK, onClick );
    function onClick ( e:MouseEvent ):void{
      //BitmapData作成
      var bmd:BitmapData = new BitmapData(500,400);
      bmd.draw(canvas);
      //BitmapDataをJPGEncoderで変換
      var jpeg:JPGEncoder = new JPGEncoder(100);
      var byteArr:ByteArray = jpeg.encode(bmd);
      new FileReference().save(byteArr, "test.jpg");
    }
  }

~略~

}

画像の保存がなかなか出来ないなと思っていたら、

JPGEncoder が FlashPlayer10 からしか対応してないようです。

自宅のPCがCS3なのでFlashPlayer9 でしか書き出せなかったようです。