2

我现在正在制作休闲游戏。
我想在推特上分享分数。
我的这个工作图像如下。

1.玩家玩游戏后有得分。
2.当游戏进入gameoverscene时,他们可以推推特按钮(使用social.framework)
3.有这样的文字“你得到了xx分数!!” 在推特显示(模态)中。
*我想将 xx 更改为共享分数。

你能给我一些建议吗?我是Objective-C的初学者。所以,简单的方法对我来说更好。渐渐地,我想关注安全性和可扩展性。

[信息] *MainScene 和 GameOverScene 由 SKScene 制作

主场景.m

@implementation MainScene {

//The score
NSInteger _score;

}

- (void)incrementScore
{
_score++;
}

GameOverScene.m

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

 if([node.name isEqualToString:@"twitterbutton"]){
    NSLog(@"self.delegate = %@",self.delegate);
    [self.delegate showShareScreen];

    //delegate to ViewController
    if (nil == self.delegate) NSLog(@"delegate is nil");
    }    
}

视图控制器.m

-(void)showShareScreen
{
NSLog(@"showShareScreen");
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
    SLComposeViewController *tweetSheet = [SLComposeViewController

composeViewControllerForServiceType:SLServiceTypeTwitter];

    tweetSheet.modalPresentationStyle = UIModalPresentationFormSheet;
    tweetSheet.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    [tweetSheet setInitialText:@"You got xx score"];
     NSLog(@"self = %@",self);
    [self presentViewController:tweetSheet animated:YES completion:nil];

 }
 else {
     NSLog(@"not sls type twitter");
 }
 }
4

1 回答 1

1

在 ViewController 的委托方法中更改您的行

[tweetSheet setInitialText:@"你得到了 xx 分数"];

如下图所示;将分数包含在 NSString 的stringWithFormat: 方法中

-(void)showShareScreenWithScore:(NSInteger) score {
NSLog(@"showShareScreen");
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
    SLComposeViewController *tweetSheet = [SLComposeViewController

composeViewControllerForServiceType:SLServiceTypeTwitter];

    tweetSheet.modalPresentationStyle = UIModalPresentationFormSheet;
    tweetSheet.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    [tweetSheet setInitialText:[NSString stringWithFormat:@"You got %d score",score]];
     NSLog(@"self = %@",self);
    [self presentViewController:tweetSheet animated:YES completion:nil];

 }
 else {
     NSLog(@"not sls type twitter");
 }
}

并从 GameOverScene 调用此委托方法。注意:当您在对象实例化之后创建游戏结束场景时,您可以设置 GameOverScene 的属性。所以只需声明一个属性

@property (assign , nonatomic) NSInteger score;

并使用游戏结束的 NSURLSession设置其值。您可以从 MainScene 得分属性中获得得分值。


NSURLSession

NSURLSession 类和相关类提供了通过 HTTP 下载内容的 API。此 API 提供了一组丰富的委托方法来支持身份验证,并使您的应用程序能够在您的应用程序未运行时或在 iOS 中,当您的应用程序暂停时执行后台下载。

于 2014-03-29T07:34:09.037 回答