[objective-c]GameCenter

なんとなく作ったGameCenterManager

#import "GameCenterManager.h"

GameCenterManager*gcm;
gcm=[[GameCenterManager alloc]initWithDelegate:self func:@selector(whenGameCenterEvent:)];
[gcm authenticateLocalPlayer];

-(void)whenGameCenterEvent:(NSNumber*)nm{
    NSLog(@"whenGameCenterEvent %d",[nm intValue]);
}

GameCenterManager.h

#import 
#import 

@interface GameCenterManager : NSObject{
    BOOL login;
@private
    
    id del;
    SEL func;
    /*
     1:認証成功
     2:認証失敗
     3:スコア報告成功
     4:スコア報告失敗
     5:リーダーボード表示失敗
    */
}
@property(nonatomic,assign)BOOL login;
-(id)initWithDelegate:(id)_d func:(SEL)_f;
- (void) authenticateLocalPlayer;
- (void) reportScore: (int64_t) score forCategory: (NSString*) category;
-(void)reportScore:(int64_t)score;
- (void) showLeaderboard;

@end

GameCenterManager.m


#import "GameCenterManager.h"

@implementation GameCenterManager

static NSString*leaderBoardID=@"hoge";

@synthesize login;

-(id)init{
    self=[super init];
    if (self) {
        login=NO;
    }
    return self;
}
-(id)initWithDelegate:(id)_d func:(SEL)_f{
    self=[self init];
    del=_d;
    func=_f;
    return self;
}
-(void)exeEvent:(int)t{
    NSNumber*n=[NSNumber numberWithInt:t];
    if (del && func && [del respondsToSelector:func]) {
        [del performSelector:func withObject:n];
    }
}



-(void)dealloc{
    del=nil;
    func=nil;
    [super dealloc];
}


//step1:プレーヤー認証 最速で実行
- (void) authenticateLocalPlayer
{
    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
    [localPlayer authenticateWithCompletionHandler:^(NSError *error) {
        if (localPlayer.isAuthenticated){
            // 認証済みプレーヤーの追加タスクを実行する
            login=YES;
            [self exeEvent:1];
        }else{
            [self exeEvent:2];
        }
        }];
}


//step2:スコア報告
//category:リーダーボードのID
- (void) reportScore: (int64_t) score forCategory: (NSString*) category
{
    if (!login) {
        [self exeEvent:4];
        return;
    }
    GKScore *scoreReporter = [[[GKScore alloc] initWithCategory:category]autorelease];
    scoreReporter.value = score;
    [scoreReporter reportScoreWithCompletionHandler:^(NSError *error) {
        if (error != nil){
            // 報告エラーの処理
            [self exeEvent:4];
        }else{
            [self exeEvent:3];
        }
        }];
}
-(void)reportScore:(int64_t)score{
    [self reportScore:score forCategory:leaderBoardID];
}

- (void)leaderboardViewControllerDidFinish:(GKLeaderboardViewController*)viewController
{
    [viewController dismissModalViewControllerAnimated:YES];
}

//リーダーボード表示
- (void) showLeaderboard
{
    GKLeaderboardViewController *leaderboardController =[[[GKLeaderboardViewController alloc] init]autorelease];
    if (leaderboardController != nil)
    {
        leaderboardController.leaderboardDelegate=self;
        [del presentModalViewController: leaderboardController animated: YES];
    }else{
        [self exeEvent:5];
    }
}

@end

[objective-c]音

//ヘッダーファイル
#import <AudioToolbox/AudioToolbox.h>

SystemSoundID soundID0;
//初期化
NSString *path;
NSURL *url;
    
path= [[NSBundle mainBundle] pathForResource:@"move" ofType:@"mp3"];
url= [NSURL fileURLWithPath:path];
AudioServicesCreateSystemSoundID((CFURLRef)url, &soundID0);

//再生
AudioServicesPlaySystemSound(soundID0);

[objective-c]UIViewが格納されたNSArrayをorigin.xでソート

UIViewが格納されたNSArrayをorigin.xでソート

-(NSArray*)sortByOriginX:(NSArray*)list{
    NSMutableArray*t=[NSMutableArray arrayWithArray:list];
    [t sortUsingComparator:^(id _v1,id _v2){
        UIView*v1=(UIView*)_v1;
        UIView*v2=(UIView*)_v2;
        return (v1.frame.origin.x==v2.frame.origin.x)?NSOrderedSame:((v1.frame.origin.x<v2.frame.origin.x)?NSOrderedAscending:NSOrderedDescending);
    }];
    return t;
}

[iPad Apps]お絵描き動画メーカー for iPad

iPadアプリ「お絵描き動画メーカー for iPad」をリリースしました。

あなたのお絵描きが動画になる!
[録画開始]ボタンを押せば、キャンバスで描かれたものは全て動画になります。
キャンバスをタッチして絵を描き、背景画像を配置していく過程を動画に出来ます。
Facebook公式アプリでFacebookにアップロードすることが出来ます。

特徴
■iOS6に対応
■あなたがキャンバスにお絵描きする過程を動画に保存出来ます。
■キャンバスに線を引けます
■キャンバスに写真を配置できます。
■キャンバスのサイズを調整できます。
■キャンバスに配置した写真を回転できます。
■線の太さを調整できます。
■線の色を調整できます。
■背景色を調整できます。
■描いた線を削除できます。
■動画は30fpsで保存されます。
■動画の保存形式はmp4です。

Your drawing becomes a Video !
If you tap [Start Rec] button. All the things drawn at canvas become an mp4 Video.
The process in which the picture is drawn on canvas.You can save it as mp4 video.
The Video can be uploaded to Facebook by official Facebook app.

Features
■This app corresponds to iOS6.
■Enable to save The process in which the picture is drawn on canvas as mp4 Video.
■Enable to draw line at canvas.
■Enable to set your photo to canvas.
■Enable to adjust line thickness.
■Enable to adjust line color.
■Enable to adjust background color.
■Enable to erase line.
■Enable to adjust canvas size.
■Enable to rotate Image.
■The Video is 30fps.
■The Video is mp4 format.

お絵描き動画メーカー for iPad
お絵描き動画メーカー for iPad

DrawingRecorder for iPad(English)

お絵描き動画メーカー for iPadお絵描き動画メーカー for iPad

お絵描き動画メーカー for iPadお絵描き動画メーカー for iPad

お絵描き動画メーカー for iPad

[objective-c]可変長引数のメソッド

ヘッダーファイル

-(void)myMethod:(NSString*)args, ...NS_REQUIRES_NIL_TERMINATION;

実装部分

-(void)myMethod:(NSString*)args, ...
{
    va_list arguments;
    va_start(arguments, args);
    
    NSString* value = args;
    NSString* fvalue = args;
    while (value){
        NSLog(@"--value %@",value);

        value = va_arg(arguments, typeof(NSString*));
    }
    va_end(arguments);
}