scaleform.minarto.com

Flash CS4 와 Flash Player 10 에서 변경된, 사람들이 잘 모르는 몇 가지... 본문

ActionScript

Flash CS4 와 Flash Player 10 에서 변경된, 사람들이 잘 모르는 몇 가지...

미나토 2008. 11. 6. 14:13


지지난 주에 정식으로 Flash Player 10 이 업데이트 되었고 Flash CS4 트라이얼 버전도 풀리기 시작했는데... 짬을 내서 사용하다보니 알려진 것 이외의 몇가지 변경점이 발견되었다.




1. 프로젝트 파일 (*.flp) 하위 호환이 안된다.

 좀 어이가 없는 일 중에 하나인데 의도적인 것인지 버그인지 아직은 알 수가 없다. CS3 에서 프로젝트 파일 생성 후 저장하고 CS4 에서 열어보면 포맷이 안맞다는 에러메세지만 뜰 뿐이다.

물론 fla 를 새로 만들어야 하는 것보다야 별 일 아닐 수 있겠지만 하위호환 불가라는 엄청난 변경점은 완성도에 의문이 가게 만드는 일임에 틀림없다




2. 임베디드 폰트의 폰트명이 바뀌었습니다.

제가 제목을 잘 붙인건지 모르겠네요. 다음의 코드를 보시죠

윤고딕 330을 라이브러리에 임베디드 한 후...


var f:Array = Font.enumerateFonts(false);
for(var i:uint=0; i<f.length; i++)
{
    trace(f[i].fontName);
}


을 찍어 보시면 CS3 에서는 "-윤고딕330" 이라고 나오고 CS4 에서는 "YDIYGO330" 이라고 나옵니다

CS3 처럼

TextField.defaultTextFormat = new TextFormat("-윤고딕330", 12, 0);


이라고 코드를 작성하신다면 화면에는 아무 텍스트도 안나오게 될 것입니다



3. TextField 의 크기 구하는 방식이 변경되었습니다

CS3 에서 다음의 코드를 실행하면 노란색과 같이 나옵니다.

var txt:TextField = new TextField();
txt.defaultTextFormat = new TextFormat("-윤고딕330", 20 );
txt.text = "ABCD";
txt.embedFonts = true;
txt.autoSize = TextFieldAutoSize.LEFT
addChild( txt );
trace("[ Test_1 ] Height : " + txt.textHeight + "  Width : " + txt.textWidth );
trace("[ Test_1 ] Height : " + txt.height + "  Width : " + txt.width );


[ Test_1 ] Height : 22.650000000000002  Width : 53.150000000000006
[ Test_1 ] Height : 26.650000000000002  Width : 57.150000000000006



CS4 에서 다음의 코드를 실행하면 노란색과 같이 나옵니다.

var txt:TextField = new TextField();
txt.defaultTextFormat = new TextFormat("YDIYGO330", 20 );
txt.text = "ABCD";
txt.embedFonts = true;
txt.autoSize = TextFieldAutoSize.LEFT
addChild( txt );
trace("[ Test_1 ] Height : " + txt.textHeight + "  Width : " + txt.textWidth );
trace("[ Test_1 ] Height : " + txt.height + "  Width : " + txt.width );


[ Test_1 ] Height : 22.65  Width : 53.15
[ Test_1 ] Height : 26.65  Width : 57.15


이 변경사항이 정확히 소숫점 두째자리에서 반올림을 하는 것인지 아니면 다른 방식인지는 정확히 알 수 없습니다만 보시듯 변경된 것은 확실합니다

별 거 아닌 것처럼 보일 지 모르지만 올림, 내림, 반올림 또는 정수형으로 형변환을 해버리면 정수값이 달라져 버리는 경우가 있기 때문에 화면이 레이아웃이 틀어져 버리는 경우가 생길 수도 있습니다.




4. FileReference 의 보안사항이 변경되었습니다.

자세한건 지돌스타님의 블로그 (http://blog.jidolstar.com/397)에서 확인하시고요.

일반적인 외부 스크립으로 인한 파일레퍼런스 조작이 불가능하게 되었습니다. 강제로 dispatchEvent(new MouseEvent(MouseEvent.CILCK)); 로도 테스트해봤는데 안되었습니다.


예를 들어, 저희 차트 솔루션에는 이미지 저장 기능이 안되기 시작했습니다. 플래시 내의 버튼을 클릭해서 저장을 하는데도 말이죠.

이유인 즉슨 9버전에서는 로컬로 이미지 저장이 안되기 때문에 서버에 저장을 하고 다운로드를 하는 식으로 개발을 합니다(대부분 그렇게들 하시죠). 그런데 그게 문제입니다.

다운로드를 클릭한건 마우스로 한것이지만 다운로드는 서버에 저장된 이후에 시작되는 것인데 그 이벤트는 URLLoader 에서 발생하는 이벤트이기 때문입니다. 위의 보안변경 업데이트로 인해 막히게 되었죠.

결국 player 10 버전의 FileReference.save 메소드를 사용하거나 파일 다운로드 창을 띄우기 위해서는 jsp 단에서 띄워야 하게 되었죠.






뭐, 일단 크게 눈에 띄거나 치명적인 것인 위와 같습니다. 이 문제들이 어도비가 의도한 것이라면(보안업데이트처럼) 다른 해결책을 찾아야 하고 버그라면 수정을 기다려야 할 것 같습니다



p.s. euc-kr 문서의 데이터 오염 문제는 10 버전에서도 여전한 걸로 확인되었습니다