'분류 전체보기'에 해당되는 글 147건

  1. 2009.02.26 [CH9] BubbleTest
  2. 2009.02.26 [CH9] SnowTest
  3. 2009.02.24 setter/getter
  4. 2009.02.24 [CH8]PhotoGalleryTest 2
  5. 2009.02.23 [CH8]WeatherWIdgetTest 2
  6. 2009.02.22 [CH8]YahooTest
  7. 2009.02.22 [CH8]WeatherTest
  8. 2009.02.22 [CH7]XMLLoaderTest2 1
  9. 2009.02.20 [CH7]XMLLoaderTest1 1
  10. 2009.02.20 [CH7] 1. LoaderTest 1
Study/Actionscript 3.02009. 2. 26. 15:59
다양한 변수값을 대입한 Bubble 움직임을 만들어보자

1.플래쉬에서 버블을 하나 그리고 BubbleClip라는 이름의 무비클립을 만든다.(Export to Actionscript 박스 체크!) 그리고 SWC로 export한다.(저장 위치는 현재 작업하고 있는 해당 project안의 libs 폴더)
2.Bubble.as class를 작성한다.
3. Document class인 BubbleTest.as를 작성한다.

Package timo.effect  SuperClsss Sprite

SuperClsss Sprite



Posted by chacolina
Study/Actionscript 3.02009. 2. 26. 15:21
눈 내리는 효과를 연습해보자

1.flash에서 원을 하나 그리고 SnowClip라는 이름의 무비클립을 만든다.(Export to Actionscript 박스 체크!) 그리고 SWC로 export한다.(저장 위치는 flex내 현재 작업하고 있는 해당 project안의 libs 폴더)
2.Snow.as class를 작성한다.
3. Document class인 SnowTest.as를 작성한다.


Package:timo.effect  SuperClass:Sprite

SuperClass:Sprite



Posted by chacolina
Study/Actionscript 3.02009. 2. 24. 04:01
제목 : 갑작스런 궁금증, Setter, Getter에 관해서
글쓴이: 손님(guest) 2005/08/16 09:38:21 조회수:196 줄수:26

은닉성이다 뭐다 해서 멤버 변수를 private으로 하고

Setter, Getter를 만들어 쓰는 것이 습관이 되었습니다.

자바를 막 배우는 동생이 물었습니다.

뭐 하러 이렇게 쓰냐고.

저는 은닉성이 어쩌고 저쩌고, 멤버변수에 접근 못하게 하려고 라고 말했지만,

왜, 이게 멤버변수에 접근 못하는 거야? 결국, Setter, Getter로 다 접근하잖아.

라는 말에 명확히 대답을 주지 못하겠더라구요.

생각해보면 결국은 public처럼 쓰는데, 무슨 은닉성이고 접근금지인지 모르겠네요.

Reflection을 생각하지 않은 상태에서 은닉성만을 놓고 봤을때.

Setter, Getter를 왜 쓰는지. 저는 설명하지 못하겠습니다.

왜 필요한것일까요.

그냥 public으로 선언해서 쓰면 왜 않될까요.


제목 : Re: Setter Getter
글쓴이: 서민구(guest) 2005/08/16 14:13:51 조회수:76 줄수:73

네.. 말씀하신대로 다 접근할 수 있죠.

그렇지만, setter/getter가 필요한 이유가 있습니다.

(1) 예를들어, '나이'를 변수로 선언한다고 하면

class Person
{
private int age;
public int getAge() { return age; }
public void setAge(int age) {
if (age < 0) throw RuntimeException();
this.age = age;
}
...
}

첫번째는 이와같이, 사용자의 입력값을 검증하는데 쓰일 수 있다는 것이구요.
이런의미에서 값의 갱신이 어떻게 이루어져야하는가 (여기서는 나이가 음수일수
없다는 규칙)에 대해서 외부로 부터 숨길 수 있게 됩니다.

이 경우는 간단하니까 - 나이가 음수면 안된다는 것은 너무나 상식적이므로 - 그냥
외부에서 잘 넘겨주어도 될 것 같다는 생각이 들 수 있지만, 좀더 복잡한 속성이라면
갱신시 필요한 규칙을 모두 따져주기가 힘들 수 있겠죠.

이 역할을 getter나 setter가 담당합니다.


(2) 때로 getter/setter 는 readonly/writeonly 의 구현에도 사용될 수 있습니다.
이 경우는 변수의 모든 측면에 '다 접근할 수 없는' 예가 되겠죠.

class Person
{
private int age;
public int getAge() { return age; }
private void setAge(age) { if (age<0) throw RuntimeException(); this.age = age; }
public Person(age) { setAge(age); }
}


(3) 메소드 선언은 미래의 확장을 위한 것입니다.

예를들어 Person에서 Child와 Adult가 구분된다고 해보죠.
그리고 Adult가 되는 기준을 18세라고 해보겠습니다. 그렇다면,

class Adult extends Person
{

public void setAge(int age) {
if (age < 18) throw RuntimeException();
super.setAge(age);
}
}

와 같이 구현할 수 있을 것입니다.

만약 이 경우에 Person의 age가 메소드가 아니라 단지 변수였다면
그렇다면 '나이'에 대한 규칙을 이렇게 쉽게 오버라이딩 할 수 있었을까요?

메소드로 선언하거나, 클래스로 만들거나 하는 것은 리팩토링에서도 나오듯이
미래의 확장을 위한 대비책입니다.

if (복잡한 수식) { ... }



if (checkCondition(var1,var2,...)) { ... }

로 바꾸는 것도 조건 수정이 쉽게 되게 하기 위해서죠...
getter/setter도 마찬가지입니다.


제목 : Re: 상황에 따라 적절히 사용하는 건 어떨까요?
글쓴이: 손님(guest) 2005/08/16 15:01:52 조회수:33 줄수:5

모든 변수를  private 선언하고 public 함수로 접근하는 것 보다는 

상황에 따라 public 변수 선언하고 막바로 참조하는 것도 실제 코딩에선 효률적인 듯합니다.

제목 : Re: 답변 감사드립니다.
글쓴이: 질문자(guest) 2005/08/16 22:42:13 조회수:42 줄수:15

도움이 많이 되었습니다.

서민구님께 마지막 한가지만. ^^

어떤 기능이 들어간 경우 말고.

private 멤버변수,Setter/Getter 와 public 멤버변수 는

은닉성 관점에서 차이가 없는거라 볼 수 있는건지...요?

기능의 추가등 확장성의 관점에서는 Wrapper의 성격을 부여할수 있지만.

요즘은 여러가지로 헷갈리네여 ^^;

제목 : Re: 다른분이 대답해주시면 더 좋겠지만
글쓴이: 서민구(guest) 2005/08/17 04:51:37 조회수:60 줄수:17

저도 잘 알지 못하는지라;;

말씀하신대로,
private 으로 해놓고 단순히 값대입만 하는 setter와 단순히 값을 돌려주는
getter가 있는 경우와

public으로 선언한 경우에

은닉의 관점에서 생각하면 아무런 차이가 없습니다.


앞의 손님께서 이야기하신대로,
미래에 확장이 일어나지 않을 것이 확실하다면
사실 다 public 으로 선언해도 아무런 문제가 없을 듯 싶습니다.


제목 : Re: 이른 글도 있었네요.
글쓴이: 손님(guest) 2005/08/17 10:52:00 조회수:65 줄수:1

http://www.javaservice.net/~java/bbs/read.cgi?m=resource&b=servlet&c=r_p&n=1101235984

[출처] setter,getter|작성자 말라


전에 자바를 공부하면서 대체 왜 세터와 게터를 쓰는 걸까 하고 궁금해 했는데, C++ 책을 읽으면서 알게 됐다. 클래스안의
protected한 변수에 접근하기 위해서는 멤버함수 (클래스 안에 정의 되어진 함수) 를 이용하거나 friend 키워드를
통해서 접근해야 하는데 이때에 protected한 변수를 쉽게 접근할 수 있게 미리 만들어 놓은 게터와 세터를 이용하게 되는
것이다.(게터와 세터 역시 멤버함수이다) 굉장히 간단한 사실이지만 프로그래밍 초보인 나는 이 사실을 알아내고 굉장히 신기해




했다는;; ㅎㅎ 

Posted by chacolina
Study/Actionscript 3.02009. 2. 24. 02:33
포토겔러리를 만들어보자.

과정
1. 5개의 임의의 jpg 사진을 flex의 현재 작업하고 있는 프로젝트 안의 img 폴더에 저장한다.
2. flash에서 디자인한 SWC파일을  flex로 export한다.
3. PhotoGallery calss 코딩
4. PhotoGalleryTest 코딩




Package: timo.widgets  Superclass: Sprite


Superclass: Sprite




Posted by chacolina
Study/Actionscript 3.02009. 2. 23. 01:07
yahoo에서 제공하는 날씨정보 API를 받아 날씨위젯을 만들어본다.

과정
1.SWC 파일을 만들어 FLEX로 불러들인다.
2.WeatherWidget 클라스를 만든다.
3.WeatherWidgetTest를 만든다.




Package:timo.widget  Superclass:Sprite



Superclass: Sprite




첫번째 WeatherWidget Class를 Arrey를 이용하여 수정/재구성한다.




WeatherWidget 클라스 중간에 초기 화면에도 정보가 뜰 수 있도록 코드를 더해준다 (붉은색 표시)




기능별로 함수로 정리하기(붉은색 부분)


Posted by chacolina
Study/Actionscript 3.02009. 2. 22. 23:39
API를 제공하는 외부 데이터 활용하기

Superclass:Sprite

src>com>event>WeatherResultEvent


Posted by chacolina
Study/Actionscript 3.02009. 2. 22. 22:15
API를 제공하는 외부 데이터 활용하기

http://developer.yahoo.com/flash/
방문하여 해당 라이브러리를 다운로드한다.


압축을 푼 후 Source의 com 폴더를 찾는다.


com 폴더를 drag하여 바로 flex내 현재 프로젝트의 src 폴더 안에 drop한다.


SuperClass: Sprite




Posted by chacolina
Study/Actionscript 3.02009. 2. 22. 20:20
원리



Package: timo.net   / SuperClass: EventDispatcher

Package: timo.events   / SuperClass: Event
SuperClass: Sprite
Posted by chacolina
Study/Actionscript 3.02009. 2. 20. 15:46

1.sample1이라는 이름으로 xml파일을 하나 만들어 저장한다.
2.XMLLoader 라는 클라스를 하나 만든다.
3.도큐먼트를 열어 XMLLoaderTest를 작성한다.

디버깅하게 되면 xml파일 내용이 창에 뜬다.




Posted by chacolina
Study/Actionscript 3.02009. 2. 20. 03:48
[CH7]에서 다루는 몇가지 Loader 실험에서는 외부 데이터(이미지 혹은 XML)를 읽어들이고 활용하는 과정에서 클래스를 어떻게 제작/활용 하는지를 알아본다.


클래스 설계(제작): 쓰기 편하게 만드는 대표적인 예
(같은 결과를 보여주더라도 일정 부분을 클래스로 제작하여 활용하면 효율성을 증가시킬 수 있다.)

* 동기식 ( Synchronous ) VS 비동기식 ( Asynchronous )
-동기식 (싱크로너스-->싱크로나이징)
싱크로나이징이란 보조를 맞추는 것 즉 호흡을 맞추는 것 :: 호흡을 잘 맞추려면 잘하는 사람이 기다려주는 것이 가장 중요하다.
동기식=기다려준다. (예시..편의점에서의 거스름돈 계산 시에는 과정이 금방 끝날 것을 알고 다른 일을 하지 않은 채 기다려준다 )

-비동기식
기다리지않기 (완전히 기다리지않는 것은 아니다.) 시켜놓고 내 할일을 하다 완료 되면 다시 바라본다.
(예시..세탁소에서는 미리 세탁물을 맡긴 후 다른 곳에서 본인 할일을 하다가 세탁이 완료되면 찾으러 간다 )

-컴퓨터는 동기식일까 비동기식일까?
동기식이다. (매우 빨리 돌아가기 때문에...)
현 액션 이후에 추가 액션이 있더라도 이전 것이 수행/완료될 때까지 기다린다.

-웹은????!!!!!
과거 jsp 일때는 동기식이었으나
최근 웹2.0의 AJAX( AJAX : Asynchronous Javascript And XML) 형식은  비동기식이다. (자바스크립트를 사용하고 XML을 사용)

-플레시는???!!!
플레시도 기본적으로 동기식으로 동작
그러나"외부와의 연동"은 비동기식으로 동작한다.
XML 가져오기 이미지 가져오기 (즉 네트웍을 탄다고 하면 모두 비동기식이다. )

1.0에서는 무비클립 로더를 이용했어야 했다.
function loadMovie(파일명)
this.width=400
this.height=500

그러나 3.0에서는 아래와 같은 방법으로 비동기식 코딩을 하도록 한다.
=======================================
!!!!!!비동기식 코딩방법 (아무리줄여도 3줄)
1.var 객체생성
2.데이터가 도착하면 할일
3.데이터 호출
=======================================



1.LoaderTest
먼저 비동기식 코딩방법을 이용하여 간단하게 외부이미지를 로드 하는 방법을 실험해보자.
(load할 이미지는 img folder를 생성하여 그 안에 "aaa.jpg"이름으로 저장한다.)

외부 이미지를 불러들이는 클래스 :Loader
특징
1. DisplayObjectContainer를 상속받았다..
2. 이벤트 연결은 loader.contentLoaderInfo.addEventListener로 해야 한다..
3. 이미지가 도착하면, Event.COMPLETE 이벤트가 발생한다.
4. 이미지는 Loader.content로 불려진다.. { content를 다른곳에 붙이지 않는다.. }


**test1과 test2의 차이는 this.addChild(loader)를 썼는가 this.addChild(loader.content); 임 해당 설명은 본문에 나와있음


위와 같이 내장 클라스인 Loader를 사용하는 것이 아닌 ImageLoader라는 새로운 클라스를 만들어 활용 할 수도 있다.'
특정 클라스를 상속을 받는 것보다 해당 클라스를 가지고 있는 것이 활용성에 있어서 유연하기 때문에 별도 전용 클라스를 만들어 쓰는 것이다. 상세 설명은 아래와 같다.

ImageLoader 클래스는 무엇을 상속받을까?
load의 기능이 필요한 경우는 두가지 (소송시 변호사가 되거나 변호사를 고용한다 (전자는 상속 후자는 가지는 것 )
1.loader를 상속 받는다 .... is a 관계  (내가 ~이다 )
2.loader를 하나 가진다 .... has a 관계  (내가 ~을 가진다 )
*******상속은 하나 밖에 못받기 때문에  has a가 더 유연하다  필요에 따라 여러개 가져올 수 있으므로 **********

이에 대한 실험은 ImageLoaderTest와 XMLLoaderTest를 참고하기 바란다.


Posted by chacolina