Archive for Flex2 열공

String 문자열 자르기 Tip

문자열은 파라미터 형태로 정의하면  URLVariables를 사용하여 문자열을 자를수 있습니다.

          var str:String = “ans=12334&msg=이거다”;
          var variables:URLVariables = new URLVariables();
          variables.decode(str);
   
        
         txtArea.text = variables.ans; //-> 12334
         txtArea.text += variables.msg;  //-> 이거다

댓글 남기기

Ajax Data Services 새로운 라이브러리 추가

Adobe lab에 새로운 플젝이 추가되었습니다.

Javascript 라이브러리를 사용하여 Flex Data Service를 다이렉트로 사용가능하게 해주는 기능인데

real-time 데이터 처리도 가능하다고 합니다.

왠지 갈수록 FDS가 점점 쓸만한 놈으로 변해가는듯한 느낌입니다.

자세한 내용은 Adobe lab을 참고하세요.

http://labs.adobe.com/wiki/index.php/Ajax_Data_Services

댓글 남기기

이미지 로딩 예제

이미지가 동적으로 로딩될때 로딩이미지 표시하는 예제

<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”absolute” backgroundColor=”#000000″ >
 <mx:Button label=”View Image” horizontalCenter=”0″ top=”5″ click=”imageCanvas.visible = true;sceneImage.load()” />
 <mx:Canvas id=”imageCanvas” verticalScrollPolicy=”off” horizontalScrollPolicy=”off” backgroundColor=”#000000″ top=”40″ height=”100%” width=”100%” visible=”false”>
  <mx:Image id=”sceneImage” autoLoad=”false” source=”img/car_small_1.jpg” verticalCenter=”0″ horizontalCenter=”0″ />
  <mx:Image id=”loadingIcon” source=”@Embed(’loading.gif’)” horizontalCenter=”0″ verticalCenter=”0″ visible=”{sceneImage.percentLoaded != 100}” />
  <mx:Label text=”Loading…” verticalCenter=”18″ horizontalCenter=”0″ color=”#ffffff” fontSize=”10″ visible=”{sceneImage.percentLoaded != 100}” />
 </mx:Canvas>
</mx:Application>

댓글 남기기

ButtonImage 컴포넌트

말그대로 이미지 버튼 컴포넌트 이다.

더블클릭 방지 기능도 포함됨…

속성중에 DOUBLECLICK_DELAY값을 변경하여 더블클릭 방지 시간을 수정하면 된다.

그리고 마우스오버,아웃시 fade 효과도 추가했음.

– ButtonImage.mxml

<mx:Image buttonMode=”true” useHandCursor=”true” mouseChildren=”false” xmlns:mx=”http://www.adobe.com/2006/mxml” creationComplete=”createContent()”>
 <mx:Metadata>[Event("clickDispatch")]</mx:Metadata>
 <mx:Script>
  <![CDATA[
   import flash.events.Event;
   import mx.effects.Fade;
   
   private var DOUBLECLICK_DELAY:Number = 100;
   private var timer:Number = 0;
   
   private function createContent():void
   {
    this.addEventListener(MouseEvent.MOUSE_OVER,mouseOverEvt);
    this.addEventListener(MouseEvent.MOUSE_OUT,mouseOutEvt);
    this.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownEvt);
   }
   private function mouseOverEvt(event:Event):void
   {
    var fadeIn:Fade = new Fade(this);
       fadeIn.alphaFrom = 1.0;
       fadeIn.alphaTo = 0.5;
       fadeIn.duration = 300;
       fadeIn.play();
   }
   private function mouseOutEvt(event:Event):void
   {
    var fadeOut:Fade = new Fade(this);
       fadeOut.alphaFrom = 0.5;
       fadeOut.alphaTo = 1.0;
       fadeOut.duration = 300;
       fadeOut.play();
   }
   private function mouseDownEvt(event:Event):void
   {
    if(!this.visible) return;
    var currentTime:Number = getTimer();
    if (currentTime - timer > DOUBLECLICK_DELAY) {
     timer = getTimer();
     dispatchEvent(new Event("clickDispatch"));
    }
   }
  ]]>
 </mx:Script>
</mx:Image>

댓글 남기기

Flex Ant tasks 와 Flex compiler shell

간만에 좋은 소식이 올라왔네요…

전에 Flex 자동빌드를 Ant 빌드로 변경하는데 꽤 고생을 했던 기억이 납니다.

Flex Ant tasks를 사용하면 빌드파일 만들때 task를 정의하여 mxmlc,comp와 같은 커맨드 명령어를 쉽게 만들 수 있겠네요.

일단 파라미터를 태그형태로 정의 할 수 있으니까. 가독성도 좋고 보기도 좋고 하지만 성능은 똑같다는거….

– 샘플 –

~~~~

<property name=”FLEX_HOME” value=”C:/flex_sdk_2″ />

<taskdef resource=”flexTasks.tasks” classpath=”./util/flexTasks.jar” /> 

 <target name=”compile”>
  <echo>Building ${swfFile}</echo>
        <mxmlc
            file=”${main_appliation}”
            output=”${swfFile}”
            actionscript-file-encoding=”UTF-8″
            keep-generated-actionscript=”true”
            incremental=”true”
            services=”${flex2_project}/WEB-INF/flex/services-config.xml”
        >
            <load-config filename=”${flex2_project}/WEB-INF/flex/flex-config.xml”/>
            <runtime-shared-libraries url=”20_Cairngorm2.swf”/>
            <runtime-shared-libraries url=”20_DashboardLib.swf”/>
            <compiler.external-library-path dir=”${lib_project}” append=”true”>
                <include name=”lib/20_Cairngorm2.swc” />
                <include name=”bin/20_DashboardLib.swc” />
            </compiler.external-library-path>
            <default-size width=”500″ height=”600″ />
        </mxmlc>
    </target>

~~~

Flex compiler shell은 mxmlc와 비슷한 놈인데 컴파일했던 정보들을 캐쉬형태로 저장하여 다음 번 컴파일때 캐쉬를 사용하여 컴파일 성능을 향상시켰다고 합니다. 단 FlexBuilder를 사용하면 필요가 없다고 합니다. 기본적으로 빌더에 포함되 있다네요.

댓글 남기기

JBoss Message Service

  • JBoss Topic 생성

<mbean code=”org.jboss.mq.server.jmx.Topic”  name=”jboss.mq.destination:service=Topic,name=FlexAlertTopic“>
        <depends optional-attribute-name=”DestinationManager”>jboss.mq:service=DestinationManager</depends>
        <depends optional-attribute-name=”SecurityManager”>jboss.mq:service=SecurityManager</depends>
        <attribute name=”SecurityConf”>
            <security>
                <role name=”guest” read=”true” write=”true”/>
                <role name=”publisher” read=”true” write=”true” create=”false”/>
                <role name=”durpublisher” read=”true” write=”true” create=”true”/>
            </security>
        </attribute>
    </mbean>

  • messaging-config.xml

<?xml version=”1.0″ encoding=”UTF-8″?>
<service id=”message-service”
    class=”flex.messaging.services.MessageService”
   messageTypes=”flex.messaging.messages.AsyncMessage”>
    <adapters>
        <adapter-definition id=”actionscript” class=”flex.messaging.services.messaging.adapters.ActionScriptAdapter” default=”true” />
        <adapter-definition id=”jms” class=”flex.messaging.services.messaging.adapters.JMSAdapter”/>
    </adapters>
    <destination id=”FlexAlertTopicDS“>
        <properties>
            <server>
                <durable>false</durable>
                <durable-store-manager>flex.messaging.durability.FileStoreManager</durable-store-manager>
            </server>
            <jms>
                <destination-type>Topic</destination-type>
                <message-type>javax.jms.ObjectMessage</message-type>
                <connection-factory>ConnectionFactory</connection-factory>
                <destination-jndi-name>topic/FlexAlertTopic</destination-jndi-name>
                <destination-name>FlexAlertTopic</destination-name>
                <delivery-mode>NON_PERSISTENT</delivery-mode>
                <message-priority>DEFAULT_PRIORITY</message-priority>
                <acknowledge-mode>AUTO_ACKNOWLEDGE</acknowledge-mode>
                <transacted-sessions>true</transacted-sessions>
            </jms>
        </properties>
        <channels>
            <channel ref=”my-rtmp”/>
            <channel ref=”my-amf”/>
            <channel ref=”my-polling-amf”/>
        </channels>
        <adapter ref=”jms”/>
    </destination>
</service>

  • as3.0

private var alertConsumer : Consumer;

alertConsumer = new Consumer();

alertConsumer.destination = “FlexAlertTopicDS“;

~~~

댓글 남기기

이벤트 생성 순서

컴포넌트의 이벤트 생성 주기

어플리케이션 구조가 아래와 같다면 preinitialize,initialize,creationComplete 이벤트 순서를 알아보자…

<mx:Application>    ———- 1

    <comp:SubChild1> ——– 2

        <comp:SubChild1-1/> ——– 3

    </comp:SubChild1>

    <comp:SubChild2>  ——— 4

    </comp:SubChild2>

</mx:Application>

이벤트 생성 순서 : preinitialize->initialize->creationComplete

어플리케이션 자식 이벤트 생성 순서

    – preinitialize : 1 -> 2 -> 4 -> 3

    - initialize : 3 -> 4 -> 2 -> 1

    – creationComplete : 3 -> 4 -> 2 -> 1

댓글 남기기