【发布时间】:2014-03-13 13:19:01
【问题描述】:
我正在测试几种不同的技术以集成到我的 Sprite Kit 驱动的游戏中,但我发现我确信这是一项简单的任务。
我正在使用的测试项目是作为将Spine 与 Sprite Kit 集成的框架的一部分。一切都包含(和定义)在单个 ViewController 中(根据当前选择的 UISegmentedControl 的哪个选项创建四个视图之一)。在屏幕底部我有一个UISwitch,它连接到一个动作:
-(IBAction)changeCostume:(UISwitch *)sender {
if(sender.on) {
NSLog(@"New costume");
} else {
NSLog(@"Old costume");
}
}
我正在处理的场景是这样定义的:
+ (SKScene *) buildAvatarWithSize:(CGSize) size
{
SpineSkeleton *avatar = [DZSpineSceneBuilder loadSkeletonName:@"test-avatar" scale:1]; //json
spSkeleton_setSkinByName(avatar.spineContext->skeleton, "test-avatar");
spSkeleton_setSlotsToSetupPose(avatar.spineContext->skeleton);
DZSpineSceneDescription *sceneDesc = [DZSpineSceneDescription description];
... define animations etc. here...
NSArray *nodes = [sceneDesc buildScene];
SKNode *placeHolder = [SKNode node];
placeHolder.position = CGPointMake(100, size.height);
placeHolder.name = @"root";
... more setup code...
SKScene *scene = [[SKScene alloc] initWithSize:size];
scene.scaleMode = SKSceneScaleModeAspectFill;
scene.backgroundColor = [UIColor whiteColor];
[scene addChild:placeHolder];
return scene;
}
我要访问的属性是sceneDesc - 当按下UISwitch 时,我需要即时修改它的内容。我知道在场景设置代码中可以做到这一点,但是一旦场景出现在屏幕上,我就无法弄清楚如何执行此操作。
更改此属性的值将改变各个节点中使用的SKTexture。
我仍然是 Objective-C 的新手,这可能无济于事,而且项目的设置与我迄今为止的工作方式有很大不同(将场景拆分为自己的类,属性可以通过编程轻松访问)。
【问题讨论】:
标签: ios objective-c sprite-kit