4张图片的背景相互叠加
Background of 4 images added for each other
请帮忙。
我有4张图片。
我想用动画显示背景。
每张图片都应该落在之前的动画 alpha 上。结果,我得到了 4 张图像相互添加的背景。
首先显示 1.png 将 alpha 淡化为 1。
直到最后一张还没出现,开始第二张图,以此类推
var waitTime:NSTimeInterval = 0
var durTime:NSTimeInterval = 4.4
for var i = 0; i < 4; i++ {
let frostImage = SKSpriteNode(imageNamed: "a\(i)")
frostImage.position = CGPointMake(0, 0)
frostImage.zPosition = -1
frostImage.alpha = 0
frostImage.anchorPoint = CGPointZero
frostImage.size = CGSizeMake(256, 384)
self.addChild(frostImage)
self.array.addObject(frostImage)
let w = SKAction.waitForDuration(waitTime)
let s = SKAction.fadeAlphaTo(0.6, duration: durTime)
let a = SKAction.repeatAction(SKAction.sequence([w, s]), count: 1)
durTime -= 0.4
waitTime += 0.2
self.arrayAnim.addObject(a)
}
then
for node in self.array {
node.runAction(self.arrayAnim[ind1] as SKAction, completion: nil)
ind1++
}
我为你写的,但在 objective-c 中,我认为你可以将其转换为 swift。
SKSpriteNode *bg1 = [SKSpriteNode spriteNodeWithImageNamed:@"bg1"];
bg1.zPosition = 1;
SKSpriteNode *bg2 = [SKSpriteNode spriteNodeWithImageNamed:@"bg2"];
bg2.zPosition = 2;
SKSpriteNode *bg3 = [SKSpriteNode spriteNodeWithImageNamed:@"bg3"];
bg3.zPosition = 3;
SKSpriteNode *bg4 = [SKSpriteNode spriteNodeWithImageNamed:@"bg4"];
bg4.zPosition = 4;
SKAction *action = [SKAction fadeAlphaTo:1.0 duration:1];
SKAction *wait = [SKAction waitForDuration:1];
SKAction *resetAlpha = [SKAction fadeAlphaBy:0.0 duration:0];
[self runAction:[SKAction repeatActionForever:[SKAction sequence:@[[SKAction runBlock:^{
[bg1 runAction:resetAlpha];
[bg2 runAction:resetAlpha];
[bg3 runAction:resetAlpha];
[bg4 runAction:resetAlpha];
}], [SKAction runBlock:^{
[bg1 runAction:action];
}], wait, [SKAction runBlock:^{
[bg2 runAction:action];
}], wait, [SKAction runBlock:^{
[bg3 runAction:action];
}], wait, [SKAction runBlock:^{
[bg4 runAction:action];
}], wait]]]];
请帮忙。
我有4张图片。 我想用动画显示背景。
每张图片都应该落在之前的动画 alpha 上。结果,我得到了 4 张图像相互添加的背景。
首先显示 1.png 将 alpha 淡化为 1。 直到最后一张还没出现,开始第二张图,以此类推
var waitTime:NSTimeInterval = 0
var durTime:NSTimeInterval = 4.4
for var i = 0; i < 4; i++ {
let frostImage = SKSpriteNode(imageNamed: "a\(i)")
frostImage.position = CGPointMake(0, 0)
frostImage.zPosition = -1
frostImage.alpha = 0
frostImage.anchorPoint = CGPointZero
frostImage.size = CGSizeMake(256, 384)
self.addChild(frostImage)
self.array.addObject(frostImage)
let w = SKAction.waitForDuration(waitTime)
let s = SKAction.fadeAlphaTo(0.6, duration: durTime)
let a = SKAction.repeatAction(SKAction.sequence([w, s]), count: 1)
durTime -= 0.4
waitTime += 0.2
self.arrayAnim.addObject(a)
}
then
for node in self.array {
node.runAction(self.arrayAnim[ind1] as SKAction, completion: nil)
ind1++
}
我为你写的,但在 objective-c 中,我认为你可以将其转换为 swift。
SKSpriteNode *bg1 = [SKSpriteNode spriteNodeWithImageNamed:@"bg1"];
bg1.zPosition = 1;
SKSpriteNode *bg2 = [SKSpriteNode spriteNodeWithImageNamed:@"bg2"];
bg2.zPosition = 2;
SKSpriteNode *bg3 = [SKSpriteNode spriteNodeWithImageNamed:@"bg3"];
bg3.zPosition = 3;
SKSpriteNode *bg4 = [SKSpriteNode spriteNodeWithImageNamed:@"bg4"];
bg4.zPosition = 4;
SKAction *action = [SKAction fadeAlphaTo:1.0 duration:1];
SKAction *wait = [SKAction waitForDuration:1];
SKAction *resetAlpha = [SKAction fadeAlphaBy:0.0 duration:0];
[self runAction:[SKAction repeatActionForever:[SKAction sequence:@[[SKAction runBlock:^{
[bg1 runAction:resetAlpha];
[bg2 runAction:resetAlpha];
[bg3 runAction:resetAlpha];
[bg4 runAction:resetAlpha];
}], [SKAction runBlock:^{
[bg1 runAction:action];
}], wait, [SKAction runBlock:^{
[bg2 runAction:action];
}], wait, [SKAction runBlock:^{
[bg3 runAction:action];
}], wait, [SKAction runBlock:^{
[bg4 runAction:action];
}], wait]]]];