Hatena::Groupiphone-dev

とあるiPhone開発者とゲームエンジン このページをアンテナに追加

2011-02-14

Cocos2dへSquirrelを組み込み

02:31 |  Cocos2dへSquirrelを組み込み - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク -  Cocos2dへSquirrelを組み込み - とあるiPhone開発者とゲームエンジン

RPGに使う敵AIには組み込みスクリプトが必要なんじゃなかろうか?

ということでCocos2dのテンプレートSquirrelを組込んでみることにしてみた。

ダウンロード&展開

調べてみると3.0 betaが出てるようだ。

ひとまず squirrel_3_0_beta3.tar.gz をダウンロードして使ってみることにする。

ダウンロードしたファイルを解凍すると、以下の画像の様にフォルダのアクセス権がロックされてて中を見る事ができない。

f:id:saika_makoto:20110215013508p:image

フォルダを選択して Command + i でフォルダ情報を表示し、everyone に読み/書き権限を設定する。このままだと下位のフォルダの権限は変更されないため、下のギアアイコンから「内包している項目に適用」を選択して全てのフォルダ権限を変更する。

f:id:saika_makoto:20110215013509p:image

これで使用準備完了。


Cocos2dプロジェクトへの組み込み

Cocos2dから生成されるテンプレートのlibsフォルダの下に先ほど展開したSQUIRREL3フォルダをコピーする。

そして、cocos2d Sourcesフォルダ内に新規にSQUIRREL3グループを作成し、更にその中に以下の表の様なグループを作成しファイルをドラッグ&ドロップで追加する。

グループ名コピーするファイル
SQUIRREL3/include libs/SQUIRREL3/include 内の全ファイル
SQUIRREL3/squirrel libs/SQUIRREL3/squirrel 内の全ファイル
SQUIRREL3/sqstdlib libs/SQUIRREL3/sqstdlib 内のsqstdrex_old.cppを除いた全ファイル

sqstdrex_old.cppを入れておくとコンパイル時にエラーになるので外した。

f:id:saika_makoto:20110215015129p:image

最後にヘッダファイルの検索パスに libs/SQUIRREL3/include を追加する。

f:id:saika_makoto:20110215015130p:image

これで組み込みは完了。


Object-CからSquirrelスクリプトの呼び出し

テストするスクリプトはこんなカンジ。

仮に test.nut とでも名付けようか。

        function foo(i, f, s) 
        { 
            print("Called foo(), i="+i+", f="+f+", s='"+s+"'"); 
        } 

ここからはCの実装になる。

最初にVMマシンを生成する。

HSQUIRRELVM v = sq_open(1024);  //1024はコールスタックサイズ

続いて、エラーレポートやprintの出力先関数を登録する。

sqstd_seterrorhandlers(v);
sq_setprintfunc(v, printfunc, printfunc); //sets the print function

プリント関数は以下のようになる。

        void printfunc(HSQUIRRELVM v, const SQChar *s, ...) 
        { 
                va_list arglist; 
                va_start(arglist, s); 
                scvprintf(s, arglist); 
                va_end(arglist); 
        } 

続いて、VMマシンにスクリプトファイルを読み込ませる。

sq_pushroottable(v);
sqstd_dofile(v, "test.nut", 0);

読み込みに成功したら、スクリプト関数のfoo()を呼出してみよう。

void call_foo(HSQUIRRELVM v, int n,float f,const SQChar *s)
{
    int top = sq_gettop(v); //saves the stack size before the call
    sq_pushroottable(v); //pushes the global table
    sq_pushstring(v,_SC("foo"),-1);
    if(SQ_SUCCEEDED(sq_get(v,-2))) { //gets the field 'foo' from the global table
        sq_pushroottable(v); //push the 'this' (in this case is the global table)
        sq_pushinteger(v,n); 
        sq_pushfloat(v,f);
        sq_pushstring(v,s,-1);
        sq_call(v,4,0); //calls the function 
    }
    sq_settop(v,top); //restores the original stack size
}

かなり端折って説明してしまったので、より詳細な解説を知りたい人は以下の資料を参考にしてみてください。

SquirrelスクリプトからC関数の呼び出し

ついでにスクリプトからC関数を呼出す方法。

、、、眠いので詳細は後ほど。


SquirrelPythonの比較

組み込みスクリプトの候補としてPythonも考えたがソースコード量が多い点がネックとなり、今回は見送りました。

種類 コードサイズ
Python ヘッダ+ソースで2MB程度
Squirrel ヘッダ+ソースで500KB程度

2MBもあったらゲーム本体のソースより多くなりそうな気がする。。。



組み込み済みのプロジェクト

今回の説明のためにCocos2dのテンプレートSquirrelを組込んでみたサンプル。

HelloWorldScene.mの-(id) initからtest.nutをロードしてfoo()関数を呼出しています。

https://files.me.com/penguin.dream/pzk5zm

※リンクは3ヶ月間のみ有効です。

2011-02-01

Cocos2dのCCSprite覚え書き

01:33 | Cocos2dのCCSprite覚え書き - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク - Cocos2dのCCSprite覚え書き - とあるiPhone開発者とゲームエンジン

Cocos2dでよくお世話になるCCSpriteについて覚え書き。

画像ファイルからCCSpriteを生成する

CCSprite *sprite = [CCSprite spriteWithFile:@"my_texture.png"];
[self addChild:sprite];

CCTexture2DからCCSpriteを生成する

画像のサイズは2の階乗になってなくてもOK。

NSString *imgPath = @"my_texture.png";
CCTexture2D *tex = [[CCTextureCache sharedTextureCache] addImage:imgPath];
CCSprite *sprite = [CCSprite spriteWithTexture:tex rect:CGRectMake(0,0,width,height)];
[self addChild:sprite];

CCSpriteを半透明にする

CCSprite *sprite = [CCSprite spriteWithFile:@"my_texture.png"];
[sprite setOpacity:128];     // 50% alpha (0〜255)
[self addChild:sprite];

子階層のCCNodeを全て破棄する

第一引数をYESにすると、actionとcallbackもリムーブされる。

[self removeAllChildrenWithCleanup:YES];


  1. 参考資料:http://www.cocos2d-x.org/embedded/cocos2d-x/d4/de7/classcocos2d_1_1_c_c_sprite.html

ChianaChiana2011/09/18 13:27I think you hit a bullseye there flaels!

zdmqujzdmquj2011/09/19 02:23al9WJZ <a href="http://awxclhibrxdq.com/">awxclhibrxdq</a>

ttlkicftxjttlkicftxj2011/09/19 22:14N5rqvB , [url=http://xurxthlqcmgl.com/]xurxthlqcmgl[/url], [link=http://hslfadtvlcbq.com/]hslfadtvlcbq[/link], http://otdsbuymecsz.com/

moacvvzmoacvvz2011/09/27 02:10eITABm , [url=http://ixyudbaakspq.com/]ixyudbaakspq[/url], [link=http://hrxdrxwmbkpk.com/]hrxdrxwmbkpk[/link], http://mjkvgbfrzxrj.com/

2011-01-29

SVNホスティングサービス比較

13:43 | SVNホスティングサービス比較 - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク - SVNホスティングサービス比較 - とあるiPhone開発者とゲームエンジン

そろそろソースをバージョン管理しようと、プライベートで管理できるようなSVNホスティングサービスを探してみました。


結論から先に言うと

【容量と値段のコストパフォーマンス

xp-dev>beanstalk>unfuddle


【使いやすさ】

beanstalk>>unfuddle>>xp-dev


趣味で月々数百円程度で使いたいならxp-devが有力候補。

「仕事でバッチリ使うから1000円以上払ってもいいぜ」って人にはbeanstalkがオススメ。


実際に使ってみた感想

xp-dev

http://www.xp-dev.com/

プラン料金容量プロジェクト数
FREE200M2
Pro Small5$/月1G無制限
Pro Medium15$/月4G無制限

ガチ技術者が作ったカンジのSVNホスティングサービス。

日本語表示、日本語ファイル名も問題なく対応。

フリーで試せて有料のプランも安いサービス。リポジトリのダンプもDLできる。

ただ管理ページの使い勝手がいまいちで、英語が苦手な人は立ち往生するかも。

Wikiなどが完備されているが少々分かりずらい。

コストパフォーマンス重視の英語OKな技術者向け。


unfuddle

http://unfuddle.com/

プラン料金容量プロジェクト数
FREE200M1
Micro9$/月512M4
Compact24$/月2G10

日本語表示、日本語ファイル名も問題なく対応。

xp-devより管理画面が親切。SVNサービスの他にプロジェクト単位の管理も行える。

Wikiなども分かりやすく完備されているので、その点は便利。

評判はいいけど、有料化しても容量が512Mなのはちょっと心細い。


beanstalk

http://beanstalkapp.com/

プラン料金容量プロジェクト数
Tryal100M1
Brons15$/月3G10
Silver25$/月6G25

日本語表示、日本語ファイル名も問題なく対応。

管理ページがとてもよくできていて、英語が苦手な人でも十分使えるだろう。

Wikiなどの機能がないけど、よほど大規模開発にならなければいらない。

お値段だけがちょっと高いけどその価値のあるサービス。



長くつきあうならbeanstalkが良さそうかなぁ。

100M使いきるまでトライアルしてみよう。



beanstalkのSVN履歴操作

14:42 | beanstalkのSVN履歴操作 - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク - beanstalkのSVN履歴操作 - とあるiPhone開発者とゲームエンジン

ストレージ容量がいっぱいになってしまった場合の解決策があったのであわせてメモ。


解決策3点

  1. プランをアップグレードする
  2. リポジトリをエクスポートし(バックアップのため)元のリポジトリを削除。ワーキングコピーから不要なファイルを消してインポートしなおす。
  3. "svndumpfilter"を使って履歴を編集する。

2の方法は過去の履歴が完全に消えてしまうためリビジョン1から出直す事になる。

"svndumpfilter"を使う場合は、削除されたファイルの履歴のみ消すことができる。

"svndumpfilter"の使い方:http://help.beanstalkapp.com/kb/basics-11/how-can-i-permanently-remove-files-from-a-repository

jvqkubxyfejvqkubxyfe2013/07/26 00:06zjilpjqipof.efw, <a href="http://www.qlskavexhn.com/">wfcezocrlm</a> , [url=http://www.bbuphpshiz.com/]iowdeukzjg[/url], http://www.uzalbgrutm.com/ wfcezocrlm

ybnlurlbhdybnlurlbhd2013/07/29 09:35czhzvjqipof.efw, <a href="http://www.nesgaainvf.com/">orhncedwcl</a> , [url=http://www.zttwasgxsh.com/]jzmjtsuqsa[/url], http://www.ihlkohqkny.com/ orhncedwcl

aglumfnjhqaglumfnjhq2013/10/26 10:27ncfcdjqipof.efw, <a href="http://www.weejymuzfe.com/">tdsiipmjvs</a> , [url=http://www.mwvacdzyal.com/]llhdnxtltp[/url], http://www.ivufpmnpwt.com/ tdsiipmjvs

2011-01-26

はてなグループでアクセス解析

00:50 | はてなグループでアクセス解析 - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク - はてなグループでアクセス解析 - とあるiPhone開発者とゲームエンジン

はてなダイアリーでははてなカウンタ(有料)という解析ツールが使えるらしいが、グループでは使えないらしい。

そこで、はてなグループGoogle Analyticsアクセス解析が行えないか調査してみました。

ウェブはあまり詳しくないので間違っている所があるかもしれませんが、覚え書きに日記に書いておきます。

もし間違っている点があれば後日修正します。


Google Analyticsgmailアカウントがあれば利用できます。

はてなグループの詳細設定でScriptタグを記述するとタグがエスケープされてしまうが、Googleガジェットを設置することはできるそうです。

以下がアクセス解析を行うGoogleがジェットコード。

<?xml version="1.0" encoding="UTF-8"?>
<Module>
 <ModulePrefs title="Google Analytics for whatever-you-want">
  <Require feature="analytics"/>
 </ModulePrefs>
 <Content type="html"><![CDATA[
  <script>_IG_Analytics("UA-XXXXXXX-X", "/whatever-you-want");</script>]]>
 </Content>
</Module>
  1. UA-XXXXXXX-X の部分を自分のGoogle AnalyticsのIDに、whatever-you-wantの部分を自分のブログIDにしたファイルを作成します。
  2. ファイル名は仮に analytics.xml とします。(各自ご自由に!)
  3. 保存したファイルをインターネットでアクセスできるサーバにアップします。

コードはhfuさんのブログに記載されていたものを参考にしました。

次にそのガジェットXMLを読み込むコードを詳細設定のフッダに追記する。

<script src="http://gmodules.com/ig/ifr?url=http://whatever-you-want/analytics.xml&amp;&amp;synd=open&amp;w=250&amp;h=30&amp;title=&amp;border=0&amp;output=js"></script>

whatever-you-want/のパスはさきほどのGoogleガジェットXMLファイルをアップした場所を指定してください。

アクセス解析の結果は1〜2時間おきに反映されるらしいです。

明日の朝チェックしてみて、うまく動作してるといいなぁ。

BrianBrian2012/08/08 12:51That's a knowing answer to a difficult qusetion

szzwryphszzwryph2012/08/10 02:51F9t3TI <a href="http://hmvovduxyldk.com/">hmvovduxyldk</a>

lhitsflhitsf2012/08/12 09:12grQOHd , [url=http://fqsowtaccqcj.com/]fqsowtaccqcj[/url], [link=http://ohrsjxsscddu.com/]ohrsjxsscddu[/link], http://fxfcfqdfbvzo.com/

2011-01-25

ゲームの世界観

01:20 | ゲームの世界観 - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク - ゲームの世界観 - とあるiPhone開発者とゲームエンジン

ダンジョンRPGコンピュータをモチーフにしてはどうかとアドバイスをもらった。

登場する職業は「プログラマ」や、「デザイナー」、「ディレクター」などの実際に存在する職種。

マウスとキーボードを装備してダンジョン内のモンスターを倒して進んで行く。

デザイナはタブレットしか、プログラマーはキーボードしか装備できないらしい(偏見)

何と戦うんだろ?締め切りとか?

アホらしいなぁ(笑)でも嫌いじゃない。

f:id:saika_makoto:20110126011620p:image

せっかくコンピュータをモチーフにするならトロンみたくかっこ良くてもいいかもしれない。

ハッキングで攻撃して、モンスターは人工知能プログラムにするとか)

まだどうなるか分からんゲームのアイデア出しは夢いっぱいだ。

EclipseにSubclipseを入れる

14:10 | EclipseにSubclipseを入れる - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク - EclipseにSubclipseを入れる - とあるiPhone開発者とゲームエンジン

OSXGUIのあるSVNクライアントが使いたくてEclipseインストール

余計なものはいらないので、ひとまず Eclipse IDE for Java Developers を選択。

お次ぎはSubclipseEclipse用のSVNプラグイン)のインストール

  1. Eclipseを起動して「Help」→ 「Install New Software...」を選択
  2. 「Work with:」にSubclipseのパスを入力 http://subclipse.tigris.org/update_1.6.x(このパスはSubclipseページhttp://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuAEclipse update site URL:に表記されている)
  3. 「Core SVNKit Library」、「Optional JNA Library(recommended)」、「Subclipse」をチェックして「Next」を押しファイルがDLされるまでしばらく待つ。
  4. ロードが終わったら「Next」
  5. I accept the terms of the license agreementsをチェックして「Finish」
  6. Security Warningが表示されたらとりあえず「OK」をクリック
  7. インストールが終わったら「Restart Now」
  8. Eclipse再起動後に「Window」→「Show View」→「Other ...」から「SVN」→「SVNリポジトリ」を選択すればSVNを使える様になる

mitsu48mitsu482011/02/01 11:40機能はほぼ互角ですが,eclipse.orgのメインラインとしてSubversiveを提供しているようです

saika_makotosaika_makoto2011/02/06 22:59なるほど。情報ありがとうございます(><

ZawtunnZawtunn2012/06/01 16:25For the love of God, keep wtrinig these articles.

tilbpdtilbpd2012/06/01 23:135FTNJP <a href="http://lfzrkyzipvnq.com/">lfzrkyzipvnq</a>

aybwcosmexaybwcosmex2012/06/02 03:0846gS8D , [url=http://bakjwnlvginz.com/]bakjwnlvginz[/url], [link=http://frwjoaqaqime.com/]frwjoaqaqime[/link], http://rtfnbmxmyyvf.com/

luwwdbogbzluwwdbogbz2012/06/03 15:06VK30du <a href="http://igjngmqkhigm.com/">igjngmqkhigm</a>

akfotcakfotc2012/06/04 04:25tPnUEy , [url=http://omotxliwayso.com/]omotxliwayso[/url], [link=http://qbxaieahlrfh.com/]qbxaieahlrfh[/link], http://ybzcwmojdkgl.com/

ujuvzxnoyvujuvzxnoyv2014/04/12 18:36jiojcjqipof.efw, <a href="http://www.vcqzqnzayi.com/">vpqxepjrpt</a> , [url=http://www.nlequrmxye.com/]cqfgdxdraf[/url], http://www.cgttcfysdl.com/ vpqxepjrpt

2011-01-24

【Cocos2d技術メモ】Cocos2dの描画をクリッピング

02:39 | 【Cocos2d技術メモ】Cocos2dの描画をクリッピング - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク - 【Cocos2d技術メモ】Cocos2dの描画をクリッピング - とあるiPhone開発者とゲームエンジン

(void)visit をオーバーライドして

glEnable(GL_SCISSOR_TEST);
glScissor(x, y, width, height);
[super visit];
glDisable(GL_SCISSOR_TEST);

これで子ノードの描画はクリッピングされる。

  1. 参考資料http://efreedom.com/Question/1-3177751/Cocos2d-iPhone-Sprite-Cliping-Mask-Frame

DarinaDarina2012/05/30 13:33What a joy to find someone else who thniks this way.

nzuteynzutey2012/05/31 17:50vm8ANp , [url=http://zlmcogyoarww.com/]zlmcogyoarww[/url], [link=http://wqpxnspcubot.com/]wqpxnspcubot[/link], http://bcbzjooalbay.com/

zyjzzpzyjzzp2012/05/31 23:26h0w5uN <a href="http://pbyawegoemei.com/">pbyawegoemei</a>

zsrvwfxzsrvwfx2012/06/01 19:50cTCxsV , [url=http://cwfkmjsraztz.com/]cwfkmjsraztz[/url], [link=http://xemagkixfweb.com/]xemagkixfweb[/link], http://merarrxkigrf.com/

2011-01-23

まずは企画を考えてみる

11:16 | まずは企画を考えてみる - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク - まずは企画を考えてみる - とあるiPhone開発者とゲームエンジン

cocos2dの勉強のために3dダンジョン探索ゲームを作ってみよう。

パーティーを組んでダンジョンに潜り、モンスターと戦いながら地下を目指す。

たまにRPGやりたくなって探すんだけど、どれも英語オンリーだったり、キャラが可愛くなかったりしてなかなか手が出ない。

「こんなゲームが欲しいなー」なんて俺得な事を考えつつ、画面のイメージをタブレットで落書きながら妄想(≒企画)を広げてみる。

f:id:saika_makoto:20110123105137j:image

どこから手を付けるか?

11:16 | どこから手を付けるか? - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク - どこから手を付けるか? - とあるiPhone開発者とゲームエンジン

まずはダンジョン表示と、タッチイベントによるマップ移動かな。

戦闘とか、パーティー編成なんかはまだ妄想段階なので後回し。

f:id:saika_makoto:20110123111323j:image

今日はまずはこんなカンジの画面を作ってみようか。

ダンジョンの壁

12:03 | ダンジョンの壁 - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク - ダンジョンの壁 - とあるiPhone開発者とゲームエンジン

案の定フリーハンドで壁を描くと使い物にならなかった(汗

正確なパースが欲しかったのでBlenderでガイドをレンダリングしてみた。

f:id:saika_makoto:20110123120317p:image

グリッドにスナップさせると正確なオブジェクトを作るのがすごく楽。

マテリアルにはワイヤフレームを指定してレンダリング

これならガイドに使えそうだ。

余談だけど去年からBlender2.5の開発もかなり進んでおり、UIの改善から安定性の向上と実用に耐えうる段階まできている。

個人ではMayaや3ds maxを買えそうにないのでとても期待してます。

http://www.blender.org/


仮の壁イメージ完成

13:07 | 仮の壁イメージ完成 - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク - 仮の壁イメージ完成 - とあるiPhone開発者とゲームエンジン

Blenderの画像をガイドに仮の壁イメージを作成。

今度はこれを表示するコードを実装しなくちゃ。

f:id:saika_makoto:20110123130510p:image

お腹減ったのでひとまず昼飯にしよう。

マップデータ

19:26 | マップデータ - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク - マップデータ - とあるiPhone開発者とゲームエンジン

ひとまずマップデータはエディタ的な物がないのでテキストで持つ事にしてみた。

落とし穴やダメージ床などの新要素も追加しやすいと思う。

本格的に作り込むならもっと細かい設定のできるエディタを用意する必要があるけど、今はこれで十分。

マップデータはウイザードリー#1のB1Fを模倣してます。マジリスペクト!

ひとまずボタンイベントでプレイヤーが移動したり、向きを変えられる事をコンソールで確認。

f:id:saika_makoto:20110123192108p:image

次は壁の表示いってみますかね。

晩飯のカボチャを煮ながらどうやって作るか考えよう。

壁表示

00:00 | 壁表示 - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク - 壁表示 - とあるiPhone開発者とゲームエンジン

ようやく壁を表示してダンジョン内を歩き回れるようになった。

壁の表示の仕組みは非常にシンプルで、ゲームウォッチ(古い?)のようにあらかじめ壁画像を配置しておき、プレイヤの向きとマップの状態で表示/非表示を切り替えているだけ。

壁が若干ずれているのはノーマル解像度と高解像度にあわせるために画像位置をスクリーンサイズの割合で指定しているため。

今回は目測で位置を決めたけど、しっかり計算すればピッタリに表示できるはず。

f:id:saika_makoto:20110123233825p:image

実際に操作してみると思ったより指で画面が隠れてしまう。

移動キーは右によけておくべきかな?

目標にしてたマップ表示&移動までできたので本日はここまで。


リファクタリングもしてないコードだけど進捗ってことでアップ。

http://files.me.com/penguin.dream/rbgt9r

(※リンクは12ヶ月間のみ有効にしてあります)

はるはる2012/04/09 17:39こんにちは。3Dプログラミング初心者です。
勉強もかねて3Dダンジョン系のゲームを作ろうとして、
このページを発見しました。
もし宜しければ、コードを再アップして頂けないでしょうか?

2011-01-22UIWebViewの覚え書き

saika_makoto20110122

UIWebViewで特定URLを開く

03:20 | UIWebViewで特定URLを開く - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク - UIWebViewで特定URLを開く - とあるiPhone開発者とゲームエンジン

UIWebViewを使うと簡単にWebページを表示できる。これは便利だ。

	NSString *path = @"http://www.google.co.jp";
	NSURL *url = [NSURL URLWithString:path];
	NSURLRequest *req = [NSURLRequest requestWithURL:url];
	[webView loadRequest:req];

UIWebViewで表示中のHTMLを読み込む

01:44 | UIWebViewで表示中のHTMLを読み込む - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク - UIWebViewで表示中のHTMLを読み込む - とあるiPhone開発者とゲームエンジン

UIWebViewは外部からJavaScriptを実行することができるので、innerHTMLで内容を取得することができる。

	NSString *html = [webView  stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];

これでHTML取得できた。

テキスト形式ならXMLjsonデータでもオーケーだった。

stringByEvaluatingJavaScriptFromString:は応用次第で色々使えそうだ。


Cocos2d上にUIViewを表示する

03:40 | Cocos2d上にUIViewを表示する - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク - Cocos2d上にUIViewを表示する - とあるiPhone開発者とゲームエンジン

せっかく日記名を変更したのでゲームエンジンTips

iPhone用の2dゲームエンジンCocos2d上にUIViewを表示するコード。

	MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]];
	[[[CCDirector sharedDirector] openGLView] addSubview:controller.view];

Cocos2d 0.99.2で動作確認しました。

  1. 参考にしたサイト:http://profo.jp/wiki/index.php?cocos2d_and_uikitlayer

saika_makotosaika_makoto2011/01/23 00:45うわっ、なんじゃこりゃ。
はてなtouchってダイアリーしか投稿できないじゃん!
こーゆー細かい点が嫌になって更新止めたのも思い出した。

saika_makotosaika_makoto2011/01/23 00:52はてなグループは非常に使いずらいけど、みんなと開発情報を共有するために頑張る。
いっそ、はてなグループに特化した投稿クライアント作るか。

saika_makotosaika_makoto2011/01/23 01:34メールで送信すると画像が必ず一番上に表示されるのか。
ちょっとしたコメントってのも謎。

2011-01-21今日からiPhone開発の本気出す

ふむふむ

01:35 |  ふむふむ - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク -  ふむふむ - とあるiPhone開発者とゲームエンジン

ここでiPhone開発関連の情報を発進しようとはてなグループに登録して2年4ヶ月が経過。

この2年はアホほど仕事してたのでほとんど趣味のiPhone開発に時間を取れなかったのが建前。

実はこのブログURL忘れてたのと、はてなログインの仕方が分からなくて放置してたのが本音。

仕事でFlashばっかやってたけど、今年から本気出してiPhone開発する。

f:id:saika_makoto:20110123014252j:image

絵も描けるのか。

これはちょっと嬉しいかも。


iPhoneからの投稿テスト

01:17 | iPhoneからの投稿テスト - とあるiPhone開発者とゲームエンジン  を含むブックマーク はてなブックマーク - iPhoneからの投稿テスト - とあるiPhone開発者とゲームエンジン

試験投稿

f:id:saika_makoto:20110123020100j:image

はてなdiaryにアップした写真の貼り付けテスト。

f:id:saika_makoto:20110123021240j:image

どうかな?

iPhoneからはてなグループに投稿する場合、はてなtouchで編集してSafariでグループの日記にコピペするのが一番早いみたい。

写真とか画像ははてなtouchからアップロードすればグループでも自由に使えた。

saika_makotosaika_makoto2011/01/23 01:02日付が投稿のユニークキーになってるのか。
これじゃ1日に何度も異なるタイトルの投稿できないなぁ…。

saika_makotosaika_makoto2011/01/23 03:29異なる記事を同じ日付で追加投稿したい場合、見出し(半角の*)でとして付ければいいのかな。
暗黙の了解ってやつか。

LucaLuca2012/08/09 02:44I have exactly what info I want. Check, please. Wait, it's free? Awesmoe!

fgxvpuefgxvpue2012/08/09 16:19MVVcGl <a href="http://bhoucuakzsuh.com/">bhoucuakzsuh</a>

uemktlwuemktlw2012/08/09 20:537EACoX , [url=http://wdgbutrkxtbq.com/]wdgbutrkxtbq[/url], [link=http://wwuthottxwwp.com/]wwuthottxwwp[/link], http://dheosbgzvwge.com/

vtdxoosjprgvtdxoosjprg2012/08/10 04:08oeB5mC <a href="http://upmdetgfvvhr.com/">upmdetgfvvhr</a>

2010-07-24【傾向と対策】setNumberOfRows: の使用でリジェクトされた このエントリーを含むブックマーク

つい先日、MQOViewerのバージョンアップ申請をしたらAppleから初めてのリジェクトを頂いた。

ちゃんと日本語で理由を書いてあったのですごく分かりやすいリジェクトメールだと思いました。

リジェクトの理由

貴社のアプリケーションには以下の非公開APIが含まれております。

setNumberOfRows

調べてみたらUIActionSheetの高さを行数で指定していた部分がこの関数を使っていた。

この部分は確かエリカ女史のiPhone本のコードをマネして実装した所かな。

対策

setNumberOfRows:を使わないでsetMessage:に改行記号を入れて高さを伸ばした。

コードはこんなカンジ。


// 変更前
	[_actionSheet setNumberOfRows:10];

// 変更後
	//[_actionSheet setNumberOfRows:10];
	[_actionSheet setMessage:@"\n\n\n\n\n\n\n\n\n\n\n\n"];

もっといい方法があるかも知れないけど、とりあえずは解決しました。