Fernweh @fernweh ?

1 週間と 2 日間前に活動
  • サムネイル

    cocos2dの理解を深めるために『cocos2dで作るiPhone&iPadゲームプログラミング』を読んでいるのだけど、サンプルコードがXcode3向けに作られているためXcode4で動かなくてつまづいた orz まぁ動いたのでメモ。

    cocos2d のプロジェクトを新しく作る。名前は何でもいい。 サンプルプロジェクトの *****AppDelegate.h/m ファイルを AppDelegate.h/m にリネームする サンプルプロジェクトの Classes フォルダの中身を、1.で作ったプロジェクトに全て突っ込む。 同名ファイルがある場合は上書きする。 3. で同名ファイルが存在しなかったファイルを、Xcodeのプロジェクトに関連付ける。 同名ファイルが存在しなかったものは3.の操作後Finderで選択状態になっているはずなので、このままXcodeにドラッグしていけばOK。 Xcodeの文字列置換機能で AppDelegate.h/mのソースコード内の*****AppDelegate という文字列を AppDeleagate に置換する。 サンプルプロジェクトの Resourceas フォルダの中身から必要なファイルを 1.で作ったプロジェクトの Resourceフォルダに突っ込んで(すでに存在するファイルは移動してはいけない)、3. と 4. と同様の手順でXcodeに関連付ける これで走らせて見てきちんと動けばOK

    上記の操作だけではダメなサンプルがある

    7章以降のシューティングゲームのサンプルコードで使われている敵弾(candystick.png, redcross.png, blackhole.png)がgame-art.plist, game-art.png において存在していないサンプルがあるので、この部分でテクスチャが取得できずにエラーが出てしまうものがある(もしかしたら日本語版のサンプルだけの移植ミスかも知れない)。これの修正方法は Zwoptex を使用して game-art.plist と game-art.png を作りなおすか、あるいは candystick.png, redcross.png, blackhole.png を bullet.png に置き換えて代用すればOK。私はめんどうくさかったのでbullet.pngで代用した。 [...]
  • Fernweh が市場で新しい投稿を公開しました: [cocos2d-x]iAd と EAGLView.mm#canBecomeFirstResponder 問題   5 年と 11 か月前 · 表示

    サムネイル

    CCIMEDelegate#attachWithIME メソッドが
    仕方ないので

    ※現在ではこの問題に対処されている模様です。

    cocos2d-x のバグというかたぶん対応してないだけな気がするけど、iAd のダミー広告を開いて閉じるとなぜかソフトウェアキーボードが表示されてしまう。本番環境でどのように動作するのかはわからないけど同様に動作したら非常にマズイ。知識不足のためにさっぱりわからないけど EAGLView.mm の canBecomeFirstResponder で NO を返せばこの問題は解決する???解決するかどうかは不明だけどとりあえずキーボードは出てこなくなる。

    しかし…

    CCIMEDelegate#attachWithIME メソッドが

    効かなくなる orz

    上の方法で iAd を閉じた時のキーボード表示を防ぐと CCIMEDelegate#attachWithIME#attachWithIME メソッドをコールしてもキーボードが表示されなくなってしまう。CCTextFieldTTF などによる文字入力を行わないアプリならば全く問題がないのだけれど、自分のアプリでは使用しているため困ってしまった。

    仕方ないので

    EAGLView に 条件分岐用に bool 変数を作って、attachWithIME をコールする直前に この変数に YES をセットして、canBecomeFirstResponder の返り値を分岐させることで解決した…?現状はこれでうまく動いている。とりあえず問題なさそうなのでこれでいいや。以下のような感じにして分岐。

    なんか根本的な問題は全くわかってないし、いろいろダメな気がするけどまぁいいや。

  • Fernweh が市場投稿「cocos2d-x を使うために C++ を学習したメモ」にコメントしました   5 年と 11 か月前 · 表示

    @Egtra ほうほう、なるほど~。確かにそう考えると良い感じですね。コメントありがとうございます!

  • Fernweh が市場で新しい投稿を公開しました: [Cocos2d-x] テキストフィールドを使用する – CCTextFieldTTF   5 年と 11 か月前 · 表示

    サムネイル

    KeyboardNotificationLayer クラス TextFieldDefaultTest クラス TextFieldActionTestクラス まぁそういうことで Cocos2d-x では テキストフィールドを利用するためのクラス CCTextFieldTTF が用意されている。 サンプルの TextInputTest のコードを見れば使い方はだいたい分かるはず。 下の動画は TextInputTest の動画 CCTextFieldTTF with customizable effects & multiplatform support – YouTube 以下、サンプルコードについてのメモ

    KeyboardNotificationLayer クラス

    CCIMEDelegate と CCLayer を継承しており、画面のタッチ時にキーボードを呼び出す機能を持っているクラス。 CCIMEDelegate は 以下の仮想関数を持っている keyboardDidHide(CCIMEKeyboardNotificationInfo &info); keyboardDidShow(CCIMEKeyboardNotificationInfo &info); keyboardWillHide(CCIMEKeyboardNotificationInfo &info); keyboardWillShow(CCIMEKeyboardNotificationInfo &info); KeyboardNotificationLayer クラスで使われているのはkeyboardWillShowのみ。

    TextFieldDefaultTest クラス

    KeyboradNotificationLayer の純粋仮想関数 vonClickTrackNode(bool bClicked) が実装されている。このメソッドはテキストフィールドがタッチされたときに KeyboardNotificationLayer#ccTouchesEnd から呼び出される。

    TextFieldActionTestクラス

    このクラスは KeyboardNotificationLayer と CCTextFiedlDelegate を継承している。CCTextFieldDelegateはテキストフィールドのイベント時にコールされる関数が定義されている。 virtual bool onTextFieldAttachWithIME(cocos2d::CCTextFieldTTF *sender); : IMEをアタッチした時(ソフトフェアキーボードが呼び出されるとき)に実行される virtual bool onTextFieldDetachWithIME(cocos2d::CCTextFieldTTF *sender); : [...]
  • Fernweh が市場で新しい投稿を公開しました: [cocos2d-x] CCFileUtils でファイルを読み込む   6 年前 · 表示

    サムネイル

    さいしょは、CCApplication_ios.mm に Objective-C のコードを書いてファイルを取得してたんだけど、 なんかダメダメな感じがしたのでたぶんCCFileUtilsを使うんだなということをおもむろに理解した。 ということで使おうと思ったけど日本語のリファレンスが見つからないのでテキトーに一部を和訳した。

    CCFileUtils.h

    @brief 手軽にファイルリソースをゲットできるよ! @param pszFileName パスを含めたファイル名の char文字列 @param pszMode ファイルの読み込みモード char文字列 “r” は テキストモードでの読み込み : テキストファイルの取得 “rb” は バイナリモードで読み込み : 画像リソースの取得など @param pSize 読み込むデータの長さ。デフォルトは0 @return 読み込み成功したらデータへのポインタを返すよ @warning ファイルデータはキャッチアンドリリースが原則 @brief zip ファイルからお手軽にリソースデータを取得できるよ @以下は getFileData と同様 HD suffixってなんだろうとおもってググったら cocos2d for iPhone(Ver. 0.99.5)でRetinaディスプレイ対応 – CaptainShadowの日記 に解説があった。 これ以降は読んでない。

    テキストファイルを読み込む方法

    途中で気づいたけど、 CCTexture2D * CCTextureCache::addImage(const char * path) [...]
  • Fernweh が市場で新しい投稿を公開しました: [cocos2d-x] プラットフォーム別に処理を分岐する方法   6 年前 · 表示

    サムネイル

    プリプロセッサを使えばOK。

    CC_TARGET_PLATFORM にはプラットフォーム別に異なる定義がされているので
    CC_PLATFORM_***** との比較で分岐可能。

    以下のコードは CCApprication_Platform.h のコピペ

  • Fernweh が市場で新しい投稿を公開しました: [Cocos2d-X]現在の言語を取得する / ローカライズ   6 年前 · 表示

    サムネイル

    使用中の言語を取得する

    CCApplication::getCurrentLanguage() によって現在の言語を取得できるけども、
    コードを見ると日本語の分岐が無いので追加しないと日本語の判定には使えないので日本語の分岐を増やすこと。
    CCCommon.h にある enum LanguageType にも 日本語の定数を追加しておくこと。

    とりあえず凄くテキトーに書いた

    クラスかファイルかにまとめておけばいいのかなぁ。

    とりあえず醜いけどこれでいいや。

  • Fernweh が市場で新しい投稿を公開しました: [Cocos2d-X] CCLabelBMFont で使用する .fnt ファイルの仕様   6 年前 · 表示

    サムネイル

    各種文字のパラメータ common パラメータ メモ CCLabelBMFont で使用する .fnt ファイルの仕様について知りたかったけれどもググってもまともに日本語情報がでてこないので、 値をテキトーにいじって調べてみた。

    各種文字のパラメータ

    file ビットマップフォントのテクスチャのリソース id ユニコードの文字番号。文字の割り当てを変えたい時とか以外は弄る必要はなさそう。日本語つかいたいけどメモリ消費を抑えたいなら使ってない id に日本語を割り当てればよさそう。 x y width height は テクスチャにおける 文字の位置と範囲を指定している。ようするにCCRectに当たる部分。 xoffset と yoffset は 描画起点から offset 分だけズラした位置に描画するための値。この値を変更しても他の文字の位置には影響することはないようだ。 xadvance で 文字幅 を指定できる。この値は他の文字の位置に影響する = 行間の設定が可能。yadvance はないのかな? page, chnl は知らない。知らなくても問題なさそうだったので…

    common パラメータ

    どう考えても共通のパラメータ。 lineHeight 読んで字の如しだった。文字の高さの指定 base よくわからなかった。void CCBMFontConfiguration::parseCommonArguments(std::string line) の中身見ても読み込んでないしcocos2d-xでは使われない? scaleW, scaleH これはテクスチャのサイズを書いておくパラメータらしい。読み込み時の条件判定に使用されるのみっぽいので気にする必要はないはず。 そういうことで .fnt を理解したことにしておく。

    メモ

    あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろをんがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉっゃゅょゎ アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロヲンガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォッャュョヮ、。=,./_!”#$%&’()0=~|`{*}?_ ●×…♪∞\/÷⇒⇔→←↑↓ ゐゑヰヱ ─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┥┰┸╂ [...]
  • Fernweh が市場で新しい投稿を公開しました: [C++]文字列中のコメントをすべて削除する   6 年前 · 表示

    サムネイル

    ブロックコメントのみを削除する
    ブロックコメント と インラインコメント を両方削除する

    Json パースにpicojsonを使わせていただいているのだけど、
    // とか /* ~ */ のコメントが入っているとパースできない。まぁJSONファイルにこういうコメントを入れるのは正しくないんだろうけど使えないと不便。コメントを除去する関数を書いたのでメモ。

    ブロックコメントのみを削除する

    ブロックコメント と インラインコメント を両方削除する

  • Fernweh が市場で新しい投稿を公開しました: [cocos2dX] の CCLabelBMFont を マルチバイト文字列対応する   6 年前 · 表示

    サムネイル

    ※今現在のバージョンではほぼ役に立たない情報なのでご注意下さいませ! kCCBMFontMaxChars 定数 元のソース 変更後のソース まだ未対応なようなので自力で修正してみた。 3バイト以下のUTF-8マルチバイト文字に対応。

    kCCBMFontMaxChars 定数

    カタカナなどの文字の設定を含む .fnt を読み込むと、こいつに関連して Assert される。 この値は扱えるユニコード値の限界を設定しているようで、65535にすればユニコードがほぼ使用できる… そう思っていた時期が俺にもありました。 65535 に変更してみるものの表示されない。 コードを見てみるとなんか ユニコードを取得しようとしていると思われる場所で なんてコードが書かれている。char 値を unsigned short にキャストしても 0 ~ 127, 65408 ~ 65535 の値になるので ASCII 文字以外は思うようには表示されない。 そういうことで現時点では CCBMFontLabel は ASCII 文字列しか対応していないらしい。 使いたいなら 使ってない文字に頑張って割り当てるか、コードを マルチバイト対応にするか、修正されるのを待つ他にない。 ということで修正した。

    元のソース

    void CCLabelBMFont::createFontChars() メソッドだけを変更すればOK

    変更後のソース

    [...]
  • Fernweh が市場で新しい投稿を公開しました: cocos2d-x を使うために C++ を学習したメモ   6 年前 · 表示

    サムネイル

    実行環境

    とりあえず Xcode を使おうと思う。 cocos2d-x のプロジェクトを既に作ってあったので /Classes/AppDelegate.cpp の bool AppDelegate::applicationDidFinishLaunching の中身にコードを書いて練習するというよくわからない 学習環境で実行することにした…まぁいいや。

    Hello World

    こんにちは。 といことでこんなんを実行すると Xcodeのターミナルに Hello World と実行された。 やったね。 ここまでできればC++は攻略したも同然だ!

    名前空間

    AppDelegate.cpp の上のほうをみると とあったのでこれが名前空間っぽかった。 USING_NS_CC の中身は だったのでやっぱそうだった。 実際の名前空間の仕様はどうなってるのかよく知らないけど、 たぶん Java と大差ないだろう。

    変数とか文字列とか

    NSString ではないので @”hogehoge” とか書くというような失敗は しなかったものの、最初 string *str; とか書いて失敗した。 cin >> str は [...]
  • Fernweh が市場で新しい投稿を公開しました: iPhoneアプリの申請などの参考リンク・メモ   6 年と 1 か月前 · 表示

    サムネイル

    過去に作ったアプリのiPad版をつくろうとしたもののアプリ申請などのやり方を色々と忘れていたために手間取ってしまったので、参考にしたサイトもメモしておきます。古い情報も混じっています。 アプリ申請関連 iAd, iAd Network その他 メモ

    アプリ申請関連

    iAd, iAd Network

    その他

    メモ

    過去に作成したアプリのiPad版を申請しようとしたのだけれど色々忘れていた。 iTunes Connect -> Manage [...]
  • Fernweh が講義お題「市場について気になることがあったのでご報告」を開始しました (寺子屋 アバター管理人へリクエスト):   6 年と 1 か月前 · 表示

    はじめまして。
    Fernwehと申します。

    市場(Wordpress)についてですが、エントリーに script要素を書きこめないようになっているようですが、All in One SEO の Additional **** Header の項目を利用するとヘッダにスクリプトを書き込めます。

    おそらく意図していないことではないかと思ったので
    ご報告いたしました。。

  • Fernwehアバター管理人へリクエスト 寺子屋に参加しました   6 年と 1 か月前 · 表示

  • Fernweh が市場で新しい投稿を公開しました: はじめましてのエントリー – NSLocalizedStringで値が取得できない   6 年と 1 か月前 · 表示

    サムネイル

    はじめまして、Fernwehと申します。
    とりあえず登録してみたので何か書いてみます。

    ネタが無いので昨日ハマったバグっぽい現象についてでも書きます。

    Localizable.strings を変更しても反映されない

    過去にColor Labyrinthというアプリをリリースしたのですが現在これをiPad対応しようといろいろしておりますが、昨日、Localizable.stringsにきちんと書き込んだキーを、NSLocalizedStringの引数に入れているにも関わらずLocalizable.stringsの値が取得できない…ということで小一時間ハマりました。

    まぁ解決したのですがその方法は
    「Xcodeを再起動する」
    でした。もしかしたら自分の環境だけで発生する問題なのかもしれません…

    原因不明の問題が起きたら再起動を試みると解決するかもしれないですね!

    以上です orz
    こんなしょぼいネタですが初投稿おしまい。

  • Fernweh が登録ユーザーになりました   6 年と 1 か月前 · 表示