2016-01-18 2 views
0

У меня есть прокручиваемый фон, но фоновое изображение кажется «увеличенным» по сравнению с исходным изображением. Фон прокрутки просто отлично, но я не уверен, почему изображение «увеличено». Любая помощь будет принята с благодарностью.Справа налево Прокрутка фона Swift/Sprite Kit

class GameScene: SKScene, SKPhysicsContactDelegate { 


var blueBall:SKSpriteNode! 
var backgroundImage:SKSpriteNode! 
var backgroundImage2:SKSpriteNode! 


override func didMoveToView(view: SKView) { 



    self.view!.backgroundColor = UIColor(patternImage: UIImage(imageLiteral: "backgroundImage.png")) 


    self.physicsWorld.gravity = CGVectorMake(0.0, -5.0) 
    self.physicsWorld.contactDelegate = self 

    blueBall = SKSpriteNode(imageNamed: "ball1111.png") 
    blueBall.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame)) 
    blueBall.physicsBody = SKPhysicsBody(circleOfRadius: blueBall.size.width/0.85) 

    blueBall.physicsBody!.dynamic = true 
    blueBall.physicsBody!.allowsRotation = true 
    self.addChild(blueBall) 
    blueBall.zPosition = 2 



    backgroundImage = SKSpriteNode(imageNamed: "backgroundImage.png") 
    self.addChild(backgroundImage) 
    backgroundImage.zPosition = 0 
    backgroundImage.anchorPoint = CGPoint(x: 0.5, y: 0.5) 
    backgroundImage.size.height = self.size.height 
    backgroundImage.size.width = self.size.width 
    backgroundImage.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame)) 


    let backgroundTexture = SKTexture(imageNamed: "backgroundImage.png") 


    let shiftBackground = SKAction.moveByX(-backgroundTexture.size().width, y: 0, duration: 9) 
    let replaceBackground = SKAction.moveByX(backgroundTexture.size().width, y:0, duration: 0) 
    let movingAndReplacingBackground = SKAction.repeatActionForever(SKAction.sequence([shiftBackground,replaceBackground])) 

    for var i:CGFloat = 0; i<3; i++ { 

     let background = SKSpriteNode(texture: backgroundTexture) 
     background.position = CGPoint(x: backgroundTexture.size().width/2 + (backgroundTexture.size().width * i), y: CGRectGetMidY(self.frame)) 
     background.size.height = self.frame.height 
     background.runAction(movingAndReplacingBackground) 


     self.addChild(background) 




} 





} 
+2

Возможно, вам потребуется показать больше кода, каков ваш режим масштабирования? Также, когда вы создаете backgroundImage – Knight0fDragon

+0

, я обновлю свой пост с большим количеством кода. – Seed12

+0

также я заметил, что вы используете imageNamed: «backgroundImage.png», что означает, что вы, скорее всего, не соответствуете правилам сетчатки, что также может быть проблемой. Как ваши изображения содержатся в вашем проекте? Это атлас, файл xcassets или атлас внутри xcassets? – Knight0fDragon

ответ

1

У вас возникла проблема с неправильной загрузкой изображения, поэтому ваши номера отключены. В основном, загружая SKSpriteNode (imageNamed: "backgroundImage.png") с расширением png, вы загружаете фактический файл, не соответствующий правилам сетчатки. Тогда ширина и высота не будут отрегулированы для обработки этого случая. Если вы используете атлас внутри папки xcassets, он позволит вам указать графику для всех размеров дисплея и выбрать правильный, поддерживаемый устройством.

+0

@KnightOfDragon, пожалуйста, вы можете взглянуть на мой аналогичный вопрос, я долгое время был на нем. http://stackoverflow.com/questions/43072572/how-can-i-make-my-level-menu-scrollable-vertically – ItsMeAgain

Смежные вопросы