Posted
Filed under Action Script

[원문] - http://snipplr.com/view.php?codeview&id=10998

var theContent:String = "I hate when content has words like, ‘damn’ in it. And let's have some more damn, damn, damn"
trace(replace(theContent, "damn", "darn"));

function replace(org:String, fnd:String, rpl:String):String
{
 return org.split(fnd).join(rpl);
}

2010/07/31 15:06 2010/07/31 15:06
Posted
Filed under Action Script


홈페이지 : http://code.google.com/p/tweener/
레퍼런스 : http://hosted.zeh.com.br/tweener/docs/en-us/


0.장 서문

 액션스크립트 3.0의 기본 tween클래스에는 많은 버그들이 있다..사용하기에도 불편하고 그리하여 지구인들은 몇가지 멋진 기능이 있는 외부 tween들을 몇가지 만들어서 배포, 판매를 하고 있는데, 그 여러가지 종류중에서 효율성이 최상은 아니지만 가장 사용하기 간단하고 처음 접하기에 편한 구글 트위너에 대해서 한번 알아보자. 일단 그전에 간략하게 소개정도 하자면 Tweener 라는 이름의 이녀석은 여러가지 개발자들(layman's terms)이 구글프로젝트 지원정책하에서 움직이기 땜시롱 일명 구글트위너 라고도 한다. 상용으로는 트윈맥스란 녀석도 있는데 이녀석은 꾀나 효율이 좋은편이란다 그래도 일단 돈내야 하니깐(물론 기능이 제한된 무료버전도 있다) 패스하고. 간단한 구현정도는 구글트윈을 이용해서 손쉽게 활용해보자 기본적으로 as3.0 기본으로 설명을 해보자 (사이트가면 2.0버전도 있으나 저자가 3.0 신봉자라서 3.0으로만 하겠다)


1.장 설치

 홈페이지에서 다운을 받자.오른쪽 중간 쯤 보면 액션스크립트 버전별로 다운로드 할수 있다. 우리는 3.0으로 할꺼니깐

tweener_1_31_74_as3.zip 가볍게 눌러주자 그럼 신나게 다운한다. 다운이 완료되었다면 이제 플래시(CS4기준)을 켜고,

프로젝트를 하나 만들어보자. 이름은 "tweener"라고 이쁘게 지어보자. 프로젝트안에 fla파일과 as파일또한 손쉽게 "tweener"이라고 지어보자. 자그럼 본격적으로 설치을 해보자 (지금까지는 ...?!!!) 자 설치는 초간단하다 아까받은 파일을 압축을 푼다. 어디에? 프로젝트 폴더에 !!! 이걸로 설치는 끝이다. 어려운가? 어렵다고 생각하면 지금 당장 접시물에 코을 넣어야 할것이다. (압축을 풀면 caurina란 폴더가 있다 이폴더을 통째로 프로젝트폴더에 넣을것.)


2.장 사용

그림1처럼 tweener이란 프로젝트에 tweener.as파일과 tweener.fla파일이 있다. 일단 처음에는 간단히 fla파일에서 빨간색 box을 만들어 F8로 라이브러리에 등록한후(심볼이름은 mc_box) 액션으로 제어하기 위해 Linkage으로 스크립트와 이어준다.(클래스이름은 자동으로 심볼이름과 동일하게 지정된다)

그림1 


다음으로 그림2처럼 tweener.as파일에 본격적으로 코딩을 시작해보자.

그림2

코드를 분석해보면 tweener이란 클래스는 Display의 Sprite를 상속받은 클래스 이기 때문에 그래픽 심볼들을 붙여서 표현할수가 있다.

7줄) 생성자에서 바로전에서 라이브러리에 등록한 mc_box란 클래스의 객체를 box란 변수에 할당한다.

8줄) addChild메소드를 이용해 디스플레이 객체 (변수 box)를 렌더링 엔진의 디스플레이 리스트에 추가한다.

 

9줄) 이부분 바로 구글트위너의 핵심이다.

맨 위에서 "caurina.transitions.Tweener" 이란 클래스를 import시켰다.

그리고 이번줄에서 Tweener클래스의 static속성의 메소드(addTween)를 호출하게 되는데

메소드의 파라미터값들의 유형은 이런식이다.

Tweener.addTween(object, {parameters});

object형식으로 트윈시킬 대상을 넣고 대괄호 { } 안에 속성들을 넣는다.

자세한 속성들은 본문 첫줄에 언급한 레퍼런스 사이트에서 찾아보면 많은 트윈속성들을 찾아볼수 있다.

 

자 이제 컴파일 시켜보자. Test Project나 Ctrl+Enter를 통해서 컴파일 시켜보면 뭐가 이상한점을 느낌수 있다.

그렇다 아무것도 일어나지 않는다. 해답은 간단하다. 그림3을 보자.

 그림3

어떤가? as3을 조금이라도 해본사람이라면 이부분에서 "아~ 맞다~" 하면서 탄성을 질러야 정상이다.

그렇다 Document Class 정의가 해답이다. fla파일과 as파일 2개는 독립된 파일이다 예전처럼 fla파일에 f9을 눌러서 중구난방식으로 스크립트을 작성했던 시절엔 fla안에 스크립트와 온갖 심볼들이 다 포함되어 있었기 때문에 as파일을 클래스화 한다거나 클래스를 나눠서 협업을 한다는 등의 생각은 꿈도 꾸지 못하였다 하지만 이렇게 스크립트파일을 따로 만들어서 fla과 as파일을 이어줌으로 써 개발함에 있어서 좀더 유연해 졌다. 자 이제 그림3처럼 Document Class 부분에 우리가 작성한 as파일의 이름을 쓰자.


그리고 다시 컴파일 해보자. 어떠한가? 빨간 box는 일단 보이니 안심이다. 하지만 box가 이동되는 트윈모션은 안보이고 그냥 단순히 이동된 후의 모습만 보일 뿐이다. 이러면 단순하게 box.x=100, box.y=100 한것과 무슨 차이가 있겠는가? 하면서 의아해 하는것이 정상이다. 이런한 결과의 원인은 꾀 간단하다.


플래쉬는 fps단위로 작동된다 무슨말인가. frame per sec 즉 초당 프레임수에 따라서 영상의 움직임을 표현한다.

"엥 그거야 당연하지 그림3에도 FPS는 32잖아?" 라고 생각하는가 ? 그렇다 맞다. 하지만 Tweener에는 별도의 time이란 속성값이 있다. (물론 fps의 영향도 받는다) 이 time이란 파라미터는 트위을 당하는 디스플레이 객체가 매초마다 얼마나 오래 변화될 것인가 하는 변화량을 적는것이다. time:99 라면 1초당 99번 변화되는것이다. 그럼 어떨것 같은가? 같은거리를 1초동안 99번 움직여서 가는것과 1번 움직여서 가는것. 그렇다 1번 움직이는것이 더 빠를것이다. 통상적으로 time값은 1~ 1.2 정도로 2이상을 넘어가는 경우는 드물다. 또한 delay란  속성값이 있는데 이는 시작을 지연시키는 속성값이다. 그외 속성들은 레퍼런스를 참고 하기 바란다.


아래 그림4는 우리가 이번장에서 알아본 트위너의 최종형태이다. (그림2에서 time만 추가되었다)


추가로 transition속성값에 따라서 움직임(가속,마찰)이 달라지는데 그 종류들은 아래 사이트에서 참고하여 한번씩 바꿔보길 권한다 (나름 재미있다)

transition types : http://hosted.zeh.com.br/mctween/animationtypes.html


다음은 3장 Tweener의 응용에 대해서 알아보겠다.


후기

휴 블로그 만들고 처음으로 강의 올려보내요 힘들다; 쓰다가보니 막 반말로 그냥 주구장창 ㅋㅋㅋ 그냥 너그러히 이해해주심이ㅠ

그래도 뭔가 뿌듯한데요? 이맛에 사람들이 강의올리고 블로그 활용하나 봐요 ㅋ 매번 저도 이블로그 저블로그 참고만 하다가ㅋ

여튼 다들  좋은 주말 보내세요~ 다음엔 as3.0도 올려야지 흐흐흐

<출처 : http://www.cyworld.com/ra_q/2457191>

2010/07/20 13:29 2010/07/20 13:29
Posted
Filed under Action Script
http://www.actionscript.org/forums/showthread.php3?t=115705

class
com.lib.data.holder.map.HashMap
{
   
    public var keys:Array;
    public var values:Array;
    //
    public function HashMap(source)
    {
        super();
        this.keys = new Array();
        this.values = new Array();
        this.populate(source);
    }
    public function populate(source)
    {
        if (source)
        {
            for (var i in source)
            {
                this.put(i, source[i]);
            }
        }
    }

    public function containsKey(key)
    {
        return (this.findKey(key) > -1);
    }
    public function containsValue(value)
    {
        return (this.findValue(value) > -1);
    }
    public function getKeys(Void)
    {
        return (this.keys.slice());
    }
    public function getValues(Void)
    {
        return (this.values.slice());
    }
    public function get(key)
    {
        return (values[this.findKey(key)]);
    }
    public function put(key, value)
    {
        var oldKey;
        var theKey = this.findKey(key);
        if (theKey < 0)
        {
            this.keys.push(key);
            this.values.push(value);
        }
        else
        {
            oldKey = values[theKey];
            this.values[theKey] = value;
        }
        return (oldKey);
    }
    public function putAll(map)
    {
        var theValues = map.getValues();
        var theKeys = map.getKeys();
        var max = keys.length;
        for (var i = 0; i < max; i = i - 1)
        {
            this.put(theKeys[i], theValues[i]);
        }
    }
    public function clear(Void)
    {
        this.keys = new Array();
        this.values = new Array();
    }
    public function remove(key)
    {
        var theKey = this.findKey(key);
        if (theKey > -1)
        {
            var theValue = this.values[theKey];
            this.values.splice(theKey, 1);
            this.keys.splice(theKey, 1);
            return (theValue);
        }
    }
    public function size(Void)
    {
        return (this.keys.length);
    }
    public function isEmpty(Vois)
    {
        return (this.size() < 1);
    }
    public function findKey(key)
    {
        var index = this.keys.length;
        while(this.keys[--index] !== key && index > -1)
        {
        }
        return(index);
    }
    public function findValue(value)
    {
        var index = this.values.length;
        while(this.values[--index] !== value && index > -1)
        {
        }
        return (index);
    }
}


##사용방법##
import com.lib.data.holder.map.*;

/* Add John to your `contact` list */
var myContacts:HashMap = new HashMap();
myContacts.put("John", new HashMap());

/* Get John, and add a `contacts` list */
var contact:HashMap = myContacts.get("John");
contact.put("contacts", new HashMap());

/* Add Johns contacts to the list */
var theContacts:HashMap = contact.get("contacts");
theContacts.put(0, "Mary");
theContacts.put(1, "Alex");
theContacts.put(2, "Julie");

/* Is Alex a contact of John? */
var isContact = myContacts.get("John").get("contacts").containsValue("Alex");
if (isContact) trace("Alex is contact of John");
else trace("Alex is Not a contact of John");

/* Is Mark a contact of John? */
var isContact = myContacts.get("John").get("contacts").containsValue("Mark");
if (isContact) trace("Mark is contact of John");
else trace("Mark is Not a contact of John");


2010/07/09 17:21 2010/07/09 17:21
Posted
Filed under Action Script
[원문] - http://www.flash8coders.com/zbxe/?mid=as30&document_srl=86410

BatchCode 를 3.0으로 포팅하는데 생각처럼 만만치가 않네요.
여기저기 물어보고 겁나게 삽질했습니다.
코드는 다소 바뀌었지만, 다행이 사용법은 2.0버젼이랑 동일하게 유지할 수 있었네요.
예제도 거의 같아요.





실행코드는 첨부파일이고 인터페이스 파일은 없습니다. 달랑 하나입니다.

이 데모의 소스는 다음과 같습니다. 2.0버젼이랑 거의 달라진게 없습니다.

package
{
        import com.greensock.easing.Bounce;
        import com.greensock.TweenLite;

        import flash.net.URLRequest;
        import flash.text.TextFieldAutoSize;
        import flash.text.TextField;

        import clickage.common.util.BatchCode;
        import clickage.common.util.ImageTransform;

        import flash.events.Event;
        import flash.display.Loader;
        import flash.display.Sprite;
        import flash.events.MouseEvent;
        import fl.controls.Button;

        /** comment  :
        * For example
        *
        * <pre>
        *
        *
        *
        * </pre>
        *
        * @author Cheol-Jin Eom
        * @date 2010. 5. 19.
        * @see
        *
        * ************************************** */


        public class ViewManager
        {
                private var main:Main;
                private var sptMain:Sprite;
                private var sptImageContainer:Sprite;
                private var sptFieldContainer:Sprite;
                private var loader:Loader;
                private var URI_IMAGE:String = "http://www.flash8coders.com/images/img3.jpg";


                public function ViewManager(main:Main)
                {
                        this.main = main;
                }

                public function start():void
                {
                        buildViews();
                }

                private function buildViews():void
                {
                        var btn:Button = main.getChildByName("btn") as Button;
                        btn.addEventListener(MouseEvent.CLICK, clickHandler);

                        sptMain = new Sprite();
                        main.addChild(sptMain);
                        sptImageContainer = new Sprite();
                        sptMain.addChild(sptImageContainer);
                        sptFieldContainer = new Sprite();
                        sptMain.addChild(sptFieldContainer);

                        loader = new Loader();
                        sptImageContainer.addChild(loader);

                        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handler_loaded_image);
                }

                private function clickHandler(event:MouseEvent):void
                {
                        // 초기화
                        loader.unload();
                        loader.x = 0;
                        if (sptFieldContainer.numChildren != 0) {
                                sptFieldContainer.removeChildAt(0);
                        }

                        // 배치실행 시작
                        excuteLinearProcess();
                }
                private function excuteLinearProcess():void
                {
                        var batch:BatchCode = BatchCode.getInstance();
                        batch.clearBatch(); // 안해도 되는데 걍 클리어해줬음, 시작할때가 아니라 마지막에 해도 괜찮을 듯
                        batch.onExcuteListener = function () {
                                batch.next();
                        };

                        batch.addBatch(this, this.loadImage, [URI_IMAGE]); // 1. 이미지를 로드하고, 이미지 로드가 완료되면
                        batch.addBatch(this, this.resizeOriginalRatio, [400, 400]); //2. 이미지의 사이즈를 조정하고
                        batch.addBatch(this, this.moveTo, [200]); // 3. 오른쪽으로 이동하는 트윈을, 트윈이 끝나면
                        batch.addBatch(this, this.addTitle, ["이미지 이동 완료"]); // 4. 완료가 됐다는 메시지를 찍어본다.
                        batch.addBatch(this, this.moveTextClip, [0, 10]); // 5. 이렇게 찍힌 텍스트클립을 좌상단으로 이동해본다.
                        batch.excuteBatch();
                }
                public function loadImage(uri:String):void
                {
                        loader.load(new URLRequest(uri));
                }

                private function handler_loaded_image(event:Event):void
                {
                        BatchCode.getInstance().onExcuteListener();
                }
                public function resizeOriginalRatio(boundWidth:Number, boundHeight:Number):void
                {
                        ImageTransform.transformToOriginalRatio(boundWidth, boundHeight, loader);
                        BatchCode.getInstance().onExcuteListener();
                }
                public function moveTo(pos:Number):void
                {
                        TweenLite.to(loader, 1, {x:pos, ease:Bounce.easeOut, onComplete:handler_complete_move});
                }
                private function handler_complete_move():void
                {
                        BatchCode.getInstance().onExcuteListener();
                }
                private function addTitle(msg:String):void
                {
                        var field:TextField = new TextField();
                        field.name = "field";
                        field.text = msg;
                        field.x = 0;
                        field.y = 0;
                        field.autoSize = TextFieldAutoSize.LEFT;
                        field.text = msg;
                        sptFieldContainer.addChild(field);
                        sptFieldContainer.x = 300;
                        sptFieldContainer.y = 350;

                        BatchCode.getInstance().onExcuteListener();

                }
                private function moveTextClip(x:Number, y:Number):void
                {
                        TweenLite.to(sptFieldContainer, 1, {x:x, y:y, ease:Bounce.easeOut});
                        BatchCode.getInstance().onExcuteListener();
                }

        }
}
2010/06/04 09:15 2010/06/04 09:15
Posted
Filed under Action Script

ActionScript 3.0에서 onReleaseOutside를 대체할 만한 이벤트가 없습니다.
그래서 MOUSE_DOWN 이벤트가 발생할 때, stage에 MOUSE_UP 이벤트를 추가했다가,
MOUSE_UP 이벤트 핸들러에서 다시 MOUSE_UP를 제거시키는 방법을 사용해야 하네요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public function Test(){
        // Add MOUSE_DOWN event to mc
        mc.addEventListener(MouseEvent.MOUSE_DOWN, rotateDragStart);
}
 
private function rotateDragStart(evt:MouseEvent):void{
        // Start drag
 
        // Add ENTER_FRAME event to mc
        mc.addEventListener(Event.ENTER_FRAME, rotateDragging);
        // Add MOUSE_UP event to stage
        stage.addEventListener(MouseEvent.MOUSE_UP, rotateDragStop);
}
private function rotateDragStop(evt:MouseEvent):void{
        // Stop drag
 
        // Remove ENTER_FRAME event from mc
        mc.removeEventListener(Event.ENTER_FRAME, rotateDragging);
        // Remove MOUSE_UP event from stage
        stage.removeEventListener(MouseEvent.MOUSE_UP, rotateDragStop);
}
private function rotateDragging(evt:Event):void{
        // Excute while dragging
}

thanks to derision, kidari70 and plandas from flash8coders.com

2010/05/30 20:53 2010/05/30 20:53
Posted
Filed under Action Script
[원문] http://blog.flasia.com/archives/99

[as 2.0]
function dataSendLoad() {
	//변수를 PHP 파일로 전송할 개체 생성
	var mySendVars = new LoadVars();

	//개체에 변수 입력
	var mySendVars.sendvars = "testVars";

	//PHP로부터 보내진 변수들을 로드할 LoadVars 개체 생성
	var myLoadVars  = new LoadVars();

	//로드 완료 후 실행 할 함수 정의
	mySendVars.onLoad = function(success) {
		...
	}

	//PHP 파일로 변수 전송 및 로드
	mySendVars.sendAndLoad("send_load.php", myLoadVars, "POST");
}











[as 3.0]

package {
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.events.ProgressEvent;
 import flash.net.URLLoader;
 import flash.net.URLRequest;
 import flash.net.URLRequestMethod;
 import flash.net.URLLoaderDataFormat;
 import flash.net.URLVariables;
 import flash.events.IOErrorEvent;
 public class Main extends Sprite {
  // 변수를 주고 받을 PHP파일
  private var url : String = "send_load.php";
  // PHP에 전달한 변수
  private var variables : URLVariables;  
  public function Main() : void {
   variables = new URLVariables();
   // 변수값 할당
   variables.sendvars = "testVars";  
   sendData(url, variables);
  }
  public function sendData(_url:String, _vars:URLVariables):void {
   var request : URLRequest = new URLRequest(_url);
   request.data = _vars;
   // 전송방식
   request.method = URLRequestMethod.POST;  
   var loader:URLLoader = new URLLoader();
   // 데이터 형식 지정(BINARY, TEXT, VARIABLES)
   loader.dataFormat = URLLoaderDataFormat.VARIABLES;
   loader.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
   loader.addEventListener(Event.COMPLETE, onCompleteHandler);
   loader.addEventListener(IOErrorEvent.IO_ERROR, onIOErrorHandler);
   loader.load(request);
  }
  private function onProgressHandler(e:ProgressEvent):void {
   trace("@ PHP Loading");
  }
  private function onCompleteHandler(e:Event):void {
   var loader : URLLoader = URLLoader(e.target);
   trace( "loader.data : " + loader.data );
  }
  private function onIOErrorHandler(e:IOErrorEvent):void {
   trace("Error loading URL.");
  }
 }
}





2010/05/26 22:08 2010/05/26 22:08
Posted
Filed under Action Script

Unfortunatly, no method exits on the TextField class in AS3 as it does not extend the Sprite class, which contains the buttonMode property.

This is most apparent with the annoying problem of having a TextField inside your Sprite/MovieClip you;re trying to use as a button, where even after setting buttonMode = true on the button, rolling over the textfield inside the button will revert the Cursor back to default.

To get round this simply use the mouseChildren = false property on your Sprite/Movieclip button.

i.e.

myTextFieldContainingSprite.buttonMode = true;

myTextFieldContainingSprite.mouseChildren = false;

myTextFieldContainingSprite.addEventListener(MouseEvent.MOUSE_DOWN …… etc

2010/05/26 21:29 2010/05/26 21:29
Posted
Filed under Action Script

[작성자] http://visualp.com 고병만
actionscript 3.0에서 프린트를 하기 위해서는

flash.printing.PrintJob class를 import 해야 한다.
프린트 버튼을 누루는 시점이 하나의 job 즉 작업 단위로 봐야 한다.

PrintJob 클레스는 addPage 메소드를 통해서 Sprite 단위의 인쇄 페이지를 추가 할 수 있다.
참고로 A4 Size를 픽셀 단위로 환산 하며, 595 * 842 가 된다.

Sprite객체를직접 생성 해서 프린트를 할 수도 있고, 직접 무비클립을 만들어서 인쇄 작업을 진행 할 수 있다. 무비클립에 인쇄할 페이지를 디자인 한 후 출력 할 수도 있다는 말이다.

한번에 여러장을 인쇄 하기 위해서는 addPage메소를 이용하여 Sprite 객체를 추가 해주면 된다.
다음 예제는 SharedObject에 저장된 text를 불러와서 배경이 디자인된 skin1이라는 무비클립을
인쇄하는 간단한 예제이다.

반드스 printJob.start()메소드를 호출 한후 try catch 문으로 묶어 줘야 한다.
그렇지 않으면 오류가 발생 한다.


stop();
import flash.external.ExternalInterface;
import flash.net.SharedObject;
import flash.printing.PrintJob;

saveBtn.buttonMode=true;
printBtn.buttonMode=true;

//print object 변수 선언

//shared obj 구현
var so:SharedObject = SharedObject.getLocal("sample_lesson01_9001","/");

if(so.data.text01 != null){
 text0.text=String(so.data.text01);
}

text0.addEventListener(MouseEvent.CLICK,text_clear);
saveBtn.addEventListener(MouseEvent.CLICK,save_text0);
printBtn.addEventListener(MouseEvent.CLICK,print_text0);

function print_text0(event:MouseEvent):void{
   //[프린터 작업 생성]
  
   var skin1:print_skin1 = new print_skin1();
   var printJob:PrintJob = new PrintJob();
   skin1.content_text.text = text0.text; 
   printJob.start();
  try{
    printJob.addPage(skin1);
    printJob.send();
   }catch(error:Error){
   
   }
}

function save_text0(event:MouseEvent):void{
 if(text0.text==""){
  ExternalInterface.call("내용이 존재 하지 않습니다.");
  this.stage.focus=text0;
 }else{
  so.data.text01 = text0.text;
  so.flush();
  ExternalInterface.call("저장 완료!");
 }
}

function text_clear(evetn:MouseEvent):void{
 trace("click");
 if(so.data.text01==null){
  text0.text="";
 }
}

/*
so.flush();
so.close();
*/

2010/04/28 20:53 2010/04/28 20:53
Posted
Filed under Action Script

[작성자] :http://www.visualp.com   - 고병만
플레쉬 2.0  에서는 파일 다운로드 링크를 걸기 위해서
geturl 을 사용 했다. 링크는 되지만.  activex경고창 내지는 파일 다운로드 경고차이 뜨면서
다운로드를 선택 하면, flash 페이지가 reflash되는 현상이 발생 한다.

3.0d에 이 문제들을 해결해 주고 있다.
FileRefference를 이용하여 다운로드를 하자.

import flash.net.*;

public static var fileReference:FileReference = new FileReference();
var urlRequest:URLRequest = new URLReques(http://blog.visualp.com/filename.zip);
 fileReference.download(urlRequest);

가장 심풀한 다운로드 소스 이다.

문제는 FileRefference 객체를 생성 할 때전역 함수로 사용 해야 한다.

메소드(함수) 안에서 사용하게 될경우 , 즉 지역 함수로 선언 하면, 파일 다운로드가 되지 않는 문제가 발생 한다.
왜 파일 다운로드가 안되냐고.. 삽질 하지 말고,, 객체가 생성된 위치를 잘 살펴 봐야 하다.

구현시 생각 해야 할 부분, 자바스크립트 와 연동 하여, 다운받을 서버 주소 즉 풀 네임을  얻어서 자기 링크를 걸어야 한다.

즉 다시 말해서 ./../ 뭐 이런식의 접근은 불가능 하다. http 또는 https 형식의 접근이 가능 함으로  반드시 기억해 둬야 한다.

2010/04/27 15:01 2010/04/27 15:01
Posted
Filed under Action Script
[원문] : http://actionscriptexamples.com/2008/11/26/using-an-embedded-font-with-the-textarea-control-in-flash-with-actionscript-30/






// ActionScript 3.0
import fl.controls.TextArea; var chaparralProEmbeddedFont:Font = new ChaparralProEmbedded(); var textFormat:TextFormat = new TextFormat(); textFormat.font = chaparralProEmbeddedFont.fontName; textFormat.size = 32; var textArea:TextArea = new TextArea(); textArea.setStyle("textFormat", textFormat); textArea.setStyle("embedFonts", true); textArea.text = "The quick brown dog jumps over the lazy fox."; textArea.move(10, 10); textArea.setSize(300, 200); addChild(textArea);




2010/04/26 11:43 2010/04/26 11:43