bookmark_borderAS3.0 원형 프리로더 클래스

package 
{
 import flash.display.Graphics;1076837207.as
 import flash.display.Sprite;
 import flash.events.*;
 /**
  * …
  * @author …
  */
 public class PreLoader extends Sprite
 {
  var circleToMask:Sprite = new Sprite();
  var circle:Sprite = new Sprite();
  var circleMask:Sprite = new Sprite();
  var percentage:Number = 0;
  var tper:Number = 0;
  var i:Number = 0;
  public function PreLoader(x:Number,y:Number)
  {
   //큰원을 그린다.
   circleToMask.graphics.beginFill(16755370);
   circleToMask.graphics.drawCircle(0, 0, 10);
   circleToMask.graphics.endFill();
   addChild(circleToMask);
   //그속에 하얀색 원을 작게 하나 그린다.
   circle.graphics.beginFill(0xffffff);
   circle.graphics.drawCircle(0, 0, 7);
   circle.graphics.endFill();
   
   //그리고 큰원에 마스크를 준다.
   addChild(circleToMask);
   addChild(circle);
   addChild(circleMask);
   circle.x = x;//(circle.x = x);
   circle.y = y;//(circle.y = y);
   circleToMask.x = (circleMask.x = x);
   circleToMask.y = (circleMask.y = y);
   circleToMask.mask = circleMask;
   
   addEventListener(Event.ENTER_FRAME, function (_arg1:Event):void{
    if(i >=100) i=0;
    i++;
    circleMask.rotation = (i/20)/(Math.PI/180)
    trace(circleToMask.rotation);
   })
   
  }
  public function SetStep(percentage:Number):void
  {
   
   graphics.clear();
   // Percentage should be between 0 and 1
   tper = percentage < 0 ? 0 : (percentage > 1 ? 1 : percentage);
   
   
   // Draw the masked circle
   circleMask.graphics.clear();
   circleMask.graphics.beginFill(0);
   drawPieMask(circleMask.graphics, tper, 10, 0, 0, (-(Math.PI) / 2), 3);
   circleMask.graphics.endFill();
   // Increase percentage with margins so it appears to stop for a short while
   percentage = (percentage + 0.01);
   if (percentage > 1.05){
    percentage = -0.05;
   }
  }
  public function drawPieMask(graphics:Graphics, percentage:Number, radius:Number = 10, x:Number = 0, y:Number = 0, rotation:Number = 0, sides:int = 6):void {
   // graphics should have its beginFill function already called by now
   graphics.moveTo(x, y);
   if (sides < 3) sides = 3; // 3 sides minimum
   // Increase the length of the radius to cover the whole target
   radius /= Math.cos(1/sides * Math.PI);
   // Shortcut function
   var lineToRadians:Function = function(rads:Number):void {
    graphics.lineTo(Math.cos(rads) * radius + x, Math.sin(rads) * radius + y);
   };
   // Find how many sides we have to draw
   var sidesToDraw:int = Math.floor(percentage * sides);
   for (var i:int = 0; i <= sidesToDraw; i++)
    lineToRadians((i / sides) * (Math.PI * 2) + rotation);
   // Draw the last fractioned side
   if (percentage * sides != sidesToDraw)
    lineToRadians(percentage * (Math.PI * 2) + rotation);
  } 
 }
 
}

bookmark_borderAS3.0 플래시->php 한글 깨짐 문제,

플래시 에서 PHP 쪽으로 GET 방식으로 변수를 날리면
php 쪽에는 $_GET[“변수”] 의 형식으로 받게 되는데
변수 속에 한글이 포함되어 있을경우에 한글이 외계어로 깨진다. ㅠㅠㅠㅠ

아놔 알려주는 사람도 없고 하루 종일 개삽질 크리 ㅠㅠㅠㅠ
간단하다 플래시측에서 PHP 로 날리기 전에 변수를 날리는 주소 전체는 encodeURI() 로 감싸서 보내라.
그럼  PHP 에서 GET으로 받았을때 정상으로 한글이 들어오는 것을 볼수 있을것이다.
혹시 그래도 이상한 값이 들어온다면 decodeURI()를 해보라,,

bookmark_borderAS3 EXIF 출하기

1105407132.rar

Exif library for AS3


This library can read and parse Exif information about a JPEG file. The Exif contains various information about the JPEG file such as the thumbnail image of the JPEG file, image resolution and so on.


See http://www.exif.org/Exif2-2.PDF for details of Exif specification.


Demo


You can see a demo SWF in here (source code of this demo).


Download


You can download this library from CodeRepos by using Subversion. This is the only way to obtain this library for now.


To download Exif library for AS3, use following command:

% svn co http://svn.coderepos.org/share/lang/actionscript/ExifInfo .

Examples


Display thumbnail image


The following code displays original JPEG image and thumbnail image.

import jp.shichiseki.exif.*;

var loader:ExifLoader = new ExifLoader();

private function loadImage():void {
loader.addEventListener(Event.COMPLETE, onComplete);
loader.load(new URLRequest(“http://www.example.com/sample.jpg”));
}

private function onComplete(e:Event):void {
// display image
addChild(loader);
// display thumbnail image
var thumbLoader:Loader = new Loader();
thumbLoader.loadBytes(loader.exif.thumbnailData);
addChild(thumbLoader);
}



Show Exif IFD informations


The following code shows Exif IFD information.

import jp.shichiseki.exif.*;

var loader:ExifLoader = new ExifLoader();

private function loadImage():void {
loader.addEventListener(Event.COMPLETE, onComplete);
loader.load(new URLRequest(“http://www.example.com/sample.jpg”));
}

private function onComplete(e:Event):void {
if (loader.exif.ifds.primary)
displayIFD(loader.exif.ifds.primary);
if (loader.exif.ifds.exif)
displayIFD(loader.exif.ifds.exif);
if (loader.exif.ifds.gps)
displayIFD(loader.exif.ifds.gps);
if (loader.exif.ifds.interoperability)
displayIFD(loader.exif.ifds.interoperability);
if (loader.exif.ifds.thumbnail)
displayIFD(loader.exif.ifds.thumbnail);
}

private function displayIFD(ifd:IFD):void {
trace(” — ” + ifd.level + ” — “);
for (var entry:String in ifd) {
trace(entry + “: ” + ifd[entry]);
}
}


Documentation


An ASDoc-style API documentation is available here.


Following XML-formatted documents describe the tags which are contained in Exif IFDs.



License


MIT-license

bookmark_borderAS3 MP3 플레이어 만들기

1099600542.fla
 

import fl.controls.ComboBox;
import fl.controls.Label;
import fl.events.*;
import flash.sensors.Accelerometer;
import flash.events.Event;
import flash.media.Sound;
import flash.net.URLRequest;
import flash.media.SoundChannel;
import flash.errors.IOError;
import flash.events.IOErrorEvent;
import flash.events.MouseEvent;

System.useCodePage = false;
var urlLoader:URLLoader;
var loader:Loader;
var Bis:Boolean = false;
var pos:int = 0;
var cnt:int = 0;
var xml:XML;
var mcarr:Array = new Array();
urlLoader=new URLLoader();
var urlRequest: URLRequest = new URLRequest();
var urlVariables:URLVariables = new URLVariables();
var soundobj:Sound;
var channel:SoundChannel;

urlRequest.url = “http://www.titorus.com/bgmread.php”;
urlRequest.data = urlVariables;

//System.useCodePage= true;

btplay.addEventListener(MouseEvent.CLICK,onclick);
btpause.addEventListener(MouseEvent.CLICK,onpause);
btstop.addEventListener(MouseEvent.CLICK,onstop);
urlLoader.addEventListener( Event.COMPLETE, onComplete );
urlLoader.load( urlRequest );

function onclick(e:MouseEvent):void
{
trace(“플래이”);
if (pos > 0)
{
soundobj.play(pos);
}
else
{
var item:Object = cb.selectedItem;
if (cb.selectedIndex > -1)
{
trace(item.label);
soundobj= new Sound();
// trace(item.label)
soundobj.load(new URLRequest(“http://www.titorus.com/bgm/”+encodeURI(item.label)));
soundobj.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
channel = new SoundChannel();
channel = soundobj.play();
channel.addEventListener(Event.SOUND_COMPLETE, oo);
Bis = true;
}
}
}
function onpause(e:MouseEvent):void
{
trace(“일시정지”);
pos = channel.position;
channel.stop();
}
function onstop(e:MouseEvent):void
{
trace(“정지”);
pos = 0;
channel.stop();
}

function errorHandler(event:IOErrorEvent):void
{
trace(“Couldn’t load the file ” + event.text);
}
function songSelected(e:Event):void
{

// var cb:ComboBox = event.currentTarget as ComboBox;
var item:Object = cb.selectedItem;
trace(cb.selectedIndex);
cnt = cb.selectedIndex;
if (cb.selectedIndex > -1)
{
// trace(item.label)
if (Bis == true)
{
channel.stop();

Bis = false;
}
soundobj= new Sound();
soundobj.load(new URLRequest(“http://www.titorus.com/bgm/”+encodeURI(item.label)));

soundobj.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);

channel = new SoundChannel();
channel = soundobj.play();
channel.addEventListener(Event.SOUND_COMPLETE, oo);
Bis = true;

}
}

function onComplete( e: Event ):void
{

xml = new XML(urlLoader.data);
trace( xml.toXMLString() );
for (var j:int=0; j<xml.child(“data”).length(); j++)
{
cb.addItem({label:(xml.child([j]).file)});
mcarr.push(xml.child([j]).file);

cb.addEventListener(Event.CHANGE, songSelected);
}
var item:Object = cb.selectedItem;
soundobj= new Sound();
trace(“xml :”+ xml.child([cnt]).file);
var ii:String = xml.child([cnt]).file;

var ss:String = “http://www.titorus.com/bgm/” + encodeURI(ii);
trace(“ss:”+ ss );
soundobj.load(new URLRequest(ss));

soundobj.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);

channel = new SoundChannel();
channel = soundobj.play();
channel.addEventListener(Event.SOUND_COMPLETE, oo);
Bis = true;

}

function oo(e:Event):void
{
trace(“완료”);
if (cb.rowCount <= cnt)
{
cnt = 0;
cb.selectedIndex = cnt;
}
else
{
cnt++;
cb.selectedIndex = cnt;

}
if (Bis == true)
{
channel.stop();

Bis = false;
}
soundobj= new Sound();
soundobj.load(new URLRequest(“http://www.titorus.com/bgm/”+encodeURI(xml.child([cnt]).file)));

soundobj.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);

channel = new SoundChannel();
channel = soundobj.play();
channel.addEventListener(Event.SOUND_COMPLETE, oo);
Bis = true;

if (cnt == xml.child(“data”).length())
{
cnt = 0;
}

}

bookmark_border텍스트큐브에 SyntaxHighlighter 설치하기

인터넷을 뒤지다 보니까 자료는 있는데 오래된 자료들이라서 나에게 맞게 설치 한다음 올려본다.

아래의 주소에서 다운로드 한다.
http://alexgorbatchev.com/wiki/SyntaxHighlighter
현재 2010. 10월 기준 3.0 이 최신버젼이다.
파일을 다운받아 압축을 풀면, 다음과 같은 파일들이 나옵니다.


사용자 삽입 이미지

이들 중 scripts, src, styles 3개의 폴더를 자신의 skin폴더에 업로드합니다.
자신이 기존의 스킨을 수정해서 쓰고 있다면 skin 폴더의 customize 폴더에 복사를 해야합니다.


사용자 삽입 이미지

루트폴더/tests/에 있는 html파일을 열어서, 소스를 열어 선택된 부분을 카피합니다.


사용자 삽입 이미지

이 부분을 skin.html파일 상단에 추가합니다.
사용자 삽입 이미지

이렇게 세팅하고나면 기본적인건 다 된겁니다.

이제 에디터에서 사용법을 살펴보지요.

에디터에서 html에디트 모드로

<pre class=”brush: c-sharp;”>


function test() : String

{

return 10;

}

</pre>

이런식으로 쓰면 내부적으로 변환해서


사용자 삽입 이미지

위처럼 나오게 되는거죠.

소스코드를 공유할때는 Syntax Color등이 자동으로 설정되어 표시되기때문에 상당히 효과적이라고 생각합니다.

“<pre class=”brush: c-sharp;”>”  이부분에서 brush의 value값이 어떤것들이 있는지 살펴보겠습니다.


사용자 삽입 이미지

가장 상단부분에 있는 ActionScript3가 저는 가장 반갑네요.

<pre class=’brush:as3;’></pre> 이라고 쓰면 되겠죠?

그리고 현재 버전부터는 TextArea 태그가 안먹힌다고 한다.
현재까지 알려진 버그중 가장 치명적인 버그는  < > 오류인데,, 코딩중에  < > 꺽쇠 기호가 많이 나오는데 꺽쇠가 나오면
소스가 중간에 짤리거나 이상하게 되 버리는 버그이다. 이 버그를 해결하려면

웹이 올리려고 하는 소스중에  < 표시는 &lt; 로  > 표시는 &gt; 로 모조리 변경 하고
hmtl 모드에서 올리면 아무이상없이 올라가는것을 확인할수 있을 것 이다.