0

Androidアプリを開発するためにFlashBuilder 4.6を使用しています。アプリケーションでは、デバイスの向きが変わったときにいくつかの値を設定する必要があります。つまり、画面/デバイスの向きが横から縦、またはその逆に変更されたときに値を設定します。

最初は私のアプリケーションにはLandScape の向きがありますが。そして、この要件は特定のビューにあります。

画面/デバイスの向きが変わるたびに、そこに値を設定する必要があります。望ましい結果が得られません。
コードが間違っているかどうか、またはどうすればこれを達成できるかを教えてください。

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" title="{data}" 
        xmlns:mx="library://ns.adobe.com/flex/mx"
        viewActivate="view1_viewActivateHandler(event)"
        creationComplete="view1_creationCompleteHandler(event)">
<fx:Script>
   <![CDATA[
protected function view1_viewActivateHandler(event:ViewNavigatorEvent):void
{
    if(Accelerometer.isSupported)
    {
    accl = new Accelerometer();
        accl.addEventListener(AccelerometerEvent.UPDATE,update);                //accl.addEventListener(AccelerometerEvent.UPDATE,adjustImage);
    }
}
private function update(event:AccelerometerEvent):void
{
     this.stage.autoOrients = true;
     //in the below line I am attaching StageOrienationEvent that will adjust the 
     //values.
     stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE,adjust);
}
private function adjust(event:StageOrientationEvent):void
{
     if(event.afterOrientation == StageOrientation.ROTATED_LEFT)
     {
    testVal.text ="After OR is LEFT";
     }
     else if(event.afterOrientation == StageOrientation.ROTATED_RIGHT)
     {
    testVal.text ="After OR is RIGHT"; 
     }
     else if(StageAspectRatio.LANDSCAPE)
     {
    testVal.text ="StageAspectRatio is Landscape";
     }
     else if(StageAspectRatio.PORTRAIT)
     {
    testVal.text="StageAspectRatio is  Portrait";
     }
}

</fx:Script>

ありがとう。

4

2 に答える 2

1

これに2日間費やした後、最終的に解決策を見つけました。

update 関数で、stage.addEventListner にOrientationChanging イベントを追加します。

private function update(event:AccelerometerEvent):void
{
  this.stage.autoOrients  = true;
  stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING,adjust);
}

private function adjust(event:StageOrientationEvent):void
{
  switch(event.afterOrientation)
  {
    case StageOrientation.DEFAULT:
       //Do Something here. The Portrait Position.
         break;
    case StageOrienatation.ROTATED_LEFT:
      //Do Something here when you rotate your phone portrait to left side.
       break;
    case StageOrienatation.ROTATED_RIGHT:
      //Do something here when you rotate your phone portrait to right side.
       break;
  }
}

この質問を見て、解決に向けて努力してくれたすべての人に感謝します。:)

于 2012-06-16T04:41:23.050 に答える
0

私は経験豊富なコーダーではありません! しかし : private function update(event:AccelerometerEvent):void である必要があります: private function accl(event:AccelerometerEvent):void ?? または以下のコードのようなもの if(stage[not event].afterOrientation == ??? 単なる意見です!

于 2012-06-14T18:18:23.177 に答える