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 ...
随机推荐
- 应用之间进行跳转,ComponentName的方式
从应用A跳转到应用B, 关键代码如下: 有以下几个注意点: 1.ComponentName cn = new ComponentName("com.terry", "co ...
- php 学习笔记 数组3
15.使用数组 1).并集(union) array_merge(array1,array2,array3..) 函数把两个或多个数组合并为一个数组,后面覆盖前面 2). 交集(intersecti ...
- ognl中的#、%和$
多学点,谢谢兄弟 原文地址:ognl中的#.%和$作者:百合 ognl中的#.%和$ #.%和$符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分.在这里笔者简单介绍它们的相 ...
- 设置QPushButton的平面与突出(遍历控件)
#include "ui_maindialog.h" #include "maindialog.h" #include <QState> #incl ...
- Tri_integral Summer Training 8 总结
比赛链接 题目 B C E F G I 这是孟加拉国的区域赛. 开场ss读懂了c发现是个水题,于是去敲,结果手贱wa了一炮,不过很快就修正了错误.B题过了不少,我去读,发现是个水题,意识让Moor敲. ...
- 基于visual Studio2013解决算法导论之048红黑树
题目 红黑树 解决代码及点评 // 红黑树.cpp : 定义控制台应用程序的入口点. // #include <stdio.h> #include <stdlib.h> ...
- CheckBox控件
前台代码: <asp:CheckBox ID="CheckBox1" runat="server" Text ="苹果"/> & ...
- 网页制作之JavaScript部分 1 - 语法(复制教材内容)
一.简介 1.JavaScript它是个什么东西? 它是个脚本语言,需要有宿主文件,他的宿主文件是html文件. 2.它与Java有什么关系? 没有什么直接联系,java是Sun公司(已经没有了,被O ...
- BZOJ 3631: [JLOI2014]松鼠的新家( 树链剖分 )
裸树链剖分... ------------------------------------------------------------------- #include<bits/stdc++ ...
- SED修改指定行
一个文件:cat aa #如果第三行是5的话将改为8,很明显第三行是5所以 结果改变 [root@remote ~]# sed -e '3s/5/8/' aa [root@remote ~]# #如果 ...