달력

3

« 2024/3 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

'삽질예방/Flex'에 해당되는 글 2

  1. 2009.07.16 Flex 3 조각지식
  2. 2009.07.16 Kunth-Morris-Pratt(KMP) Algorithm Visualizer 2
2009. 7. 16. 17:42

Flex 3 조각지식 삽질예방/Flex2009. 7. 16. 17:42

팝업 확인 버튼 띄우기
import mx.controls.Alert;
Alert.show('LinkButton selected!');


Application 클래스

<mx:Application  ...> 내부에서 application이라고 하면 Application에 대한 인스턴스, 즉 자기자신을 나타낸다.
Application 클래스는 싱글톤으로써, 자기자신에 대한 객체 참조를 Application.application이라는 static 멤버변수에 집어넣는다.


for each 반복문

var ary:Array = [1, 2, 3, 4];
var a:int;
for each (a in ary) {
    // do something...
}


[Bindable] 은 대체 무슨 역할???

  • [Bindable] 바로 아래에 선언된 set/get함수(프로퍼티)나 클래스가 변동되었을 때 이를 바인딩하고있는 다른 객체들에게 notify해준다.
  • data binding expression ==> {}로 감싼 수식을 말한다. 이 안에서는 & 대신 &amp;를 사용하여야 한다.
  • XMXL로 작성하는 것은 자동으로 Bindable 범주내로 들어가는 듯 하다. MXML에서 자동으로 해주는 건지 그것들이 UIComponent이기 때문인지는 아직 알 수 없다. (UIComponent이기 때문인 것 같다.)
  • 결국 [Bindable]은 바로 아래에 있는 property가 바인딩의 source로 등록되게 해준다. 만약 기존 UIComponent의 property라면 굳이 안해줘도 도리 것이다. source로 등록되어 있으며 property값 변화가 일어나는 이벤트가 일어날 때 source에서 destination으로 값 복사를 해준다. property값 변화가 일어나는 이벤트는 직접 지정 가능하다. 직접 지정하면 setter함수 내에서 자신이 값 복사 시점을 직접 상세히 지정해줄 수 있다.


Property 직접 bind 시키기 / 함수로 바인드시키기

   
BindingUtils.bindSetter(bindFunc, textIn, 'text');
    // 원래 String대신에 Object인자로 받게 됨.
    public function bindFunc(src:String):void {
        textOut.text=String(src);
    }
       
또는
    BindingUtils.bindProperty(textIn, 'text', this, ['textOut', 'text']);

textIn은 텍스트 인풋을 받는 곳이고, textOut은 그냥 레이블이다...

XML 코딩에서 :
<mx:Text id="myText" text="{user.name.firstName.text}" />

액션 스크립트:
bindProperty(myText, "text", user, ["name", "firstName", "text"]);
 => user["name"]["firstName"]["text"] 와 같이 번역된다.!!!


ArrayCollection을 bind 시키기

얘는 직접 멤버를 컨트롤하기 힘드므로,
ary.addEventListener(CollectionEvent.COLLECTION_CHANGE, collChange);

을 추가시켜 주어야 한다.           
그리고 함수에서는
   
public function collChange(e:CollectionEvent):void {
        Button(aryBox.getChildAt(e.location)).label =
 ary.getItemAt(e.location).toString();
}

와 같이 한다. e.location은 변화가 발생된 인덱스를 말한다.


fillColor 바꾸기

css 프로퍼티나, Design모드에서는 해당 항목을 0x000000, 0x000000 라고 하면 그라데이션으로 색을 줄 수 있다.
만약 직접 세팅하고 싶다면
btn.setStyle('fillColors', [0x000000, 0x000000]);

라고하면 된다.


String

'a'.charCodeAt(0);

'a'자체가 스트링이다.

String.fromCharCode(65)
을 이용하면, 직접 아스키코드로부터 캐릭터를 얻어낼 수 있다. 캐릭터 타입은 따로 없고, String을 이용하면 될 것 같다.


Array

            var tmp:Array = [];
            tmp[0] = 3;
            tmp[1] = 3;
            trace('length: ', tmp.length);
말그대로 그냥 동적인 배열.
:
Posted by Kwang-sung Jun


Well I thought it would be nice to learn Flex so that I can visualize things better. I decided to visualize KMP string search algorithm. Click on first and second default buttons, then click start. Enjoy ! Oh, there is source code down there. Click on the link with text "KMPVisualizer.rar". Thanks !

KMP알고리즘의 동작 순서를 간단하게 그려봤습니다. Flex를 한번 해보고 싶었는데, 목표가 분명하지 않으면 랭기지를 배우는데 아무런 의미가 없겠죠? 그래서 간단히 Effect를 이용해서 KMP알고리즘 동작 원리를 시각화해 봤습니다. KMP는 Fail Function이라는 것을 정의해서 기나긴 텍스트 안에서 pattern을 찾아주는 것입니다.

처음에 뜨는 창에서 둘다 default로 놓고 start버튼을 누른 후 Start Animation을 클릭하세요. 잠시 멈춤도 가능하고 리버스(뒤로가기)도 가능합니다만, reverse로 할 경우에는 텍스트 색깔이 의도대로 나오지 않을 수 있으니 참고하세요.

이제 flex질은 그만하고 하던 기계학습 공부를 마무리하고 출국준비를 서둘러야겠습니다.ㅎㅎ. 소스코드도 첨부했으니 혹시라도 내부가 궁금하시다면 아래의 링크로 다운받으세요.

:
Posted by Kwang-sung Jun