'Flash'에 해당되는 글 69건

  1. 페이지 전환이 많은 플래시 구현시 //2009/03/12 21:29
  2. embed font의 한글 표시 문제 //2009/03/12 17:11 1
  3. crossdomain.xml //2008/10/06 19:32
  4. 서로 다른 도메인간의 swf <-> javascript //2008/09/17 12:58
  5. CS3 - xml 로드와 FLV seekBar //2008/02/09 14:57
  6. [flash8] 동적 폰트 임베딩 //2007/11/15 19:57 1
  7. 플래시 static 폰트 임베딩시... //2007/08/07 15:41
  8. ctrl + ' //2007/07/03 15:40
  9. 폰트 쉐어링 //2007/06/21 18:39

- index, selectedIndex

 

1. 메뉴 포커스 이동 -> index 변화

2. 메뉴 선택 -> selectedIndex에 index 지정, 이전 selectedIndex와 다르면 hasChanged = true;

3. hasChanged 가 true라면 뭐든 생성 -> selectedIndex 에 해당하는 뭐든 생성, hasChanged = false;

* 외부에서 내용변경시 2번에서 시작...

 

 

- user input을 공통적으로 막을 수 있도록한다.

 

1. key 입력은 main에서 시작되므로 이를 main에서 관리하도록.

 

 

- 각 페이지가 갖는 서브페이지에 key input을 전달하는 방법을 모색

 

1. main에 _keyListener 변수로 key input을 직접 전달

2. 페이지에서 원할 때 _keyListener를 등록할 수 있음.

3. IKeyListener 로 구현

 

 

- 각 페이지들은 다른 페이지들과 연관관계가 없도록(적도록) 구성한다.

 

1. 페이지간의 이동이 원활해진다.

2. 데이터 참조가 목적이라면 데이터객체를 독립시켜 각각 참조하여 관계를 없앤다.

 

 

- 페이지 전환시 동작 순서

 

0.5. user input 막음

1. 이전 페이지 사라짐 -> 사라짐 완료

2. 현재 페이지 나타남 -> 나타남 완료

2.5. user input 시작

 

 

- 이전 페이지로 이동하는 방법 모색

 

1. 각 페이지는 고유의 id가 있다.

2. 현재 페이지는 이전 페이지의 id를 가지고 있다. (또는, main에서 페이지 순서를 관리한다)

3. 이전 이동시 이전 페이지의 id를 이용

 

 

- AbstractPage : 각각의 페이지 클래스

 

1. implements IKeyListener :: pressKey(code) : 키 입력을 받을 수 있는 객체

1.1. implements IKeyListener :: focusIn() : 키 객체로 지정되었을 때;

1.2. implements IKeyListener :: focusOut() : 키 객체가 아님으로 지정되었을 때;

2. create() : 데이터 로드 시작, 보여지는 것 생성

3. dispose() : 데이터 이외의 보여지는 것 제거

4. live() : 약한 전환을 위한 메서드, background에서 계속 진행하고 싶을 때 (약한 전환시에는 작동하지 않는 메서드)

5. kill() : 상동

6. index : 포커스가 맞춰진 index

7. selectedIndex : user가 선택한 index

8. hasChanged() : selectedIndex의 변화가 있는지 확인

9. clearChanged() : selectedIndex의 변화가 없음으로 지정

10. setChanged() : selectedIndex의 변화가 있음으로 지정

11. appear() : create()이후 나타나는 동작 시작

12. disappear() : dispose()이전 사라지는 동작 시작

 

 

- AbstractPageContainer : 페이지안에 페이지를 가질 수 있는 클래스

 

1. extends AbstractPage

2. addPage(AbstractPage) : 서브 페이지를 추가

3. removePage(AbstractPage) : 서브페이지를 제거

4. createSubPage() : selectedIndex의 서브페이지를 생성

5. removeSubPage() : 현재 서브페이지를 제거

6. subIndex : 서브페이지의 인덱스(선택된 서브의 sub.index or sub.selectedIndex)

* 서브페이지 생성시 addChild()는 별도로 구현한다. - 각 페이지마다 붙여지는 위치가 다르므로..

2.0에서 특정 상황에 보이던 현상이 3.0에서도 보여진다.

 

임베드를 적용한 인풋 텍스트에

'우리들은 일학년"을 타이핑하면

 

'우'글자가 사라진다.

 

이리저리 테스트 해보니

 

'리'를 입력하고 '들'의 ㄷ을 입력하는 동시에 '릳'라는 글자가되어야 하는데 이 글자가 임베드된 폰트에 포함되어 있지 않으면 이상현상으로 앞의 글자가 사라지는 것 같다.

 

텍스트 필드를 무비클립으로 만들고 필요한 폰트셋을 임베드한 후 swc로 변환해서 사용하는 중에 포함되지 않는 글자때문으로 보여진다.

 

폰트 전체를 swc로 만들 수 있나?

crossdomain.xml에서 허용한 도메인은 .swf파일의 도메인이다.

 

.swf를 표시하는 .html 등의 도메인이 아니다.

http://kostory.com  - .swf가 있는 도메인

 

 - .swf 내부에 allowDomain()을 설정한다.

 Security.allowDomain("*.showjean.com");

 

 - crossdomain.xml 파일로 http://showjean.com의 접근을 허용한다.

<?xml version="1.0"?>
<cross-domain-policy>

        <allow-access-from domain="*.showjean.com" /> 

</cross-domain-policy>

 

 

http://showjean.com  - .html이 있는 도메인

 

 - .html의 allowScriptAccess을 always로 설정한다.

 <param name="allowScriptAccess" value="always" />

xml 로드(URLLoader) 후 FLV를 생성하고 .seekBar = seekbar를 지정하면 seekbar가 제대로 작동하지 않는다.

 

- 모든 경우에 해당하는지는 알 수 없음.

- xml로드 전 생성/지정하면 이상 없음.

swf파일을 로드하여 임베딩 폰트를 이용할 수 있는 방법(액션을 이용해서 텍스트 필드를 생성할 경우)

 

1. embedFont.fla - 실제로 폰트를 저장하고 있는 swf파일 만들기

- 1. 텍스트필드가 들어 있는 심볼(이하 임베드심볼) 하나를 만들어, 텍스트필드에 임베드할 폰트를 지정하고, embed버튼으로 임베드할 글자들을 선택한다.

- 2. 라이브러리의 임베드심볼 Linkage옵션에서 Export Runtime sharing을 체크하고 아래의 URL 박스에 export할 swf이름을 넣는다.(아무이름이나 넣어도 된다)

- 3. 스테이지에 임베드심볼을 가져다 놓는다.

- 4. 테스트무비를 실행해 swf파일(embedFont.swf)를 생성한다.

 

2. useFont.fla - 폰트를 사용할 수 있도록 로드해주는 swf만들기

- 1. 새로운 fla파일을 만든다.

- 2. 라이브러리창을 2개로 만들어, embedFont.fla의 임베드심볼을 useFont.fla의 라이브러리로 가져다 놓는다.

- 3. useFont.fla 라이브러리의 임베드심볼 Linkage옵션(Import for runtime sharing이 선택되어 있다)에서 URL에 임베드폰트의 swf(embedFont.swf)를 넣는다

주의 : embedFont.swf의 경로는 최종적으로 폰트가 사용되는 swf(test.swf)파일의 위치가 기준이된다.

- 4. useFont.fla 라이브러리의 임베드심볼을 스테이지에 올려 놓는다.

- 5. 테스트무비를 실행해 swf파일(useFont.swf)를 생성한다.

 

3. test.fla - 위 두파일을 로드하여 임베드폰트를 사용할 swf

- 1. 위 두 파일을 무비클립로더를 이용해서 로드한다.

   (embedFont.swf를 로드완료 한 후 useFont.swf를 로드한다.)

- 2. 로드가 완료되면 텍스트 필드를 생성해 폰트를 적용해 본다.

주의 : 폰트이름은 linkage가 아닌 실제 폰트명으로 사용해야 한다.

 

특징

- 1. 임베드폰트를 사용할 swf는 폰트의 어떠한 정보도 가지고 있지 않다. 그래서, 외부에서 폰트를 마음대로 바꿀 수 있다.

- 2. 임베드폰트관련 파일을 로드하여 사용하기때문에 유연성을 가질 수 있다.

- 3. 사용자가 원하는 글자셋만 임베드 할 수 있다.

- 4. 첨부파일의 test.swf에서는 텍스트필드 생성후 텍스트필드를 한번 클릭해야 텍스트가 보인다.

- 5. 텍스트의 위치가 일반적이지 않은 곳에 있다.

- 아직 4, 5에 관한 더 이상의 테스트는 진행하지 않았다.



font_embed-showjean.zip


* 사용조건 - 폰트임베드, attachMovie, 자체 swf 프리로드

 

자체 swf를 프리로드하기위해서는 1프레임의 용량을 최소한으로 줄여야한다.

이를 위해서 임베드된 폰트심볼(attachMovie로 이용될)의 'export in first frame'을 체크해제하고, 2프레임이후에 심볼을 위치시켜야 한다.

 

이때 만약 1프레임에 임베드된 폰트와 같은 폰트의 static폰트가 사용되고 있다면, 위의 임베드폰트가 1프레임에 로드되고 만다.

 

1프레임의 폰트를 'break apart'해서 해결할 수 있다.

ctrl + ' //2007/07/03 15:40

우연히 알아낸 플래시 액션 패널 단축키 ctrl + '

 

{}

()

[]

 

등 괄호 안의 모든 것을 선택해준다.

 

trace("이 모든 것"); //이 만큼 선택된다.

쉐어링 폰트.swf 파일의 bitmap text를 체크하고, anti alias for animation옵션으로 지정하면 깔끔한 "돋움체/돋음" 등을 사용할 수 있다.

 

텍스트필드의 옵션이 bitmap text(no anti alias)이면 쉐어링 폰트가 보이지 않는다.

 

 

- 쉐어링 폰트.swf 파일을 만들 때 폰트의 linkage와 파일 이름을 같게 해준다.

 

- 쉐어링 폰트.swf 파일을 미리로드 해 놓으면 쉐어링 폰트를 이용하는 다른 swf파일에서의 로딩 속도를 살릴 수 있다.