Cocos2d:组成包含多个Sprite的对象的最佳方法

时间:2014-03-16 22:37:17

标签: cocos2d-iphone sprite aggregation ccnode

我需要创建一个包含多个精灵的对象(为简单起见2:游戏对象及其阴影)。 我需要把它们组成同一个类,所以有以下问题:

  1. 所描述的最好的祖先类是什么? 我为此目的使用了CCNode。我通过以下方式覆盖了draw方法:

    - (void)draw {
        [super draw];
        [_item draw];
        [_itemShadow draw];
    }
    
  2. 突然发现需要以同样的方式更改所有其他CCNode方法。对于前者更改positionvisible等,以便在我的自定义容器聚合中更改这两个Sprite中的这些属性:

    @interface NBChecker : CCNode {
        CCSprite *_item;
        CCSprite *_itemShadow;
    }
    
    @end
    

    我看到另一种方式 - 使两个sprite parent属性指向self。这应该同步这些精灵的位置,可见性等。

    谁有更好的想法? 想使用聚合而不确定我是否正确。

    谢谢!

1 个答案:

答案 0 :(得分:1)

废弃绘制代码。您需要做的就是将两个精灵添加为CCNode子类的子级。在CCNode子类中编写逻辑代码,每个sprite都有两个ivar,以便于访问(就像你已经拥有的那样)。

只要它们是场景图的一部分,您就不需要自己绘制精灵。

精灵将自动相对于其父级移动和旋转。移动节点以同步移动精灵等