2011-07-02 9 views
3

私は奇妙な問題があります。私はタイトルウィンドウを使ってユーザーにメッセージを作成します。ユーザは、メイン画面が見えるように、画面の周りでタイトルウィンドウを移動する能力を有する。フレックス4:タイトルウィンドウがアクセシブルエリアから外れる

しかし、ユーザーがタイトルウィンドウをあまりにも移動すると、実際にはブラウザのアクセス可能領域外に出る可能性があります。ユーザーは選択肢がありませんが、ブラウザを閉じてもう一度開始します。タイトルバーの移動が制限されていることを確認するにはどうすればいいですか?

私はこの権利を語っていないかもしれませんが、添付の画像image going out of screenを確認してください。

答えて

4

私は、TitleWindowのmoveイベントを聞いています。ウィンドウがアプリケーションの可視座標から移動された場合は、移動します。

ユーザーがウィンドウをクローズできるようにすることが問題になる場合は、上部にある「x」に加えて、ウィンドウの下部に「閉じる」ボタンを追加することができます。

4

カスタムコンポーネントを使用できる場合は、TitleWindowのmove()メソッドをオーバーライドすることをお勧めします。

public class PopUpWindow extends TitleWindow 
{ 
    private static const MIN_VISIBLE:int = 50; 

    public override function move(x:Number, y:Number):void 
    { 
     var maxX:Number = stage.stageWidth - MIN_VISIBLE; 
     var maxY:Number = stage.stageHeight - MIN_VISIBLE; 

     if (x < 0) 
      x = 0; 
     else if (x > maxX) 
      x = maxX; 

     if (y < 0) 
      y = 0; 
     else if (y > maxY) 
      y = maxY; 

     super.move(x, y); 
    } 
} 
+0

私はこの解決策に同意私は、ウィンドウの移動を制限するには、次のコードを使用しています。私は過去の同じ動作を見てきました。タイトルウィンドウの動きを制限する方が好きです。同じようにリサイズすることもできます。 –

+0

+1このソリューションでも同様です。私は過去のプロジェクトでこれとほぼ同じようなものを自分で使ってきました。 –

1

この関数は、TitleWindowのの移動イベントに呼ばれている:

 protected function titlewindow1_moveHandler(event:MoveEvent):void 
     { 
      // TODO Auto-generated method stub 
      var window:UIComponent = event.currentTarget as UIComponent; 
      var application:UIComponent = FlexGlobals.topLevelApplication as UIComponent; 
      var bounds:Rectangle = new Rectangle(0, 0, application.width, application.height); 
      var windowBounds:Rectangle = window.getBounds(application); 
      var x:Number; 
      var y:Number; 
      if (windowBounds.left <= bounds.left) 
       x = bounds.left; 
      else if (windowBounds.right >= bounds.right) 
       x = bounds.right - window.width; 
      else 
       x = window.x; 
      if (windowBounds.top <= bounds.top) 
       y = bounds.top; 
      else if (windowBounds.bottom >= bounds.bottom) 
       y = bounds.bottom - window.height; 
      else 
       y = window.y; 
      window.move(x, y); 
     } 
関連する問題