CCSprite不';t隐身-iphone
在.h文件中CCSprite不';t隐身-iphone,iphone,ios,cocos2d-iphone,Iphone,Ios,Cocos2d Iphone,在.h文件中 CCSprite *backwheels; in .m file backwheels = [CCSprite spriteWithFile:@"wheels_back.png"]; backwheels.position = ccp(400,120); [self addChild:backwheels]; -(void) showGameOver { backwheels.visible = false; } 但当游戏结束时,背景仍会
CCSprite *backwheels;
in .m file
backwheels = [CCSprite spriteWithFile:@"wheels_back.png"];
backwheels.position = ccp(400,120);
[self addChild:backwheels];
-(void) showGameOver {
backwheels.visible = false;
}
但当游戏结束时,背景仍会出现在场景中!
有人帮忙吗?!
注意:我也合成了backWheels,但仍然不适用于我。使用移除子对象:
[self removeChild:backwheels cleanup:YES];
我可以给你一个快速修复。这不是最好的方法,最好的方法是找出到底是什么导致了这种行为,但我不能不看代码的其余部分就这样做。无论如何,这就是如何在
showGameOver
方法中访问backwheels sprite。创建精灵时,请按以下方式进行:
backwheels = [CCSprite spriteWithFile:@"wheels_back.png"];
backwheels.position = ccp(400,120);
backwheels.tag = 100; // whatever integer value you wish
[self addChild:backwheels];
然后在showGameOver
中检索它:
backwheels = [self getChildByTag:100];
backwheels.visible = false;
我相信它会起作用的 您可以随时更改精灵的不透明度,即
-(void) showGameOver {
backwheels.opacity = 0.0f;
}
然后当你想让它重新出现时,把它改成
backwheels.opacity = 1.0f;
showGameOver有人打电话吗?当然有。。我还有另一个CCSprite对象,它也驻留在showGameOver方法中,当我编写cannon.visible=false时它不可见;我脑海中出现的唯一可能的原因是没有看到您的代码的其余部分,因为您的backwheels指针没有指向屏幕上显示的实际精灵,但我也合成了它,但仍然无法工作。从Xcode 4.5开始,您不再需要合成属性。综合与否与问题无关。尝试签入showGameOver方法-除了可见性之外,您还可以更改任何其他的后轮。我很确定你不能改变它的旋转、比例或颜色。检查一下为什么要投否决票????如果要从视图中删除所有子级,还可以使用[self-removeAllChildrenWithCleanup:YES];我没有投反对票。但如果我有足够的声誉,我会投。不管怎样,当我使用visible或setVisible属性时,这意味着我想稍后使用CCsprite对象。删除孩子不是解决方案。你不会相信,但这对我也不起作用。它在showGameOver方法“从CCNode*分配给CCSprite*的不可计算指针类型”中显示了警告,请尝试CCNode*测试=[self-getChildByTag:100];test.visible=false;还是一样。。我不知道为什么它不工作..我发誓除了上面提到的代码之外,我没有为backwheels编写任何代码(在创建backwheels之后立即检查backwheels的地址:backwheels=[CCSprite spriteWithFile:@“wheels_back.png”];NSLog(@“%p”,backwheels);以及通过标记NSLog检索的对象的地址(@“%p”,[self-getChildByTag:100);告诉我他们是平等的还是不平等的问题解决了!!@Andrey Cheernukha非常感谢你们宝贵的时间:)