Posted
Filed under Action Script

[참조] - http://www.happyfri.com/blog/177
우선 맥클레이씨가 올린 포스트 보자.
그가 최근까지 버그로 알고 있었던 두가지중 나머지 하나이다. (하나는 이전에 포스트한 bitmap with shape)
와...나도 이거는 버그로 알고 있었는데...확실하게 그 궁금정이 풀렸다. 이 문제를 정확히 해결한건 http://www.kirupa.com/forum 에 올라온 질문글에 대한 답변글을 단 glosrfc 분의 명쾌한 설명이다. 물론 나도 예전에 TexfField와 관련된 버그포스트에서 이와 유사한 내용을 짚고 넘어간 적이 있지만 Auto Kerning이 이런 기능을 할줄은 전혀 생각을 못했다.

내용의 요지는
만약 저작툴상에서(ActionScript로 만든 Textfield 가 아닌...) 생성한 텍스트필드는 그 태생의 근원이 static에서 파생된 것으로 볼수 있는데... 이때 multiline이 체크되었을경우 해당 텍스트필드에 내용을 추가하면 이때 첫라인이 (line break) 되어 버린다는 것이다.(줄바꿈현상)
이 현상을 대부분 아마 겪어 보았을터인데...내경우엔 이것을 해결하기 위해 a.text = ''; 처럼 맨처음 초기화를 먼져시켜두고 작업을 했던 기억이 난다.

 F   ?
1
a.appendText('우리가');



  첫라인이 자동줄바꿈 되는현상


 문제가 되는 원인을 픽스

그런데 이문제는 Auto Kern 과 관련이 있다고 한다.
이것은 싱글라인은 상관없고 오로지 다중라인 일경우 처리되는데 이를테면 디폴트 값으로 <p></p>태그가 포함되어 있기때문에 이녀석 때문에 실제로 그렇게 보인것이다. 이부분을 glosrfc씨는 아래와 같이 설명하고 있다.

With auto kerning selected, Flash adds some invisible HTML tags to the textfield which are ignored in single line mode. However, switching to multi line mode activates the HTML <P> tag and so you end up getting this spurious line break.



htmlText를 추가할때 += 연산자를 포함시키면 자동으로 <p>태그가 추가된다는 것이다.
따라서 이부분을 해결하기 위해서는 별도의 변수에 htmlText 값을 담고 그것을 최종적으로 추가시키는 작업이 더 주요하다고 한다. (일종의 text를 추가할때 tfd.text += 'test'; 대신 속도문제로 tfd.appendText('test')를 권고하는것과 마찬가지 개념으로 이해하면 되겠다.)

어쨌든 이렇게 궁금했던 부분이 해결되서 정말 기분좋다.
항상 하는말이지만 좋은 내용들을 포스트해준 맥클레이씨와 좋은 팁을 알려준 glosrfc 라는 분께 감사의 말을 전한다.
(thanks for good tip trevor, thank you glosrfc )

2009/10/12 20:13 2009/10/12 20:13