'Action Script'에 해당되는 글 4건
- 2010/01/29 kineticroad Naver OpenAPI 쇼핑 검색
- 2009/12/30 kineticroad Class란 무엇인가요?
- 2009/09/25 kineticroad Interface 클래스의 존재 이유
- 2009/09/05 kineticroad ActionScript의 대기코드?
요새 스터디를 시작하게 되었다.
누군가를 가르친다는게 상당한 부담이기도 하고 나도 내 앞가림하기 바쁘다고 생각했기때문에
사실 오래전부터 고민해 왔었다.
정식으로 전산과를 나온것도 아니고 맨날 그림만 그리다가 이길로 진입하게된 나로써는 깊이있는 내용을
전달해주지 못할 것 같다는 생각때문이었다.
그런데 IT에 처음 와서 Flash를 처음 만지고 ActionScript를 처음 접하는 친구들이 고생하는걸 보니
전에 다니던 회사시절이 생각났다. 그래서 결심을 했다. 스터디를 시작하게되었다.
TEAM : FP(Flash Quickly Progress)
내가 잘 할 수 있는건 빨리 배우게 하는 밑거름을 만들어 배우는 시간을 단축시키는거다.
사실 Class라는 말 자체가 풍기는 뉘앙스로 봐서는 뭐가 들어가 있긴 있는데 도무지 무슨일을 하는 녀석인지 당최 이해하기가 어렵다.
보통 Class를 설명할때 책에서는 "교실"을 예를 들어 설명하는 경우가 많은데 가장 적절한 예라고 생각은 하지만 이해가 쉬워지진 않는다.
ActionScript에서 Class를 정의하자면 대충 이렇다.
"클래스는 프로그램을 구성하는 기능성을 갖춘 객체의 집합"
정도로 설명할 수 있는데 이 설명을 이해하려면 "객체지향"이라는 말을 먼저 이해해야한다.
객체지향프로그래밍이라는게 나오면서 클래스라는 개념들이 등장하기 시작했는데 사람 몸에 비유해서 사람 몸을 구성하는데 있어서 부위별로 나눠보면 머리 팔 2개 다리 2개 몸통. 5군데로 나눠볼 수 있다.
각 부위를 클래스로 이해하면 간편하다.

그렇다면 각각의 Property와 Method들이 Class를 이루고 있다면 Property와 Method들이 Program을 이루고 있는 최소단위인가? 라는 의구심이 들 수도 있겠지만 대답은 "아니다"라고 단정지어 말할 수 있다.
간단한 예를 들어 코드를 살펴보도록 해보자.
| package { // 만들고자 하는 클래스를 시작하기전 클래스에서 사용되는 클래스들을 미리 포함시킨다. import flash.display.Graphics; import flash.display.Sprite; // 클래스의 시작. extends는 Sprite 클래스를 상속받아 사용한다는 뜻.(상속의 개념은 제 1강 상속(클래스에도 족보가 있다) 편을 읽어볼 것) public class TestSample extends Sprite { /** * Constructor. * 생성자. 클래스를 생성하게 될 때 실행되는 메서드(?)정도로 이해하면 된다. * 생성하는 방법은 아래와 같다. * * var test:TestSample = new TestSample(); */ public function TestSample() { // super 클래스인 Sprite를 생성한다. // (무슨의미인지 알려고 해봤자 지금 단계에서 설명해도 이해하기 어려울 터. 그냥 그렇다고 생각해라) super(); drawReadRectangle(); } /** * @private * 속이 빨간 네모를 만드는 메서드로 Sprite 속성 중 graphics 속성을 이용해 빨간 네모를 코드로 그려낸다. */ private function drawReadRectangle():void { var thisGraphics:Graphics = this.graphics; graphics.clear(); graphics.beginFill(0xFF0000, 1); graphics.drawRect(0, 0, 100, 100); graphics.endFill(); } } } |
샘플코드를 잘 보면 3.0 코드를 처음으로 보는거라 이해하기 어려울지 모르겠지만 그냥 일단 빨강색으로 표시해둔 부분을 설명하는 것으로 Class가 뭔가요 챕터를 마치도록 하겠다.
단순히 설명하자면 위의 클래스는 Sprite에 있는 모든 기능을 사용할 수 있다고 미리 정해둔거라고 보면 된다.
이 graphics라는 변수는 Graphics라는 클래스 형태로 지정되어있다. 참고로 이야기 하자면 graphics라는 놈에 대해서 미리 알려고 하지말 것. 혼란만 가중될거니까. ㅋ(미리 알아봐도 나쁘지는 않겠지만)
package classes.core
{
public interface IListItem
{
function set location(value:String):void
function get location():String
function set dataObj(value:Object):void
function get dataObj():Object
}
}
package classes.controls
{
import classes.core.IListItem;
import mx.core.UIComponent;
public class MyControl extends UIComponent implements IListItem
{
public function MyControl():void
{
super();
}
//-------------------------------
// interface 구현
//-------------------------------
private var _location:String = null;
public function set location(value:String):void
{
_location = value;
}
public function get location():String
{
reuturn _location;
}
private var _dataObj:Object;
public function set dataObj(value:Object):void
{
_dataObj = value;
}
public function get dataObj():Object
{
return _dataObj;
}
}
}
위와 같이 인터페이스를 구현해 놓게 되면 클래스 사용자는 위와 같은 프로퍼티를 기본적으로 갖고 있게 된다.
package classes.data
{
import classes.core.IListItem;
import classes.controls. MyControl;
import classes.controls. MyControl2;
import mx.core.UIComponent;
public class ExampleClass extends UIComponent
{
public function ExampleClass()
{
super();
}
private var myControl:MyControl = new MyControl();
private var myControl2:MyControl2 = new MyControl2();
public function sampleMethod(control:IListItem):void
{
trace(control.location);
}
private function callSampleMethod():void
{
sampleMethod(myControl);
sampleMethod(myControl2);
trace(IListItem(myControl).location);
trace(IListItem(myControl2).location);
}
}
}
순차적으로 실행하지 않아서 통신해서 뭔가 불러올때 대기하지 않고 바로 다음 코드를 실행해서 오류가 난다. 해결 방법이 없을까?
package
{
import mx.rpc.http.HTTPService;
import mx.events.ResultEvent;
public class DataConnection extends HTTPService
{
/**
* Constructor.
*/
public function DataConnection()
{
// super class Constructor.
super();
eventConfiguration();
send("http://www.test.com/callData.php");
}
public var totalDataLength:int = -1;
private function eventConfiguration():void
{
addEventListener(ResultEvent.RESULT, resultHandler);
}
public function getTotalDataLength():int
{
return totalDataLength;
}
private function resultHandler(event:ResultEvent):void
{
totalDataLength = event.result.totalDataLength;
}
}
}
private function test():void
{
var connection:DataConnection = new DataConnection();
var i:int = connection.getTotalDataLength();
trace(i);
}






32085
30
59










댓글을 달아 주세요