【问题标题】:How do I change the Z-Order of sprites?如何更改精灵的 Z 顺序?
【发布时间】:2011-03-31 15:01:26
【问题描述】:

我想设置我在 Objective-C 中创建的精灵的 Z 顺序,特别是在 Cocos2D 中。

这是我在尝试构建以下代码时遇到的错误:

CCSprite *mySprite = [CCSprite spriteWithFile:@"Image.png" rect:CGRectMake(0, 0, 96, 24)]; 
mySprite.zOrder = 0;

...220: error: object cannot be set - either readonly property or no setter found

Z-Order 必须能够以某种方式设置 - 是否只能在实例化线上设置,而不是在创建后设置?我必须为 CCSprite 的属性创建一个 setter 方法吗?为什么它没有这些方法?

【问题讨论】:

    标签: objective-c cocos2d-iphone z-order


    【解决方案1】:

    如果您需要在添加精灵后重新排序,如 GamingHorror 所说,请使用:

    [self reorderChild:sprite z:newZ];
    

    如果您只需要设置原始顺序,您的答案就有效

    【讨论】:

      【解决方案2】:

      想通了:

      给self添加精灵时,需要添加一个参数:

      CCSprite *mySprite = [CCSprite spriteWithFile:@"mySpriteImage.png" rect:CGRectMake(0, 0, 96, 24)];
      
      [self addChild:mySprite z:1];
      

      z = 0 是背景,最高的 z 索引将在其他精灵之上

      -JJR

      【讨论】:

      • 您也可以使用 reorderChild 方法动态更改其 z 顺序
      【解决方案3】:
      _background.name = @"background";
      [self addChild:_background];
      _background.zPosition =-5;
      

      查看最后一行的z位置,希望对你有帮助

      【讨论】:

        猜你喜欢
        • 2010-12-23
        • 2013-09-29
        • 1970-01-01
        • 1970-01-01
        • 2012-06-20
        • 2019-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多