/**
*
* 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
}
}
BKPARK
하이용
2011년 3월 11일 금요일
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;
}
}
}
{
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일 목요일
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());
}
}
}
}
[출처] 서버에 File Upload 하기|작성자 위니
피드 구독하기:
글 (Atom)