Текущая позиция SKSpritenode в методе TouchesBegan

это мой первый вопрос, я надеюсь, что он не слишком глупый, я искал, но не смог найти ответ, я надеюсь, что вы можете мне помочь!

Я создаю и добавляю в свою сцену SKSpriteNode, затем я хочу знать его текущую позицию в методе TouchesBegan, а затем использовать условие в зависимости от его текущей позиции.

-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {

    SKSpriteNode *miChar = [self createCharacter];

    [self addChild: miChar];

}

Вот простой способ добавить его в мою сцену, тогда я хочу знать miChar.position.y, например, когда TouchesBegan

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

     //Here is where i need the position of miChar.position.y

     SKSpriteNode *currentPos=miChar.position.y;

     while(currentPos.position.y > miChar.position.y){

       /* i want to do things here until the position is above for example
       miChar is an SKSpriteNode that is on constant movement so i need to check its 
       position wich will be constantly changing*/                             
     }

Ну, вот и все, может быть так просто или просто невозможно сделать так.. извините, только начал кодировать. Спасибо за ваше время, ребята!


person user3352358    schedule 25.02.2014    source источник
comment
То, что у вас есть, совсем не так. Можете ли вы объяснить немного больше о том, чего вы пытаетесь достичь? Возможно, опубликуйте для нас немного больше кода?   -  person jervine10    schedule 25.02.2014
comment
Вы можете получить miChar, либо сделав его экземпляром var, либо захватив его по имени (childNodeWithName:). С другой стороны... выражение внутри вашей скобки while ВСЕГДА будет истинным и приведет к циклу while(YES) в вашем случае (вероятно, ошибочная логика). Кроме того, эта проверка позиции больше похожа на то, что вы хотели бы сделать в Обновить:.   -  person Dobroćudni Tapir    schedule 25.02.2014
comment
Спасибо! понял, попробую в обновлении, извините, я знаю, что кода было не так много, просто хотел быть простым. насчет того времени... вы правы, это будет ДА ​​всегда, если только позиция miChar не обновляется (потому что она находится в постоянном движении), чего я и хочу достичь, чтобы иметь возможность видеть эту новую позицию. я попробую это в обновлении, имеет больше смысла! ты!   -  person user3352358    schedule 26.02.2014


Ответы (1)


Я этот вопрос здесь Я показал, что touchesBegan запускается как часть основного потока в цикле выполнения в согласованном месте. Я считаю, что все действия также выполняются в основном потоке, если вы не укажете иное, поэтому нет опасности (по умолчанию) того, что что-либо обновит его во время выполнения вашего кода.

person rghome    schedule 03.05.2015