Tag: 快速

快速假设三angular函数的计算

是否有可能在Swift for iOS中更改设置,属性等,以便它假定三angular计算的度数而不是弧度? 例如sin(90)将被评估为1 。 我有: let pi = 3.14 var r2d = 180.0/pi var d2r = pi/180 …但是一些长三angular方程的转换正在变得非常重要。

SpriteKit中的攻击button

我对Xcode稍微有点新鲜,并且为我的课程制作了2D游戏。 现在我一直在button的问题。 我刚刚得到了解决scheme,为什么我的跳转button不起作用,但我也有一个攻击button。 我已经设置了button的代码在屏幕上,并按下时做图像更改。 但是,我不知道用什么代码来把播放器的图像更改为跳转animation。 我也不知道如何为它和敌人build立冲突,这样攻击animation就会被击中。 所以我的问题是,我怎样才能让button开始跳跃animation,我怎么能设置碰撞摧毁敌人击中? 这是我的代码到目前为止: override func sceneDidLoad() { //Setup start button jumpButton = SKSpriteNode(texture: jumpButtonTexture) jumpButton.position = CGPoint(x: 1850, y: 130) jumpButton.size = CGSize(width: 200, height: 200) jumpButton.zPosition = 20 addChild(jumpButton) //Setup start button attackButton = SKSpriteNode(texture: attackButtonTexture) attackButton.position = CGPoint(x: 1550, y: 130) attackButton.size = CGSize(width: 200, height: 200) attackButton.zPosition […]

在Swift中初始化时调用实例方法

我是新来的Swift,并想要使用像这样的实例方法初始化一个对象的成员variables: class MyClass { var x: String var y: String func createY() -> String { self.y = self.x + "_test" // this computation could be much more complex } init(x: String) { self.x = x self.y = self.createY() } } 基本上,我不是在init方法中内联所有的初始化代码,而是要将初始化代码y提取到专用方法createY并在init调用此实例方法createY 。 但是,Swift编译器(Xcode 6.3 beta中的Swift 1.2编译器)抱怨: 在super.init初始化自我之前,在方法调用“xxx”中使用'self' 这里'xxx'是实例方法(createY)的名称。 我可以理解Swift编译器在抱怨什么,以及它想要解决的潜在问题。 但是,我不知道如何解决这个问题。 在Swift中调用初始化代码的其他实例方法的正确方法是什么? 目前,我使用下面的技巧作为解决方法,但我不认为这是这个问题的习惯解决scheme(这个解决方法需要y被声明为使用var而不是let ,这也让我感到不安): init(x: String) […]

以有限的旋转速度触摸旋转精灵

我试图让我的精灵节点旋转手指触摸。 到目前为止,我可以做到这一点,但我想要的是,我的节点有一个“旋转速度”。 所以我计算angular度的长度,然后设置一个不同的时间来旋转它(如果弧长,这将需要时间…)。 这是我的代码: override func touchesMoved(touches: NSSet, withEvent event: UIEvent) { _isTouched = true for touch in touches { let location:CGVector = touch.locationInNode(self) – miner.position miner.weaponRotation = location.angle() – CGFloat(M_PI_2) } } var wantedRotation: CGFloat { get { return _wantedRotation } set(rotation) { if rotation > CGFloat(M_PI) || rotation < -CGFloat(M_PI) { _wantedRotation = […]

计算Swift中两个CLLocation点之间的方位

我试图计算两个CLLocation点之间的方式在快速唯一的代码。 我遇到了一些困难,并认为这是一个非常简单的function。 堆栈溢出似乎没有列出任何东西。 func d2r(degrees : Double) -> Double { return degrees * M_PI / 180.0 } func RadiansToDegrees(radians : Double) -> Double { return radians * 180.0 / M_PI } func getBearing(fromLoc : CLLocation, toLoc : CLLocation) { let fLat = d2r(fromLoc.coordinate.latitude) let fLng = d2r(fromLoc.coordinate.longitude) let tLat = d2r(toLoc.coordinate.latitude) let tLng = d2r(toLoc.coordinate.longitude) […]

在Swift中创build一个UIView的副本

由于对象是引用types,而不是值types,所以如果将UIView设置为与另一个UIView相同,则视图是相同的对象。 如果你修改一个,你也会修改其他的。 我有一个有趣的情况,我想添加一个UIView作为子视图在另一个视图,然后我做了一些修改,这些修改不应该影响原来的UIView 。 我怎样才能做一个UIView的副本,所以我可以确保我添加副本作为一个子视图,而不是对原始UIView的引用? 请注意,我不能以创build原始相同的方式重新创build视图,我需要一些方法来创build任何UIView对象的副本。

添加Swift文件来testing目标没有修复unit testing

我看了很多博客,并尝试了很多东西,让我的Swiftunit testing在Xcode 6.0.1(或6.1)中工作。 我试图访问我的应用程序的目标中的类,所以我写了这一行: var vc: LoginViewController! 当然,我得到“使用未声明的types”LoginViewController'“错误。 然后我尝试将LoginViewController添加到我的testing目标,但是随后在我的项目中的其他类上出现“使用未parsing的标识符”错误。 所以我尝试将这些类添加到我的testing目标中,但是我最终得到了一个看似无穷无尽的错误来源,如下面的屏幕截图: 宣布我所有的类都是公开的,导致其他的错误,似乎是不好的做法。 是否有任何依赖许多框架和类的Swift项目中包含unit testing? 我只是想从几乎完全像本文中的代码开始。

内存泄漏时使用NSURLSession.downloadTaskWithURL

所以我在斯威夫特的努力中遇到了另一个障碍。 我正在尝试将多个图像加载到图像库中 – 除了一件事情之外,所有的工作都很好。 尽pipe我清除了图像,但应用程序的内存使用仍在不断增长和增长。 基本上所有的代码基本上,我发现这是由我的图像加载脚本引起的: func loadImageWithIndex(index: Int) { let imageURL = promotions[index].imageURL let url = NSURL(string: imageURL)! let urlSession = NSURLSession.sharedSession() let query = urlSession.downloadTaskWithURL(url, completionHandler: { location, response, error -> Void in }) query.resume() } 正如你所看到的,这段代码现在基本上什么都没有。 然而每次我打电话时,我的应用程序内存使用量都在增长。 如果我注释掉查询,内存使用情况不会改变。 我已经阅读了几个类似的问题,但都涉及使用一个代表。 那么,在这种情况下,没有代表还有内存问题。 有谁知道如何消除它,是什么造成的? 编辑:这是一个完整的testing类。 似乎内存只在图像可以加载时才会增长,就像指向图像的指针永远保存在内存中一样。 当图像没有find时,没有任何反应,内存使用率保持低。 也许有些提示如何清理这些指针? import UIKit class ViewController: UIViewController { override […]

在Swift中反转地理编码位置

我的input是一个经纬度。 我需要使用swift的reverseGeocodeLocation函数,给我地方的输出。 我试过的代码是 println(geopoint.longitude) println(geopoint.latitude) var manager : CLLocationManager! var longitude :CLLocationDegrees = geopoint.longitude var latitude :CLLocationDegrees = geopoint.latitude var location: CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude) println(location) CLGeocoder().reverseGeocodeLocation(manager.location, completionHandler: {(placemarks, error) -> Void in println(manager.location) if error != nil { println("Reverse geocoder failed with error" + error.localizedDescription) return } if placemarks.count > 0 { let pm […]

Swift / SpriteKit多重碰撞检测?

你好。 我有一个多重碰撞问题。 有一颗子弹击中敌人(红色矩形)。 然后,它++的分数。 有一个螺旋形(红色的圆圈),当敌人(红色矩形)触及它时触发场景结束。 在这种情况下,当敌人撞上螺旋状时,它就起作用,场景结束,我们进入菜单屏幕。 但是,当子弹击中敌人,同样的事情发生,我不知道为什么。 现在,这是我的代码: struct PhysicsCategory { static let None : UInt32 = 0 static let All : UInt32 = UInt32.max static let enemyOne : UInt32 = 0b1 static let enemyTwo : UInt32 = 0b1 static let bullet : UInt32 = 0b10 static let spiral : UInt32 = 0b111 } spiral.physicsBody […]