1

これらのメソッドがあるとしましょう:

+(CCSprite *)a {
    return [self shapeFromRect:CGRectMake(0, 224, 224, 288) rotate:0];
}

+(CCSprite *)b {
    return [self shapeFromRect:CGRectMake(0, 224, 224, 288) rotate:0];
}

+(CCSprite *)c {
    return [self shapeFromRect:CGRectMake(0, 100, 50, 50) rotate:0];
}

+(CCSprite *)d {
    return [self shapeFromRect:CGRectMake(0, 100, 50, 50) rotate:90];
}

冗長性があるので、次のようにリファクタリングできます。

+(CCSprite *)a {
    return [self shapeFromRect:[self abRect] rotate:0];
}

+(CCSprite *)b {
    return [self shapeFromRect:[self abRect] rotate:0];
}

+(CCSprite *)c {
    return [self shapeFromRect:[self cdRect] rotate:0];
}

+(CCSprite *)d {
    return [self shapeFromRect:[self cdRect] rotate:90];
}

+(CGRect)abRect {
    return CGRectMake(0, 224, 224, 288);
}

+(CGRect)cdRect {
    return CGRectMake(0, 100, 50, 50);
}

しかし、これを行うためのより効率的な方法はありますか?

メソッド呼び出しを実行する必要がないように、これらの CGRects を typedef 列挙型またはその他の形式の定数に格納する方法はありますか?

4

1 に答える 1

2
+ (CCSprite *)sprite:(NSInteger)type
{
    float r = (type == 3)? 90 : 0;
    if (type < 2) {
        return [self shapeFromRect:CGRectMake(0, 224, 224, 288)] rotate:r];
    } else {
        return [self shapeFromRect:CGRectMake(0, 100, 50, 50)] rotate:r];
    }
}

多分それに似たもの?

于 2012-08-20T19:03:33.840 に答える