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 ...
随机推荐
- A - Number Sequence(矩阵快速幂或者找周期)
Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * ...
- win7 php 配置多个网站
1.在C:\WINDOWS\system32\drivers\etc目录下,打开Hosts 添加A站和B站的DNS映射,如127.0.0.1 local.zhengxin.com127.0.0.1 l ...
- Altera FPGA中的pin进一步说明
最近END china上的大神阿昏豆发表了博文 <FPGA研发之道(25)-管脚>,刚好今天拿到了新书<深入理解Altera FPGA应用设计>第一章开篇就讲pin.这里就两者 ...
- Mybatis3 框架理解
最近工作比较闲,维护一个政府机关的短信发送平台,大部分业务逻辑都在Oracle数据库上,但自己明明应聘的是Java开发啊!!!整天写存储过程的我还是有一颗写高级语言的心啊!!!好吧!!!先找个数据库方 ...
- 各国iPhone5系列最新裸机价格
美国/加拿大/中国香港/中国大陆iPhone5系列最新裸机价格
- JAVA操作Hbase基础例子
package com.cma.hbase.test; import java.io.BufferedInputStream; import java.io.BufferedReader; impor ...
- 2^x mod n = 1 【杭电-HDOJ-1395】 附题
/* 2^x mod n = 1 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 一天一个类,一点也不累 之 Set接口
我们的口号是:一天一个类,一点也不累-- 再次回忆一下集合相关的类图. 官方API上这样介绍这个接口: A collection that contains no duplicate elements ...
- the Meta-Object Compiler (moc)
the Meta-Object Compiler (moc) 元对象编译器是处理Qt的C++扩展的程序. moc工具读取C++头文件,如果它找到一个或者多个类声明包含Q_OBJECT宏.它生为那些类成 ...
- netbeans 将项目打包生成单个可执行的 jar
原文:netbeans 打包生成 jar 文件页里找到build.xml文件,打开在</project>前 加入以下代码保存之 <target name="package- ...