我正在使用AS3而不是Flash CS5.5开发非本机iOS应用程序。该应用程序具有与两个摄像头拍照的功能(显然一个在任何时间,而不是在同一时间),我的问题在于我不知道如何处理我在我看到的图像的旋转设备
我正在寻找解决方案,但没有任何解决方案。
这是我的代码:
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;
}
}
}
}
尽管有开关案例句子,当您启动“应用程序”时,您会看到相机的图像旋转90度,当您将设备(iPhone 4)置于横向(右侧或左侧)时,图像就可以正常显示。当您向后旋转时,图像会像启动图像一样变坏。
提前谢谢。
PS:抱歉我的英文。 PS2:已编辑。
答案 0 :(得分: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定向状态。