gpt4 book ai didi

ios - Sprite Kit 修改子 SKShapeNode 的属性不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:55:19 26 4
gpt4 key购买 nike

我有一个名为 Node 的类,

NodeSKNode的子类,

我在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com