public override void OnEnter()
        {
            base.OnEnter();

            CCRect visibleBounds = VisibleBoundsWorldspace;

            var origin = Layer.VisibleBoundsWorldspace.Origin;
            var size   = Layer.VisibleBoundsWorldspace.Size;

            var sprite = new CCSprite(TestResource.s_Ball);

            sprite.Position = origin + size.Center;
            AddChild(sprite);

            // Create our Accelerometer Listener
            var listener = new CCEventListenerAccelerometer();

            if (!Window.Accelerometer.Enabled)
            {
                Window.Accelerometer.Enabled = true;
            }

            // We will use Lambda expressions to attach the event process
            listener.OnAccelerate = (acceleration) => {
                var ballSize = sprite.ContentSize;
                var acc      = acceleration.Acceleration;
                var ptNow    = sprite.Position;

                var orientation = Application.CurrentOrientation;

                //CCLog.Log("Accelerate : X: {0} Y: {1} Z: {2} orientation: {3}", accelerationValue.X, accelerationValue.Y, accelerationValue.Z, orientation );
                if (orientation == CCDisplayOrientation.LandscapeRight || orientation == CCDisplayOrientation.LandscapeLeft)
                {
#if ANDROID
                    ptNow.X += (float)acc.Y * 9.81f;
                    ptNow.Y -= (float)acc.X * 9.81f;
#elif NETFX_CORE || WINDOWS_PHONE8
                    ptNow.X -= (float)acc.Y * 9.81f;
                    ptNow.Y += (float)acc.X * 9.81f;
#elif IOS
                    ptNow.X += (float)acc.Y * 9.81f;
                    ptNow.Y -= (float)acc.X * 9.81f;
#endif
                }
                ptNow.X         = MathHelper.Clamp(ptNow.X, (float)(visibleBounds.Origin.X + ballSize.Width / 2.0), (float)(visibleBounds.Origin.X + visibleBounds.Size.Width - ballSize.Width / 2.0));
                ptNow.Y         = MathHelper.Clamp(ptNow.Y, (float)(visibleBounds.Origin.Y + ballSize.Height / 2.0), (float)(visibleBounds.Origin.Y + visibleBounds.Size.Height - ballSize.Height / 2.0));
                sprite.Position = ptNow;
            };

            // Now we tell the event dispatcher that the sprite is interested in Accelerometer events
            sprite.AddEventListener(listener);
        }
Esempio n. 2
0
        public override void OnEnter()
        {
            spriteSaved = false;

            base.OnEnter();

            var origin = Layer.VisibleBoundsWorldspace.Origin;
            var size   = Layer.VisibleBoundsWorldspace.Size;

            //MenuItemFont::setFontSize(20);

            var sprite = new CCSprite("Images/CyanSquare.png");

            sprite.Position = origin + size.Center;
            AddChild(sprite, 10);

            // Make sprite1 touchable
            var listener1 = new CCEventListenerTouchOneByOne();

            listener1.IsSwallowTouches = true;

            listener1.OnTouchBegan = (touch, touchEvent) =>
            {
                var target = (CCSprite)touchEvent.CurrentTarget;

                var locationInNode = target.Layer.ScreenToWorldspace(touch.LocationOnScreen);
                var s    = target.ContentSize;
                var rect = new CCRect(0, 0, s.Width, s.Height);

                if (rect.ContainsPoint(locationInNode))
                {
                    CCLog.Log("sprite began... x = {0}, y = {1}", locationInNode.X, locationInNode.Y);
                    target.Opacity = 180;
                    return(true);
                }
                return(false);
            };

            listener1.OnTouchMoved = (touch, touchEvent) =>
            {
                var target = (CCSprite)touchEvent.CurrentTarget;
                target.Position += touch.Delta;
            };

            listener1.OnTouchEnded = (touch, touchEvent) =>
            {
                var target = (CCSprite)touchEvent.CurrentTarget;
                CCLog.Log("sprite onTouchesEnded.. ");
                target.Opacity = 255;
            };

            sprite.AddEventListener(listener1);

            RunActions(new CCDelayTime(5.0f),
                       new CCCallFunc(() =>
            {
                spriteSaved = true;
                sprite.RemoveFromParent();
            }),
                       new CCDelayTime(5.0f),
                       new CCCallFunc(() =>
            {
                spriteSaved = false;
                AddChild(sprite);
            })
                       );
        }
Esempio n. 3
0
        public override void OnEnter()
        {
            base.OnEnter();

            var visibleBounds = VisibleBoundsWorldspace;
            var origin        = VisibleBoundsWorldspace.Origin;
            var size          = VisibleBoundsWorldspace.Size;

            var sprite1 = new CCSprite("Images/CyanSquare.png");

            sprite1.Position = origin + size.Center + new CCPoint(-80, 80);
            AddChild(sprite1, 10);

            var sprite2 = new CCSprite("Images/MagentaSquare.png");

            sprite2.Position = origin + size.Center;
            AddChild(sprite2, 20);

            var sprite3 = new CCSprite("Images/YellowSquare.png");

            sprite3.Position = CCPoint.Zero;
            sprite2.AddChild(sprite3, 1);

            // Make sprite1 touchable
            var listener1 = new CCEventListenerTouchOneByOne();

            listener1.IsSwallowTouches = true;

            listener1.OnTouchBegan = (touch, touchEvent) =>
            {
                var target = (CCSprite)touchEvent.CurrentTarget;

                var    locationInNode = touch.Location;
                var    s    = target.ContentSize;
                CCRect rect = target.BoundingBoxTransformedToWorld;

                if (rect.ContainsPoint(locationInNode))
                {
                    CCLog.Log("sprite began... x = {0}, y = {1}", locationInNode.X, locationInNode.Y);
                    target.Opacity = 180;
                    return(true);
                }
                return(false);
            };

            listener1.OnTouchMoved = (touch, touchEvent) =>
            {
                var     target = (CCSprite)touchEvent.CurrentTarget;
                CCPoint pt     = touch.PreviousLocation + touch.Delta;
                target.Position = target.WorldToParentspace(pt);
            };

            listener1.OnTouchEnded = (touch, touchEvent) =>
            {
                var target = (CCSprite)touchEvent.CurrentTarget;
                CCLog.Log("sprite onTouchesEnded..");
                target.Opacity = 255;
                if (target == sprite2)
                {
                    sprite1.LocalZOrder = 100;
                }
                else if (target == sprite1)
                {
                    sprite1.LocalZOrder = 0;
                }
            };


            sprite1.AddEventListener(listener1);
            sprite2.AddEventListener(listener1.Copy());
            sprite3.AddEventListener(listener1.Copy());


            var removeAllTouchItem = new CCMenuItemFont("Remove All Touch Listeners", (sender) => {
                var senderItem        = (CCMenuItemFont)sender;
                senderItem.Label.Text = "Only Next item could be clicked";

                RemoveEventListeners(CCEventListenerType.TOUCH_ONE_BY_ONE);

                var nextItem = new CCMenuItemFont("Next", (senderNext) => NextCallback(senderNext));


                CCMenuItemFont.FontSize = 16;
                nextItem.Position       = new CCPoint(visibleBounds.Origin.X + visibleBounds.Size.Width - 100, 100);

                var menu2         = new CCMenu(nextItem);
                menu2.Position    = CCPoint.Zero;
                menu2.AnchorPoint = CCPoint.AnchorLowerLeft;
                this.AddChild(menu2);
            });

            CCMenuItemFont.FontSize     = 16;
            removeAllTouchItem.Position = new CCPoint(visibleBounds.Origin.X + visibleBounds.Size.Width - 100, 80);

            var menu = new CCMenu(removeAllTouchItem);

            menu.Position    = CCPoint.Zero;
            menu.AnchorPoint = CCPoint.AnchorLowerLeft;
            AddChild(menu);
        }