본문 바로가기
Computer/Flash

wiimote(Nintendo) + flash(Adobe)

by DogBull 2008. 8. 3.
'flash에서 wiimote를 사용하기 위한 방법' 에 대해 알아본다.

( flash에 wiimote를 적용해야만 하는 특별한 이유가 있음은 아니고,
  비교적 간단한 어플을 빠른 속도로 제작할 수 있기 때문. )

여타 더 좋은 방법이 있을 지도 모르나,
우선 생각난 것은 소켓통신.

A1. VS2005 C++을 이용한 서버.
    B1. wiimote데이터를 읽음.
    B2. 접속한 클라이언트에게 wiimote데이터 보냄.

A2. Flash Ver8을 이용한 클라이언트.
    B1. http://jrr.kr/50 와 같이 Flash 소켓 오픈하여 데이터 읽음.

정도로 간단히 생각했으나,
약간의 문제.

A1 C++상의 구조체/클래스 데이터를 flash가 어떻게 파싱하는가?
예를들어

struct WiimoteData{
    float pitch, yaw, roll;
};

WiimoteData wd;

send(소켓, (char*)&wd, sizeof(WiimoteData), 0);


으로 보내면,

flash에서 이를 어떻게 처리하느냐 이다.
flash는 float/double/int/short etc 의 데이터 타입에 큰 의미를 두지 않는다.
Number/String정도로 구분할 뿐이며, 이마저도 명확하게 구분하지 않는 유연함을 갖는다.
따라서 c++에서 보내는 바이너리 타입의 데이터를 flash가 처리 하지 못한다.

결국 서버에서 데이터를 보낼 때, 문자열로 모두 변환하여 전송한다.

//적당한 크기의 문자열 생성. WiimoteData의 데이터를 문자열로
//변환하였을 때, 모든 정보가 담길 정도의 적당한 크기

char toFlashData[128];

//문자열 생성
sprintf( toFlashData, "%f,%f,%f", pitch, yaw, roll);

//문자열 전송
send(소켓, toFlashData, strlen(toFlashData), 0);

식으로...

flash 쪽에서도 ","를 기준으로 String split를 수행해야 하므로 오버헤드 증가 문제.

더 나은 방법 알아보는 중.

내일은 낙향, 일주일 후 돌아옴.

'Computer > Flash' 카테고리의 다른 글

Adobe Flash based Spherical Panorama ( Skybox )  (0) 2010.10.15
Flash Ver8 Livedocs ( Kor and Eng )  (0) 2008.08.11
Flash & Java Socket  (0) 2006.07.13