PHP에서 Flex로 데이터를 보내는 방법은 많은데, 그 반대는 찾아봐도 제대로된 정보가 없어서 구현해 보았습니다.

유용하게 쓰세요 :)

<fx:Declarations>
  <!-- Place non-visual elements (e.g., services, value objects) here -->

//fx:Declarations 안에 아래 내용을 추가해주세요
  <mx:HTTPService id="saveData" url="http://localhost/saveFromFlex.php"
      method='POST'
      result='OnHTTPResult(event);'
      fault='OnHTTPFault(event);'
      resultFormat='text'>
   <mx:request xmlns="">
   </mx:request>
  </mx:HTTPService>

 </fx:Declarations>

// 아래 함수들을 Script 안에 넣어주세요.

   public function OnHTTPResult(event:ResultEvent):void
   {
    txtResult.htmlText= event.result.toString(); 
   }


   public function OnHTTPFault(event:FaultEvent):void
   {
    txtResult.text= event.fault.toString(); 
   }


   public function saveToDB(str:String):void
   {
    var params = new Array();
    params["json"]=str; // params를 여러개 넣으셔도 됩니다. json이라는 변수를 PHP에서 $_POST['json']으로 받게 됩니다.
    saveData.send(params);
   }

// 아래 함수는 ArrayCollection을 PHP로 보낼 방법을 연구하다가, JSON형식의 String으로 보내면 좋을 것 같아서 만들어보았습니다.

   public static function arrayCollectionToString( myArrayCollection:ArrayCollection ):String
   {            
    var array1:Array;
    var array2:Array;
    var tmpStr:String;
    array1 = new Array();
    for each( var obj:Object in myArrayCollection )             
    {                 
     array2 = new Array();
     for ( var obj2:Object in obj )             
     {
      if(obj[obj2] != null) tmpStr=obj[obj2];
      else tmpStr="";
      array2.push('"'+obj2+'":"'+tmpStr+ '"');
     }              
     array1.push("{"+array2.join(", ")+"}");
    }
    return "["+array1.join(", ")+"]";
   }

 

아래 코드를 임의의 위치에서 실행해주세요.

strSendToServer=arrayCollectionToString(arrayCollectionTojiBasicInfo);

saveToDB(strSendToServer);

 

PHP측 코드입니다.(JSON 형식이기 때문에 언어에 구애받지 말고 쓰시면 되겠습니다.)

$data=json_decode(stripslashes($_POST['json']),true);

이렇게 하면 data라는 변수에서 구조 그대로 배열로 받게 됩니다!

 

자동차보험,의료,보험,대출,미용,금융,법률,부동산,중고자동차,무료듣기,건강,돈,국민임대아파트

Posted by CodeChef

댓글을 달아 주세요

arrayCollection을 HTTPService를 이용해 PHP로 보낼 때 유용하게 쓰실 수 있습니다.

해당 라이브러리를 찾다가, 간단하게 만들 수 있을 것 같아서 만들어 보았습니다.

   public static function arrayCollectionToString( myArrayCollection:ArrayCollection ):String
   {            
    var array1:Array;
    var array2:Array;
    var tmpStr:String;
    array1 = new Array();
    for each( var obj:Object in myArrayCollection )             
    {                 
     array2 = new Array();
     for ( var obj2:Object in obj )             
     {
      if(obj[obj2] != null) tmpStr=obj[obj2];
      else tmpStr="";
      array2.push('"'+obj2+'":"'+tmpStr+ '"');
     }              
     array1.push("{"+array2.join(", ")+"}");
    }
    return "["+array1.join(", ")+"]";
   } 

 

자동차보험,의료,보험,대출,미용,금융,법률,부동산,중고자동차,무료듣기,건강,돈,국민임대아파트

Posted by CodeChef
TAG flex

댓글을 달아 주세요


짐벌락이란 무엇인가?

   짐벌락은 같은방향으로 오브젝트의 두 회전 축이 겹치는 현상을 말한다. 간단히 설명하면 오브젝트가 자신이 회전하려고 하는 방향으로 오브젝트가 회전하지 않는 것이다.

 

이러한 현상이 일어나는가?
  짐벌락은 오일러 앵글이라고 알려진 회전 행렬로 오브젝트를 애니메이트 하려고 할 때 발생한다.

오일러 앵글이 설정한 순서에 각 축을 독립적으로 평가하기 때문이다.
3DS Max는 회전순서가 X,Y,Z로 되어있다.(이 순서는 변경이 가능)

X,Y,Z로 회전순서가 돼어있다는 것은 먼저 X축으로 오브젝트를 회전시키고 그 다음 Y축으로 회전하고 마지막으로 Z축으로 회전한다는 의미이다. 이때 Y축을 90도로 회전할 때 짐벌락이 발생한다.
왜냐하면 X 성분이 이미 평가가 됐기 때문에, 다른 두축으로 이동되지 않는다.
이렇게 되면 X와 Z축이 서로 같은 축을 향해 가리키게 된다.


 

예제 프로그램은 오일러 각으로 회전을 표현했을 경우이다.

yaw(y축 회전각)을 90로 고정시키고 pitch(x축), roll(z축) 회전을 실시했을 경우 pitch 와 roll 회전이 같은 방향으로 회전하게 된다.

(이것이 gimbal lock)

오일러 각으로 회전을 표현할경우 전체 회전행렬 = z축 회전행렬 * y축 회전행렬 * x축 회전행렬 과 비슷한 순서의 회전행렬(회전행렬의 순서는 사용자 임의로 바꿀수 있으며 이때 gimbal lock 되는 축도 그에 따라 바뀜)을 사용하게 되는데 이때 yaw각을 90도로 회전시켰을 경우(회전행렬의 순서상) x축이 -z축이 되어 x축회전을 하나마 나한상태가 된다.

자동차보험,의료,보험,대출,미용,금융,법률,부동산,중고자동차,무료듣기,건강,돈,국민임대아파트

Posted by CodeChef

댓글을 달아 주세요

  1. kims6669 2009.10.05 00:57  댓글주소  수정/삭제  댓글쓰기

    영국어학연수 준비중인 학생입니다.
    저도 맨체스터대학에 관심이 있어서 그런데요.
    조언 좀 구할수 있을까요?

문서화되지 않은 Alternativa3D engine의 내부 메소드와 속성에 대해서 알아본다.

BSP-tree를 생성하는 과정 동안에, 화면 안에 있는 객체의 표면은 tree 안에 다각형 원형으로 놓인다.
각각의 이 원형들은 전체 표면 또는 표면의 부분을 표현한다.
표현과정동안에 모든 원형은 카메라로 연결된 뷰 안에 있는 컨테이너로 그려진다.
컨테이너들은  flash.display.Sprite를 상속받은 lternativa.engine3d.display.Skin 클래스의 인스턴스들이다.
원형은 material로 그려진다 - 그것은  alternativa.engine3d.materials.SurfaceMaterial 클래스를 상속받은 것이다.

SurfaceMaterial클래스는 alternativa3d namespace의 메소드를 포함하고, 그것은 렌더링 시스템으로 사용된다.

아래 그림을 클릭하여 데모를 돌려볼 수 있다

....  이하 번역 생략



소스 설명은 주석 참조

기존의 소스에 이미지를 6개로 추가하고  COLOR TRANSFORM을 각각 다르게 조절하였습니다

6개의 면에 모두 사진을 입힌 예제를 첨부했어요

실행해 보시려면 이미지를 클릭하세요
(사진은 제 여자친구 사진입니다 ^^*)

- 장진영 -

자동차보험,의료,보험,대출,미용,금융,법률,부동산,중고자동차,무료듣기,건강,돈,국민임대아파트

Posted by CodeChef

댓글을 달아 주세요


http://alternativaplatform.com/en/alternativa3d/

아도비 플래시를 기반으로 한 브라우저용 3D 엔진
플래시 플레이어는 대부분의 브라우저에 설치가 되어 있으므로 플랫폼과 브라우저에 관계없이 동작이 되는 장점이 크다.

AlternativaPlatform에 링크를 걸어주는 조건으로 비상업용으로는 무료로 사용할 수 있다.
상업용으로 사용하기 위해서는 라이센스를 구입해야 한다.


개발 환경 설정하기

Alternativa3D 다운 받기

http://alternativaplatform.com/en/alternativa3d/ 에서 로그인을 한 후 Download Alternativa3D 5.5.0 링크를 클릭
압출을 풀면 플래시 플레이어 9와 10용 SWC 라이브러리가 있음
이 폴더들을 적절한 곳에 옮겨 놓는다 (예:My Documents\Flex Builder 2)
Documentation 페이지를 찾아서 필요한 내용들을 참고한다. - http://docs.alternativaplatform.com/display/TDEN/Home

데모 프로그램 실행해보기

Flex Builder 를 실행한다
File -> New -> ActionScript Project를 선택
이름을 'HelloAlternativa3D' 로 입력하고 'Finish' 클릭
웹 브라우저 : Documentation - Tutorials - Hello, Alternativa3D 를 클릭한다.
HelloAlternativa3D.as 소스를 Flex Builder의 HelloAlternativa3D.as 파일 에디터에 붙여 넣는다
Navigator 창의 HelloAlternativa3D 프로젝트에 마우스 오른쪽 버튼 클릭
Properties -> ActionScript Build Path -> Library Path -> Add SWC Folder
alternativa3d_fp9 (혹은 alternativa3d_fp10) 경로를 선택
Navigator 창의 HelloAlternativa3D.as 파일에 마우스 오른쪽 버튼 클릭
Run Application  선택
브라우저가 실행되고 프로그램이 실행된다.
키사용
방향키 : 회전
WASD : 전후좌우 이동
Space and Shift : 위 아래 이동 (소스를 실행시키면, shift는 동작 안함)
Mousewheel controls :  camera field of view
Tutorial - GettingStarted 실행해보기 (코드설명)

http://www.thetechlabs.com/3d/alternativa-3d-getting-started/
소스코드 다운로드 : https://sourceforge.net/project/showfiles.php?group_id=254154&package_id=311049&release_id=662754
Flex Builder를 이용하여 실행하기


Command Line을 이용하여 컴파일 하기

소스를 다운 받고 적당한 폴더에 푼다.
src 폴더 안에 다음의 파일을 추가한다. (경로는 적절하게 수정해야 한다)

Alternativa1-config.xml

<flex-config>
    <compiler>
        <library-path append="true">
            <path-element>D:/Projects/Team2009/alternativa3d_5.5.0/alternativa3d_fp9</path-element>
        </library-path>
    </compiler>
</flex-config>

명령행에서 다음 명령을 수행한다.

mxmlc Alternativa1.mxml

Alternativa1.swf 파일이 생성된 것을 확인하고 실행한다(윈도우 탐색기에서 더블 클릭).

자동차보험,의료,보험,대출,미용,금융,법률,부동산,중고자동차,무료듣기,건강,돈,국민임대아파트

Posted by CodeChef

댓글을 달아 주세요

  1. 은영 2009.07.06 00:06  댓글주소  수정/삭제  댓글쓰기

    3d flex로 네이버에서 검색했더니 오빠 블로그 나오네 ㅎㅎㅎ