본문 바로가기

flex

[Flex] X, Y 좌표로 컴포넌트 찾기 (HitTest) var objects :Array = stage.getObjectsUnderPoint( new Point( x, y ) ); for( var i:int=0; i
[Flex] 개발할 때 주의할 점 중 클래스명이나 이미지명 같을 때 발생하는 문제 Flex는 잘 만들어진 UI Framework이지만 완성도가 좀 떨어진다. 가령 클래스명이나 이미지명이 같을 때 문제가 발생하는 것처럼 말이다. 패키지의 위치가 달라도 클래스명이나 이미지명이 같으면 이상한 컴파일 오류가 나기 때문에 미리미리 겹치지 않게 조심하는 수밖에 없다. 나중에 겹치는 바람에 발생하는 문제를 고치려고 하면 하루이틀 날리는 건 일도 아닐 것이다.
[Flex] StringUtil.substitude() 사용법 Java의 String.format()과 같은 함수는 Flex에서 StringUtil.substitude()가 있다. 먼저 substitude() 함수를 사용하지 않고 +(플러스) 연산자를 이용하여 구성할 때 코드를 보자. var index :int = -1; var length :int = 10; Alert.show( "Index '" + index + "' specified is out of bounds.(length:" + totalObjSum + ")" ); 다음은 substitude() 함수를 사용할 때의 코드이다. var index :int = -1; var length :int = 10; Alert.show( StringUtil.substitute( "Index '{0}' specified ..
[Error] HTML wrapper template must contain ${swf} macro that is substituted at compile time Error : HTML wrapper template must contain ${swf} macro that is substituted at compile time Solution : Flash Builder나 기타 다른 IDE를 쓰다가 IntelliJ IDEA로 옮기면서 날 수 있는 에러다. IntelliJ IDEA에서는 index.template.html 파일에 ${swf}가 없으면 에러를 낸다. 따라서 HTML 파일에 application.swf가 있는 부분 대신 ${swf}.swf를 써주면 에러가 없어진다. swfobject.embedSWF( "${swf}.swf", "flashContent", "${width}", "${height}", swfVersionStr, xiSwfUrlStr, flas..
[Flex] 주의해야 할 int, String 비교 var valueInt :int = 0; var valueObject :Object = valueInt; trace( valueObject == "" ); trace( valueObject == 0 ); 이렇게 코딩을 했을 때 어떻게 나올까? 답은 true true이다. int타입이고 값이 0인데 왜 빈칸( "" )과의 비교가 왜 true가 나오는 걸까? 저번에 쓴 "String타입 "false"를 Boolean타입으로 변환하는 방법"에 적어놓은 이유와 같다. 이 포스트에서 좀 더 자세히 풀자면, Flex는 Java와 다르게 Boolean 이외의 타입으로도 논리연산이 가능하다. 이 기능은 양날의 검으로 어떻게 보면 편하고 어떻게 보면 불편한 기능이다. 개인적으로는 안 쓰고 버그 안 나는 게 좋은 것 같다..
[Flex] String타입 "false"를 Boolean타입으로 변환하는 방법 var booleanValue :Boolean = Boolean( "false" ); // booleanValue is true String타입으로 된 "true"와 비교해서 사용해야 한다. 위와 같이 작성하면 false가 아니라 true 값이 나온다.이유는 간단하다. String값에 데이터가 있었기 때문. 없었다면 false 값이 되었을 것이다. 그래서 String타입 문자 그대로 Boolean으로 변환하고 싶다면 다음과 같이 하면 된다. public static const TRUE :String = "true"; var booleanValue :Boolean = "false" == TRUE ? true : false; // booleanValue is false 참 쉽죠잉? 매번 if 문을 작성하긴 ..
[Flex] 개행 문자 문제 s:Label이든 mx:Label이든 \n (역슬래시, backslash)를 사용하는 건 좋지 않다. 이상하게 개행이 안 먹고 문자 그대로 나올 때가 종종 생긴다. 그래서 \n은 사용하지 않고 을 사용하면 된다. 참고 은 개행 은 공백
[Flex] Error creating AIR file:xxx: error 103: application.versionNumber is an unexpected element/attribute Error:Error creating AIR file:xxx: error 103: application.versionNumber is an unexpected element/attribute Solution:FlexMonkey를 쓰고 싶어서 소스를 받고 export 하는데 에러가 났다. 찾아보니 아주 단순한 문제였다. AIR에서 xxx-app.xml을 쓰는 규칙이 바뀌었다. 그래서 XML 태그 중에 versionNumber가 있는데 이걸 그냥 x.x.x으로 고쳐주면 된다.
[Flex] Object, Array, XML 생성 및 선언 방법 Java나 Flex나 new 키워드를 되도록 사용하지 않는 게 좋다. 속도가 빠르거나 메모리를 적게 차지하는 장점도 있고 Factory Pattern 등을 이용해서 생성하면 나중에 객체 Lifecycle을 관리할 때 편하게 할 수도 있다. Java에서는 Array 생성 시 {} 중괄호를 사용하는데 Flex에서는 [] 대괄호를 사용하기 때문에 좀 헷갈리 수 있다. 1. Object var object :Object = {}; object.name = "홍홍홍"; object.age = 18; var object2 :Object = { name: "홍홍홍", age: 18 }; Object는 Dynamic Class라고 불리우는데 JavaScript에서의 Object Literal처럼 사용할 수 있다. Ob..
[Flex] Image의 실제 사이즈 구하기( width, height ) //width 넓이 image.contentWidth //height 높이 image.contentHeight
[Flex] Error 리소스 번들 lang에 대한 소스를 찾을 수 없습니다. Error:리소스 번들 lang에 대한 소스를 찾을 수 없습니다. Solution:Flex Project의 Properties에 Compiler Arguments에 -source-path=locale/{locale} 옵션 추가.당연히 locale 위치 맞춰서 입력해야 함.
[Flex] Error 테마 'halo'이(가) 있는 유형 'mx.containers.HBox'에서만 스타일 'borderThickness'이(가) 지원됩니다. Error:테마 'halo'이(가) 있는 유형 'mx.containers.HBox'에서만 스타일 'borderThickness'이(가) 지원됩니다. Solution:Flex Project의 Properties에 Flex Theme 메뉴에서 Halo 테마를 선택해주면 된다. PS. Flex Library Project로 생성한 프로젝트라면 halo.swc 파일을 복사하고 Compiler Option으로 -theme /lib/halo.swc을 추가 해주면 된다.