2012-04-23 2 views
0

나는 친구에게서받은 플렉스 코드를 가지고있다. 그러나 나는 나의 요구를 해결하기 위해이 코드를 사용자 정의하고 싶다. 아마 애플릿에서로드 될 때 jsp에서 flex 코드에 너비와 높이를 전달하려고합니다. 이 너비와 높이는 캡처 한 이미지의 너비와 높이를 결정합니다. 이미지가 캡처되면 캡쳐 된 이미지의 자바 바이트 []를 전달하는 서버 URL을 호출하는 "완료"버튼이 클릭됩니다. 아래는 코드입니다플렉스에서 JSP로 앞뒤로 매개 변수를 전달

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application initialize="videoDisplay_creationComplete();" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" x="149" y="131"> 
    <mx:Script> 
     <![CDATA[ 
      import mx.graphics.ImageSnapshot; 
      import mx.controls.Alert; 

     public var cam:Camera = Camera.getCamera(); 
     public var video:Video = new Video(320,240); 
     public var bitmapData:BitmapData = new BitmapData(video.width,video.height); 
     public var snapshot:BitmapData; 

    public function init():void 
    { 
     videoDisplay.visible=false; 
    } 
     public function start():void{ 
      if (cam == null) 
      { 
       Alert.show("No camera is installed","Unable to start capture!!!!"); 
       return; 
      } 
      video.attachCamera(cam); 
      video.x = 20; 
      video.y = 20; 
      addChild(video); 


      var bitmap:Bitmap = new Bitmap(bitmapData); 
      bitmap.x = 360; 
      bitmap.y = 20; 
      addChild(bitmap); 


     } 

     private function captureImage(e:MouseEvent):void 
     { 
      bitmapData.draw(video); 
     } 

     private function videoDisplay_creationComplete():void 
     {    
      btnRestartCapture.enabled=false; 
       if (cam!=null) { 
        videoDisplay.attachCamera(cam); 
       } else { 
        Alert.show("You don't seem to have a camera."); 
       } 
      } 

      public function takeSnapshot():void 
      { 
       snapshot = ImageSnapshot.captureBitmapData(videoDisplay); 
       var bitmap:Bitmap= new Bitmap(snapshot); 
       img.source=bitmap; 
       videoDisplay.visible=false; 

       btnRestartCapture.enabled=true; 
      } 


      public function sendToServer():void{ 
       var loader:URLLoader= new URLLoader(); 
       loader.dataFormat = URLLoaderDataFormat.BINARY; 
       loader.data=snapshot.getPixels(new Rectangle(0,0,img.width,img.height)); 
      } 
      private function callJavaScript():void { 
       ExternalInterface.call("recievePictureFromFlex",snapshot.getPixels(new Rectangle(0,0,img.width,img.height))); 
      } 

      public function restartCap():void{ 
       videoDisplay.visible=true; 
       btnRestartCapture.enabled=false;     
      } 

      public function done():void 
      { 
       Alert.show("Done taking pix", "Done"); 
      } 
     ]]> 
    </mx:Script> 
    <!--<mx:Button label="Capture Image" click="captureImage(null);" id="capture_mc"/>--> 

    <mx:VBox x="405" y="115" backgroundColor="white" > 
     <mx:Canvas width="100%" height="100%"> 
      <mx:Image width="350" id="img" height="300"/> 
      <mx:VideoDisplay id="videoDisplay" 
       creationComplete="videoDisplay_creationComplete();" 
       width="350" 
       height="300" x="0" y="0"/> 
     </mx:Canvas> 
     <mx:HBox> 
      <mx:Button id="btnRestartCapture" label="Clear Picture" click="restartCap();"/> 
      <mx:Button id="snapButton" label="Snap" click="takeSnapshot()" width="113"/> 
      <mx:Button id="doneButton" label="Done" click="done()" width="113"/> 
     </mx:HBox> 
    </mx:VBox> 
</mx:Application> 

답변