【问题标题】:Cocos2D - iPhone - Sprite won't show when created in an instance methodCocos2D - iPhone - 在实例方法中创建时不会显示 Sprite
【发布时间】:2013-01-27 20:35:33
【问题描述】:

所以在我的项目中,我在“Survival.m”类中调用了一个名为“-(void)fire”的实例方法:

-(void)fire {


NSLog(@"Firing");



CCSprite *sprite = [CCSprite spriteWithFile:@"bullet.png"];
sprite.position = player.position;
NSLog(@"%@",NSStringFromCGPoint(player.position));

[self addChild:sprite z:100];


}

当我这样做时,精灵不会显示在屏幕上。 该方法是从另一层调用的,但由于每次点击按钮时都会记录“Firing”,所以这不是问题。

如果这可能会导致任何问题,我也会使用 TMXTiledMap。 请帮忙,谢谢!

编辑------

我可以在另一层 HUDLayer 中创建精灵,但不能在包含玩家和平铺地图的生存层中创建精灵。如果我在“init”方法中创建一个精灵,它可以正常工作,但如果我在“fire”方法中这样做,它就不起作用。正在从 HUDLayer 调用“fire”方法,但我现在仍在调用该方法,因为我在日志中看到它说“Firing”

会不会是这样: 1. 精灵是在看不见的地方创建的? 2. 精灵没有被创建? 3. sprite 没有添加到正确的父节点?

有什么建议吗?

【问题讨论】:

  • 您说您是从另一个层调用该方法,如果是,您是否将生存层添加到另一个层?如果不是,那么它只是将精灵添加到本身没有添加到场景中的图层中......因此没有精灵出现
  • 您应该检查以下几点:learn-cocos2d.com/2012/09/reasons-node-show
  • @simonthumper 生存层在 HUDLayer 中声明为 sL,因此,当我调用该方法时,我在 HUDLayer 中执行 [sL fire];

标签: ios cocos2d-iphone runtime-error sprite


【解决方案1】:

要在 cocos2d 中添加精灵,请执行以下操作

CCNode *parent = [self getChildByTag:kTagParentNode];
[parent addChild:sprite];

如果这不能解决问题,请确保添加它的位置在屏幕上,然后尝试更改 z 值以查看是否有帮助

编辑

在你导入文件的地方添加这个

enum {
kTagParentNode = 1,
};

【讨论】:

  • 对不起,如果我的问题很荒谬,但 kTagParentNode 是什么意思?
  • 如果我在 init 方法中添加一个精灵,一切正常。但不是在虚空中。
  • 什么是生存?一层?还是一个节点?生存是否添加到图层中?可能是你的位置搞砸了。位置是相对于父节点而不是屏幕位置,因此您必须考虑到这一点。
  • @Sylvan Survival 是一个图层,它包含一个 TMXTiledMap
【解决方案2】:

谢谢大家,以某种神秘的方式解决了它。无论如何感谢您的帮助。我想我以错误的方式声明了该层。 祝你有美好的一天!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 2016-02-01
    相关资源
    最近更新 更多