首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修改此代码以使其适合子类?

如何修改此代码以使其适合子类?
EN

Stack Overflow用户
提问于 2012-02-25 00:50:32
回答 2查看 122关注 0票数 0

我已经得到了我以前使用过的代码,但是现在我已经将我的sprite子类化了,我需要对它进行修改。下面是:

代码语言:javascript
复制
-(void)moveRandom:(CCSprite*)mos
{
CGPoint randomPoint = ccp(arc4random()%480, arc4random()%320);
NSLog(@"%@", NSStringFromCGPoint(randomPoint));

CGPoint start = mos.position;
CGPoint end = randomPoint;
float distance = ccpDistance(start, end);
float duration = distance/450;
[mos runAction:
 [CCSequence actions:
  [CCMoveTo actionWithDuration:duration position: randomPoint],
  [CCCallBlock actionWithBlock:^{
     [self performSelector:@selector(moveRandom:) withObject:mos afterDelay:0.5];
 }],
  nil]
 ];
}

它所做的是在屏幕上选择一个随机点,然后使它在两个点之间以恒定的速度移动,然后移动精灵,然后重新调用这个方法。

编辑:我之所以想这么做,是因为我会在我的sprite层中执行这个sprite的实例,并且他们都将执行这个方法。

不应该将它合并到我的CCSprite子类中,而应该更像我的精灵层吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-27 15:17:34

通常,以面向对象的方式,CCSprite的子类将对自己负责(封装)。因此,当您希望雪碧移动您(或CCSprite的子类公开的对象)时,将调用它的moveRandom方法。然后,它将独自完成所有的移动,而没有CCLayer,它知道它是如何实现移动的。

CCSprite子类中的方法如下所示:

代码语言:javascript
复制
@interface AnotherSprite : CCSprite {}

-(void) moveRandom;

@implementation AnotherSprite

-(void)moveRandom
{
    CGPoint randomPoint = ccp(arc4random()%480, arc4random()%320);
    NSLog(@"%@", NSStringFromCGPoint(randomPoint));

    CGPoint start = self.position;
    CGPoint end = randomPoint;
    float distance = ccpDistance(start, end);
    float duration = distance/450;
    [self runAction:
        [CCSequence actions:
            [CCMoveTo actionWithDuration:duration position: randomPoint],
                [CCCallBlock actionWithBlock:^{
                    [self performSelector:@selector(moveRandom) withObject:nil afterDelay:0.5];
                }],
        nil]
    ];
}

@end
票数 0
EN

Stack Overflow用户

发布于 2014-07-06 19:32:09

为了满足所有明显的需求,我将对CCSprite类本身进行扩展,这将需要:

代码语言:javascript
复制
@interface CCSprite ( MyClassExtensions )
- ( void ) moveRandom;
@end

并在@Jon的响应中使用相同的实现,适当地修改@implementation行.通过这种方式,您可以将此方法用于all精灵,而不管它们在应用程序中发生在何处。

希望这能帮上忙..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9440106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档