descargar - Flash Pro AS 3.0 Air para iOS, el evento de orientación no funciona
ios versiones (2)
Si bloquea su aplicación en aspectRatio portrait, solo recibirá orientaciones que satisfagan ese aspectRatio, por lo que nunca debería tener una orientación horizontal.
Para recibir esos eventos de orientación, deberá cambiar la configuración de su aplicación para configurar el aspectRatio en cualquier:
<aspectRatio>any</aspectRatio>
<autoOrients>true</autoOrients>
Estoy desarrollando una aplicación con una orientación predeterminada establecida en Vertical en Flash Air para configuraciones de iOS; y la orientación automática está desactivada.
Sin embargo, después de agregar cierto movieClip, quiero que detecte si la orientación cambia y luego cambia su posición para una visualización de paisaje o retrato.
El problema es que StageOrientationEvent.ORIENTATION_CHANGE no se enviará si deshabilito la orientación automática. E incluso si está habilitado, el oyente solo se enviará cuando la orientación cambie al revés o por defecto (no en paisajes)
package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.display.Stage;
import flash.events.StageOrientationEvent;
import flash.display.StageOrientation;
import flash.events.Event;
public class NoteBook extends MovieClip
{
public var type: String = new String();
public var deviceHeight: Number = new Number();
private var nbp: NoteBookPic;
public function NoteBook(DeviceHeight: Number = 720)
{
nbp = new NoteBookPic();
this.addChild(nbp);
nbp.deviderPic.visible = false;
this.deviceHeight = DeviceHeight;
this.x = 0;
this.y = deviceHeight / 2;
this.scaleY = (deviceHeight / 720) * .65;
this.scaleX = this.scaleY;
this.addEventListener(MouseEvent.CLICK, clicked);
this.addEventListener(Event.ADDED_TO_STAGE, addedToStage);
}
public function exit()
{
this.removeEventListener(MouseEvent.CLICK, clicked);
this.stage.removeEventListener(StageOrientationEvent.ORIENTATION_CHANGE, orient);
this.parent.removeChild(this);
}
private function clicked(e: MouseEvent)
{
}
private function addedToStage(e: Event)
{
this.removeEventListener(Event.ADDED_TO_STAGE, addedToStage);
this.stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, orient);
}
private function orient(e: StageOrientationEvent)
{
trace(e.beforeOrientation, e.afterOrientation)
}
}
}
ACTUALIZAR:
Acabo de leer en ActionScript® 3.0 Reference para Adobe® Flash® Platform que StageOrientationEvents solo se envía para la rotación del dispositivo cuando autoOrientation es verdadero; pero como he mencionado anteriormente, incluso si está habilitado, el oyente solo se enviará cuando la orientación cambie al revés o por defecto (no en paisajes). Lo cual en mi caso es un problema ya que mi aplicación debe ser una aplicación de retrato, excepto por ese mismo MovieClip cuando estoy en mi etapa. Y cuando está en el escenario, quiero que reaccione ante cualquier cambio de orientación, dos retratos y dos paisajes.
Está utilizando StageOrientationEvent.ORIENTATION_CHANGE, que es correcto. No revisé tu código porque no veo las claves. A continuación se muestra un código de clave de ejemplo.
Un aspecto original es que Capabilities.screenResolutionX y Capabilities.screenResolutionY le proporcionará las dimensiones de la pantalla, pero no cambian con la rotación del dispositivo. Por lo tanto, debe hacer un seguimiento de la orientación de la pantalla y configurar el ancho y la altura usted mismo.
var bStagePortrait: Boolean;
stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, orientationChanged);
if (stage.orientation == StageOrientation.DEFAULT || stage.orientation == StageOrientation.UPSIDE_DOWN) {
bStagePortrait = true;
} else if (stage.orientation == StageOrientation.ROTATED_LEFT || stage.orientation == StageOrientation.ROTATED_RIGHT) {
bStagePortrait = false;
}
// set width and height based on current rotation (Capabilities.screenResolutionX and Y do not change with device rotation)
function fSetScreenDimensions(): void {
if (bStagePortrait) {
iWidth = Capabilities.screenResolutionX;
iHeight = Capabilities.screenResolutionY;
} else {
iWidth = Capabilities.screenResolutionY;
iHeight = Capabilities.screenResolutionX;
}
}
private function orientationChanged(e: StageOrientationEvent): void {
switch (e.afterOrientation) {
case StageOrientation.DEFAULT:
bStagePortrait = true;
break;
case StageOrientation.ROTATED_RIGHT:
bStagePortrait = false;
break;
case StageOrientation.ROTATED_LEFT:
bStagePortrait = false;
break;
case StageOrientation.UPSIDE_DOWN:
bStagePortrait = true;
break;
}
}