iPhone 上的 Cocos2d:使用在单独的类文件中定义的 Sprite

Posted

技术标签:

【中文标题】iPhone 上的 Cocos2d:使用在单独的类文件中定义的 Sprite【英文标题】:Cocos2d on iPhone: Using Sprites Defined in Separate Class Files 【发布时间】:2010-03-13 09:18:26 【问题描述】:

我正在尝试在同一屏幕上绘制两个精灵。我在两个单独的类文件中定义了两个精灵对象。

    如果我注释掉两行(请参阅下面的“项目 1”注释),我会得到一个显示为 [a backgroundimage[background2.jpg],左侧有一个 sprite[grossini.png]。 如果我取消注释这两行,我不会得到 (gameScreen.m) 的背景图像和精灵。我只得到 (enemy.m) 中定义的精灵 [grossinis_sister1.png]。 但我需要的是一个屏幕中的 [backgroundimage[background2.jpg]]、sprite[grossini.png] 和 sprite [grossinis_sister1.png]。

这是我的第一堂课的实现文件:

#import "gameScreen.h"

#import "enemy.h"
@implementation gameScreen

-(id)init

    if((self = [super init]))
    
        CCSprite *backGroundImage = [CCSprite spriteWithFile:@"background2.jpg"];
        backGroundImage.anchorPoint = ccp(0,0);
        CCParallaxNode *voidNode = [CCParallaxNode node];
        [voidNode addChild:backGroundImage z:-1 parallaxRatio:ccp(0.0f,0.0f) positionOffset:CGPointZero];   

        [self addChild:voidNode];

        CGSize windowSize = [[CCDirector sharedDirector] winSize];

        CCSprite *player = [CCSprite spriteWithFile:@"grossini.png"];
        player.position = ccp(player.contentSize.width/2, windowSize.height/2);

        [self addChild:player z:0];
        //eSprite = [[enemy alloc]init]; //<-- see item 1             
        //[self addChild:eSprite];      
    

    return self;

这是我第二课的实现文件:

#import "enemy.h"

#import "gameScreen.h"
@implementation enemy
-(id)init

    if ((self = [super init]))
    
        CGSize windowSize = [[CCDirector sharedDirector] winSize];

        CCSprite *enemySprite = [CCSprite spriteWithFile:@"grossinis_sister1.png" ];
        enemySprite.position = ccp(windowSize.width/2, windowSize.height/2);

        [self addChild:enemySprite];
    
    return self;

@end

【问题讨论】:

您似乎对如何构建 iPhone 应用程序有一些概念性的误解。谷歌“iPhone 游戏教程”,我相信你会找到符合你水平的东西,它会告诉你做事的正确方法。此外,您的问题提出的含糊不清,因为您没有提供代码示例,甚至没有提供您正在使用的类的想法,因此无法提供解决方案。 对不起,我会以清晰的方式编辑我的问题。谢谢。 如果您打算包含他们没有通过的图片链接。 【参考方案1】:

您需要的高级理解是这样的。一个屏幕包含 1 个或多个图层,一个图层包含精灵。

所以创建一个屏幕,然后向其中添加一个图层,并将精灵添加到您创建的图层。当然,一个屏幕可以有很多个屏幕,一个屏幕可以由很多层组成。但在一个简单的演示游戏中,创建 1 个屏幕、1 个图层,并将精灵添加到该图层。

查看此链接了解更多详情http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:basic_concepts。

【讨论】:

【参考方案2】:

我不熟悉 Cocos2d,但通常的模式是拥有一个同时拥有游戏屏幕和敌人精灵并管理两者的对象。

【讨论】:

以上是关于iPhone 上的 Cocos2d:使用在单独的类文件中定义的 Sprite的主要内容,如果未能解决你的问题,请参考以下文章

iPhone cocos2d - 对许多精灵使用相同的动画动作

cocos2D for iPhone 和触摸检测的问题

如何在单独的类中创建通用 Iphone/Ipad 应用程序?

如何使用多个精灵表? cocos2d/iPhone

iphone游戏灯光效果与cocos2d

Cocos2d iphone 应用程序在实际 iphone 上运行异常