1. 前言
让图片不止是图片,让图片动起来。透过图片的animation以及随机数来完成一个简易版的轮盘游戏。
2. 目的
藉由这个APP的实作过程,练习使用animation及随机数。
3. 开始前准备
开发工具:Xamarin studio / Visual Studio
测试环境:iOS手机 / XCode
4. 本文
首先开启一个Xamarin iOSSingle View App项目。
添加一张手指的图片及一张轮盘的图片到项目路径下
在页面加入一个按钮并添加action event如下图
编辑ViewController
初始化物件
CALayer layer; //是否为初次执行,初次执行起始值为0 bool init = false; //记住前次结果值 float lastFloat = 0f;
加载轮盘图片及手指图片
//轮盘图片 layer = new CALayer (); layer.Bounds = new CGRect (0, 0, 300, 300); layer.Position = new CGPoint (190, 340); layer.Contents = UIImage.FromFile ("wheel.png").CGImage; layer.ContentsGravity = CALayer.GravityResizeAspectFill; View.Layer.AddSublayer (layer); //指针图片 var imageView = new UIImageView (UIImage.FromBundle("hand_pointer_down.png")); imageView.Frame = new CoreGraphics.CGRect ( 40, 0, imageView.Image.CGImage.Width, imageView.Image.CGImage.Height ); View.Add (imageView);
编辑按钮动作
//定义随机数值 double dou = new Random().NextDouble(); //轮盘旋转圈数 float round = 200f; //起始值初始化 float v1 = 0f; //结果值初始化, float v2 = (float)Math.PI * round * Convert.ToSingle(dou); //如果已执行过,下次旋转的初始值为此次执行结果值 if(init == true){ v1 = lastFloat; } //Creates basic moving animation //定义animation动作 var basicAnimation = CABasicAnimation.FromKeyPath ("transform.rotation"); basicAnimation.TimingFunction = CAMediaTimingFunction.FromName (CAMediaTimingFunction.EaseInEaseOut); //定义轮盘初始值 basicAnimation.From = NSNumber.FromFloat (v1); //定义轮盘结果值 basicAnimation.To = NSNumber.FromFloat (v2); //animation运行时间,数字越大动作越慢 basicAnimation.Duration = 2; init = true; lastFloat = v2; //锁定结束位置 layer.Transform = CATransform3D.MakeRotation (lastFloat, 0, 0, 1); layer.AddAnimation(basicAnimation, "transform.rotation");
执行结果
5. 参考来源
Create a Keyframe Animationhttps://developer.xamarin.com/recipes/ios/animation/coreanimation/create_a_keyframe_animation/
转载自:昕力大学