본 자료는 홍익대학교 P.C.R.C. 정기 모임 세미나 발표 자료 입니다.

출처만 밝히고 마음껏 사용하시면 됩니다. 

오류가 있으면 화내지 말고 댓글 달아주시면 수정할게요.

20080317_RIA구축을 위한 Flex.pdf


by 무위자연 2016. 8. 23. 12:24

Flex에서 Event dispatch시에 해당 이슈가 발생할 경우에 대한 대처.


이는 dispatch에서 발생하는 문제가 아니라 해당 이벤트 핸들러에서 발생하게 된다.


A 이벤트를 Raise를 하고 B 이벤트 핸들러로 처리하는 경우이다.


예.

//정상 처리, Use right

main.addEventListener(CustomEventA.DataSend, csEventHandler, false, 0, true);

//비정상 이벤트 등록, Use wrong

main.addEventListener(CustomEventB.DataSend, csEventHandler, false, 0, true);


private function csEventHandler(e:CustomEventA):void

{

//handle events

}


CustomEventA가 Raise되었을때는 정상 동작한다.

CustomEventB가 Raise가 되면 dispatch쪽에 애러가 나지만 실제 csEventHandler가 호출되는 순간에 제목과 같은 애러가 뜬다. 애러나는 라인이 dispatch쪽이라 찾기가 어려우므로 글로 남긴다.

"TypeError: Error #1034: Type Coercion failed: cannot convert CustomEventB@64e6ca1 to CustomEventB 이런식으로 애러가 뜨게 될 것이다.

CustomEventB 처리를 위한 새로운 이벤트 핸들러를 등록해주면 해결이 가능하다.



by 무위자연 2015. 1. 9. 13:54
• 이벤트에 포함된 Data가 길어져도 delay가 생기지 않습니다.

• 이벤트를 delay  없이 연속으로  Raise하더라도 Flex에서 처리 가능합니다.

• Dll에서 swc로 Event가 전달되는 시점은 하나의 함수가 끝나는 시점입니다.

• 데이터 전달 테스트 결과.

     char 배열 2893 길이 만큼이 포함된 event를 1000번 Raise 할 경우에 Flex에서 1초 이내에 모두 받아서 처리가 가능합니다.

[테스트 환경]
- OS : Windows 7 64 bits
- Flash Builder 4.6
- VisualStudio 2010 - C++


by 무위자연 2015. 1. 6. 14:15

Flex / AIR 플랫폼에서 native 구현부를 ANE라고 한다.


ANE를 만들기 위해서는 다음과 같은 동작이 필요하다


하기 예는 Windows를 환경에서의 과정이다.


1. native 코드로 (여기서는 C++) 기능을 구현한다.

구현시엔 하기와 같은 파일을 첨부하며 Flex에서 호출할수 있도록 함수 리스트를 추가해준다.


#include "FlashRuntimeExtensions.h"  


기능 구현

FREObject functions(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])   

{

//C++ 코드

}

함수 리스트 추가

void ContextInitializer(void* extData, const uint8_t* ctxType, FREContext ctx, uint32_t* numFunctions, const FRENamedFunction** functions) { 

 *numFunctions = 12; //사용할 함수 개수

 FRENamedFunction* func = FRENamedFunction*)malloc(sizeof(FRENamedFunction)*(*numFunctions)); 

  func[0].name = (const uint8_t*)함수이름"; //Flex에서 call할때 쓸 이름

 func[0].functionData = NULL; 

 func[0].function = 실제 구현한 함수의 포인터; 

*functions = func;  //설정한 함수리스트를 함수의 포이턴에 추가해준다.

2. native 구현한 함수를 call하는 Flex 프로젝트를 생성하여 빌드한다.

빌드해서 만들어진 swc의 확장자를 바꿔서 압축을 풀면 catalog.xml/library .swf 파일을 확인할수 있다.


3. 1번에서 만든 dll / 2번에서 빌드한 swc, xml, swf 파일을 하나의 폴더에 복사한다.


4. C:\Users\User\Documents\flex_sdk_4.6\flex_sdk_4.6\bin\adt -package -target ane 생성될 ane파일명.ane extension.xml -swc 2번에서 생성한.swc -platform Windows-x86 1번에서 생선한.dll library.swf

5. 생성된 ane 파일을 Flex/AIR에서 프로젝트 properties - flex build packaging - native extensions에서 추가하면 해당 ane를 사용할수 있다.





by 무위자연 2014. 12. 11. 11:36

이 글은 무위자연님의 2010년 9월 14일의 미투데이 내용입니다.

by 무위자연 2010. 9. 15. 04:34

이 글은 무위자연님의 2009년 10월 22일에서 2009년 10월 23일까지의 미투데이 내용입니다.

by 무위자연 2009. 10. 23. 04:31

이 글은 무위자연님의 2009년 1월 14일의 미투데이 내용입니다.

by 무위자연 2009. 1. 15. 04:32

Effect를 동시에 실행시킬때 Parallel로 묶는다. 이때 Parellel에 묶는 Target을 지정할수 있는데 -복수일때는 targets- 묶이는 effect에 지정한 target은 parellel에서 target을 지정하지 않더라도 빠지지 않는다. 하지만 지정되지 않은 target는 parellel에서 지정하지 않으면 그 Effect효과에서 빠지게된다.

ex.

<mx:Parallel targets="{[loginPanel, registerLink, loginButton, confirm]}" >
               
                <mx:Resize duration="500" easingFunction="Bounce.easeOut"/>
                <mx:Sequence target="{confirm}">
                    <mx:Blur duration="200" blurYFrom="1.0" blurYTo="20.0"/>
                    <mx:Blur duration="200" blurYFrom="20.0" blurYTo="1.0">                       
                    </mx:Blur>
                </mx:Sequence>
               
 </mx:Parallel>

여 기서 Parellel의 target중에 confirm을 빼더라도 confirm에 걸려있는 blur Effect는 여전히 잘! 동작한다. 하지만 loginButton을 빼주게 된다면 resize할때 easingFunction이 먹지 않게 된다.

이것을 잘 이용하면 Effect가 들어가지 않아도 되는 target을 선별적으로 골라내서 Effect효율을 높일수 있다

 

이 글은 스프링노트에서 작성되었습니다.

by 무위자연 2008. 3. 14. 11:47

이 글은 bmwe3님의 2008년 3월 5일의 미투데이 내용입니다.

by 무위자연 2008. 3. 6. 04:35

이 글은 bmwe3님의 2008년 1월 10일의 미투데이 내용입니다.

by 무위자연 2008. 1. 11. 04:34
| 1 |