示例#1
1
 /// <summary>
 /// Handles the button press event to track which focused menu item will get the activation
 /// </summary>
 /// <param name="backButton"></param>
 /// <param name="startButton"></param>
 /// <param name="systemButton"></param>
 /// <param name="aButton"></param>
 /// <param name="bButton"></param>
 /// <param name="xButton"></param>
 /// <param name="yButton"></param>
 /// <param name="leftShoulder"></param>
 /// <param name="rightShoulder"></param>
 /// <param name="player"></param>
 protected override void OnGamePadButtonUpdate(CCGamePadButtonStatus backButton, CCGamePadButtonStatus startButton, CCGamePadButtonStatus systemButton, CCGamePadButtonStatus aButton, CCGamePadButtonStatus bButton, CCGamePadButtonStatus xButton, CCGamePadButtonStatus yButton, CCGamePadButtonStatus leftShoulder, CCGamePadButtonStatus rightShoulder, Microsoft.Xna.Framework.PlayerIndex player)
 {
     base.OnGamePadButtonUpdate(backButton, startButton, systemButton, aButton, bButton, xButton, yButton, leftShoulder, rightShoulder, player);
     if (!HasFocus)
     {
         return;
     }
     if (backButton == CCGamePadButtonStatus.Pressed || aButton == CCGamePadButtonStatus.Pressed || bButton == CCGamePadButtonStatus.Pressed ||
         xButton == CCGamePadButtonStatus.Pressed || yButton == CCGamePadButtonStatus.Pressed || leftShoulder == CCGamePadButtonStatus.Pressed ||
         rightShoulder == CCGamePadButtonStatus.Pressed)
     {
         CCMenuItem item = FocusedItem;
         item.Selected();
         m_pSelectedItem = item;
         m_eState = CCMenuState.TrackingTouch;
     }
     else if (backButton == CCGamePadButtonStatus.Released || aButton == CCGamePadButtonStatus.Released || bButton == CCGamePadButtonStatus.Released ||
         xButton == CCGamePadButtonStatus.Released || yButton == CCGamePadButtonStatus.Released || leftShoulder == CCGamePadButtonStatus.Released ||
         rightShoulder == CCGamePadButtonStatus.Released)
     {
         if (m_eState == CCMenuState.TrackingTouch)
         {
             // Now we are selecting the menu item
             CCMenuItem item = FocusedItem;
             if (item != null && m_pSelectedItem == item)
             {
                 // Activate this item
                 item.Unselected();
                 item.Activate();
                 m_eState = CCMenuState.Waiting;
                 m_pSelectedItem = null;
             }
         }
     }
 }
示例#2
0
 public bool InitWithTarget(Action<CCMenuItem> selector, CCMenuItem[] items)
 {
     base.InitWithTarget(selector);
     CascadeColorEnabled = true;
     CascadeOpacityEnabled = true;
     m_pSubItems = new List<CCMenuItem>();
     float w = float.MinValue;
     float h = float.MinValue;
     foreach (CCMenuItem item in items)
     {
         m_pSubItems.Add(item);
         AddChild(item, 0);
         item.Visible = false;
         if (w < item.ContentSize.Width)
         {
             w = item.ContentSize.Width;
         }
         if (h < item.ContentSize.Height)
         {
             h = item.ContentSize.Height;
         }
         item.AnchorPoint = CCPoint.AnchorMiddle;
     }
     ContentSize = new CCSize(w, h);
     foreach (CCMenuItem item in items)
     {
         item.Position = ContentSize.Center;
     }
     m_uSelectedIndex = int.MaxValue;
     SelectedIndex = 0;
     return true;
 }
示例#3
0
 /// <summary>
 /// Handles the button press event to track which focused menu item will get the activation
 /// </summary>
 /// <param name="backButton"></param>
 /// <param name="startButton"></param>
 /// <param name="systemButton"></param>
 /// <param name="aButton"></param>
 /// <param name="bButton"></param>
 /// <param name="xButton"></param>
 /// <param name="yButton"></param>
 /// <param name="leftShoulder"></param>
 /// <param name="rightShoulder"></param>
 /// <param name="player"></param>
 protected override void OnGamePadButtonUpdate(CCGamePadButtonStatus backButton, CCGamePadButtonStatus startButton, CCGamePadButtonStatus systemButton, CCGamePadButtonStatus aButton, CCGamePadButtonStatus bButton, CCGamePadButtonStatus xButton, CCGamePadButtonStatus yButton, CCGamePadButtonStatus leftShoulder, CCGamePadButtonStatus rightShoulder, Microsoft.Xna.Framework.PlayerIndex player)
 {
     base.OnGamePadButtonUpdate(backButton, startButton, systemButton, aButton, bButton, xButton, yButton, leftShoulder, rightShoulder, player);
     if (!HasFocus)
     {
         return;
     }
     if (backButton == CCGamePadButtonStatus.Pressed || aButton == CCGamePadButtonStatus.Pressed || bButton == CCGamePadButtonStatus.Pressed ||
         xButton == CCGamePadButtonStatus.Pressed || yButton == CCGamePadButtonStatus.Pressed || leftShoulder == CCGamePadButtonStatus.Pressed ||
         rightShoulder == CCGamePadButtonStatus.Pressed)
     {
         CCMenuItem item = FocusedItem;
         item.Selected();
         m_pSelectedItem = item;
         m_eState        = CCMenuState.TrackingTouch;
     }
     else if (backButton == CCGamePadButtonStatus.Released || aButton == CCGamePadButtonStatus.Released || bButton == CCGamePadButtonStatus.Released ||
              xButton == CCGamePadButtonStatus.Released || yButton == CCGamePadButtonStatus.Released || leftShoulder == CCGamePadButtonStatus.Released ||
              rightShoulder == CCGamePadButtonStatus.Released)
     {
         if (m_eState == CCMenuState.TrackingTouch)
         {
             // Now we are selecting the menu item
             CCMenuItem item = FocusedItem;
             if (item != null && m_pSelectedItem == item)
             {
                 // Activate this item
                 item.Unselected();
                 item.Activate();
                 m_eState        = CCMenuState.Waiting;
                 m_pSelectedItem = null;
             }
         }
     }
 }
示例#4
0
        public static CCMenuItemToggle Create(CCMenuItem item)
        {
            var pRet = new CCMenuItemToggle();

            pRet.InitWithItem(item);
            return(pRet);
        }
 public bool InitWithItem(CCMenuItem item)
 {
     base.InitWithTarget(null);
     m_pSubItems = new List <CCMenuItem>();
     m_pSubItems.Add(item);
     m_uSelectedIndex = int.MaxValue;
     SelectedIndex    = 0;
     return(true);
 }
示例#6
0
        /// <summary>
        /// The position of the menu is set to the center of the main screen
        /// </summary>
        /// <param name="items"></param>
        /// <returns></returns>
        private bool InitWithArray(params CCMenuItem[] items)
        {
            if (_Items.Count > 0)
            {
                List <CCMenuItem> copy = new List <CCMenuItem>(_Items);
                foreach (CCMenuItem i in copy)
                {
                    RemoveChild(i, false);
                }
            }
            if (base.Init())
            {
                if (CCConfiguration.SharedConfiguration.UseGraphPriority)
                {
                    TouchPriority = kMaxGraphPriority;
                }
                else
                {
                    TouchPriority = kCCMenuHandlerPriority;
                }
                TouchMode    = CCTouchMode.OneByOne;
                TouchEnabled = true;

                m_bEnabled = true;
                // menu in the center of the screen
                CCSize s = CCDirector.SharedDirector.WinSize;

                IgnoreAnchorPointForPosition = true;
                AnchorPoint = new CCPoint(0.5f, 0.5f);
                ContentSize = s;

                Position = (new CCPoint(s.Width / 2, s.Height / 2));

                if (items != null)
                {
                    int z = 0;
                    foreach (CCMenuItem item in items)
                    {
                        AddChild(item, z);
                        z++;
                    }
                }

                //    [self alignItemsVertically];
                m_pSelectedItem = null;
                m_eState        = CCMenuState.Waiting;

                // enable cascade color and opacity on menus
                CascadeColorEnabled   = true;
                CascadeOpacityEnabled = true;

                return(true);
            }
            return(false);
        }
示例#7
0
		public bool InitWithTarget(Action<object> selector, CCMenuItem[] items)
        {
            base.InitWithTarget(selector);
            m_pSubItems = new List<CCMenuItem>();
            foreach (CCMenuItem item in items)
            {
                m_pSubItems.Add(item);
            }
            m_uSelectedIndex = int.MaxValue;
            SelectedIndex = 0;
            return true;
        }
示例#8
0
        public bool InitWithItem(CCMenuItem item)
        {
            base.InitWithTarget(null);
            m_pSubItems = new List <CCMenuItem>();
            m_pSubItems.Add(item);
            m_uSelectedIndex = int.MaxValue;
            SelectedIndex    = 0;

            CascadeColorEnabled   = true;
            CascadeOpacityEnabled = true;

            return(true);
        }
示例#9
0
        public bool InitWithItem(CCMenuItem item)
        {
            base.InitWithTarget(null);
            m_pSubItems = new List<CCMenuItem>();
            m_pSubItems.Add(item);
            m_uSelectedIndex = int.MaxValue;
            SelectedIndex = 0;

            CascadeColorEnabled = true;
            CascadeOpacityEnabled = true; 
            
            return true;
        }
示例#10
0
 public override void OnExit()
 {
     if (m_eState == CCMenuState.TrackingTouch)
     {
         m_pSelectedItem.Unselected();
         m_eState        = CCMenuState.Waiting;
         m_pSelectedItem = null;
     }
     foreach (CCMenuItem item in _Items)
     {
         CCFocusManager.Instance.Remove(item);
     }
     base.OnExit();
 }
示例#11
0
        public override void RemoveChild(CCNode child, bool cleanup)
        {
            Debug.Assert(child is CCMenuItem, "Menu only supports MenuItem objects as children");

            if (m_pSelectedItem == child)
            {
                m_pSelectedItem = null;
            }

            base.RemoveChild(child, cleanup);

            if (_Items.Contains(child as CCMenuItem))
            {
                _Items.Remove(child as CCMenuItem);
            }
        }
示例#12
0
        public override void TouchMoved(CCTouch touch)
        {
            Debug.Assert(m_eState == CCMenuState.TrackingTouch, "[Menu TouchMoved] -- invalid state");
            CCMenuItem currentItem = ItemForTouch(touch);

            if (currentItem != m_pSelectedItem)
            {
                if (m_pSelectedItem != null)
                {
                    m_pSelectedItem.Unselected();
                }

                m_pSelectedItem = currentItem;

                if (m_pSelectedItem != null)
                {
                    m_pSelectedItem.Selected();
                }
            }
        }
示例#13
0
        public MenuLayer3()
        {
            CCMenuItemFont.FontName = "arial";
            CCMenuItemFont.FontSize = 28;

            CCLabelBMFont label = new CCLabelBMFont("Enable AtlasItem", "fonts/bitmapFontTest3.fnt");
            CCMenuItemLabel item1 = new CCMenuItemLabel(label, this.menuCallback2);
            CCMenuItemFont item2 = new CCMenuItemFont("--- Go Back ---", this.menuCallback);

            CCSprite spriteNormal = new CCSprite(s_MenuItem, new CCRect(0, 23 * 2, 115, 23));
            CCSprite spriteSelected = new CCSprite(s_MenuItem, new CCRect(0, 23 * 1, 115, 23));
            CCSprite spriteDisabled = new CCSprite(s_MenuItem, new CCRect(0, 23 * 0, 115, 23));


            CCMenuItemSprite item3 = new CCMenuItemSprite(spriteNormal, spriteSelected, spriteDisabled, this.menuCallback3);
            m_disabledItem = item3;
            m_disabledItem.Enabled = false;

            CCMenu menu = new CCMenu(item1, item2, item3);
            menu.Position = new CCPoint(0, 0);

            CCSize s = CCDirector.SharedDirector.WinSize;

            item1.Position = new CCPoint(s.Width / 2 - 150, s.Height / 2);
            item2.Position = new CCPoint(s.Width / 2 - 200, s.Height / 2);
            item3.Position = new CCPoint(s.Width / 2, s.Height / 2 - 100);
            CCJumpBy jump = new CCJumpBy (3, new CCPoint(400, 0), 50, 4);
            item2.RunAction(new CCRepeatForever (
                                        (CCActionInterval)(CCSequence.FromActions(jump, jump.Reverse()))
                                        )
                            );
            CCActionInterval spin1 = new CCRotateBy (3, 360);
            CCActionInterval spin2 = (CCActionInterval)(spin1.Copy());
            CCActionInterval spin3 = (CCActionInterval)(spin1.Copy());

            item1.RunAction(new CCRepeatForever (spin1));
            item2.RunAction(new CCRepeatForever (spin2));
            item3.RunAction(new CCRepeatForever (spin3));

            AddChild(menu);
        }
示例#14
0
        /// <summary>
        /// The position of the menu is set to the center of the main screen
        /// </summary>
        /// <param name="items"></param>
        /// <returns></returns>
        private bool InitWithArray(params CCMenuItem[] items)
        {
            if (_Items.Count > 0)
            {
                List <CCMenuItem> copy = new List <CCMenuItem>(_Items);
                foreach (CCMenuItem i in copy)
                {
                    RemoveChild(i, false);
                }
            }
            if (base.Init())
            {
                TouchEnabled = true;

                m_bEnabled = true;
                // menu in the center of the screen
                CCSize s = CCDirector.SharedDirector.WinSize;

                IgnoreAnchorPointForPosition = true;
                AnchorPoint = new CCPoint(0.5f, 0.5f);
                ContentSize = s;

                Position = (new CCPoint(s.Width / 2, s.Height / 2));

                if (items != null)
                {
                    int z = 0;
                    foreach (CCMenuItem item in items)
                    {
                        AddChild(item, z);
                        z++;
                    }
                }

                //    [self alignItemsVertically];
                m_pSelectedItem = null;
                m_eState        = CCMenuState.Waiting;
                return(true);
            }
            return(false);
        }
示例#15
0
        public override bool TouchBegan(CCTouch touch)
        {
            if (m_eState != CCMenuState.Waiting || !m_bVisible || !m_bEnabled)
            {
                return(false);
            }

            for (CCNode c = m_pParent; c != null; c = c.Parent)
            {
                if (c.Visible == false)
                {
                    return(false);
                }
            }

            m_pSelectedItem = ItemForTouch(touch);
            if (m_pSelectedItem != null)
            {
                m_eState = CCMenuState.TrackingTouch;
                m_pSelectedItem.Selected();
                return(true);
            }
            return(false);
        }
示例#16
0
        public override void TouchMoved(CCTouch touch)
        {
            Debug.Assert(m_eState == CCMenuState.TrackingTouch, "[Menu TouchMoved] -- invalid state");
            CCMenuItem currentItem = ItemForTouch(touch);
            if (currentItem != m_pSelectedItem)
            {
                if (m_pSelectedItem != null)
                {
                    m_pSelectedItem.Unselected();
                }

                m_pSelectedItem = currentItem;

                if (m_pSelectedItem != null)
                {
                    m_pSelectedItem.Selected();
                }
            }
        }
示例#17
0
        public override bool TouchBegan(CCTouch touch)
        {
            if (m_eState != CCMenuState.Waiting || !m_bVisible || !m_bEnabled)
            {
                return false;
            }

            for (CCNode c = m_pParent; c != null; c = c.Parent)
            {
                if (c.Visible == false)
                {
                    return false;
                }
            }

            m_pSelectedItem = ItemForTouch(touch);
            if (m_pSelectedItem != null)
            {
                m_eState = CCMenuState.TrackingTouch;
                m_pSelectedItem.Selected();
                return true;
            }
            return false;
        }
示例#18
0
 public override void OnExit()
 {
     if (m_eState == CCMenuState.TrackingTouch)
     {
         if (m_pSelectedItem != null)
         {
             m_pSelectedItem.Unselected();
             m_pSelectedItem = null;
         }
         m_eState = CCMenuState.Waiting;
     }
     
     foreach (CCMenuItem item in _Items)
     {
         CCFocusManager.Instance.Remove(item);
     }
     
     base.OnExit();
 }
示例#19
0
        public override void RemoveChild(CCNode child, bool cleanup)
        {
            Debug.Assert(child is CCMenuItem, "Menu only supports MenuItem objects as children");

            if (m_pSelectedItem == child)
            {
                m_pSelectedItem = null;
            }

            base.RemoveChild(child, cleanup);

            if (_Items.Contains(child as CCMenuItem))
            {
                _Items.Remove(child as CCMenuItem);
            }
        }
示例#20
0
        /// <summary>
        /// The position of the menu is set to the center of the main screen
        /// </summary>
        /// <param name="items"></param>
        /// <returns></returns>
        private bool InitWithArray(params CCMenuItem[] items)
        {
            if (_Items.Count > 0)
            {
                List<CCMenuItem> copy = new List<CCMenuItem>(_Items);
                foreach (CCMenuItem i in copy)
                {
                    RemoveChild(i, false);
                }
            }
            if (base.Init())
            {
                TouchPriority = kCCMenuHandlerPriority;
                TouchMode = CCTouchMode.OneByOne;
                TouchEnabled = true;

                m_bEnabled = true;
                // menu in the center of the screen
                CCSize s = CCDirector.SharedDirector.WinSize;

                IgnoreAnchorPointForPosition = true;
                AnchorPoint = new CCPoint(0.5f, 0.5f);
                ContentSize = s;

                Position = (new CCPoint(s.Width / 2, s.Height / 2));

                if (items != null)
                {
                    int z = 0;
                    foreach (CCMenuItem item in items)
                    {
                        AddChild(item, z);
                        z++;
                    }
                }

                //    [self alignItemsVertically];
                m_pSelectedItem = null;
                m_eState = CCMenuState.Waiting;

                // enable cascade color and opacity on menus
                CascadeColorEnabled = true;
                CascadeOpacityEnabled = true;

                return true;
            }
            return false;
        }
示例#21
0
 public void AddSubItem(CCMenuItem item)
 {
     m_pSubItems.Add(item);
 }
示例#22
0
        public void menuCallback(CCMenuItem pSender)
        {
            // get the userdata, it's the index of the menu item clicked
            CCMenuItem pMenuItem = (CCMenuItem)(pSender);
            int nIdx = (int)pMenuItem.UserData;

            // create the test scene and run it
            TestScene pScene = CreateTestScene(nIdx);
            if (pScene != null)
            {
                CCApplication.SharedApplication.GamePadDPadUpdate -= _GamePadDPadDelegate;
                CCApplication.SharedApplication.GamePadButtonUpdate -= _GamePadButtonDelegate;
                pScene.runThisTest();
            }
        }
示例#23
0
 public static CCMenuItemToggle Create(CCMenuItem item)
 {
     var pRet = new CCMenuItemToggle();
     pRet.InitWithItem(item);
     return pRet;
 }
示例#24
0
 public void AddSubItem(CCMenuItem item)
 {
     m_pSubItems.Add(item);
 }
示例#25
0
 public bool InitWithItem(CCMenuItem item)
 {
     base.InitWithTarget(null);
     m_pSubItems = new List<CCMenuItem>();
     m_pSubItems.Add(item);
     m_uSelectedIndex = int.MaxValue;
     SelectedIndex = 0;
     return true;
 }