【发布时间】:2015-09-13 08:16:25
【问题描述】:
我正在尝试将 5 帧动画合并到我现有的 spritenode 生成函数中。目前一只乌鸦在屏幕上从右到左移动,我想对此进行动画处理,但无论我尝试什么,我都会不断产生线程 1 错误。
通过注释掉某些代码,我可以在屏幕上的静态位置设置小鸟的动画,或者从右到左移动小鸟但不设置动画(注释掉 spawn func)。
我知道下面的代码不能以它的当前形式工作,但这是我正在使用的一切,希望有人可以帮助我。
下面是我试图将所有代码放在一起...
谢谢,
//did move to view
var crowTexture1 = SKTexture(imageNamed: "crow1")
crowTexture1.filteringMode = SKTextureFilteringMode.Nearest
var crowTexture2 = SKTexture(imageNamed: "crow2")
crowTexture2.filteringMode = SKTextureFilteringMode.Nearest
var crowTexture3 = SKTexture(imageNamed: "crow3")
crowTexture3.filteringMode = SKTextureFilteringMode.Nearest
var crowTexture4 = SKTexture(imageNamed: "crow4")
crowTexture4.filteringMode = SKTextureFilteringMode.Nearest
var crowTexture5 = SKTexture(imageNamed: "crow5")
crowTexture5.filteringMode = SKTextureFilteringMode.Nearest
var animFly = SKAction.animateWithTextures([crowTexture1, crowTexture2, crowTexture3, crowTexture4, crowTexture5], timePerFrame: 0.1)
var fly = SKAction.repeatActionForever(animFly)
var distanceToMoveBird = CGFloat(self.frame.size.width + 2 * crowTexture1.size().width);
var moveBirds = SKAction.moveByX(-distanceToMoveBird, y:0, duration:NSTimeInterval(0.0040 * distanceToMoveBird));
var removeBirds = SKAction.removeFromParent();
moveAndRemoveBirds = SKAction.sequence([moveBirds, removeBirds,]);
var spawnBirds = SKAction.runBlock({() in self.spawnBird()})
var delayBirds = SKAction.waitForDuration(NSTimeInterval(4.0))
var spawnThenDelayBirds = SKAction.sequence([spawnBirds, delayBirds])
var spawnThenDelayForeverBirds = SKAction.repeatActionForever(spawnThenDelayBirds)
self.runAction(spawnThenDelayForeverBirds)
//spawning function
func spawnBird() {
var bird = SKSpriteNode()
bird.position = CGPointMake( self.frame.size.width + crowTexture1.size().width * 2, 0 );
var height = UInt32( self.frame.size.height / 1 )
var height_max = UInt32( 500 )
var height_min = UInt32( 500 ) //300
var y = arc4random_uniform(height_max - height_min + 1) + height_min;
var bird1 = SKSpriteNode(texture: crowTexture1)
bird1.position = CGPointMake(0.0, CGFloat(y))
bird1.physicsBody = SKPhysicsBody(rectangleOfSize: bird1.size)
bird1.physicsBody?.dynamic = false
bird1.physicsBody?.categoryBitMask = crowCategory
bird1.physicsBody?.collisionBitMask = catCategory | scoreCategory
bird1.physicsBody?.contactTestBitMask = 0
bird.addChild(bird1)
bird.runAction(moveAndRemoveBirds)
birds.addChild(bird)
}
【问题讨论】:
标签: ios swift animation sprite-kit sprite