0

for ループを使用して、次のポイントでスプライトを配置したいと考えています。

ccp(240.0, 160.0);
ccp(300.0, 120.0);
ccp(300.0, 200.0);
ccp(360.0, 80.0);
ccp(360.0, 160.0);
ccp(360.0, 240.0); 

for ループを使用して、これらのポイントの反復式を取得しようとしています。私はしばらくそれをしてきました。以下は、ポイントの視覚的表現です。助けてください。

        *

    *

*       *

    *

        *
4

2 に答える 2

0

1 つの方法を次に示します。

私はそれについて数分しか考えていませんでしたが、最大の行から始めて下に進むと簡単になります。

PatternTest.h

#import "cocos2d.h"
@interface PatternTest : CCLayer
@end

PatternTest.m

@implementation PatternTest
-(id) init
{
    if( (self=[super init]))
    {
        CCNode *grid = [self generateArrowPatternWithBaseRowOfNumSprites:5 spacedApart:ccp(25.0f, 25.0f)];
        [grid setPosition:ccp(50.0f,50.0f)];
        [self addChild:grid];

    }

    return self;
}

-(CCNode *) generateArrowPatternWithBaseRowOfNumSprites:(float) numSprites spacedApart:(CGPoint) space
{
    CCNode* patternNode = [CCNode node];
    CGPoint tempPos = ccp(0.0f, 0.0f);
    float offset = 0.0f;
    while (numSprites > 0)
    {
        for(int x=numSprites;x>0;x--)
        {
            CCSprite *patternSprite = [CCSprite spriteWithFile:@"Icon.png"];
            [patternSprite setScale: 0.3f];
            [patternSprite setPosition: tempPos];
            [patternNode addChild:patternSprite];
            tempPos = ccpAdd(tempPos, ccp(0.0f,space.y));
        }

        tempPos = ccp(tempPos.x, 0.0f);
        offset = offset + (space.y / 2.0f);
        tempPos = ccpAdd(tempPos, ccp(space.x, offset));
        numSprites -= 1;
    }
    return patternNode;
}
@end
于 2013-04-25T18:16:15.007 に答える
0

このようなものが欲しいですか?(簡単なスケッチのみ)

初期パラメータを仮定します:

initPoint (x0, y0)

initVector (vX,vY)

num of iteration c

index = c

while index

 for(j = index, currentPoint = initPoint+(c-index)*(0,2*vY); j;j--, currentPoint += initVector)
    draw currentPoint

index--

基本的な考え方は、右上のポイントから開始し、反復が (左下隅まで) 保持され、ポイントを描画するたびに、最初のベクトルを使用して描画のコンテキストを何度もシフトすることです。次に、初期点を y 軸に沿って下にシフトし、マイナス 1 回繰り返します。

于 2013-04-25T16:32:24.167 に答える