- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个名为 Node 的类,
Node是SKNode的子类,
我在 Node 对象的 init 方法中创建并添加了一个 SKShapeNode 对象作为子对象,
但是当我在将它添加为子对象后尝试修改它时,没有任何反应。
@interface Node ()
@property (nonatomic, strong) SKShapeNode *circle;
@end
@implementation Node
- (id)initWithRadius:(float)radius{
if (self = [super init]) {
_circle = [SKShapeNode shapeNodeWithCircleOfRadius:radius];
_circle.fillColor = [UIColor whiteColor];
_circle.name = @"c";
[self addChild:_circle];
}
return self;
}
//1st type of handling child object
- (void)setHighlighted{
NSLog(@"Called");
SKShapeNode *circ = (SKShapeNode *)[self childNodeWithName:@"/c"];
circ.fillColor = [SKColor redColor];
}
我也试过直接改变属性的属性
- (void)setHighlighted{
_circle.fillColor = [SKColor redColor];
}
肯定会调用 setHighlighted 方法。
我什至尝试了 [_circle removeFromParent] 并设置了 position、alpha、isHidden 属性,但没有任何反应!!
这里有什么问题?
谢谢
编辑:
上面的代码没有问题!
抱歉,问题是:我有 NSArray *nodes我正在填充节点,当它们被创建时,我将它们存储在一个虚拟的 NSMutableArray *mutableNodesArray 中,同时我将它们作为 child 添加到场景中;循环结束后,我将对象从 mutableNodesArray“复制” 到 nodesArray,
所以当我尝试对存储在 nodesArray 中的 Node 对象执行操作时,正在调用方法,但这些方法不属于作为子对象添加的 Node 对象...
我的错误...
最佳答案
我想你的问题在于:
SKShapeNode *circ = (SKShapeNode *)[self childNodeWithName:@"/c"];
可能是:
SKShapeNode *circ = (SKShapeNode *)[self childNodeWithName:@"//c"];
差异根据 API引用:
/:
When placed at the start of the search string, this indicates that the search should be performed on the tree’s root node. When placed anywhere but the start of the search string, this indicates that the search should move to the node’s children.
//:
When placed at the start of the search string, this specifies that the search should begin at the root node and be performed recursively across the entire node tree. Otherwise, it performs a recursive search from its current position.
您也可以尝试在下面的行中放置一个断点,并使用 po circ.debugDescription
检查调试控制台的 circ 属性:
(断点到该行:)-> circ.fillColor = [SKColor redColor];
您也可以尝试使用 customActionWithDuration
:
SKAction* circleColor = [SKAction customActionWithDuration:0.5f actionBlock:^(SKNode *node, CGFloat elapsedTime)
{
circ.fillColor = [UIColor colorWithRed:1.0f green:0.0f blue:0.0f alpha:1.0f];
NSLog(@"changed to red");
}];
[circ runAction:circleColor];
关于ios - Sprite Kit 修改子 SKShapeNode 的属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39918320/
我的应用程序中有一个轮子。我需要检索它停止的切片/楔形的值。 这段代码: print(wheelScene.atPoint(CGPoint(x: wheelScene.frame.midX,
我有一个 SKShapeNode,如果满足特定条件,它需要将它的每个角都变圆。阅读下面链接提供的答案,这似乎很容易,因为我会简单地使用 |= 来圆角需要舍入的加角(4x if 语句)。 How to
我正在尝试用图像/图案填充 SKShapeNode,但仍然不成功。 你能帮我解决这个问题或者给我一个替代方案吗? 我想创建一个可碰撞的自定义形状(来自任何 SpriteKit 类型),并填充图案图像。
我正在使用 SKShapeNodes 绘制一条线。这条线不断地“生长”,或者说总是向上移动。当用户点击屏幕时,线条应以 45 度角向右或向左改变方向。它会这样做,但是由于某种原因,当它改变方向时,线中
在我的应用程序中,我有两个凹形SKShapeNode,即nodeA和nodeB,nodeA在屏幕上固定,而nodeB可以由用户手指在屏幕上拖动。 NodeA 需要能够检测 NodeB 是否与它重叠。首
我正在尝试为要遵循的节点创建 CGPath,但是当我尝试使用 608_hd_best_practices_for_building_spritekit_games 中的操作和常量幻灯片中定义的 SKS
我有一个 SKShapeNode,它有多个 SKSpriteNode 作为其子节点,这些子节点位于其中心周围的不同位置。我还旋转了 SKShapeNode,这实际上旋转了它的所有子节点。但是,当我循环
我正在开发一个小游戏,我必须匹配一些颜色。我只使用 SKShapeNodes;但我似乎无法让这段代码工作。我只得到“不同颜色”的打印结果。 func didBegin(_ contact: S
我无法让 SKShapeNode 的子类接受初始化程序。为了解决这个问题,我尝试按照此处发布的示例 Adding Convenience Initializers in Swift Subclass
我正在尝试将渐变纹理应用于从路径创建的 SKShapeNode,以便线条从纯色变为透明。这适用于 SKSpriteNode,但我无法让它在 SKShapeNode 上工作。有谁知道这个问题的解决方案?
我想在另一个正方形里画一个正方形;但我无法以正确的方式定位第二个。根据第一个平方坐标进行定位可以做什么? var tileBackground = SKShapeNode(rectOfSize
我用来生成行的代码是这样的: func populate(num: Int) { for var i = 0; i < num; i++ { let lines = Line
如何对没有实例方法初始化器的 SKShapeNode 进行子类化?我能想到的唯一方法是: + (id)withColor:(UIColor *)aColor radius:(CGFloat)aRadi
我正在开发一个应用程序,我正在根据用户手指的触摸来绘制线条。一旦收到触摸结束事件,该行将转换为最后一条路径。当收到新的触摸开始事件时,将绘制一条名为“当前路径”节点的新线。我为具有相反接触位掩码的两条
我打开了 spritekit 应用程序示例并添加了这段代码 override func didMoveToView(view: SKView) { /* Setup your scene he
最近我一直在创建一个游戏,我在屏幕上放了圆圈。但是,我注意到这些圆形不是圆形,而是椭圆形。 y 轴被拉伸(stretch),x 轴被收缩。为了弄清楚这个问题,我现在正在尝试用一个矩形进行调试。我使矩形
我可以在一个 SkShapenode 中有一条具有多种线宽和颜色的路径吗?例如 我可以在一个节点中添加三个具有不同填充和描边大小边框的不同颜色的圆圈吗? 最佳答案 skshapenodes 真的不应该
我创建了一个名为“Character”的 SKShapeNode 子类,我尝试使用 rectOfSize 对其进行初始化,但是由于必须使用指定的初始化程序,我不能这样做。 我一直在阅读有关此机制的信息
在我的简单游戏中,我需要在下一步发生之前移除所有 SKShapeNodes。这是我的代码: for child in self.children(){ if(child==SKShapeNod
有没有办法围绕某个任意点旋转 SKShapeNode,特别是矩形? 我在 gameScene 类的开头声明了我的 SKShapeNode var bladeTouch = SKShapeNode()
我是一名优秀的程序员,十分优秀!