Текущая ситуацияtouchesMoved двигаться фоновое изображение
Показать грузы, грузы BackgroundImage Показывает reticle BOOL
как ложные
-(void)didMoveToView:(SKView *)view {
/* Setup your scene here */
self.anchorPoint = CGPointMake(0.5, 0.5);
self.backgroundColor = [SKColor colorWithRed:0.15 green:0.15 blue:0.3 alpha:1.0];
//Add background
NSString *bundle = [[NSBundle mainBundle] pathForResource:@"backgroundTemp" ofType:@"png"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:bundle];
SKTexture *texture = [SKTexture textureWithImage:image];
backgroundImage = [SKSpriteNode spriteNodeWithTexture:texture];
backgroundImage.size = CGSizeMake(self.frame.size.width, self.frame.size.height);
backgroundImage.position = CGPointMake(0.5, 0.5);
backgroundImage.zPosition = 0;
[self addChild:backgroundImage];
//END Add Background
removeArray = [[NSMutableArray alloc] init];
reticleShow = false;
}
Так после того, как был загружен фоновое изображение, отображается. Единственный другой вариант - нажать на экран, чтобы увеличить размер backgroundImage
, а также загрузить изображение reticle
.
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
/* Called when a touch begins */
if (reticleShow == false) {
//Add Reticle
NSString *bundle = [[NSBundle mainBundle] pathForResource:@"reticle_001" ofType:@"png"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:bundle];
SKTexture *texture = [SKTexture textureWithImage:image];
SKSpriteNode *reticle = [SKSpriteNode spriteNodeWithTexture:texture];
reticle.zPosition = 1;
reticle.size = CGSizeMake(self.frame.size.width, self.frame.size.height);
reticle.position = CGPointMake(0.5, 0.5);
[self addChild:reticle];
[removeArray addObject:reticle];
//End Add Reticle
//Enlarge background
backgroundImage.size = CGSizeMake(self.frame.size.width*3, self.frame.size.height*3);
//End Enlarge background
reticleShow = true;
} else {
// //Remove reticle
// backgroundImage.size = CGSizeMake(self.frame.size.width, self.frame.size.height);
// [self removeChildrenInArray:removeArray];
// reticleShow = false;
// //end remove reticle
//enable drag
//end enable drag
}
}
Теперь, обеспечивает расширение и булев предотвращает дальнейшие спрайты добавляются, а также обеспечение прицельных изображений.
Теперь, после этого загрузился. Или начальная печать была сделана. Теперь я хочу иметь возможность перетащить фон. перемещаем фон и сохраняем сетку в центре.
Так что я сделал это,
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches) {
CGPoint location = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:location];
if ([node.name isEqualToString:backgroundImage]) { <--- ERROR HERE sksprite node to type nsstring
CGPoint previousLocation = [touch previousLocationInNode:self];
float diff = location.y - previousLocation.y;
CGPoint newPosition = CGPointMake(node.position.x, node.position.y +diff);
if (newPosition.y > 230) {
newPosition.y = 230;
}
node.position = newPosition;
}
}
}
Три вопроса
Как перетащить изображение в меньшем г-индекс? i.e перетащите фон вместо сетки?
Как перемещать фоновое изображение после его увеличения?
Как пройти sknode & nsstring error? backgroundImage.name = @ "backgroundImage";
3 - SKNode имеет свойство имени. Вам нужно установить его. Например, myNode.name = @ "myName"; то вы проверяете его, используя if ([myNode.name isEqualToString: @ "myName"]) – sangony
@sangony Отлично, это ответили на один из моих вопросов. Спасибо – user2415313
@sangony теперь я могу переместить фон на z-index 0, однако, если сетка z-index 1 наложена, я не могу переместить фоновое изображение. – user2415313