jjzjj

ios - SKNode 上的 removeFromParent 是否会破坏实例?

阅读Apple关于removeFromParent的文档说:“从其父节点中删除接收节点。”这是否意味着节点被销毁了?我是否需要将节点设置为NULL以释放其内存? 最佳答案 当没有强引用持有时,对象(在ARC下)被释放。作为子节点的节点是强引用,删除节点通常会释放该节点,除非在其他地方有强引用。您可以通过实现-(void)dealloc并在其中设置断点或NSLog语句来轻松验证这一点。 关于ios-SKNode上的removeFromParent是否会破坏实例?,我们在StackOverf

ios - SpriteKit : SKNode zRotation + Anti-Aliasing

我创建了一个只有填充颜色和大小的SKSpriteNode,然后旋转它:SKSpriteNode*myNode=[SKSpriteNodespriteNodeWithColor:[SKColorgrayColor]size:CGSizeMake(100,100)];myNode.zRotation=0.2*M_PI;如何为我的SKSpriteNode启用抗锯齿?现在,灰色方block的边缘看起来呈锯齿状。我已经发现:当我创建一个灰色的100x100像素PNG并使用spriteNodeWithImageNamed:时,边缘看起来也是锯齿状的。如果我在灰色方形PNG周围添加一个1px的透明边

ios - SKNode 位置不工作,总是默认 0,0

我正在开发的SpriteKit游戏开发得相当好,添加了一些代码以将新的SKSpriteNode添加到场景中,(与我在代码中的许多其他地方所做的一样,但由于某种原因这次是只是忽略了我为节点设置的位置,我已经通过显式.position=CGPointMake(x,y)尝试了它并尝试了[nodesetPosition:CGPointMake(x,y)]都不起作用...节点确实被添加到场景中,但总是在0,0,无论我做什么,都检查了x和y以确保它们有效并在场景范围内,并尝试使用显式float等,无论我做什么,这个节点总是显示在0,0处,这完全没有意义。在游戏过程中,我所做的一切与我对许多其他节点

ios - 缩放不一致的 SKNode

我已经创建了自己的解决方案,用于在不缩放整个场景的情况下放大或缩小特定的SKNode,它似乎主要按照我期望的方式工作,但我希望得到2个值得注意的异常(exception)在这里输入。首先是代码(这个控制语句在touchesMoved方法中):if(touches.count==2){//thismeanstherearetwofingersonthescreenNSArray*fingers=[touchesallObjects];CGPointfingOneCurr=[fingers[0]locationInNode:self];CGPointfingOnePrev=[fingers

ios - 什么最能代表角色 SKNode 或 SKSpriteNode?

目前,我的类(class)看起来像@interfaceCharacter:SKNode@property(nonatomic,assign)CGFloatwalkingSpeed;@实现角色+(Character*)characterWithLevel:(BaseLevel*)level{return[[selfalloc]initWithLevel:level];}-(id)initWithLevel:(BaseLevel*)level{if(self=[superinit]){_sprite=[SKSpriteNodespriteNodeWithImageNamed:level.h

ios - 跳转到节点层次结构中的特定 SKNode

我注意到SKNode方法children和childNodeWithName:顾名思义只返回查询节点正下方的子节点的结果。即[rootchildren];将返回包含节点@[CUBE1,CUBE2,CUBE3]的NSArray。在下图中,我想从ROOT(SKScene)级别向下到SPHERE2,以便我可以快速访问该节点子节点。我希望[rootchildNodeWithName:@"SPHERE2"];会遍历整个层次结构并返回指向SPHERE2的指针我的问题:是否有什么我遗漏的东西可以让我在指定点跳入节点树(即使用节点名称)我可以使用属性来存储指向树中重要位置的指针,然后使用它们来访问和处

ios - 为什么重复创建和删除SKShapeNode和SKNode会导致内存泄漏?

使用Xcode自带的spritekit模板,我修改场景如下:#import"MyScene.h"@interfaceMyScene()@property(nonatomic,strong)SKNode*floor;@end@implementationMyScene-(id)initWithSize:(CGSize)size{if(self=[superinitWithSize:size]){/*Setupyourscenehere*/}returnself;}-(void)update:(CFTimeInterval)currentTime{/*Calledbeforeeachfra

ios - 当 SCNScene overlaySKScene 的 child 时查找触摸的 SKNode

我有一个SCNScene用于我正在构建的3D游戏。我使用SCNScene.overlaySKScene在这个场景上放置了一个HUD。为了在我的3D场景上接收点击,我使用了手势识别器和hitTest,这工作正常。我正在尝试确定我现在点击添加到HUDSKScene的SKSpriteNodes。这不适用于手势识别器。看过WWDC2014Banana示例后,我认为我在使用替代的touchesBegan方法(如下)时没有做任何不同的事情。overridefunctouchesBegan(touches:NSSet,withEventevent:UIEvent){println("touchesB

swift - 转换回 gamescene.swift 导致错误 "' 试图添加一个已经有父节点的 SKNode”

我的应用包含两个场景。Playscene.swift和gamescene.swift。从游戏场景到游戏场景(游戏发生的地方)的转换非常完美。然而,一旦游戏结束,我就会出现一个“重播”按钮,允许用户返回到gamescene.swift。转换回来后它崩溃并出现错误“试图添加一个已经有父节点的SKNode”。是否有正确的方法可以转换回主屏幕或重新启动游戏,这样我就不会收到错误消息?感谢您的帮助!!ifself.nodeAtPoint(touchLocation)==self.replay{letscene=GameScene(size:self.size)letskView=self.vie

ios - SpriteKit : child does not rotate with parent SKNode

目标是使用角速度而不是zRotation围绕一个点旋转物理体。因此,似乎有必要添加第二个物理体(控制旋转的那个),但是改变这个父对象的角速度不会移动子对象。换句话说,父项旋转,但子项保持原位。如何轮换父项和子项?parent=SKNode()sprite=SKSpriteNode(color:SKColor.whiteColor(),size:spriteSize)sprite.position=CGPoint(x:0,y:50)parent.addChild(sprite)parent.physicsBody=SKPhysicsBody(rectangleOfSize:parentS