Apache flex 前后摄像头之间的flex mobile切换
我正在flex mobile上构建一个android视频应用程序,可以在前后摄像头之间切换。我编写了一个功能,可以在两个摄像头之间切换,但只切换一次,当我再次尝试按下按钮再次切换摄像头时,它不工作,并保留前摄像头。以下是我编写的代码: 受保护的功能更改摄像头(事件:MouseEvent):无效{Apache flex 前后摄像头之间的flex mobile切换,apache-flex,mobile,camera,switching,Apache Flex,Mobile,Camera,Switching,我正在flex mobile上构建一个android视频应用程序,可以在前后摄像头之间切换。我编写了一个功能,可以在两个摄像头之间切换,但只切换一次,当我再次尝试按下按钮再次切换摄像头时,它不工作,并保留前摄像头。以下是我编写的代码: 受保护的功能更改摄像头(事件:MouseEvent):无效{ for(var i:int=0;i此代码中的逻辑有一个bug,您在设置摄影机后会不断迭代。因此它将始终设置数组中的最后一个摄影机。 缺少一条break指令,请检查以下更新的代码: protected f
for(var i:int=0;i此代码中的逻辑有一个bug,您在设置摄影机后会不断迭代。因此它将始终设置数组中的最后一个摄影机。
缺少一条break
指令,请检查以下更新的代码:
protected function changeCamera(event:MouseEvent):void{
for(var i:int=0;i<Camera.names.length;i++){
var compareCam:Camera;
compareCam=Camera.getCamera(Camera.names[i]);
if(compareCam.name!=camera.name){
camera=Camera.getCamera(compareCam.name);
video.attachCamera(camera);
//stop the loop after set the camera.
break;
}
}
受保护功能更改摄像头(事件:MouseEvent):无效{
对于(var i:int=0;iYou没有明确指定它;但我认为问题在于他在循环中更改了比较变量camera。我认为break语句确实可以解决它。@Reboog711这是正确的,但只有通过添加break指令才能解决问题,因为camera变量将保留最后一个值。@Reboog711也是如此如果设备具有3个或更多摄像头,则是一个中断逻辑。使用中断不是唯一的解决方案。您可以将当前摄像头名称保存在局部变量中;因此更改摄像头变量不会影响该条件。但是,是的,我同意这可能会在具有1个以上摄像头的设备上导致不希望的结果照相机。谢谢你的帮助,我添加了中断指令,现在可以工作了。
protected function changeCamera(event:MouseEvent):void{
for(var i:int=0;i<Camera.names.length;i++){
var compareCam:Camera;
compareCam=Camera.getCamera(Camera.names[i]);
if(compareCam.name!=camera.name){
camera=Camera.getCamera(compareCam.name);
video.attachCamera(camera);
//stop the loop after set the camera.
break;
}
}