Railsでトップページ(アプリケーションルート)を特定のコントローラに置き換える方法。

タイトル通りです。検索すると古いバージョンのものばかりで、書いてみるとエラーが出るので、Rails3.1.1のやり方を書いておきます。おそらく、Rials3以上はこうやるんじゃないかなぁ。

root :to => "default#index"

としてやれば、defaultコントローラのindexにアクセスされる事になります。

また、publicのindex.htmlファイルは消去しておきましょう。

UnityのiOS Proじゃない人はXcode4.3.1へのアップデートはやめよう

UnityのiOS非Proだと、iOSプロジェクトへのSplash Screen(iOSで言うところの、Launch Image。ファイルだとDefault.png)が変えらず、Unityのロゴマークの画像になります。

そして、このUnityロゴマークのDefault.pngが非Retinaの画像です。

しかし、Xcode4.3.1からはRetinaのDefault.pngが絶対に必要になったようです。

そのため「”You are using Unity iPhone Basic. You are not allowed to remove the Unity splash screen from your game”」というエラーが出てしまう模様です。

なかでどのようになってるのかはわかりませんが、非ProではUnityがDefault.pngがUnityのロゴマークか?という条件文か何かが書いてあり、XcodeがDefault.pngの画像がRetina対応してないからDefault.pngはないよーと送ると、そこで止まっちゃう様にしているという感じですかねぇ。

Unityのアップデートを待つか、Unity iOS Proを買うか、Xcode4.3.1をアップデートしないか、してしまった場合はXcode4.3をDLにダウングレードするか、Xcode4.2を残しておくか、しか方法はなさそうですねぇ。

Xcode4.3はhttps://developer.apple.com/downloads/index.actionからDLできます。Developer登録必要だと思います。

なにか、追加ありましたらコメント欄にてお知らせください!

参考
http://forum.unity3d.com/threads/126905-Xcode-4.3.1-iOS-SDK-5.1-Known-Issues-(postpone-upgrade)
http://answers.unity3d.com/questions/225504/ios-splash-screen-error.html
http://www.facebook.com/groups/unityuserj/permalink/315998348460112/

各種ソーシャルサービスに投稿するURL

各種ソーシャルサービスに投稿するURLをまとめていきたいと思います。もし以下のサービス以外でもご存じの方がおられましたらお知らせ下さい。

当初の目的はiPhoneアプリから各種サービスに簡単に投稿したいなぁというものです。いちいちアプリ登録するの面倒ですしね。。。

2012年3月9日現在、Twitter,Facebook,Mixi,アメーバなうの投稿URLを掲載しています。

Twitter

これはご存じの方も多いのではと思います。


https://twitter.com/intent/tweet?original_referer=<URL>&text=<Status>&url=<URL>&hashtags=<TAG>&related=<投稿後にフォローさせたいユーザーID>

Facebook

Facebookは少々めんどくさいです。まず、FacebookのDeveloperセンターでAppを作り、アプリIDが必要です。またコールバックさせるWebページをこのアプリに登録して、呼び出しの際もそのWebページのURLを登録しないといけません。

Facebookはダイアログ[Dialog]ってのを使います。なんかシェア[Share]と同じみたいな感じですが、設定できる項目がダイアログの方が多いです。

// display = touchとすることで、スマートフォンのレイアウトになる
http://www.facebook.com/dialog/feed?app_id=<Facebook AppのID>&redirect_uri=<シェアが終わったあとにリダイレクトされるURL>&link=<シェアしたいURL>&caption=<シェアするタイトル>&description=<シェアするディスクリプション>&display=touch

Mixi

Mixiに投稿するのは簡単です。Mixiボイスに簡単に投稿できます。


https://mixi.jp/simplepost/voice?status=<Status>

Ameba

アメーバなうはちょっと挙動がいまいちです。ログインしてない状態で以下のURLにアクセスして、ログインすると指定したStatusが表示されません笑。他のサービスでは当たり前にできるのに、対応して欲しいです!サイバーの人よろしくです。

// これが標準

http://now.ameba.jp/?entryText=<Stauts>

// Amebaなうで紹介するボタンで使われているURL。typeを変えるとmixiやtwitterもいける模様。結局上のURLにアクセスしている

http://stat100.ameba.jp/blog/proxy.html?longurl=<URL>&title=<Status>&type=now

さらに、アメーバはAPIとかもマッシュアップアワードのためにしか公開してないんですね。。。


Facebookの普通のStatus updateのurlがないのは驚きでした。アメーバはなんとかして欲しいですねぇ。

NSTimerが苦手なあなたに。NSTimerObjectをどうぞ。

NSTimerってなんとなく、使うのが難しいし、いちいちめんどくさかったりします。ので、NSTimerObjectというNSObjectの継承クラスでNSTimerを簡単に扱えるものを作ってみました。

名前はいまいちですね笑。あと動くのは確認してますが、メモリリークとかは確認してないので(おい!)、自己責任でよろしくおねがいします。

クラス定義

@interface NSTimerObject : NSObject{
    NSMutableDictionary *timers;
}
- (void)startTimer:(SEL)selector interval:(float)interval;
- (void)startTimer:(SEL)selector;
- (void)stopTimer:(SEL)selector;
- (void)stopAllTimer;

@end
@implementation NSTimerOject
- (void)startTimer:(SEL)selector interval:(float)interval{
    [self stopTimer:selector];

    NSTimer *tm = [NSTimer scheduledTimerWithTimeInterval:interval
                                                   target:self
                                                 selector:selector
                                                 userInfo:nil
                                                  repeats:YES];

    [timers setValue:tm forKey:NSStringFromSelector(selector)];
}

- (void)startTimer:(SEL)selector{
    [self startTimer:selector interval:1.0/60.0];
}

- (void)stopTimer:(SEL)selector{
    NSString *key = NSStringFromSelector(selector);
    NSTimer *tm = (NSTimer*)[timers valueForKey:key];
    [timers removeObjectForKey:key];
    [tm invalidate];
}

- (void)stopAllTimer{
    NSArray *timesAry = [timers allValues];
    for (NSObject *tm in timesAry) {
        if ([tm isKindOfClass:[NSTimer class]]) {
            [(NSTimer*)tm invalidate];
        }
    }
    [timers removeAllObjects];
}

- (void)dealloc {
    [self stopAllTimer];
    [timers release];
    [super dealloc];
}

- (id)init
{
    self = [super init];
    if (self) {
        // Initialization code
        timers = [[NSMutableDictionary alloc] init];
    }
    return self;
}
@end

使い方

NSTimerObjectを継承してクラスを作ります。それで.mの方で、

-(void)update:(NSTimer*)timer{
  // この関数がintervalごとに呼び出される
}

// 60fpsで関数を呼び出したい場合
[self startTimer:@selector(update:)];
// 1秒間隔で呼び出したい場合
[self startTimer:@selector(update:) interval:1.0];

// タイマーを止めたいタイミングで
[self stopTimer:@selector(update:)];
// 全部のタイマーを止める
[self stopAllTimer];

とすれば、が呼び出されます。注意としては、startTimerをしてからinterval後に最初の関数の呼び出しがあることです。


最近カテゴリや便利なクラスを作ろうと頑張ってますが、命名が下手くそでとても困ってる次第でございます。

「オタクが追う」をリリースしました。

オタクがお姫様を追う、「オタクが追う」というゲームをリリースしました。自動横スクロールゲームでコインをたくさん取っていくゲームです。

cocos2dのv2.0製で、Tiledでマップを作り、Retina対応となっています。

ゲームは結構ハマります。作りが甘いところもありますが、是非よろしくおねがいします!

ダウンロードはこちら
オタクが追う・姫を捕まえろ!
カテゴリ: ゲーム
価格: 無料