public static CABasicAnimation TranslateZ(nfloat translation, double?duration = null) { var animation = CABasicAnimation.FromKeyPath("transform.translation.z"); animation.To = NSNumber.FromNFloat(translation); animation.FillMode = Convert.MaterialAnimationFillModeToValue(MaterialAnimationFillMode.Forwards); animation.RemovedOnCompletion = false; animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut); if (duration != null) { animation.Duration = duration.Value; } return(animation); }
private CAAnimation AppearAnimation(double delay = 0) { var appear = new CABasicAnimation { KeyPath = AppearDisappearKeyPathString, From = FromObject(_indicatorLayer.Value.PresentationLayer.Opacity), To = FromObject(1), Duration = 0.15, TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut), BeginTime = delay, FillMode = CAFillMode.Forwards }; return(appear); }
public static CABasicAnimation Position(CGPoint point, double?duration = null) { var animation = CABasicAnimation.FromKeyPath("position"); animation.To = NSValue.FromCGPoint(point); animation.FillMode = Convert.MaterialAnimationFillModeToValue(MaterialAnimationFillMode.Forwards); animation.RemovedOnCompletion = false; animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut); if (duration != null) { animation.Duration = duration.Value; } return(animation); }
public override void AnimateTransition(IUIViewControllerContextTransitioning transitionContext) { //1 _transitionContext = transitionContext; //2 var containerView = _transitionContext.ContainerView; var fromViewController = _transitionContext.GetViewControllerForKey(UITransitionContext.FromViewControllerKey) as OnboardingController; var toViewController = _transitionContext.GetViewControllerForKey(UITransitionContext.ToViewControllerKey) as ContainerController; var fromRect = fromViewController.NavigationRect; var toRect = new CGRect(-toViewController.View.Bounds.Width / 2, -toViewController.View.Bounds.Height / 2, toViewController.View.Bounds.Width * 2, toViewController.View.Bounds.Height * 2); //3 containerView.AddSubview(toViewController.View); //4 var circleMaskPathInitial = UIBezierPath.FromRoundedRect(fromRect, fromRect.Height / 2); var circleMaskPathFinal = UIBezierPath.FromRoundedRect(toRect, toRect.Height / 2); //5 var maskLayer = new CAShapeLayer(); maskLayer.Path = circleMaskPathFinal.CGPath; toViewController.View.Layer.Mask = maskLayer; //6 var maskLayerAnimation = CABasicAnimation.FromKeyPath("path"); maskLayerAnimation.SetFrom(circleMaskPathInitial.CGPath); maskLayerAnimation.SetTo(circleMaskPathFinal.CGPath); maskLayerAnimation.Duration = TransitionDuration(_transitionContext); maskLayerAnimation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn); maskLayerAnimation.AnimationStopped += (object sender, CAAnimationStateEventArgs e) => { if (_transitionContext != null) { _transitionContext.CompleteTransition(!_transitionContext.TransitionWasCancelled); var controller = _transitionContext.GetViewControllerForKey(UITransitionContext.FromViewControllerKey); if (controller != null) { controller.View.Layer.Mask = null; } } }; maskLayer.AddAnimation(maskLayerAnimation, "path"); }
private void Expand() { if (flag == this.MenuItems.Count) { this.isAnimating = false; this.timer.Invalidate(); this.timer = null; return; } int tag = 1000 + this.flag; MenuItem item = this.GetByTag(tag); item.Selected -= this.ItemSelected; item.Selected += this.ItemSelected; var rotateAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("transform.rotation.z"); rotateAnimation.Values = new NSNumber[] { this.ExpandRotation, 0.0f }; rotateAnimation.Duration = 0.5f; rotateAnimation.KeyTimes = new NSNumber[] { 0.3f, 0.4f }; var positionAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("position"); positionAnimation.Duration = 0.5f; var path = new CGPath(); path.MoveToPoint(item.StartPoint.X, item.StartPoint.Y); path.AddLineToPoint(item.FarPoint.X, item.FarPoint.Y); path.AddLineToPoint(item.NearPoint.X, item.NearPoint.Y); path.AddLineToPoint(item.EndPoint.X, item.EndPoint.Y); positionAnimation.Path = path; var animationGroup = new CAAnimationGroup(); animationGroup.Animations = new[] { positionAnimation, rotateAnimation }; animationGroup.Duration = 0.5f; animationGroup.FillMode = CAFillMode.Forwards; animationGroup.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn); item.Layer.AddAnimation(animationGroup, "Expand"); item.Alpha = 1f; item.Center = item.EndPoint; this.flag++; }
CABasicAnimation animateFromTo(UIView v, float dur, string path, float fromx, float fromy, float tox, float toy) { var l_animation = CABasicAnimation.FromKeyPath(path); //position l_animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn); l_animation.From = NSValue.FromPointF(new PointF(fromx, fromy)); l_animation.To = NSValue.FromPointF(new PointF(tox, toy)); l_animation.Duration = 0.6; l_animation.RemovedOnCompletion = false; //l_animation.AnimationStopped += faction; v.Layer.AddAnimation(l_animation, "position"); v.Layer.Position = new PointF(tox, toy); return(l_animation); }
public void Animation() { Hidden = false; var rotate = CABasicAnimation.FromKeyPath("transform.rotation.z"); rotate.From = (NSNumber)0.0f; rotate.To = new NSNumber(fPI * 2.0f); rotate.Duration = 0.4f; rotate.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear); rotate.RepeatCount = float.MaxValue; rotate.FillMode = CAFillMode.Forwards; rotate.RemovedOnCompletion = false; AddAnimation(rotate, rotate.KeyPath); }
private static CAMediaTimingFunction GetCubicTimingFunction(EasingMode easingMode) { switch (easingMode) { case EasingMode.EaseIn: return(CAMediaTimingFunction.FromControlPoints(0.55f, 0.055f, 0.675f, 0.19f)); case EasingMode.EaseOut: return(CAMediaTimingFunction.FromControlPoints(0.215f, 0.61f, 0.355f, 1.0f)); case EasingMode.EaseInOut: return(CAMediaTimingFunction.FromControlPoints(0.645f, 0.045f, 0.355f, 1.0f)); } return(GetDefaultTimingFunction()); }
public void Animation() { Hidden = false; var rotate = CABasicAnimation.FromKeyPath("transform.rotation.z"); rotate.From = NSNumber.FromDouble(0.0); rotate.To = NSNumber.FromDouble(Helpers.fPI * 2); rotate.Duration = 1.0; rotate.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear); rotate.RepeatCount = float.MaxValue; rotate.FillMode = CAFillMode.Forwards; rotate.RemovedOnCompletion = false; AddAnimation(rotate, rotate.KeyPath); StrokeEndAnimation(); }
// if ivar _shouldAnimate) is YES then return an animation // otherwise return NSNull (no animation) public override NSObject ActionForLayer(CALayer layer, string eventKey) { if (shouldAnimate) { var anim = CABasicAnimation.FromKeyPath(eventKey); anim.BeginTime = CAAnimation.CurrentMediaTime(); anim.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut); anim.From = layer.PresentationLayer.ValueForKey(new NSString(eventKey)); anim.Duration = animDuration; return(anim); } else { return(NSNull.Null); } }
private static CAMediaTimingFunction GetSineTimingFunction(EasingMode easingMode) { switch (easingMode) { case EasingMode.EaseIn: return(CAMediaTimingFunction.FromControlPoints(0.47f, 0.0f, 0.745f, 0.715f)); case EasingMode.EaseOut: return(CAMediaTimingFunction.FromControlPoints(0.39f, 0.575f, 0.565f, 1.0f)); case EasingMode.EaseInOut: return(CAMediaTimingFunction.FromControlPoints(0.445f, 0.05f, 0.55f, 0.95f)); } return(GetDefaultTimingFunction()); }
private static CAMediaTimingFunction GetBackTimingFunction(EasingMode easingMode) { switch (easingMode) { case EasingMode.EaseIn: return(CAMediaTimingFunction.FromControlPoints(0.6f, -0.28f, 0.735f, 0.045f)); case EasingMode.EaseOut: return(CAMediaTimingFunction.FromControlPoints(0.175f, 0.885f, 0.320f, 1.275f)); case EasingMode.EaseInOut: return(CAMediaTimingFunction.FromControlPoints(0.68f, -0.55f, 0.265f, 1.55f)); } return(GetDefaultTimingFunction()); }
private static CAMediaTimingFunction GetQuarticTimingFunction(EasingMode easingMode) { switch (easingMode) { case EasingMode.EaseIn: return(CAMediaTimingFunction.FromControlPoints(0.895f, 0.03f, 0.685f, 0.22f)); case EasingMode.EaseOut: return(CAMediaTimingFunction.FromControlPoints(0.165f, 0.84f, 0.44f, 1.0f)); case EasingMode.EaseInOut: return(CAMediaTimingFunction.FromControlPoints(0.77f, 0.0f, 0.175f, 1.0f)); } return(GetDefaultTimingFunction()); }
private static CAMediaTimingFunction GetQuinticTimingFunction(EasingMode easingMode) { switch (easingMode) { case EasingMode.EaseIn: return(CAMediaTimingFunction.FromControlPoints(0.755f, 0.05f, 0.855f, 0.06f)); case EasingMode.EaseOut: return(CAMediaTimingFunction.FromControlPoints(0.23f, 1.0f, 0.320f, 1.0f)); case EasingMode.EaseInOut: return(CAMediaTimingFunction.FromControlPoints(0.86f, 0.0f, 0.07f, 1.0f)); } return(GetDefaultTimingFunction()); }
public static void Rotate(this UIView view, float duration, float rotations = 1.0f, bool repeat = false, bool bounce = false) { var animation = CABasicAnimation.FromKeyPath("transform.rotation.z"); animation.To = NSNumber.FromFloat((float)Math.PI * 2.0f * rotations * duration); animation.Duration = duration; animation.Cumulative = true; animation.RepeatCount = rotations; if (bounce) { animation.TimingFunction = CAMediaTimingFunction.FromControlPoints(0.5f, 1.8f, 0.5f, 0.8f); } view.Layer.AddAnimation(animation, "rotationAnimation"); }
private static CAMediaTimingFunction GetQuadraticTimingFunction(EasingMode easingMode) { switch (easingMode) { case EasingMode.EaseIn: return(CAMediaTimingFunction.FromControlPoints(0.55f, 0.085f, 0.68f, 0.53f)); case EasingMode.EaseOut: return(CAMediaTimingFunction.FromControlPoints(0.25f, 0.46f, 0.45f, 0.94f)); case EasingMode.EaseInOut: return(CAMediaTimingFunction.FromControlPoints(0.455f, 0.03f, 0.515f, 0.955f)); } return(GetDefaultTimingFunction()); }
public override void PresentStep(int index, PresentationViewController presentationViewController) { SCNTransaction.Begin(); switch (index) { case 0: // Set the slide's title and subtitle and add some text TextManager.SetTitle("More Animations"); TextManager.SetSubtitle("Watch SceneKit 2013 Presentation"); TextManager.AddBulletAtLevel("Skinning", 0); TextManager.AddBulletAtLevel("Morphing", 0); // Animate the character CharacterNode.AddAnimation(IdleAnimationGroup, new NSString("idleAnimation")); // The character is hidden. Wait a little longer before showing it // otherwise it may slow down the transition from the previous slide var delayInSeconds = 1.5; var popTime = new DispatchTime(DispatchTime.Now, (long)(delayInSeconds * Utils.NSEC_PER_SEC)); DispatchQueue.MainQueue.DispatchAfter(popTime, () => { SCNTransaction.Begin(); SCNTransaction.AnimationDuration = 0; CharacterNode.Hidden = false; CharacterNode.Opacity = 0; SCNTransaction.Commit(); SCNTransaction.Begin(); SCNTransaction.AnimationDuration = 1.5; SCNTransaction.AnimationTimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn); CharacterNode.Opacity = 1; SCNTransaction.Commit(); }); break; case 1: CharacterNode.AddAnimation(AnimationGroup1, new NSString("animation")); break; case 2: SCNTransaction.AnimationDuration = 1.5f; //TODO SetShowsBones (true); break; } SCNTransaction.Commit(); }
private void EndInkAtPoint(CGPoint point, bool animated) { if (StartAnimationActive) { EndAnimationDelay = MDCInkLayerStartFadeHalfBeginTimeFadeOutDuration; } nfloat opacity = 1.0f; bool viewContainsPoint = Bounds.Contains(point); if (!viewContainsPoint) { opacity = 0; } if (!animated) { Opacity = 0; AnimationDelegate?.InkLayerAnimationDidEnd(this); RemoveFromSuperLayer(); } else { CATransaction.Begin(); CABasicAnimation fadeOutAnim = new CABasicAnimation(); fadeOutAnim.KeyPath = MDCInkLayerOpacityString; fadeOutAnim.From = new NSNumber(opacity); fadeOutAnim.To = new NSNumber(0); fadeOutAnim.Duration = MDCInkLayerEndFadeOutDuration; fadeOutAnim.BeginTime = ConvertTimeFromLayer(CACurrentMediaTime() + EndAnimationDelay, null); fadeOutAnim.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear); fadeOutAnim.FillMode = CAFillMode.Forwards; fadeOutAnim.RemovedOnCompletion = false; //CATransaction.CompletionBlock = new Action(() => { // if ([self.animationDelegate respondsToSelector: @selector(inkLayerAnimationDidEnd:)]) // { // AnimationDelegate inkLayerAnimationDidEnd: self]; // } // RemoveFromSuperlayer(); //}); AddAnimation(fadeOutAnim, null); CATransaction.Commit(); } }
void SetupLayers() { if (view == null || view.Bounds.Size.IsEmpty) { return; } RemoveLayers(); var width = view.Bounds.Width; var distance = width / 5.0f / (float)shapeCount; // replicator layer replicatorLayer = new CAReplicatorLayer(); replicatorLayer.Frame = new CGRect(0, 0, view.Bounds.Width * 2, view.Bounds.Height); replicatorLayer.PreservesDepth = false; replicatorLayer.InstanceCount = (nint)shapeCount; replicatorLayer.InstanceTransform = CATransform3D.MakeTranslation(distance, 0, 0); replicatorLayer.InstanceDelay = -0.06f; if (view.Layer == null) { view.Layer = new CALayer(); } view.Layer.AddSublayer(replicatorLayer); view.WantsLayer = true; // instance layer var dotSize = view.Bounds.Height; var instanceLayer = new CALayer(); instanceLayer.Frame = new CGRect(-(shapeCount * distance / 2.0f) - dotSize, 0, dotSize, dotSize); instanceLayer.BackgroundColor = shapeColor.CGColor; instanceLayer.Bounds = new CGRect(0, 0, dotSize, dotSize); instanceLayer.CornerRadius = dotSize / 2.0f; replicatorLayer.AddSublayer(instanceLayer); var runAnimation = CABasicAnimation.FromKeyPath("transform.translation.x"); runAnimation.From = NSNumber.FromDouble(-2f * width); runAnimation.To = NSNumber.FromDouble(3f * width); runAnimation.Duration = duration; runAnimation.RepeatCount = float.PositiveInfinity; runAnimation.TimingFunction = CAMediaTimingFunction.FromControlPoints(0, 1.0f - easeFactor, 1, easeFactor); instanceLayer.AddAnimation(runAnimation, "RunAnimation"); }
/* Animation engine to create a fill animation. * @param bounces The number of bounces for the animation. * @param amplitue How far does the animation bounce. * @param reserve Flag to track if the animation should fill or empty the layer. * @return Returns the CAKeyframeAnimation object. */ public CAKeyFrameAnimation FillAnimationWithBounces(int bounces, float amplitude, bool reverse) { List <NSObject> values = new List <NSObject>(); List <NSNumber> keyTimes = new List <NSNumber>(); if (reverse) { values.Add(NSValue.FromCATransform3D(CATransform3D.MakeScale(1, 1, 1))); } else { values.Add(NSValue.FromCATransform3D(CATransform3D.MakeScale(0, 0, 0))); } keyTimes.Add(new NSNumber(0)); for (int i = 1; i <= bounces; i++) { var scale = (i % 2) > 0 ? (1 + amplitude / i) : (1 - amplitude / i); var time = (float)(i * (1.0 / (bounces + 1))); values.Add(NSValue.FromCATransform3D(CATransform3D.MakeScale(scale, scale, scale))); keyTimes.Add(new NSNumber(time)); } if (reverse) { values.Add(NSValue.FromCATransform3D(CATransform3D.MakeScale(new nfloat(0.0001), new nfloat(0.0001), new nfloat(0.0001)))); } else { values.Add(NSValue.FromCATransform3D(CATransform3D.MakeScale(1, 1, 1))); } keyTimes.Add(new NSNumber(1)); CAKeyFrameAnimation animation = CAKeyFrameAnimation.FromKeyPath("transform"); animation.Values = values.ToArray(); animation.KeyTimes = keyTimes.ToArray(); animation.RemovedOnCompletion = false; animation.FillMode = CAFillMode.Forwards; animation.Duration = AnimationDuration; animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut); return(animation); }
partial void repositionImages(NSObject sender) { foreach (CALayer layer in View.Layer.Sublayers) { if (layer == textContainer || layer == repositionButton.Layer || layer == durationTextField.Layer) { continue; } CGRect imageBounds = layer.Bounds; nfloat X, Y = 0; if (windowIsResizing) { X = layer.Position.X + ((layer.Position.X - imageBounds.Size.Width / 2) / (lastWindowSize.Width - imageBounds.Size.Width) * (Window.Frame.Width - lastWindowSize.Width)); Y = layer.Position.Y + ((layer.Position.Y - imageBounds.Size.Height / 2) / (lastWindowSize.Height - imageBounds.Size.Height) * (Window.Frame.Height - lastWindowSize.Height)); } else { X = (nfloat)random.Next((int)Math.Floor(imageBounds.Width / 2), (int)Math.Floor(layer.SuperLayer.Bounds.GetMaxX() - imageBounds.Width / 2)); Y = (nfloat)random.Next((int)Math.Floor(imageBounds.Height / 2), (int)Math.Floor(layer.SuperLayer.Bounds.GetMaxY() - imageBounds.Height / 2)); } CGPoint newPoint = new CGPoint(X, Y); CAMediaTimingFunction tr = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear); CAMediaTimingFunction tf = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut); CABasicAnimation posAnim = CABasicAnimation.FromKeyPath("position"); posAnim.From = NSValue.FromCGPoint(layer.Position); posAnim.Duration = windowIsResizing ? 0 : durationTextField.FloatValue; posAnim.TimingFunction = windowIsResizing ? tr : tf; CABasicAnimation zPosAnim = CABasicAnimation.FromKeyPath("zPosition"); zPosAnim.From = NSNumber.FromDouble(layer.ZPosition); zPosAnim.Duration = durationTextField.FloatValue; zPosAnim.TimingFunction = tf; layer.Actions = NSDictionary.FromObjectsAndKeys(new NSObject[] { posAnim, zPosAnim }, new NSObject[] { new NSString("position"), new NSString("zPosition") }); CATransaction.Begin(); layer.Position = newPoint; if (!windowIsResizing) { layer.ZPosition = random.Next(-100, 99); } CATransaction.Commit(); } }
//Private methods private void Expand() { if (Flag == MenusArray.Count) { IsAnimating = flase; Timer.Invalidate(); Timer = null; return; } var Tag = 1000 + Flag; ApexMenuItem item = this.ViewWithTag(Tag); var rotateAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("transform.rotation.z"); rotateAnimation.Values = new NSNumber[] { this.ExpandRotation, 0.0f }; rotateAnimation.Duration = AnimationDuration; rotateAnimation.KeyTimes = new NSNumber[] { 0.3f, 0.4f }; var positionAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath("position"); positionAnimation.Duration = AnimationDuration; var path = new CGPath(); path.MoveToPoint(item.StartPoint.X, item.StartPoint.Y); path.AddLineToPoint(item.FarPoint.X, item.FarPoint.Y); path.AddLineToPoint(item.NearPoint.X, item.NearPoint.Y); path.AddLineToPoint(item.EndPoint.X, item.EndPoint.Y); positionAnimation.Path = path; var animationGroup = new CAAnimationGroup(); animationGroup.Animations = new CAAnimation[] { positionAnimation, rotateAnimation }; animationGroup.Duration = AnimationDuration; animationGroup.FillMode = CAFillMode.Forwards; animationGroup.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseIn); //animationgroup.delegate = self; if (Flag == MenusArray.Count - 1) { animationGroup.SetValueForKey("firstAnimation", "id"); } item.Layer.AddAnimation(animationGroup, "Expand"); item.Center = item.EndPoint; Flag++; }
private UnoCoreAnimation CreateCoreAnimation( UIView view, string property, Func <float, NSValue> nsValueConversion, Action prepareAnimation = null, Action endAnimation = null) { var timingFunction = _easingFunction == null? CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear) : _easingFunction.GetTimingFunction(); var isDiscrete = _easingFunction is DiscreteDoubleKeyFrame.DiscreteDoubleKeyFrameEasingFunction; return(prepareAnimation == null || endAnimation == null ? new UnoCoreAnimation(view.Layer, property, _from, _to, StartDelay, _duration, timingFunction, nsValueConversion, FinalizeAnimation, isDiscrete) : new UnoCoreAnimation(view.Layer, property, _from, _to, StartDelay, _duration, timingFunction, nsValueConversion, FinalizeAnimation, isDiscrete, prepareAnimation, endAnimation)); }
void DidTapMyLocation(object sender, EventArgs e) { var location = mapView.MyLocation; if (location == null || !location.Coordinate.IsValid()) { return; } // Access the GMSMapLayer directly to modify the following properties with a // specified timing function and duration. var curve = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut); CABasicAnimation animation; animation = CABasicAnimation.FromKeyPath(Constants.LayerCameraLatitudeKey); animation.Duration = 2.0; animation.TimingFunction = curve; animation.To = NSNumber.FromDouble(location.Coordinate.Latitude); mapView.Layer.AddAnimation(animation, Constants.LayerCameraLatitudeKey); animation = CABasicAnimation.FromKeyPath(Constants.LayerCameraLongitudeKey); animation.Duration = 2.0; animation.TimingFunction = curve; animation.To = NSNumber.FromDouble(location.Coordinate.Longitude); mapView.Layer.AddAnimation(animation, Constants.LayerCameraLongitudeKey); animation = CABasicAnimation.FromKeyPath(Constants.LayerCameraBearingKey); animation.Duration = 2.0; animation.TimingFunction = curve; animation.To = NSNumber.FromDouble(0.0); mapView.Layer.AddAnimation(animation, Constants.LayerCameraBearingKey); // Fly out to the minimum zoom and then zoom back to the current zoom! var zoom = mapView.Camera.Zoom; var keyValues = new [] { NSNumber.FromFloat(zoom), NSNumber.FromFloat(-100), NSNumber.FromFloat(zoom) }; var keyFrameAnimation = (CAKeyFrameAnimation)CAKeyFrameAnimation.FromKeyPath(Constants.LayerCameraZoomLevelKey); keyFrameAnimation.Duration = 2.0; keyFrameAnimation.Values = keyValues; mapView.Layer.AddAnimation(keyFrameAnimation, Constants.LayerCameraZoomLevelKey); }
public void SlideButtonIn() { CABasicAnimation slide = CABasicAnimation.FromKeyPath("position"); slide.From = NSValue.FromCGPoint(new CGPoint(-100.0f, btnShowTime.Layer.Position.Y)); slide.To = NSValue.FromCGPoint(btnShowTime.Layer.Position); slide.Duration = 1.0f; //Set the timing function CAMediaTimingFunction tf = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut); slide.TimingFunction = tf; slide.AnimationStopped += FadeRepeat; // Kick off the animation by adding it to the layer btnShowTime.Layer.AddAnimation(slide, "slideAnimation"); }
void ShowMenuCancelLayerAnimation(double offset) { var group = new CAAnimationGroup(); var animationOffset = new CABasicAnimation(); animationOffset.KeyPath = new NSString("position"); //Calculate position of shadow layer's X when animation was cancelled var offsetX = UIScreen.MainScreen.Bounds.Width * _targetViewControllerOffset; var originalX = _shadowLayer.Frame.GetMidX() - ((offset / TransitionDurationTime) * offsetX); //Start animatiom from cancelled X position animationOffset.From = NSValue.FromCGPoint(new CGPoint(originalX, _shadowLayer.Frame.GetMidY())); //to position when animation began animationOffset.To = NSValue.FromCGPoint(new CGPoint(_shadowLayer.Frame.GetMidX(), _shadowLayer.Frame.GetMidY())); var scaleDiff = _targetViewControllerInitialScale - _targetViewControllerEndScale; //scaling of view when animation was cancelled var cancelledScalePosition = _targetViewControllerInitialScale - (scaleDiff - (offset / TransitionDurationTime) * scaleDiff); //Animate x/y positions from size when was cancelled //To size before interaction begin var animationScaleX = new CABasicAnimation(); animationScaleX.KeyPath = new NSString("transform.scale.x"); animationScaleX.From = NSValue.FromObject(cancelledScalePosition); animationScaleX.To = NSValue.FromObject(_targetViewControllerEndScale); var animationScaleY = new CABasicAnimation(); animationScaleY.KeyPath = new NSString("transform.scale.y"); animationScaleY.From = NSValue.FromObject(cancelledScalePosition); animationScaleY.To = NSValue.FromObject(_targetViewControllerEndScale); group.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.Linear); //It's pretty much random //with small animation time, it's looks good //With long animation time it's not really fit, but still not so bad group.Duration = offset / 6; group.FillMode = CAFillMode.Forwards; group.RemovedOnCompletion = false; group.Animations = new[] { animationScaleX, animationScaleY, animationOffset }; _shadowLayer.AddAnimation(group, "ShowScaleLayerAnimation"); }
public override void ViewDidAppear(bool animated) { base.ViewDidAppear(animated); var pt = layer.Position; layer.Position = new CGPoint(150, 350); var basicAnimation = CABasicAnimation.FromKeyPath("position"); basicAnimation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut); basicAnimation.From = NSValue.FromCGPoint(pt); basicAnimation.To = NSValue.FromCGPoint(new CGPoint(150, 350)); basicAnimation.Duration = 2; layer.AddAnimation(basicAnimation, "position"); }
private void PerformCloseAnimation(bool flash = false) { if (this.isBorderOpen && !this.isAnimating) { this.isBorderOpen = false; this.isAnimating = true; this.borderNode.RemoveAction("pulse"); this.borderNode.Opacity = 1f; // Close animation SCNTransaction.Begin(); SCNTransaction.AnimationDuration = GameBoard.AnimationDuration / 2f; SCNTransaction.AnimationTimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut); this.borderNode.Opacity = 0.99f; SCNTransaction.SetCompletionBlock(() => { SCNTransaction.Begin(); SCNTransaction.AnimationDuration = GameBoard.AnimationDuration / 2f; SCNTransaction.AnimationTimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut); foreach (var segment in this.borderSegments) { segment.Close(); } SCNTransaction.SetCompletionBlock(() => { this.isAnimating = false; }); SCNTransaction.Commit(); }); SCNTransaction.Commit(); if (flash) { var waitAction = SCNAction.Wait(GameBoard.AnimationDuration * 0.75f); var fadeInAction = SCNAction.FadeOpacityTo(0.6f, GameBoard.AnimationDuration * 0.125f); var fadeOutAction = SCNAction.FadeOpacityTo(0f, GameBoard.AnimationDuration * 0.125f); this.FillPlane.RunAction(SCNAction.Sequence(new SCNAction[] { waitAction, fadeOutAction, fadeInAction })); } } }
protected void PerformEnemyDieWithExplosion(SCNNode enemy, SCNVector3 direction) { var explositionScene = SCNScene.FromFile("art.scnassets/enemy/enemy_explosion.scn"); if (explositionScene != null) { SCNTransaction.Begin(); SCNTransaction.AnimationDuration = 0.4f; SCNTransaction.AnimationTimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut); SCNTransaction.SetCompletionBlock(() => { explositionScene.RootNode.EnumerateHierarchy((SCNNode node, out bool stop) => { stop = false; if (node.ParticleSystems != null) { foreach (var particle in node.ParticleSystems) { enemy.AddParticleSystem(particle); } } }); // Hide if (enemy.ChildNodes.Length > 0) { enemy.ChildNodes[0].Opacity = 0f; } }); direction.Y = 0; enemy.RemoveAllAnimations(); enemy.EulerAngles = new SCNVector3(enemy.EulerAngles.X, enemy.EulerAngles.X + (float)Math.PI * 4.0f, enemy.EulerAngles.Z); enemy.WorldPosition += SCNVector3.Normalize(direction) * 1.5f; this.PositionAgentFromNode(); SCNTransaction.Commit(); } else { Console.WriteLine("Missing enemy_explosion.scn"); } }
void showInactiveBorder() { CATransaction.Begin(); CATransaction.CompletionBlock = () => { this.activeBorder.Layer.Opacity = 0; }; var anim2 = CABasicAnimation.FromKeyPath("transform"); var fromTransform = CATransform3D.MakeScale(1, 1, 1); var toTransform = CATransform3D.MakeScale(0.01f, 1, 1); anim2.From = NSValue.FromCATransform3D(fromTransform); anim2.To = NSValue.FromCATransform3D(toTransform); anim2.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut); anim2.FillMode = CAFillMode.Forwards; anim2.RemovedOnCompletion = false; this.activeBorder.Layer.AddAnimation(anim2, "_activeBorder"); CATransaction.Commit(); }