« Prev : 1 : 2 : 3 : 4 : 5 : ... 18 : Next »
문서를 보니..... 향상된 것인지 아님 기능이 더 추가되고 복잡해진 것인지 모르겠군요-_- 익숙해지면 편하겠지만, 지금은 현재 Flex3방식의 state가 더 편해보이네요-_-

예전에 어도비에서 RIA CAMP할 때 STATE기능의 향상이 있을 것이라고 해서 찾아보니 완전히 바뀌었네요.

우선 Flash Builder 4 Beta 2를 다운로드 해서 설치를.....ㅠㅠ

기존 Flex3 방식은 <mx:states> 태그안에 <mx:State>태그가 있는데, 이 안에서 AddChild나 SetProperty태그를 이용해서 해당 state로 변경이 되면 컴포넌트를 삭제하고 추가하거나 값을 변경하는 코드가 들어갔었죠.

Flex4 방식은 위와 같은 방식에서 완전히 바뀌었습니다(사실..flex4로 오면서 거의다 바뀌었다는....).
<s:states>태그안에 <s:State>태그가 들어가는 것은 같지만, 여기서 컴포넌트를 추가하거나 변경하는 코드는 들어가지 않습니다. 그냥 다음에 xml코드에서 해당 컴포넌트들에게 적용을 하게 됩니다. 컴포넌트 태그에 해당 state값에 맞는 코드를 중복으로 선언할 수 있습니다.
해당 State의  Name들이 default, register라면 <s:Panel title="제목" title.register="등록제목" /> 이런형태로 써버리면 currentState가 register로 바뀌면 자동으로 Panel의 title이 title.register값으로 변경이 되게 됩니다.

상세한 기능 및 설명은 Flex 4문서를 보시는 게 더 빠를 듯 합니다.
http://help.adobe.com/en_US/Flex/4.0/UsingSDK/WS2db454920e96a9e51e63e3d11c0bf69084-7fb4.html
http://www.artima.com/articles/flex_4_states.html

1. 디자인모드에서 state설정
그럼 Flash Builder를 실행해서 여기서 State를 설정해봅시다.
Flex로 프로젝트를 하나 만듭니다.
Design모드로 전환!
오른쪽 States View가 있는데, 거기에서 New State를 선택해서 추가합니다.
addbutton이라는 state를 추가합니다. 그리고 기존에 있던 State1은 default로 변경합니다.
그럼 states를 addbutton으로 맞춰놓고, 버튼을 드래그해서 놓습니다.
그리고 Source뷰로 바꾸면 이런 코드가 완성이 되네요^^
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="1024" minHeight="768">
<s:states>
<s:State name="default"/>
<s:State name="addbutton"/>
</s:states>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Button includeIn="addbutton" x="308" y="231" label="Button"/>
</s:Application>

Button에 includeIn이라는 attribute값이 들어가있고 거기에 state값이 있네요. 이 버튼은 addbutton일 때만 보이겠다는 것이죠. 아마 이 새로 바뀐 state형태는 기존 ui를 구성하는 mxml코드를 최대한 방해받지 않게 하려고 만든 것 같습니다.
그리고 재미있는 것은 편집 상단에 Show state: 부분이 있는데, state를 default로 바꾸면 button태그부분이 회색으로 dim처리가 되어버립니다-_- 와 멋지네요. UI작성에 방해받지 않게 하려는 배려인 듯.
사용자 삽입 이미지

dim처리...-_-

2. STATE별 이벤트 추가
state별 이벤트 뿐만 아니라 뭐 다양하게 추가할 수 있어요.
Design모드에서 그냥 addbutton state선택하고, 아까 추가한 버튼을 누르면 Properties를 설정할 수 있는데 In states를 클릭해서 All States로 바꿔줍시다^^
그러면 default에서도 나오는데, 버튼선택해서 오른쪽버튼 누르면 generate Service Call이라는 것이 있는데, 그걸 누르면 자동으로 click이벤트 함수를 만들어줍니다.
두개의 state에서 동시에 만들어버리면 이렇게 나오는군요.
사용자 삽입 이미지

신기함-_- 다른 state함수만 dim처리됨-_-

그 외의 자세한 기능은 문서를 참조하면 돼요. 문서에 샘플예제가 참 잘 나와 있습니다. Flex의 장점은 잘 된 문서화(?)가 아닐까합니다. 한글화가 안되어있는 것이 아쉽긴 하지만....ㅠㅠ

빌더는 여기서 다운로드를...ㅠㅠ


머드초보 이 작성.

당신의 의견을 작성해 주세요.

[로그인][오픈아이디란?]
아.....책은 오래전에 읽었는데, 이제야 서평을 쓰네요. 사실 실습도 안해봐서 내용도 다 까먹은 듯하지만, 불현듯 열이아빠님의 서평이벤트가 생각나서 글을 적어봅니다-_- 내일이 마감임 ㄷㄷ

우선 Flex어플은 그냥 기본으로 제공하는 스킨이 있는데요. 대부분이 그대로 쓰지 않습니다-_- 고객들이 싫어해요-_- 어쨌든 디자....

아놔....갑자기 회의 불려갔다왔네....

암튼, 디자인을 해서 입히고 그러는 작업이 추가적으로 들어가는데, 이거 해보면 해볼수록 스트레스가 만빵이에요. 왠지 디자인대로 안입혀지고-_- 어떻게 입히는지 모르겠고 그런 것이 많은데, 플렉스에 디자인을 입히는 방법을 알려주는 책입니다.
게다가 타 애플리케이션(플래시, 포토샵, 일러스트레이터, 파이어웍스 등)과 쉽게 협업을 할 수 있는 내용도 잠깐 나오구요.
사용자 삽입 이미지

음....왠지 이 디자인패턴책이랑 색감이 좀 맞는데?-_-


이 책의 구조는 조쿰 특이합니다. 앞에 이론이 나오고, 뒤에 실습예제가 나오는....
즉 책의 앞부분서부터 절반은 이런식으로 하면 바꿀 수 있다가 나오고, 절반부터 뒷부분은 약간의 실습예제가 나옵니다. 왜 이런 구조를 택했는지 모르겠지만, 전 이 방식이 적응이 되지 않는군요. 왠지 이론을 설명하고 예제가 바로 뒷바쳐줘야 내용을 그나마 이해를 하는 스타일이라-_- 앞에서 이론을 다 읽고, 뒷부분 예제를 읽으려니 왠지 앞부분이 생각이 안나는군요 ^^

그리고, 뒷부분에 나오는 부록도 참 맘에 드네요. 각각 컴포넌트에 대해서 style속성에 대해서 그림을 통해 잘 나타내어주었구요. 그리고, 필터속성이나 유용한 사이트들도 잘 나왔구요^^
사용자 삽입 이미지

마지막으로 디자이너와 보면 참 좋을 듯 한데...디자이너들이 보기엔 Flex를 좀 알아야할 듯. 디자이너들과 함께 협업하는 그날까지~^^
머드초보 이 작성.

당신의 의견을 작성해 주세요.

  1. Comment RSS : http://mudchobo.tomeii.com/tt/rss/comment/446
  2. 비밀방문자 2009/11/01 22:31  편집/삭제  댓글 작성  댓글 주소

    관리자만 볼 수 있는 댓글입니다.

[로그인][오픈아이디란?]
테스트의 중요성은 저번 스프링 강의시간에 충분히 느꼈습니다. 하지만, 역시 귀차니즘 때문에 잘 안만들게 되는 게 테스트인 듯 합니다. 하지만, 한번 만들어놓으면 이래저래 매우 유용한 것이 테스트죠.

다운로드는 여기서....-_-


Java에서는 Junit이라는 것이 있는데, 4버전에서는 Annotation(@)을 이용해서 쉽게 테스트를 만들곤 했는데요. Flex에서도 비슷한 기법을 이용합니다. 메타데이터를 위에다가 붙여서-_- 손쉽게 테스트를 만들 수 있습니다.
[Test]
public function testMyTest():void
{
}

와....Flash Builder를 보면 Java를 많이 따라한 것을 볼 수 있습니다. 예전엔 폴더생성으로만 만들 수 있었던 패키지가 직접적인 패키지 생성메뉴를 만들어서 Package Explorer에서 패키지형태로 볼 수 있습니다.
암튼, 자바와 닮아가는 듯-_-

1. 간단한 프로젝트 생성
Flex Project하나 생성.

2. 서비스 클래스 생성
덧셈 뺄셈 클래스하나 작성
com.mudchobo.test패키지의 Calc클래스 생성
Calc.as
package com.mudchobo.test
{
public class Calc
{
public function Calc()
{
}

public function addition(a:Number, b:Number):Number
{
return a + b;
}

public function subtraction(a:Number, b:Number):Number
{
return a - b;
}
}
}


3. 테스트 생성
New -> Test Case Class -> New FlexUnit 4 test선택. Name은 CalcTest로하고 Finish.
CalcTest.as
package flexUnitTests
{
import com.mudchobo.test.Calc;

import flexunit.framework.Assert;

public class CalcTest
{
private var calc:Calc;

public function CalcTest()
{
}

[Before]
public function before():void
{
calc = new Calc();
}

[Test]
public function testAddition():void
{
var result:Number = calc.addition(50, 50);
Assert.assertEquals(result, 100);
}

[Test]
public function testSubtraction():void
{
var result:Number = calc.subtraction(50, 50);
Assert.assertEquals(result, 0);
}
}
}

여기까지 작성하면 FlexUnitCompiler.mxml이라는 파일이 자동으로 생겼을겁니다. 이건 건드리지 않습니다. 검색해보니 이전방식으로 core생성해서 UIListener를 넣어서 하려고했는데, 이거 그렇게 하는게 아니더군요-_-
심지어 UIListener클래스는 없습니다-_-

4. 테스트 실행
테스트 실행은 package explorer에서 테스트클래스의 오른쪽 마우스버튼을 누르면 "Execute FlexUnit Tests"라는 메뉴가 있습니다. 그걸 선택하면 테스트가 됩니다. FlexUnitApplication.mxml파일도 같이 생기는군요.
테스트단축키는 Alt + Shift + E, F입니다....-_- 해당 편집파일에서 누르면 됩니다.
사용자 삽입 이미지
테스트 결과는 Junit처럼 이렇게 보여줍니다.
사용자 삽입 이미지
Junit이랑 똑같네.

5. 테스트 Suite 생성
이건 테스트를 다 모아서 실행하는 건데, 통합테스트를 할 때 사용하는 듯-_-
New -> Test Suite Class -> New FlesxxUnit4 test 하면 include할 테스트를 패키지에서 선택할 수 있습니다. 선택 후 Finish.
SuiteTest.as
package flexUnitTests
{
import flexUnitTests.CalcSecondTest;
import flexUnitTests.CalcTest;

[Suite]
[RunWith("org.flexunit.runners.Suite")]
public class SuiteTest
{

public var test1:flexUnitTests.CalcSecondTest;
public var test2:flexUnitTests.CalcTest;
}
}

그냥 저렇게 선언해두고, 오른쪽버튼 눌러서 "Execute FlexUnit Tests" or 알트 + 쉬프트 + E, F하면 통합테스트를 합니다.

6. 그외의 기능
저도 더 써봐야 알 것 같은데, Flex는 이벤트기반이다보니 Async와 UI구조가 많은데요. Async구조도 손쉽게 테스트를 할 수 있습니다.
[Test(async,ui)]

이런식으로 하면 될 듯 한데, 안해봐서 잘 모르겠네요-_-

참고자료
http://www.insideria.com/2009/05/flashbuilder4-will-support-fle.html
http://balajisridhar.wordpress.com/2009/10/05/flexunit-integration-in-flash-builders-new-awatar-in-beta2/
머드초보 이 작성.

당신의 의견을 작성해 주세요.

[로그인][오픈아이디란?]
« Prev : 1 : 2 : 3 : 4 : 5 : ... 18 : Next »