2012年6月27日水曜日

[iOS]代入してから変更する理由

最初のころ、viewの位置を動かすときなど、
view.frame.orign.x=100
みたいにやって変更できないことに悩んだ。

以下のようにやるとうまくいく、
CGRect rect=view.frame
rect.origin.x=100.0;
view.fame=rect;

理由を考えずにいたが、考えたら答えがすぐ出て来なかったのでここに書いておきます。

CGRect rect=view.frame
ができていることから、
view.frameがCGRectのコピーを返していることがわかる。

コピー origin.x にアクセスして値を変えてもview.frame自体の値が
変わるわけがないというもっともな答えにいきついた。

CGRectが構造体なのでもっともといえば、もっともな答えでした。

2012年5月7日月曜日

[unity][plugin]Viewを画面に追加する


親のViewを取得しようとして
[UIApplication sharedApplication].delegateから
「iPhone_target2AppDelegate」を取得しようとしたのだけれども、
実は使われてなくて

「AppController」だった。
で、viewは下記のように取得するのが良さそう。


[unity3.5.1]
xcodeにて
extern UIViewController *UnityGetGLViewController();


UIView view=[[UIView alloc]initWithFrame:CGRectMake(0,0, 320, 640)];
view.backgroundColor=[UIColor redColor];
[UnityGetGLViewController().view addSubview:view];

UnityGetGLViewControllerでviewが取得できるのでそこに追加できそう。
拡張子は、.mmじゃないとコンパイルリンクできない。

extern "C"{}の中にbind関数が定義されて、最初動かなかった。取りあえず、括弧の中から外してbuild.

int  UnityGetTargetFPS();とかも使う場面があるかも。



2012年5月6日日曜日

語学の勉強について

最近、UnityやらBlenderやらで英語の動画を見ていて思ったことをつれづれなるままに書いてみる。
英語ができない方に分類される自分でが動画を理解することができた。
なぜだろう。
1、聞きづらいところは、何度も再生することができた
2、内容の基本的な部分は既に本で学習していた
3、そもそも動画なのだから、絵をみれば大体言いたいことがつたわる

1、はメディアの利点
2、は内容予測
3、は情報取得の多様性といったところか

では、中学時代の英語の学習方法で理解できなかったかを考えてみる。
ここでいう中学の英語学習とは、教科書をつかった学習方法である

1、何回でも本なのでよむことはできる
2、初見の内容がほとんどなので、内容予測はできない。
3、挿絵で多少状況は理解できた

以上から、
目的が、暗号解読に用いられるスキルを養うということでなければ、

事前に、直接でなくてもいいから、内容について日本語でおこない、物語なら、Aliceならこんなこと言いそうとか、キャラ設定をしてから、英語をみれば、なるほど、ツンデレな英文なんだなとか思えたのになあと思うし、話に興味がないという以外は挫折しなく、もう少しみにつけられたと思う。

時間とカリキュラムの問題で仕方なかったのかなと思いつつ、何か形にできないかたと模索するのである。

2012年4月1日日曜日

ソーシャル農園ゲームのヒットの秘密

ホンマでっか!?TV - フジテレビにおいて、畑作業は、未来志向性のある行為で、生活に「ハリ」を持たせて長生きにつながるという話をしていた。

そんな話を聞いたとき、ソーシャルゲームの農場系のヒットも同じ理屈がヒットの要因にあるのではないかと思えた。

 そういえば、少し前から、仕事、環境に疲れた社会人の週末農作業が取り上げられてきたが、ソーシャルゲームの農園はそのかわりとして、現代の閉塞感、未来への希望を持てないでいるヒトの心理に、生きるという本能がゲームをさせているのではないだろうか。

従来型ゲームとソーシャル型農園ゲームと比べて仮説を検証してみよう
(従来型ゲーム)
0、要求
  ゲームがしたい。(ゲームそのものが目的)
1、携帯性
  どこでもゲームができるぜ、家でもするけどね。
2、一回のプレイ時間
  長くゲームをしていたい。
3、難しい操作
  操作を覚える快感
4、ソーシャル性
  ゲーム自体にエンターテイメント性があるので
  別に、ヒトに言わなくてもいい。
  映画鑑賞と同じ、感想をヒトに言っても良いが言わなくてもいい。
5、継続性
  新しいものがほしい。
  映画型なのかもしれない

(ソーシャル型農園ゲーム)
0、要求
  生きる希望がほしい
1、携帯性
  家に帰ったら、休みたい。
  家に帰ったら、家事がある
  家に帰って、ゲームを用意するのは億劫だ。
2、一回のプレイ時間
  短時間)
  欲しいのは、ゲーム自体ではなく、ゲームでの結果、ゲームに時間をかけたくない。
3、簡単な操作 
  疲れているのに、なんで複雑なことしなくちゃ行けないの。
  全く操作しないと、自分がやったことにならないので、満足できない。
4、ソーシャル性  導入) 友だちがすすめてるからやっておくか。  結果) 友だちに自慢できるかも。結局しないかもしれないが、結果に価値を持たせている5、継続性
  ゆっくりやっていく。
  結果がすぐでたら次なにを目標に生きていっていいのかわからない。
  ドラマ放送型なのかもしれない。


従来のゲームのユーザとソーシャル農園ゲームユーザの要求は明らかに違っていて、これを従来型に変換するのは、困難だと思われる。
ソーシャルゲームと言われる市場の閉塞感はあるが、従来型に近いユーザ層は、ゲームの本格化を求めていき、市場もそれに応えていったのだが、ソーシャルの主軸は、農園型だったため閉塞していっているのではないだろうかとか考えてみるのである。




2012年2月11日土曜日

本屋の大学受験コーナーに行ってきて、勉強について考えたんだ。

本屋の大学受験コーナーに行ってきて、勉強について考えたんだ。

たまに、学校で習ったことは、役に立たないとか、使わないとかいうけど、
学校のテストの内容に答えることができない社会人はいない。

仕事で、英語を読んで、間違って意味を解釈して許されることはないし、
自分の思いもよらない分野と、自分の専門分野がつながることはよくある。
その際の理解が間違っていてもだめでしょ。

じゃ、なんで学生時代の勉強ができるできないの問題になるかと考えると、
成績の優劣をつけるために、すべての教科をできるできないの問題にわざとしているんだと思う。
ここで求められる能力は、必要な情報を覚えていること。

この能力が社会で生きることは、一時的で、他の人に調べる時間があれば埋められてしまうし、即時答えるより出典とともに情報は答えなければ信用してもえられない。

必要な情報を覚えるという能力が必要なら、すべての教科でそれをはかるのではなく、一つ暗記って教科をつくればいいのにと思う。

では、どのようにすれば、各教科が生きるのだろう。
一つの解決策として僕が提示するのは、すべての教科で参考書を持ち込み可、さらにいえば、インターネット検索可能にすれば、改善されるとおもう。

特に現在は情報の収集と取捨選択し、それを生かす方法が大事、さらに、そこで差がでるような問題を作成すれば、その分野のより深い部分にすすんでいくのではないかと思う。

そんなことを呆然と考えて分かったのは、
そういう訳で、私は「国語」という教科が好きなんだって思うこと。

2012年1月3日火曜日

[iOs][storyboard]別ファイルからのnibの読み込み


[storybordからの取得]
EnemyStoryboard* st =[UIStoryboard storyboardWithName:@"EnemyStoryboard" bundle:nil]


[nibからの取得]
EnemyView* v= [[NSBundle mainBundle] loadNibNamed:@"EnemyView"
                             owner:self options:nil]lastObject];

EnemyViewController* vc=[[EnemyViewController alloc]
                             initWithNibName:@"EnemyViewController" bundle:nil];



(おまけ)
アウトレットの配列管理

@property (strong, nonatomic) IBOutletCollection(UIImageView) NSArray *damagePoint;

2011年12月6日火曜日

[ios][storyboard]ストリーボードの動作を確認してみた


まず、よくストリーボードでviewControllerからviewControllerをつなぐsegueをモーダルで画面遷移を定義していくが、AからBへいってBからAに戻る遷移をモーダルでつなぐ人がいたので、それはさすがに違うだろうと思うので実際確認してみた。

- (void)viewDidAppear:(BOOL)animated
{
    NSLog(@"%@",self);
    [super viewDidAppear:animated];
}


2011-12-06 00:26:53.328 modaltest[25564:f803]
2011-12-06 00:26:56.094 modaltest[25564:f803]
2011-12-06 00:27:04.040 modaltest[25564:f803]
2011-12-06 00:27:05.722 modaltest[25564:f803]
2011-12-06 00:27:09.271 modaltest[25564:f803]
2011-12-06 00:27:11.272 modaltest[25564:f803]

当たり前だけど、違うメモリアドレスを返してくる。やはり、モダールはちゃんと
dismissは自分で実装しないといけないみたい。
メモリは同じなので、遷移のスタックがたまっていってるのかな。


資料を探して行き詰まっていたけど、なんだかんだでたよりになるのは
テンプレートのソース。

リストテンプレートを見ればsegueからデータを次のviewControllerに渡す方法も分かる。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

    if ([[segue identifierisEqualToString:@"showDetail"]) {

        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        NSManagedObject *selectedObject = [[self fetchedResultsControllerobjectAtIndexPath:indexPath];
        [[segue destinationViewControllersetDetailItem:selectedObject];
    }
}


リストテンプレートにCoreDataをチェックして作れば、動的Propetyでの利用の仕方が分かる。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];    return cell;
}
カスタムセルが作りやすくなっている気がします。

意外と使えるかも、ストリーボード!