我是swift 5]的新手。我在self.size.width
中打印了GameScene
,结果为677.0我从另一个类打印出了self.size.width
-可以说Ground
,结果为4002.0
我很困惑,请帮助。
非常感谢。
GameScene.swift:
导入SpriteKit
class GameScene: SKScene { let cam = SKCameraNode() let bee = SKSpriteNode() let ground = Ground() override func didMove(to view: SKView) { self.anchorPoint = .zero //self.backgroundColor = UIColor(red: 0.4, green: 0.6, blue: 0.95, alpha: 1.0) self.camera = cam self.addingTheFlyingBee() self.addBackground() let bee2 = Bee() bee2.position = CGPoint(x: 325, y: 325) self.addChild(bee2) let bee3 = Bee() bee3.position = CGPoint(x: 200, y: 325) self.addChild(bee3) ground.position = CGPoint(x: -self.size.width * 2, y: 0) ground.size = CGSize(width: self.size.width * 6, height: 0) ground.createChildren() self.addChild(ground) } override func didSimulatePhysics() { self.camera!.position = bee.position } func addBackground() { let bg = SKSpriteNode(imageNamed: "background-menu") bg.position = CGPoint(x: 220, y: 220) bg.zPosition = -1 self.addChild(bg) } func addingTheFlyingBee() { bee.position = CGPoint(x: 250, y: 250) bee.size = CGSize(width: 38, height: 34) self.addChild(bee) let beeAtlas = SKTextureAtlas(named: "Enemies") let beeFrames : [SKTexture] = [ beeAtlas.textureNamed("bee"), beeAtlas.textureNamed("bee-fly") ] let flyAction = SKAction.animate(with: beeFrames, timePerFrame: 0.14) let beeAction = SKAction.repeatForever(flyAction) bee.run(beeAction) let pathLeft = SKAction.moveBy(x: -200, y: -10, duration: 2) let pathRight = SKAction.moveBy(x: 200, y: 10, duration: 2) let flipTextureNegative = SKAction.scaleX(to: -1, duration: 0) let flipTexturePositive = SKAction.scaleX(to: 1, duration: 0) let flightOfTheBee = SKAction.sequence([ pathLeft, flipTextureNegative, pathRight, flipTexturePositive]) let neverEndingFlight = SKAction.repeatForever(flightOfTheBee) bee.run(neverEndingFlight) }
Ground.swift:
import Foundation
import SpriteKit
class Ground: SKSpriteNode, GameSprite {
var textureAtlas: SKTextureAtlas = SKTextureAtlas(named: "Environment")
var initialSize = CGSize.zero
func createChildren() {
self.anchorPoint = CGPoint(x: 0, y: 1)
let texture = textureAtlas.textureNamed("ground")
var tileCount: CGFloat = 0
let tileSize = CGSize(width: 35, height: 300)
while tileCount * tileSize.width < self.size.width {
let tileNode = SKSpriteNode(texture: texture)
tileNode.size = tileSize
tileNode.position.x = tileCount * tileSize.width
tileNode.anchorPoint = CGPoint(x: 0, y: 1)
self.addChild(tileNode)
tileCount += 1
}
}
func onTap() {}
}
我是Swift 5的新手。我在GameScene中打印出了self.size.width,结果是677.0我从另一个类中打印出了self.size.width-假设Ground,结果是4002.0我是困惑,...
self
代表classes
。如果在self
处写入gameScene.swift
,则将取gameScene's width
。如果在self
处写入Ground.swift
,则将取Ground's width
。