[카테고리:] AS3

  • TextField.maxScrollV not updated when TextField.height changed

    현재 진행중인 작업에서 텍스트 편집 기능을 만들다가 텍스트필드 관련 플래시 플레이어 버그를 하나 발견했습니다. 텍스트필드에서 Event.CHANGE 이벤트가 발생했을 때, 텍스트필드의 높이가 변하는 경우 scrollV나 maxScrollV값이 제때 반영되지 않습니다.
    만일 CHANGE 이벤트를 사용하여 텍스트 스크롤바와 같은 기능을 개발한다고 하면, 이로 인해서 오류가 발생할 여지가 생기는 것이죠. 그래서, 일단 이 내용을 어도비에 버그로 신고해 두었습니다.
    http://bugs.adobe.com/jira/browse/FP-7234

    어도비의 담당자도 문제 재현했다고 코멘트를 단 것으로 보아, 언제가 될지는 모르지만, 향후 플래시 플레이어 업데이트에서 수정 될 것으로 기대됩니다.

    그렇다고 그때까지 마냥 기다릴 수만은 없으므로, 이 문제를 우회하는 방법도 공유합니다. 해결책은 매우 간단한데, TextField.height와 TextField.textHeight를 호출해 주기만 하면 됩니다.
    아래 샘플의 첫 번째 텍스트필드를 보면, 텍스트 편집 시에 엔터키를 눌러 텍스트필드의 크기가 변했을 때 scrollV와 maxScrollV가 제대로 반영되지 않는 것을 볼 수 있습니다.

    세 번째의 경우처럼, height와 textHeight를 호출해 주기만 하면 두 속성이 모두 정상적으로 변경된 것을 확인할 수 있습니다. 아마도 스크롤 관련 값을 업데이트하는 코드가 높이를 설정하는 코드에 들어가 있기 때문인 것으로 추측되네요.
    두 번째와 같이 height나 textHeight 중 하나만 호출해도 오동작을 하므로, 꼭 두 개의 속성을 함께 호출해 주어야 합니다.

  • Layout editor sample

    이전 프로젝트에서 데모로 만들었던 기능인데, 이번 프로젝트에서도 사용할 수 있을 것 같아서 개발하는 중인 샘플입니다. 우선 LayoutEditor 에서 격자로 배치된 셀들을 선택하여 병합/분할이 가능하고, 만들어진 레이아웃을 XML로 저장합니다.

    저장된 XML을 ItemArranger 에서 로드하여, 필요한 컴퍼넌트를 배치하여 최종 상태를 다시 XML로 저장합니다.

    이렇게 만들어진 XML을 다른 어플리케이션에서 불러와, 위에서 만들어진 레이아웃대로 화면을 구성하도록 할 수 있죠.

    이거 만들면서 테스트 해봤는데, 조금 응용하면 드림위버 같은 HTML 에디터의 테이블 편집 기능도 충분히 구현할 수 있더군요. 물론, 반대로 HTML의 테이블 태그를 액션스크립트로 파싱하여 표시하는 것도 가능하고요.

  • ActionScript로 점선 그리기2: Marching Ants

    어제 올렸던 대시라인 그리기에서 조금 더 기능을 추가해 봤습니다. 포토샵에서 선택영역을 지정하면 점선이 이동하는 효과가 나오는데, 그걸 적용했습니다. 행진하는 개미 ^^

    beginBitmapFill(bitmap:BitmapData, matrix:Matrix=null, repeat:Boolean=true, smooth:Boolean=false):void
    위와 같이 Graphics.beginBitmapFill() 메소드에 2번째 파라메터로 매트릭스를 지정하여 사용할 수 있습니다. 그래서 하나의 비트맵데이터를 가지고 매트릭스에 회전을 주어서 사용을 했더니, 비트맵데이터가 외곡되는 문제가 생기네요. 일단 귀찮아서 비트맵데이터 4개를 가지고 그렸는데, 최적화하는 방법은 좀 더 찾아 봐야할 듯 하네요.

    click to view the source code

  • ActionScript로 점선 그리기

    이전 포스트와 마찬가지로, 이미지 에디터에서 필요한 기능 구현하면서 만들어 본 샘플입니다. 이번에는 점선 혹은 대쉬선(dashed line)을 그리는 기능입니다.

    click to view the source code

  • Color Picker sample

    오랜만에 플래시 관련 포스팅이네요 ^^
    최근에 이미지 에디터 비슷한 걸 개발해야 하는데, 거기에 필요한 기능 구현하다가 만들어 본 샘플입니다. 기능은 포토샵의 컬러 피커와 거의 비슷하게 만들었습니다.