actionscript-3 landscape autorotate

actionscript 3 - AS3: ¿Solo iOS forza el modo horizontal?



actionscript-3 landscape (3)

Encontré la respuesta a esto en los foros de Adobe hace unos días.

Establezca la relación de aspecto en Auto.

Establezca la orientación automática en permitido.

Luego usa este código en tu clip principal:

var startOrientation:String = stage.orientation; if (startOrientation == StageOrientation.DEFAULT || startOrientation == StageOrientation.UPSIDE_DOWN) { stage.setOrientation(StageOrientation.ROTATED_RIGHT); } else { stage.setOrientation(startOrientation); } stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING, orientationChangeListener); function orientationChangeListener(e:StageOrientationEvent) { if (e.afterOrientation == StageOrientation.DEFAULT || e.afterOrientation == StageOrientation.UPSIDE_DOWN) { e.preventDefault(); } }

Funcionó bien para mí ..

He creado un juego para iOS que está diseñado para el modo horizontal y funciona muy bien, excepto que si enciendes el dispositivo en modo vertical, se detiene ahí con la interfaz solo rellenando la mitad central de la pantalla. ¿Cómo puedo forzar la aplicación para que solo permita los dos modos de paisaje y no detenerme en la posición de retrato?

Probé todas las configuraciones de publicación. La relación de aspecto está configurada para Horizontal y la orientación automática está activada, si desactivo la orientación AUto que la aplicación no gira al otro modo horizontal y escucho que es un rechazo automático por parte de Apple.

Esta aplicación está lista para usar, excepto por este pequeño defecto. Gracias por cualquier ayuda que pueda ofrecer.

Rico


Otra forma, aunque similar, de hacer esto es configurar el aspectRatio en el descriptor de la aplicación y autoOrients en false. Luego habilite autoOrients una vez que la aplicación se haya cargado y escuche el evento orientationChanging. En Flash Builder 4.6, esto se puede hacer de la siguiente manera:

Descriptor:

<aspectRatio>landscape</aspectRatio> <autoOrients>false</autoOrients>

Código de aplicación:

private function applicationCompleteHandler():void { stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING, stageOrientationChangingHandler); stage.autoOrients = true; } private function stageOrientationChangingHandler(event:StageOrientationEvent):void { if (event.afterOrientation == StageOrientation.DEFAULT || event.afterOrientation == StageOrientation.UPSIDE_DOWN) { event.preventDefault(); } }

Parece que también debe asegurarse de que la aplicación tenga dimensiones explícitas; de lo contrario, las vistas pueden cambiar de tamaño incluso aunque la etapa no se reoriente.

Por favor mira: http://bugs.adobe.com/jira/browse/SDK-32082


La respuesta anterior no funcionó para mí, porque en iOS el preventDefault ya no funciona.

Para cualquiera que todavía no esté teniendo buena suerte ... Esto es lo que hice.

Quise:

Ipad y todos los dispositivos con tableta Android para poder hacer un retrato o paisaje y rotar automáticamente en cualquier dirección

Iphones, Ipods y todos los dispositivos de pantalla pequeña que se forzarán Horizontal (o tal vez en su caso, si desea un retrato forzado).

Yo si:

EN mi -app.xml:

<aspectRatio>any</aspectRatio> <autoOrients>true</autoOrients>

En Actionscript:

var screenDPI:Number = Capabilities.screenDPI; var resolutionX:Number = Capabilities.screenResolutionX; var resolutionY:Number = Capabilities.screenResolutionY; var numDiagonalDistance:Number = Math.round(Math.sqrt((resolutionX*resolutionX)+(resolutionY*resolutionY))); var numDiagonalInches:Number = numDiagonalDistance/screenDPI; if(numDiagonalInches<6){ MainData.SMALL_DEVICE=true; }else{ MainData.SMALL_DEVICE=false; } if(MainData.SMALL_DEVICE){ this.stage.setAspectRatio(StageAspectRatio.LANDSCAPE); }

Aunque supongo que podría poner fácilmente StageAspectRatio.PORTRAIT o incluso usar la lógica inversa solo para ipads lógicos o algo así. ¡Buena suerte!

EDITADO: en realidad estoy editando esto porque incluso este método todavía tiene problemas. Obtendrá un paisaje, pero no siempre es el paisaje orientado a la forma en que sostiene el dispositivo ...

EDITADO OTRA VEZ (2-27-2014): Resulta que si incluí -swf-versión 23 (ahora con AIR 4.0), este problema finalmente se resuelve.