2011년 3월 11일 금요일

core4

/**
 *
 * http://ntt.cc/2010/07/27/how-to-calculate-the-average-between-2-colors-in-actionscript3.html
 */
package com.na4.color
{
public class Coloring
{
public function Coloring()
{
} // End of the public function


public function HSBtoRGB(h:int, s:int, v:int)
{
var _loc2:N;
var _loc4:int;
var _loc1:int;

h = Math.round(h);
s = Math.round(s * 255 / 100);
v = Math.round(v * 255 / 100);

if (s == 0)
{
_loc1 = v;
_loc4 = v;
_loc2 = v;
}
else
{
var _loc5 = v;
var _loc3 = (255 - s) * v / 255;
var _loc7 = (_loc5 - _loc3) * (h % 60) / 60;
if (h == 360)
{
h = 0;
} // end if
if (h < 60)
{
_loc2 = _loc5;
_loc1 = _loc3;
_loc4 = _loc3 + _loc7;
}
else if (h < 120)
{
_loc2 = _loc5 - _loc7;
_loc4 = _loc5;
_loc1 = _loc3;
}
else if (h < 180)
{
_loc2 = _loc3;
_loc4 = _loc5;
_loc1 = _loc3 + _loc7;
}
else if (h < 240)
{
_loc2 = _loc3;
_loc4 = _loc5 - _loc7;
_loc1 = _loc5;
}
else if (h < 300)
{
_loc2 = _loc3 + _loc7;
_loc4 = _loc3;
_loc1 = _loc5;
}
else if (h < 360)
{
_loc2 = _loc5;
_loc4 = _loc3;
_loc1 = _loc5 - _loc7;
}
else
{
_loc2 = 0;
_loc4 = 0;
_loc1 = 0;
} // end else if
} // end else if
_loc2 = Math.round(_loc2);
_loc4 = Math.round(_loc4);
_loc1 = Math.round(_loc1);
return (_loc2 << 16 | _loc4 << 8 | _loc1);
} // End of the public function


public function RGBtoHSB(rgb)
{
var _loc3 = rgb >> 16;
var _loc1 = (rgb & 65280) >> 8;
var _loc2 = rgb & 255;
var _loc4 = new Object();
_loc4.b = Math.max(Math.max(_loc3, _loc1), _loc2);
var _loc6 = Math.min(Math.min(_loc3, _loc1), _loc2);
_loc4.s = _loc4.b <= 0 ? (0) : (Math.round(100 * (_loc4.b - _loc6) / _loc4.b));
_loc4.b = Math.round(_loc4.b / 255 * 100);
_loc4.h = 0;
if (_loc3 == _loc1 && _loc1 == _loc2)
{
_loc4.h = 0;
}
else if (_loc3 >= _loc1 && _loc1 >= _loc2)
{
_loc4.h = 60 * (_loc1 - _loc2) / (_loc3 - _loc2);
}
else if (_loc1 >= _loc3 && _loc3 >= _loc2)
{
_loc4.h = 60 + 60 * (_loc1 - _loc3) / (_loc1 - _loc2);
}
else if (_loc1 >= _loc2 && _loc2 >= _loc3)
{
_loc4.h = 120 + 60 * (_loc2 - _loc3) / (_loc1 - _loc3);
}
else if (_loc2 >= _loc1 && _loc1 >= _loc3)
{
_loc4.h = 180 + 60 * (_loc2 - _loc1) / (_loc2 - _loc3);
}
else if (_loc2 >= _loc3 && _loc3 >= _loc1)
{
_loc4.h = 240 + 60 * (_loc3 - _loc1) / (_loc2 - _loc1);
}
else if (_loc3 >= _loc2 && _loc2 >= _loc1)
{
_loc4.h = 300 + 60 * (_loc3 - _loc2) / (_loc3 - _loc1);
}
else
{
_loc4.h = 0;
} // end else if
_loc4.h = Math.round(_loc4.h);
return (_loc4);
} // End of the public function
}
}

As2RC4

package com.core
{
import mx.flash.UIMovieClip;

public class As2RC4
{
static public var sbox:Array = new Array(255);
static public var mykey:Array = new Array(255);

public function As2RC4()
{

}

static public function initialize(pwd:Array) : void
{
var _loc2:uint = 0;
var _loc3:uint;
var nLength:uint = pwd.length;

for (var i:uint = 0; i <= 255; ++i)
{
mykey[i] = pwd[i % nLength];
sbox[i] = i;
} // end of for

for (var j:uint = 0; j <= 255; ++j)
{
_loc2 = (_loc2 + sbox[j] + mykey[j]) % 256;
_loc3 = sbox[j];

sbox[j] = sbox[_loc2];
sbox[_loc2] = _loc3;
} // end of for
} // End of the public function

static public function encrypt(src:String, key:String) :String
{
var _loc3:Array = strToChars(src);
var _loc1:Array = strToChars(key);
var _loc2:Array = calculate(_loc3, _loc1);

return charsToHex(_loc2);
}

static public function decrypt(src:String, key:String) : String
{
var _loc3:Array = hexToChars(src);
var _loc1:Array = strToChars(key);
var _loc2:Array = calculate(_loc3, _loc1);

return charsToStr(_loc2);
}

static public function calculate(plaintxt:Array, psw:Array) : Array
{
initialize(psw);

var _loc1:uint = 0;
var _loc2:uint = 0;
var _loc9:Array = new Array();
var _loc7:uint;
var _loc5:uint;
var _loc6:Object;

for (var i:uint = 0; i < plaintxt.length; ++i)
{
_loc1 = (_loc1 + 1) % 256;

_loc2 = (_loc2 + sbox[_loc1]) % 256;

_loc5 = sbox[_loc1];
sbox[_loc1] = sbox[_loc2];
sbox[_loc2] = _loc5;

var _loc4:uint = ( sbox[_loc1] + sbox[_loc2]) % 256;

_loc7 = sbox[_loc4];

_loc6 = plaintxt[i] ^ _loc7;

_loc9.push(_loc6);
} // end of for
return (_loc9);
}


/**
*
*/
static public function charsToHex(chars:Array ) : String
{
var hex:String = new String("");
var _loc3:Array = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f");

for (var i:uint = 0; i < chars.length; ++i)
{
hex = hex + (_loc3[chars[i] >> 4] + _loc3[chars[i] & 15]);
} // end of for

return (hex);
}


static public function hexToChars(hex:String) : Array
{
var chars:Array = new Array();

for (var i:uint = hex.substr(0, 2) == "0x" ? (2) : (0); i < hex.length; i = i + 2)
{
chars.push(parseInt(hex.substr(i, 2), 16));
}
return chars;
}


static public function charsToStr(chars : Array) : String
{
var str:String = new String("");

for (var i:uint = 0; i < chars.length; ++i)
{
str = str + String.fromCharCode(chars[i]);
}
return str;
}


static public function strToChars(str:String) : Array
{
var chars:Array = new Array();

for (var i:uint = 0; i < str.length; ++i)
{
chars.push(str.charCodeAt(i));
}

return chars;
}

}
}

2011년 3월 10일 목요일

ColorMatrix Class Url

http://snipplr.com/view/28015/as3-colormatrix-class/

이미지 변형 툴 사이트

http://www.senocular.com/flash/tutorials/transformtool/

BitmapData를 PNG나 JPG로 변환하여 ByteArray로 서버에 전송하는 방법

http://cafe.naver.com/udone.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=162&

서버에 File Upload 하기 [출처] 서버에 File Upload 하기|작성자 위니

package {
       import flash.display.Sprite;
       import flash.events.Event;
       import flash.events.MouseEvent;
       import flash.net.FileFilter;
       import flash.net.FileReference;
       import flash.net.URLRequest;
       import flash.net.URLRequestMethod;
       import flash.net.URLVariables;

       public class FileUpload extends Sprite {

             /**
                *셋팅 되어 있는 서버 경로...
                * !! 주의 !! 서버 폴더의 퍼미션 설정을 반드시  !. write  체크 되어 있어야 합니다.
                방법 : ftp -> remote site -> 원하는 폴더 선택 우클릭 -> 퍼미션 설정 모드. 
                */
             public static const SERVER_PATH:String="";

             /**
                파일 레퍼런스 변수.
                * myType -> brows 에서는 타입을 배열로 받기 때문에 img, text  따로 생성하여 myType담아야 한다.
                */
             private var fileRef:FileReference;

             private var myType:Array=[];


             /**
                초기화 부분.
                */

             public function FileUpload() {
                    super();


                    // 초기화
                    this.defaultSetting();
                    this.initLayout();
                    this.initEvents();

                    // 업로드 시작을 기다리는 리스너
                    stage.addEventListener(MouseEvent.CLICK,onClick);
             }


             private function defaultSetting():void {

                    if (SERVER_PATH=="") {

                           trace("SERVER_PATH  설정해주세요");

                    }
                    this.fileRef=new FileReference  ;

                    // 업로드 타입
                    var imgType:FileFilter=new FileFilter("Images (*.jpg, *.jpeg, *.gif)","*.jpg; *.jpeg; *.gif");
                    var txtType:FileFilter=new FileFilter("Texts (*.txt, *.hwp)","*.txt; *.hwp");

                    this.myType.push(imgType);
                    this.myType.push(txtType);
             }

             private function initLayout():void {

             }

             private function initEvents():void {
                    this.fileRef.addEventListener(Event.SELECT,onSelect);
                    this.fileRef.addEventListener(Event.COMPLETE,onComplete);
             }

             /**
                *
                * @ 파일을 선택 했을 경우 처리 메소드.
                *   변수를 추가하여 전송할 수도 있고컨텐츠 타입전송방법( GET, POST ) 등을 설정한다.
                *   다수의 파일을 한번에 처리하고자  경우 FileReference -> FileReferenceList  한다.
                *
                *   파일이 없는 경우 FileReference 말고 URLLoader  처리하도록 변경해야 .
                *
                */
             private function onSelect(e:Event):void {

                    // 변수 추가하는 방법 ----------------------------------------------
                    var param:URLVariables=new URLVariables  ;
                    param.date=new Date  ;
                    param.id="1234-5678-90";

                    // URLRequest 설정 -----------------------------------------------
                    var url:String=FileUpload.SERVER_PATH+"/test/fileRef.php";
                    var req:URLRequest=new URLRequest(url);
                    req.method=URLRequestMethod.POST;
                    req.contentType="multipart/form-data";
                    req.data=param;

                    try {
                           this.fileRef.upload(req);
                    catch (e:Error) {
                           trace("Unable to Upload this file");
                    }
             }

             // 업로드 완료 --------------------------------
             private function onComplete(e:Event):void {
                    var name:String=e.target as FileReference.name;
                    trace(name+" Upload Complete");
             }

             // 스테이지를 클릭 했을 경우 셀렉트 브라우저 오픈 ---------------
             private function onClick(e:MouseEvent):void {
                    try {
                           fileRef.browse(this.myType);
                    catch (e:Error) {
                           trace(e.getStackTrace());
                    }
             }
       }
}