Xamarin iOS 让图片动起来,做一个简单的俄罗斯轮盘

1. 前言

让图片不止是图片,让图片动起来。透过图片的animation以及随机数来完成一个简易版的轮盘游戏。

2. 目的

藉由这个APP的实作过程,练习使用animation及随机数。

3. 开始前准备

开发工具:Xamarin studio / Visual Studio

测试环境:iOS手机 / XCode

 

4. 本文

首先开启一个Xamarin iOSSingle View App项目。

添加一张手指的图片及一张轮盘的图片到项目路径下






在页面加入一个按钮并添加action event如下图


Xamarin iOS 让图片动起来,做一个简单的俄罗斯轮盘_第1张图片


编辑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/


转载自:昕力大学

 

你可能感兴趣的:(Xamarin iOS 让图片动起来,做一个简单的俄罗斯轮盘)