gpt4 book ai didi

ios - 很简单——我无法在方法 B 中访问我在方法 A 中声明的对象

转载 作者:行者123 更新时间:2023-11-29 03:14:59 26 4
gpt4 key购买 nike

这是我的代码。

-(id)initWithSize:(CGSize)size {    
if (self = [super initWithSize:size]) {
CGPoint boxPosition = CGPointMake(100,100);
SKSpriteNode *box = [SKSpriteNode spriteNodeWithColor:[SKColor colorWithRed:0.18 green:0.702 blue:0.91 alpha:0.5] size:CGSizeMake(35,25)];
box.position = boxPosition;
[self addChild:box];
}
}


-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches) {
CGPoint touchPoint = [touch locationInNode:self];

if (CGRectContainsPoint(box.frame, touchPoint)) {
// DO SOMETHING;
}
}
}

我想在 touchesBegan 方法中访问 box,但我不能。我真的不确定为什么。

最佳答案

问题是您的变量仅在 if (self = [super initWithSize:size]) 范围内。有几种方法可以解决这个问题。您可以按照其他答案的建议进行操作,并创建一个属性,您可以使用该属性从任何地方访问该类实例的变量。或者,您可以利用 SKNodename 属性:

SKSpriteNode *box = [SKSpriteNode spriteNodeWithColor:[SKColor colorWithRed:0.18 green:0.702 blue:0.91 alpha:0.5] size:CGSizeMake(35,25)];
[box setName:@"aCoolName"];

然后您可以使用 SKNodechildNodeWithName: 获取对 touches begin 中的子节点的引用。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

for (UITouch *touch in touches) {
CGPoint touchPoint = [touch locationInNode:self];
SKSpriteNode *box = (SKSpriteNode *)[self childNodeWithName:@"aCoolName"];
if (CGRectContainsPoint(box.frame, touchPoint)) {
//DO SOMETHING;
}
}
}

关于ios - 很简单——我无法在方法 B 中访问我在方法 A 中声明的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21799341/

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