2012-03-20 23 views
2

我正在開發一個使用AS3通過Flash CS5.5的非本地iOS應用程序。該應用程序具有使用兩臺相機拍攝照片的功能(顯然是在任何時候,而不是在同一時間),我的問題在於我不知道如何處理我在我看到的圖像旋轉設備。iOS相機的圖像旋轉得到了AS3

我正在尋找解決方案,但沒有任何解決我的問題。

這裏是我的代碼:

所有感謝您的時間的
package 
{ 
    import flash.display.DisplayObject; 
    import flash.display.Sprite; 
    import flash.display.StageAlign; 
    import flash.display.StageScaleMode; 
    import flash.events.ActivityEvent; 
    import flash.events.MouseEvent; 
    import flash.media.Camera; 
    import flash.media.Video; 

    public class Main extends Sprite 
    { 

     private var cam:Camera; 
     private var vid:Video; 


     public function Main() 
     { 
      super(); 

      // support autoOrients 
      stage.align = StageAlign.TOP_LEFT; 
      stage.scaleMode = StageScaleMode.NO_SCALE; 
      cam = Camera.getCamera(); 

      if (!cam) 
      { 
       trace("No camera is installed."); 
      } 
      else 
      { 
       connectCamera(); 
      } 
     } 

     private function connectCamera():void 
     { 
      cam.setMode(320, 480, 25); 
      cam.setQuality(0,100); 
      vid    = new Video(); 
      vid.width  = cam.width; 
      vid.height  = cam.height; 
      vid.attachCamera(cam); 
      addChild(vid);  
     } 
    } 
} 

第一。我已經更新了autoOrientation設置,這是我管理的代碼:

package 
     { 
      import flash.display.DisplayObject; 
      import flash.display.Sprite; 
      import flash.display.StageAlign; 
      import flash.display.StageScaleMode; 
      import flash.events.ActivityEvent; 
      import flash.events.MouseEvent; 
      import flash.media.Camera; 
      import flash.media.Video; 
      import flash.events.StageOrientationEvent; 
      import flash.display.StageOrientation; 


      public class Main2 extends Sprite 
      { 

       private var cam:Camera; 
       private var vid:Video; 
       public var _currentOrientation:String; 




       public function Main2() 
       { 
        cam = Camera.getCamera(); 

        if (! cam) 
        { 
         trace("No camera is installed."); 
        } 
        else 
        { 
         connectCamera(); 
        } 
        stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING, orientationChangeListener); 
       } 

       private function connectCamera():void 
       { 
        cam.setMode(480, 320, 25); 
        cam.setQuality(0,100); 
        vid= new Video(); 
        vid.width = cam.width; 
        vid.height = cam.height; 
        vid.attachCamera(cam); 
        addChild(vid); 

       } 

       private function orientationChangeListener(e:StageOrientationEvent):void 
       { 
        switch (e.afterOrientation) 
        { 
         case StageOrientation.DEFAULT : 
          _currentOrientation = "DEFAULT"; 
          //set rotation value here 
          stage.rotation = 0; 
          break; 

         case StageOrientation.ROTATED_RIGHT : 
          _currentOrientation = "ROTATED_RIGHT"; 
          //set rotation value here 
          stage.rotation = -90; 
          break; 

         case StageOrientation.ROTATED_LEFT : 
          _currentOrientation = "ROTATED_LEFT"; 
          //set rotation value here 
          stage.rotation = 90; 
          break; 

         case StageOrientation.UPSIDE_DOWN : 
          _currentOrientation = "UPSIDE_DOWN"; 
          //set rotation value here 
          stage.rotation = 180; 
          break; 
        } 
       } 


      } 
} 

儘管開關case語句,當你推出的「應用程序」看到相機90度的旋轉的圖像,並且當您將設備(iPhone 4)放在橫向(右側或左側)時,圖像效果很好。而當你旋轉回來時,圖像變得很糟糕。

預先感謝您。 PS:對不起,我的英文不好。 PS2:已編輯。

回答

0

您需要偵聽來自設備的方向更改並相應地旋轉捕捉的圖像。

import flash.events.StageOrientationEvent; 
import flash.display.StageOrientation; 

public var _currentOrientation:String; 

stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING, orientationChangeListener); 

private function orientationChangeListener (e:StageOrientationEvent):void { 

switch (e.afterOrientation) { 
case StageOrientation.DEFAULT : 
_currentOrientation = "DEFAULT"; 
//set rotation value here 
break; 

case StageOrientation.ROTATED_RIGHT : 
_currentOrientation = "ROTATED_RIGHT"; 
//set rotation value here 
break; 

case StageOrientation.ROTATED_LEFT : 
_currentOrientation = "ROTATED_LEFT"; 
//set rotation value here 
break; 

case StageOrientation.UPSIDE_DOWN : 
_currentOrientation = "UPSIDE_DOWN"; 
//set rotation value here 
break; 
} 
} 

注意,這個監聽器的方向變化後,僅啓動發生,所以我設置一個全局變量,_currentOrientation,然後測試它的價值時,我捕捉圖像。

想到的另一件事是,還有一個UNKNOWN方向狀態。

+0

嗨,謝謝你的快速響應,但是我錯過了一些東西:你的代碼響應舞臺方向的變化,不是嗎? 也許我沒有解釋清楚自己(對不起!):當我訪問其中一個iPhone的相機時,我看到圖像(相機圖像,未捕獲圖像)旋轉90度。我的問題是我無法旋轉舞臺(不知道爲什麼),無法旋轉相機。 再次感謝, DGM.- – 2012-03-20 10:21:38

+0

不知道爲什麼發生這種情況。當你訪問攝像頭時,它應該自動定位而不需要ActionScript的交互。您是否在發佈設置中啓用了autoOrientation? – crooksy88 2012-03-20 10:37:34

+0

謝謝Croosky,我編輯了我以前的問題因爲我是一個紐約海報^^。 – 2012-03-20 15:34:55