所以我今天更新到Xcode 6 beta 5,并注意到我几乎所有Apple类的子类都收到了错误.
错误说明:
类'x'不实现其超类的必需成员
这是我选择的一个例子,因为这个类目前非常轻量级,因此很容易发布.
class InfoBar: SKSpriteNode { //Error message here
let team: Team
let healthBar: SKSpriteNode
init(team: Team, size: CGSize) {
self.team = team
if self.team == Team.TeamGood {
healthBar = SKSpriteNode(color: UIColor.greenColor(), size:size)
}
else {
healthBar = SKSpriteNode(color: UIColor.redColor(), size:size)
}
super.init(texture:nil, color: UIColor.darkGrayColor(), size: size)
self.addChild(healthBar)
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,为什么我收到此错误,我该如何解决?我没有实施什么?我正在打电话给指定的初始化程序.
我发现它UIButtons
不能很好地工作SKScene
,所以我试图子类化SKNode
来制作一个按钮SpriteKit
.
我希望它工作的方式是,如果我初始化一个按钮SKScene
并启用触摸事件,那么按钮将在我SKScene
按下时调用我的方法.
我很感激任何能让我找到解决这个问题的建议.谢谢.
此代码适用于第一个XCode 6 Beta,但在最新的Beta版本中,它无法正常运行并出现此类错误Must call a designated initializer of the superclass SKSpriteNode
:
import SpriteKit
class Creature: SKSpriteNode {
var isAlive:Bool = false {
didSet {
self.hidden = !isAlive
}
}
var livingNeighbours:Int = 0
init() {
// throws: must call a designated initializer of the superclass SKSpriteNode
super.init(imageNamed:"bubble")
self.hidden = true
}
init(texture: SKTexture!) {
// throws: must call a designated initializer of the superclass SKSpriteNode
super.init(texture: texture)
}
init(texture: SKTexture!, color: UIColor!, size: CGSize) {
super.init(texture: texture, color: …
Run Code Online (Sandbox Code Playgroud) 目前正在开发一个通用的SpriteKit项目.我将支持以下设备:
iPhone 4/s,iPhone 5/c/s,iPhone 6,iPhone 6+
iPad非ret,iPad视网膜
我对iPhone部分感到困惑.对于iPhone的4种不同屏幕分辨率,我的背景精灵已经有4个版本.但是哪个呢?
我知道3x用于6+,我认为5/c/s用于Retina 4 2x,但我不知道iPhone4/s在哪里,6用.谁知道?
旁注,当我在我的xcassets文件中创建一个Launch Image时,我会看到这些选项,它基本上包含了我支持的所有设备.只是想知道为什么在创建图像集时也不是这样
另外,你们如何为通用应用程序创建图像/精灵?现在新的iPhone 6和6 plus已经出来了,我还有2个支持的分辨率,这对我来说仍然很困惑,因为我还是初学者.
我正在使用Xcode 6,iOS 8 beta 5中的SpriteKit.所有内容都在iPhone 4S模拟器上完成并完美运行,但是当切换到5S时,屏幕底部的元素被切断.
根据我的理解,iPhone屏幕的左下角应该是CGPoint(0,0),但是在通过将坐标打印到控制台来检查位置后,我可以点击左边角落的最低点(5, 44).在我的场景设置中有什么问题导致了这个吗?
没有对GameViewController文件进行任何更改,甚至在我剥离GameScene文件后问题仍然存在.
任何人都可以至少指出我正确的方向吗?
我想在我正在制作的游戏中添加一个得分到我的场景顶部.分数将根据您的持续时间而定,并且每秒都会增加.我在这里先向您的帮助表示感谢!
import SpriteKit
class easyScene: SKScene {
let scrollBarEasyBottom = SKSpriteNode(imageNamed: "scrollBarEasyBottom")
let scrollBarEasyTop = SKSpriteNode(imageNamed: "scrollBarEasyTop")
let ball = SKSpriteNode(imageNamed: "ball")
var origSBEBpositionX = CGFloat(0)
var origSBETpositionX = CGFloat(0)
var maxSBEBX = CGFloat(0)
var SBEBSpeed = 5
var maxSBETX = CGFloat(0)
var SBETSpeed = 5
var score = 0
var timer: NSTimer?
var scoreText = SKLabelNode(fontNamed: "Kailasa")
override func didMoveToView(view: SKView) {
println("Easy Scene is the location")
self.backgroundColor = UIColor.blackColor()
self.scrollBarEasyBottom.position = CGPoint(x:0, y:270)
self.addChild(self.scrollBarEasyBottom)
self.scrollBarEasyBottom.yScale = 0.2
self.origSBEBpositionX …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Sprite Kit设置一些弹性碰撞.正如我在Sprite Kit Physics Collision Issue中提到的那样,多个物体彼此靠近的情况存在问题
我对碰撞情况的时机感到困惑.
我试着设置dynamic
到NO
在-didBeginContact:
委托方法,计算最终速度,然后在-didEndContact:
设定的dynamic
到YES
,然后正确设置速度.
我希望它在碰撞之外是动态的原因是因为我想要摩擦/重力等.订单/逻辑有什么问题?我看了一下-didSimulatePhysics
方法,但它似乎不是要走的路.
我试图检测我的精灵节点是否被触摸,我不知道从哪里开始.
let Pineapple = SKSpriteNode(imageNamed: "Pineappleimg")
Pineapple.userInteractionEnabled = true
Pineapple.position = CGPoint(x: CGRectGetMidX(self.frame) - 200, y: CGRectGetMidY(self.frame));
self.addChild(Pineapple)
Run Code Online (Sandbox Code Playgroud) 基于下面的图像(我使用不同颜色的圆和平面,所以他们可以看到,但最终颜色将是相同的),使用Swift和Spritekit,我试图创建一个圆形对象进入的效果厚物质(不一定是粘性的)并与厚物质分离.基本上,当圆形物体分离时,它会在形成圆形时从平坦表面拉开.我想使用图像动画帧,但由于对象是具有物理主体的SKSpriteNodes,因此这将使得对象与动画的碰撞非常困难.另一种方法是使用CAAnimation,但我不知道如何将这与SKSpriteNodes与物理实体结合起来.如何使用上述任何方法或不同方法创建此分离效果?
UPDATE
下图显示了当圆形物体进入厚物质直至其浸没时,厚物质表面的变化.
如何在Sprite-kit中划一条线?例如,如果我想在cocos2d中绘制一条线,我可以轻松使用 ccDrawLine();
sprite-kit中有相同的东西吗?
sprite-kit ×10
ios ×8
swift ×5
skspritenode ×2
xcode6 ×2
ios7 ×1
objective-c ×1
skshapenode ×1
touch ×1
touchesbegan ×1
uibutton ×1
xcasset ×1
xcode ×1