示例#1
0
        public void Show(Stage stage)
        {
            ClearActions();
            //RemoveCaptureListener(_ignoreTouchDown);
            PreviewTouchDown -= CancelTouchDownHandler;

            _prevKeyboardFocus = null;
            Actor actor = stage.GetKeyboardFocus();

            if (actor != null && !actor.IsDescendentOf(this))
            {
                _prevKeyboardFocus = actor;
            }

            _prevScrollFocus = null;
            actor            = stage.GetScrollFocus();
            if (actor != null && !actor.IsDescendentOf(this))
            {
                _prevScrollFocus = actor;
            }

            Pack();
            SetPosition((float)Math.Round((stage.Width - Width) / 2), (float)Math.Round((stage.Height - Height) / 2));

            stage.AddActor(this);
            stage.SetKeyboardFocus(this);
            stage.SetScrollFocus(this);

            if (FadeDuration > 0)
            {
                Color = Color.MultiplyAlpha(0);
                AddAction(ActionRepo.FadeIn(FadeDuration, Interpolation.Fade));
            }
        }
示例#2
0
            public void Show(Stage stage)
            {
                stage.AddActor(this);

                Vector2 stageCoords = _selectBox.LocalToStageCoordinates(Vector2.Zero);

                _screenCoords = stageCoords;

                _list.SetItems(_selectBox.Items);
                _list.SelectedIndex = _selectBox.SelectionIndex;

                // Show the list above or below the select box, limited to a number of items and the available height in the stage.
                float itemHeight = _list.ItemHeight;
                float height     = itemHeight * (_selectBox.MaxListCount <= 0 ? _selectBox.Items.Length
                    : Math.Min(_selectBox.MaxListCount, _selectBox.Items.Length));
                ISceneDrawable background = Style.Background;

                if (background != null)
                {
                    height += background.TopHeight + background.BottomHeight;
                }

                float heightBelow = stageCoords.Y;
                float heightAbove = stage.Camera.ViewportHeight - stageCoords.Y - _selectBox.Height;

                bool below = true;

                if (height > heightBelow)
                {
                    if (heightAbove > heightBelow)
                    {
                        below  = false;
                        height = Math.Min(height, heightAbove);
                    }
                    else
                    {
                        height = heightBelow;
                    }
                }

                if (below)
                {
                    Y = stageCoords.Y - height;
                }
                else
                {
                    Y = stageCoords.Y + _selectBox.Height;
                }

                X      = stageCoords.X + _selectBox.Style.ListLeftOffset;
                Width  = _selectBox.Width + _selectBox.Style.ListLeftOffset + _selectBox.Style.ListRightOffset;
                Height = height;

                ScrollToCenter(0, _list.Height - _selectBox.SelectionIndex * itemHeight - itemHeight / 2, 0, 0);
                UpdateVisualScroll();

                ClearActions();
                Color = new Color(Color.R, Color.G, Color.B, 0);
                AddAction(ActionRepo.FadeIn(.3f, Interpolation.Fade));

                stage.SetScrollFocus(this);
            }