var time:Number;

time = getTimer();

trace("전체시간", getTimer() - time);

Posted by 미랭군

private function listFonts():void {

var fontArray:Array = Font.enumerateFonts(true);

var str:String = "Fonts: \n";

for(var i:int = 0; i < fontArray.length; i++) {

var thisFont:Font = fontArray[i];

str += "FONT " + i + ":: name: " + thisFont.fontName + "; typeface: " + 

thisFont.fontStyle + "; type: " + thisFont.fontType;

if (thisFont.fontType == "embeddedCFF"||thisFont.fontType == "embedded") {

str += "*";              

}            

str +=  "\n";

}

trace(str);

}

Posted by 미랭군

서버측 컴퓨터의 843포트에서 실행되는 Policy File Server

package chat;
import java.io.*;
import java.net.*;
/* 843포트에서 대기하는 서버소켓은 클라이언트가 접속하여 정책파일을 요청하면 정책파일의 내용을
 * 출력스트림으로 전송해 주고, 소켓을 닫는다.
 * 액션스크립트 클라이언트(Flex)에서 서버(채팅서버 등)에 접속하기 위해서는 서버가 실행중인 호스트에
 * 이 정책파일서버가 먼저 실행되고 있어야 한다.
 */
public class PolicyFileServer {

 public static void main(String[] args) throws Exception {
  ServerSocket ss = new ServerSocket(843);
  Socket client = null;
  PrintWriter toClient = null;
  System.out.println("정책파일서버실행....");
  while(true){
   client = ss.accept();
   InputStreamReader isr = new InputStreamReader(client.getInputStream());
   char[] buf = new char[1024];
   int read = isr.read(buf);
   String request = new String(buf, 0, read);
   if(request.equals("<policy-file-request/>\0")){
    System.out.println("정책파일요청접수됨");
   }else{
    System.out.println("정책파일요청아님");
    continue;
   }
   //System.out.println("정책파일서버요청문자열:"+request);
   toClient = new PrintWriter(client.getOutputStream());
   String policy = "<?xml version='1.0'?>";
   policy+="<cross-domain-policy>";
   policy+="<site-control permitted-cross-domain-policies='master-only'/>";
   policy+="<allow-access-from domain='*' to-ports='*' />";
   policy+="</cross-domain-policy>";
   toClient.println(policy);
   toClient.flush();
   client.close();
   System.out.println("정책파일 전송완료");  }
 }
}


Posted by 미랭군

/*
 There are some caveats to this css sheet that I found. Yes, these issues made me feel stupid.
 Just as it says in the Livedocs:
  
 1. the css file MUST be named “defaults.css”
 2. the css file MUST be at your top level package
 3. only one css sheet per SWC

 see) http://www.unitedmindset.com/jonbcampos/2010/05/12/creating-custom-spark-components/
 see) http://livedocs.adobe.com/flex/3/html/help.html?content=mxmlcomponents_4.html
*/

 

Posted by 미랭군

Label 또는 DataGrid headerText 등에 줄바꿈이 필요할때 \n 대신 &#xd; 를 사용

Posted by 미랭군

mx(halo) 스타일 커스텀 컴포넌트 제작 방식

createChildren()

- 추가적인 자식 컴포넌트를 addChild()

updateDisplayList()

- 자식 컴포넌트의 width, height, 위치(x, y)값 등을 지정

- 추가적인 graphics drawing 작업

 

s(spark) 스타일 커스텀 컴포넌트 제작 방식

ComponentSkin

- 추가적인 자식 컴포넌트를 Skin에 구현

- 자식 컴포넌트의 width, height는 left, right, top, height 등을 통해 동적으로 구현

- skin내에 있는 updateDisplayList()에서 getStyle()을 통해 스타일 관련 프라퍼티를 가져와서 값을 지정

Posted by 미랭군

TypeError: Error #1007:Instantiation attempted on a non-constructor.at mx.controls::AdvancedDataGridBaseEx/getSeparator()

이와 같은 에러가 발생하였을 경우..

Fix (add to CSS, this is the basics required for the most part ):

mx|AdvancedDataGrid{
columnDropIndicatorSkin: ClassReference("mx.skins.halo.DataGridColumnDropIndicator");
columnResizeSkin: ClassReference("mx.skins.halo.DataGridColumnResizeSkin");
headerColors: #FFFFFF, #E6E6E6;
headerDragProxyStyleName: "headerDragProxyStyle";
headerBackgroundSkin: ClassReference("mx.skins.halo.DataGridHeaderBackgroundSkin");
headerSeparatorSkin: ClassReference("mx.skins.halo.DataGridHeaderSeparator");
headerHorizontalSeparatorSkin: ClassReference("mx.skins.halo.AdvancedDataGridHeaderHorizontalSeparator");
headerStyleName: "advancedDataGridStyles";
sortArrowSkin: ClassReference("mx.skins.halo.DataGridSortArrow");
stretchCursor: Embed(source="Assets.swf",symbol="cursorStretch");
}
 
mx|AdvancedDataGridSortItemRenderer{
paddingTop: 0;
paddingBottom: 0;
paddingLeft: 0;
paddingRight: 0;
horizontalGap: 0;
color: #0B333C;
icon: ClassReference("mx.skins.halo.DataGridSortArrow");
}
 
mx|PrintAdvancedDataGrid{
alternatingItemColors: #FFFFFF, #FFFFFF;
borderColor: 0;
columnResizeSkin: ClassReference("mx.skins.halo.DataGridColumnResizeSkin");
headerColors: #FFFFFF, #FFFFFF;
headerSeparatorSkin: ClassReference("mx.skins.halo.DataGridHeaderSeparator");
headerStyleName: "advancedDataGridStyles";
horizontalGridLineColor: 0;
horizontalGridLines: true;
sortArrowSkin: ClassReference("mx.skins.halo.DataGridSortArrow");
stretchCursor: Embed(source="Assets.swf",symbol="cursorStretch");
verticalGridLineColor: #000000;
}
 
mx|PrintOLAPDataGrid{
alternatingItemColors: #FFFFFF, #FFFFFF;
borderColor: 0;
columnResizeSkin: ClassReference("mx.skins.halo.DataGridColumnResizeSkin");
headerColors: #FFFFFF, #FFFFFF;
headerSeparatorSkin: ClassReference("mx.skins.halo.DataGridHeaderSeparator");
headerStyleName: "advancedDataGridStyles";
horizontalGridLineColor: 0;
horizontalGridLines: true;
stretchCursor: Embed(source="Assets.swf",symbol="cursorStretch");
verticalGridLineColor: #000000;
}

 

이렇게 CSS에 추가해주면 된다. 

Posted by 미랭군

줄 바꿈할 텍스트 앞에 &#13;를 붙이면 된다.

Posted by 미랭군

혹시나 웹어플리케이션을 바꾸어서 연동해보려고 하거나 하는 시도를 하다가 연동이 안되면서


[RPC Fault faultString="[MessagingError message='Destination 'sampleService' either does not exist or the destination has no channels defined (and the application does not define any default channels.)']" faultCode="InvokeFailed" faultDetail="Couldn't establish a connection to 'sampleService'"]


한국말로는

[RPC Fault faultString="[MessagingError message='대상 'sampleService'이(가) 없거나 해당 대상에 채널이 정의되지 않았습니다. 또한 응용 프로그램에 기본 채널이 정의되지 않았습니다.']" faultCode="InvokeFailed" faultDetail="sampleService'에 연결할 수 없습니다."]


과 같은 에러가 발생될 때가 있다. 이 때는 플렉스 프로젝트의 Properties에서 Flex Compile 과 Flex Server 부분을 확인해 볼 필요가 있다. BlazeDS와 연동하는 플렉스 프로젝트를 Compile하는데에는 웹어플리케이션 측의 services-config.xml파일도 이용을 하기 때문에 이를 못찾는다거나 설정이 틀릴경우에는 문제가 발생된다. 이 부분을 간과한 채 아무래 웹어플리케이션만 죽어라 설정파일 변경하고 빌딩했지만 해결이 안되었었다.


services-config.xml

    <services>

        <service-include file-path="remoting-config.xml" />

        <service-include file-path="proxy-config.xml" />

        <service-include file-path="messaging-config.xml" />  

        

        <!-- 

    Application level default channels. Application level default channels are 

    necessary when a dynamic destination is being used by a service component

    and no ChannelSet has been defined for the service component. In that case,

    application level default channels will be used to contact the destination.

        --> 

        <default-channels>

           <channel ref="my-amf"/>

        </default-channels>     

    </services>

Posted by 미랭군

기존에는 자바스크립트를 이용하거나 다른 꼼수를 써서 사용해야하는 것을 11.2 플레이어로 업데이트 되면서

오른쪽 마우스 클릭 이벤트가 생겼다고 하네요.

 

관련 이벤트는 RIGHT_CLICK, RIGHT_MOUSE_DOWN, RIGHT_MOUSE_UP입니다.

Posted by 미랭군