Swift - 在界面上生成81个随机红,灰色圆点(SpriteKit游戏开发)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
import SpriteKit//圆点类型枚举enum PointType:Int{ //灰0 红1 case gray=0,red;}class GaPoint:SKSpriteNode{ //自身索引 var index = 0 //圆点类型,默认为灰色点 var type = PointType.gray //圆点内的文本节点 var label:SKLabelNode? //设置文本节点的文字 func onSetLabel(i:String){ if label == nil { //文本节点的字体 label = SKLabelNode(fontNamed:"Chalkduster") //文本节点的字体大小 label!.fontSize = 22 //文本节点的位置 label!.position = CGPointMake(0, -10) //取消文本节点的交互性 label!.userInteractionEnabled = false //将文本节点加入圆点类 self.addChild(label!) } //设置文本节点的内容 label!.text = i }} |
3,圆点容器类 PointContainer.swift
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
import SpriteKitclass PointContainer:SKNode,UIAlertViewDelegate{ //灰点纹理 let textPoint1 = SKTexture(imageNamed: "pot1") //红点纹理 let textPoint2 = SKTexture(imageNamed: "pot2") //记录所有圆点的数组 var arrPoint = [GaPoint]() func onInit(){ for i in 0...80 { //默认为灰色点 let point = GaPoint(texture: textPoint1) //对行数除以9取整,用来为下面判断奇偶行做准备 let row = Int(i/9) //列 let col = i%9 //x轴位移 var gap = 0 //奇偶行判断 if Int(row % 2) == 1 { gap = Int(textPoint1.size().width)/2 }else { } //取得纹理尺寸,用作计算位置 let width = Int(textPoint1.size().width) //计算x坐标 let x = col * (width+5) - (9*width)/2 + gap //计算y坐标 let y = row * width - (9*width)/2 //设置位置 point.position = CGPointMake(CGFloat(x),CGFloat(y)) //记录索引 point.index = i point.onSetLabel("\(i)") //设置z轴排序 point.zPosition = 10 //将点加入PointContainer中 self.addChild(point) //将点加入数组中 arrPoint.append(point) } //随机生成红点 onCreateRed() } //随机生成红色的点 func onCreateRed(){ for i in 0...8 { let r1 = Int(arc4random() % 9) + i * 9 let r2 = Int(arc4random() % 9) + i * 9 onSetRed(r1) onSetRed(r2) } } //改变圆点类型 func onSetRed(index:Int){ arrPoint[index].type = PointType.red arrPoint[index].texture = textPoint2 }} |
4,主界面 GameScene.swift
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
import SpriteKitclass GameScene: SKScene { let pointContainer = PointContainer() //当切换到这个场景视图后 override func didMoveToView(view: SKView) { //将Images.xcassets中的bg.jpg 来制作背景 var bg = SKSpriteNode(imageNamed: "bg") //设置位置 bg.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame)); self.addChild(bg) //设置圆点容器 pointContainer.position = CGPoint(x:CGRectGetMidX(self.frame)-10, y:CGRectGetMidY(self.frame)-150); self.addChild(pointContainer) pointContainer.onInit() } //响应屏幕点击的方法 override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { }} |
Swift - 在界面上生成81个随机红,灰色圆点(SpriteKit游戏开发)的更多相关文章
- Swift - 多层无缝循环滚动背景(SpriteKit游戏开发)
在游戏开发中,比如跑酷游戏.我们需要实现背景的无限循环滚动,来营造运动的效果.除了单层的背景滚动,还有视差滚动. 视差滚动是指让多层背景以不同的速度移动,形成立体的效果,从而带来非常出色的视觉体验. ...
- Swift - 跑酷游戏开发(SpriteKit游戏开发)
一,下面演示了如何开发一个跑酷游戏,实现的功能如下: 1,平台工厂会不断地生成平台,并且向左移动.当平台移出游戏场景时就可将其移除. 2,生成的平台宽度随机,高度随机.同时短平台踩踏的时候会下落. 3 ...
- Swift - 跳跃吃苹果游戏开发(SpriteKit游戏开发)
下面通过一个样例演示如何实现飞行道具的生成,以及道具碰撞拾取. 样例说明: 1,屏幕从右到左不断地生成苹果飞过来(苹果高度随机) 2,点击屏幕可以让熊猫跳跃 3,熊猫碰到苹果,苹果消失 运行效果: 样 ...
- Swift - 给游戏添加背景音乐和音效(SpriteKit游戏开发)
游戏少不了背景音乐和音效.下面我们通过创建一个管理音效的类,来实现背景音乐的播放,同时点击屏幕可以播放相应的音效. 声音管理类 SoundManager.swift 1 2 3 4 5 6 7 8 9 ...
- Swift - 使用atlas图集实现动画效果(SpriteKit游戏开发)
我们通常继承SKSpriteNode来实现游戏中的元素,除了可以使用图片作为纹理皮肤外.我们还可以使用动画纹理集来实现动画播放. 动画纹理集的制作也很简单,首先要有一套动画序列图,然后把它们放到一个文 ...
- Swift - 获取屏幕点击坐标下所有对象(SpriteKit游戏开发)
对于场景内对象元件的点击响应,我们可以在场景的touchesBegan()方法中内统一处理. SKScene中touchesBegan()是响应屏幕点击的方法,在这里面我们可以先获取点击位置下所有的对 ...
- Swift - 创建并设置背景(SpriteKit游戏开发)
1,先把背景图片bg.jpg,bg@2x.jpg直接拖进Images.xcassets中 2,设置如下代码(背景图直接铺满整个屏幕) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- python之gui-tkinter可视化编辑界面 自动生成代码
首先提供资源链接 http://pan.baidu.com/s/1kVLOrIn#list/path=%2F
- 基于MVC4+EasyUI的Web开发框架经验总结(10)--在Web界面上实现数据的导入和导出
数据的导入导出,在很多系统里面都比较常见,这个导入导出的操作,在Winform里面比较容易实现,我曾经在之前的一篇文章<Winform开发框架之通用数据导入导出操作>介绍了在Winform ...
随机推荐
- 在VS上配置OpenCV
这几篇帖子讲的挺仔细的,而且不坑,结合看看就没问题了~~ http://www.cnblogs.com/cuteshongshong/p/4057193.html http://my.phirobot ...
- BZOJ 3155: Preprefix sum( 线段树 )
刷刷水题... 前缀和的前缀和...显然树状数组可以写...然而我不会, 只能写线段树了 把改变成加, 然后线段树维护前缀和, 某点p加, 会影响前缀和pre(x)(p≤x≤n), 对[p, n]这段 ...
- hdu1284经典钱币兑换问题
钱币兑换问题. 题目 http://acm.hdu.edu.cn/showproblem.php?pid=1284 完全背包. 这种是求背包问题最多的组合方案 参考了一些资料 http://blo ...
- Python之路 Day12
day12主要内容:html基础.CSS基础 HTML HTML概述: HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标 ...
- Chapter 7 代理模式
代理模式:为其它对象提供一种代理以控制对这个对象的访问. 代码: package xiao; class Girl{ private String name; public void setName( ...
- perl 5.22手动安装Mysql DBI和DBD
mysql 手动安装DBI 和DBD: DBI版本: [root@dr-mysql01 DBD-mysql-4.033]# perl -MDBI -le 'print $DBI::VERSION;' ...
- Android 电话自己主动接听和挂断具体解释
1.通过aidl及反射实现挂断电话 详细分三步: (1)ITelephony.aidl ,必须新建com.android.internal.telephony包并放入ITelephony.aidl文件 ...
- 富文本编辑器 - wangEditor 上传图片
效果: . 项目结构图: wangEditor-upload-img.html代码: <html> <head> <title>wangEditor-图片上传< ...
- iOS UITextField垂直居中
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
- JVM参数说明(转)
做了这么多年java,自以为算是熟悉,其实还差得远,啥也别说了,还是踏踏实实地学吧.今天总结一下常用的JVM的启动参数. 参数类别 参数项 说明 标准参数(-,所有的JVM实现都必须实现这些参数的功能 ...