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); }
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); }) ); }
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); }