2015-05-13 4 views
1

Sprite Kit, Xcode.Изменение изображения SKSprite на SKShapeNode

Мне нужно найти способ изменить изображение спрайтов внутри самой программы. Я знаю, как создавать файлы jpg и превращать их в образ спрайта ...

Но для этой программы мне нужно нарисовать круги/многоугольники (которые могут меняться внутри программы) с помощью SKShapeNode, а затем передать это в Изображение SKSpriteNode.

Допустим, я объявил:

SKSpriteNode *sprite; 
SKShapeNode *image; 

Как бы я это делать с этими переменными?

Спасибо!

EDIT: Я имею в виду текстуру, когда говорю изображение.

ответ

2

Если я правильно понимаю ваш вопрос, вы можете достичь того, что вы используете после использования метода textureFromNode на SKView.

В вашем SKScene:

-(void)didMoveToView:(SKView *)view { 
    SKShapeNode *shape = [SKShapeNode shapeNodeWithCircleOfRadius:100]; 
    shape.fillColor = [UIColor blueColor]; 
    shape.position = CGPointMake(self.size.width * 0.25, self.size.height * 0.5); 
    [self addChild:shape]; 

    SKTexture *shapeTexture = [view textureFromNode:shape]; 
    SKSpriteNode* sprite = [SKSpriteNode spriteNodeWithTexture: shapeTexture]; 
    sprite.position = CGPointMake(self.size.width * 0.75, self.size.height * 0.5); 
    [self addChild:sprite]; 
} 

Надежда, что помогает!

+0

Теперь проблема в том, что я, кажется, использую другой язык от u ... Я никогда не видел слова «let»? Использование SKSpriteKit, Xcode ... Это быстро? Я совершенно новичок в Xcode, так что PLZ скажите мне, если я ошибаюсь ^^ –

+0

Я обновил свой ответ :) Прошло немного времени с тех пор, как я написал Objective-C! – ABakerSmith

+0

Отлично! Благодаря! –

0

Вы не можете изменить изображение SKSpriteNode после его назначения. Чтобы сделать то, что вы хотите, вам нужно создать SKSpriteNode, используя текстуру.

- (instancetype)initWithTexture:(SKTexture *)texture 

Чтобы изменить текстуру SKSpriteNode, вы назначаете новую текстуру, используя ее свойство текстуры. Вы также можете сделать это, используя изображение преобразуется в текстуру, как это:

myNode.texture = [SKTexture textureWithImageNamed:@"imageName"]; 

Что касается SKShapeNode, вы не можете присвоить изображение. Только путь, прямоугольник, круг, эллипс или точки. Для получения дополнительной информации просмотрите раздел документов класса SKShapeNode Creating a Shape Path.

+0

Нет ... Я имел в виду, что я хочу присвоить SKShapeNode образ SKSpriteNode. Итак, sprite.texture = SKShapeNode. Когда я говорю изображение в вопросе, я действительно имел в виду текстуру, sry –

+0

@MasterShuriken - Насколько мне известно, невозможно. – sangony