Designing your ActionScript application

AS 어플리케이션의 첫번째 예제는 매우 단순하게 설계된 "Hello World" 이다.
  • 어플리케이션 이름 : Helloworld
  • "Hello World!" 문구가 텍스트 필드에 출력
  • 재사용을 위해, 플래시 문서나 플렉스 어플리케이션에서 사용될 수 있는 Greeter란 이름의 객체지향 클래스 사용
  • 기본 어플을 만든 후에, 사용자가 이름을 입력하고, 사용자 목록을 체크하는 새로운 기능 추가


Creating the HelloWorld project and the Greeter class

 - File > New > ActionScript file 선택
 - File > Save > Greeter.as 저장


Adding code to the Greeter class

Greeter 클래스 : HelloWorld 어플에 사용할 Greeter 객체를 정의
package
{
    public class Greeter
    {
        public function sayHello():String
        {
            var greeting:String;
            greeting = "Hello World!";
            return greeting;
        }
    }
}
 - Greeter 클래스는 "Hello World!" 문자열을 반환하는 sayHello() 메소드를 포함.


Greating an application that uses your ActionScript code

Greeter 클래스는 함수를 정의하고 있지만, 완전하게 보여지지는 않는다.
클래스를 사용하기 위해서는 플래시 문서를 생성해야 한다.

 - File > New > Flash Document 선택
 - File > Save > HelloWorld.fla 저장

1. 텍스트 툴을 선택하고 스테이지에 드래그하여 300px * 100px 정도의 새로운 텍스트 필드를 정의.
2. 속성 패널에서 텍스트 유형을 Dyanmic Text로 지정하고, 인스턴스 이름에 mainText를 입력한다.
3. 액션 패널에 다음 스크립트를 입력한다.
var myGreeter:Greeter = new Greeter();
mainText.text = myGreeter.sayHello();
 - 1줄: Greeter 클래스에서 myGreeter 객체를 생성
 - 2줄: mainText 텍스트 필드에 sayHello() 메소드로 반환된 문자열 반환. (Hello World!)


Publishing and testing your ActionScript application

Flash 와 Flex builder 개발 환경은 어플의 테스트 및 디버그, 퍼블리쉬을 위한 몇가지 방법을 제공한다.
어플을 퍼블리시하고 컴파일 에러를 주시하라.
 - Control > Test Movie
결과는 아마도 mainText Dynamic 텍스트 필드 안에 "Hello World!" 가 보여질 것이다.


Enhancing the HelloWorld application

어플을 조금더 흥미롭게 하기 위해, 사용자에게 이름을 물어보고 미리 정의된 목록의 이름과 일치하는지를 확인할 것이다.
먼저, 새로운 함수를 추가하기 위해 Greeter 클래스를 변경하고, 새 함수를 사용하기 위해 어플을 변경한다.

1. Greeter.as 파일을 다음의 내용으로 변경한다.
package
{
    public class Greeter
    {
        // 인사 받을 이름을 정의.
        pubilc static var validNames:Array = ["Sammy", "Frank", "Dean"];

        // 주어진 이름에 인사하는 함수
        public function sayHello(userName:String = ""):String
        {
            var greeting:String;

            if ( userName == "" )
            {
                greeting = "Hello. please type your user name, and then press the Enter key.";
            }
            else if ( validName( userName ) )
            {
                greeting = "Hello, " + userName + ".";
            }
            else
            {
                greeting = "Sorry " + userName + ", you are not on the list.";
            }
            return greeting;
        }

        // 입력된 이름이 리스트에 있는지 확인
        pubilc function validName(inputName:String = ""):Boolean
        {
            if (validNames.indexOf(inputName) > -1)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}
 - validNames 배열은 유효한 사용자 이름들을 목록화한다.
 - 배열은 Greeter 클래스가 로드됐을 때 세가지 이름의 목록으로 초기화한다.
 - sayHello() 메소드는 사용자 이름을 입력받고 몇가지의 조건에 기반하여 인사말을 변경한다.
 - 만약 userName 이 빈 문자열("")이면, greeting 속성은 사용자 이름을 입력받을 준비를 한다.
 - 사용자 이름이 일치하면, 인사말은 "Hello, userName."이 된다.
 - 마지막에는, 위 두 조건에 해당하지 않은을 경우, greeting 변수는 "Sorry userName, you are not on the list."로 지정된다.
 - validName() 메소드는 validNames 배열에서 inputName을 찾을 수 있으면 true, 찾지 못하면 false를 반환한다.
 - validNames.indexOf(niputName) 구문은 inputName 문자열에 대해 validNames 배열에서 각각의 문자열을 체크한다.
 - Array.indexOf() 메소드는 배열에서 객체의 첫번째 인스턴스의 인덱스 위치를 반환하거나, 배열에서 찾지 못하면 -1 값을 반환한다.

2. HelloWorld.fla 파일을 열고 sayHello() 메소드에 빈 문자열("")을 넘기도록 1번 프레임의 스크립트를 수정한다.
mainText.text = myGreeter.sayHello( "" );

텍스트 툴을 선택하고, 스테이지에서 mainText 텍스트 필드 아래에 새로운 텍스트 필드를 두 개 생성한다.
하나의 텍스트 필드에는 "User Name:" 이란 문구를 넣는다.
다른 텍스트 필드의 속성 창에는, 텍스트 유형을 InputText, 라인 유형을 Single line 선택하고, 인스턴스 이름은 textIn 을 입력한다.

타임라인의 첫번째 프레임의 스크립트 뒤에 다음을 입력한다.
mainText.border = true;
textIn.border = true;

textIn.addEventListener( KeyboardEvent.KEY_DOWN, keyPressed );

function keyPressed( event:KeyboardEvent ):void
{
    if ( event.keyCode == Keyboard.ENTER )
    {
        mainText.text = myGreeter.sayHello( textIn.text );
    }
}
 - 첫 두 줄은 단순히 두 개의 텍스트 필드 테두리를 정의한 것이다.
 - 입력 텍스트 필드인 textIn은 빠른 처리를 위해 이벤트를 지정한다.
 - addEventListener() 메소드는 이벤트 타입이 발생할 때 실행할 함수를 정의하게 한다.
    (위 경우에, 이벤트는 키보드의 키를 누르는 것이다. )
 - keyPressed() 사용자 함수는 눌려진 키가 Enter 키인지 아닌지를 체크한다.
 - Greeter 객체의 sayHello() 메소드를 호출하면, 파라미터로서 textIn 텍스트 필드의 텍스트가 전달되고, 전달된 값에 의해 인사말 문자열을 반환한다.
 - 반환된 문자열은 mainText 텍스트필드의 text 속성에 할당된다.

3. 어플을 실행시켜본다 ( Control > Test Movie )

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,