我正在iOS9 Beta 4中测试我的应用程序,并发现很多在iOS8中能够运行的代码在iOS9上不再按预期执行。另一个例子是SpriteKit的SKEmitterNode“particleAction”属性。以下代码在iOS8中有效,但在iOS9上无效:
// create the particle movement action
SKAction *move = [SKAction moveByX:100 y:100 duration:5]; // also, I've tested several other SKActions, such as scaleBy, fade, rotate, to no effect here
// create a target node and add to the SKScene
SKNode *targetNode = [SKNode node];
targetNode.position = origin;
[mySKSceneNode addChild:targetNode];
// add an emitter node that has a target and an SKAction
SKEmitterNode *flameTrail = [NSKeyedUnarchiver unarchiveObjectWithFile:[[NSBundle mainBundle]pathForResource:@"FlameAttack" ofType:@"sks"]];
flameTrail.position = origin;
flameTrail.particleAction = move; // TODO iOS9 compatibility issues!
flameTrail.targetNode = targetNode;
[mySKSceneNode addChild:flameTrail];
在iOS8中,上述代码会生成一个看起来像火花飞舞的SKEmitterNode。但是在iOS9中,SKEmitterNode完全不可见(在SKScene中根本没有出现)。如果我注释掉以下行:
flameTrail.particleAction = move; // TODO iOS9 compatibility issues!
然后我将在场景中看到SKEmitterNode,但是我不会看到任何与粒子相关的运动。
我还尝试了几个其他SKActions,没有看到任何结果上的变化。我已向苹果提交了一个错误报告;同时,有人可以确认/否认这个问题或者看到代码中的问题吗?
particleAction
属性时,SKEmitterNode
在OS X El Capitan (GM)上也会消失。 - Milos