Visual Studio 2010 で
At end of source : error 67: expected a “}”
なエラーが出て、なんだこれはと小一時間悩んだ結果、単純に cpp ファイルで namespace の閉じ忘れということが判明。
どのファイルでエラーが出てるのか表示してくれないし、もっとややこしいエラーなのかと思いました。
まあエラーの内容からしてそんな感じですよね・・・
Visual Studio 2010 で
At end of source : error 67: expected a “}”
なエラーが出て、なんだこれはと小一時間悩んだ結果、単純に cpp ファイルで namespace の閉じ忘れということが判明。
どのファイルでエラーが出てるのか表示してくれないし、もっとややこしいエラーなのかと思いました。
まあエラーの内容からしてそんな感じですよね・・・
Visual Studio 2010 でIntelliSence(インテリセンス)を完全に無効化する方法のメモ
オプション>テキストエディタ>C/C++(任意の言語)>IntelliSenceの無効化
をTrueにする
VisualAssistXを使用している場合は、『#includeのオートコンプリートの無効化』もTrueにしておくと、余計なVisualStudio側の処理が走らなくて良い。
Hoge.h
class Hoge { public: static func(); private: static std::vector<int> m_vector; static std::bitset<16> m_bitset; static int m_array[16]; };
Hoge.cpp
Hoge::func() { m_vector.clear(); m_bitset.reset(); m_array[0] = 0; }
という風にしてしまうと、LNK2001の外部参照が未解決リンクエラーが出てしまいます。
staticなメンバ変数は、ヘッダ上では宣言しているだけなので、実体の確保はソース(cpp)側で行う必要があります。
Hoge.cppのfunc()の前に
std::vector<int> Hoge::m_vector; std::bitset<16> Hoge::m_bitset; int Hoge::m_array[16];
を追記して、暗黙の初期化を行うようにすればリンクエラーは解消されます。
enchant.jsの enchant.ui.MutableText を拡張してみました。
・フォントテクスチャをコンストラクタで指定できるように。(コンストラクタで座標指定は削除)
・スケール(scaleX scaleY)に対応。
参考までにペタリ。
var MyMutableText = enchant.Class.create(enchant.Sprite, { /*! コンストラクタ @param fontTexture テクスチャ @param fontTextureUnitSize テクスチャの1文字のサイズ */ initialize: function(fontTexture, fontTextureUnitSize) { enchant.Sprite.call(this, 0, 0); this.fontSize = fontTextureUnitSize ? fontTextureUnitSize : 16; // テクスチャの1文字サイズ this.widthItemNum = 16; // テクスチャの1列に何文字格納されてるか this.x = 0; this.y = 0; this.m_fontTexture = fontTexture; this._imageAge = Number.MAX_VALUE; this.text = ''; if (arguments[2]) { this.row = Math.floor(arguments[2] / this.fontSize); } }, /** * ラベルの内容を書き換える関数 * @param txt */ setText: function(txt) { var i, x, y, wNum, charCode, charPos; var fontDstWidth = this.fontSize * this.scaleX; var fontDstHeight = this.fontSize * this.scaleY; this._text = txt; var newWidth; if (!this.returnLength) { this.width = Math.min(fontDstWidth * this._text.length, enchant.Game.instance.width); } else { this.width = Math.min(this.returnLength * fontDstWidth, enchant.Game.instance.width); } this.height = fontDstHeight * (Math.ceil(this._text.length / this.row) || 1); // if image is to small or was to big for a long time create new image if(!this.image || this.width > this.image.width || this.height > this.image.height || this._imageAge > 300) { this.image = new enchant.Surface(this.width, this.height); this._imageAge = 0; } else if(this.width < this.image.width || this.height < this.image.height) { this._imageAge++; } else { this._imageAge = 0; } this.image.context.clearRect(0, 0, this.width, this.height); for (i = 0; i < txt.length; i++) { charCode = txt.charCodeAt(i); if (charCode >= 32 && charCode <= 127) { charPos = charCode - 32; } else { charPos = 0; } x = charPos % this.widthItemNum; y = (charPos / this.widthItemNum) | 0; this.image.draw( this.m_fontTexture, // テクスチャ x * this.fontSize, y * this.fontSize, // 入力xy this.fontSize, this.fontSize, // 入力wh (i % this.row) * fontDstWidth, ((i / this.row) | 0) * fontDstHeight, // 出力xy fontDstWidth, fontDstHeight ); // 出力wh } }, /** * ラベルの内容 * @type {String} */ text: { get: function() { return this._text; }, set: function(txt) { this.setText(txt); } }, /** * @type {Number} */ row: { get: function() { return this.returnLength || this.width / this.fontSize; }, set: function(row) { this.returnLength = row; this.text = this.text; } } });
っsうーん、Xperia Z SO-02E 上で enchant.js v0.71 のタッチがうまくとれない症状で悩み中。
1回しかタッチしていないのに何故か touchstart が2回反応してしまいます。
他の端末だと大丈夫だったので、端末固有の問題だとは思うのですが、原因不明。
・・・というかそれ以前にmonaca+enchant.jsの環境で、Monaca Debbuger でXperia Z上でプレビューすると基本的になんか動作がおかしいので、まずそれから原因探らないとダメなんですけどね汗
ただ、ビルドしてインストールするとちゃんと動作するので、Monaca Debuggerの不具合なのかもと思い中…
■追記■
enchant.jsのGitHubでまさに同じ問題が報告されていました。
https://github.com/wise9/enchant.js/issues/200
既に解決しているようなので、修正されているenchant.jsファイルをゲットしてきました。
ただ、修正された箇所を見るとわかりますが、enchant.jsを差し替えるだけではダメで、
enchant.ENV.MOUSE_ENABLED = false;
をCore生成の前に呼ぶ必要があります。
マウスとタッチのイベントがかぶって通知されることがあるとか。
・・・やったー直った!
var MyEntity = enchant.Class.create( enchant.Entity, { initialize: function(scene) { enchant.Entity.call( this ); // シーンを保存 this.scene = scene; // シーンに追加 scene.addChild( this ); // この時点で、this.scene は scene じゃなくなっている // addChildした時点でthis.scene が上書かれる } });
こんな感じで、やると、this.scene は上書かれてしまいます。
いやいや、sceneメンバが存在していたとは、盲点でした。
これで結構悩んでしまいました(汗
ライブラリ側とかち合わないように、頭に m_ つけたりするのが良いかもしれませんね。
それ以前に、クラス内のメンバにthisでアクセスしなければならない事を結構わすれて、ダイレクトに書いちゃったりするんですが・・・
2013/02/25時点の、ADTバンドル版を使用しないで、eclipse、Android SDK をインストールする手順をwikiにまとめました。
ADTバンドル版はインストール等すごく簡単で楽チンだったのですが、なんだか挙動がアヤシイ?感じがして、やっぱり以前使用していた単体版のeclipseに戻すことにしました。
自分の環境だとADTバンドル版より安定して使用できます^^;
JDK のバージョンは 『6u41』
AndroidSDK のバージョンは 『r21.1』
eclipse は 『Eclipse 4.2 Juno Pleiades All in One』 の Java の Full Edition
…を使用しています。
ブラウザで使えるクラウド型IDEでいいのないかなーと探していたところ、こんなニュースを発見。
Eclipse開発のブラウザIDE「Orion 1.0」登場
Orionチームは29日(米国時間)、Orionの最新版となる「Orion 1.0」を公開した。Orionはブラウザ上で動作するWebベースの統合開発環境。OrionチームはEclipse Foundationの支援のもと2011年初頭より開発をスタートさせたプロジェクトで、WebブラウザのみでWeb開発が行えるオープンソースの統合開発プラットフォームの提供を目的としている。
Orion 1.0は、6月に公開されたOrion 0.5以来のアップデートで初のメジャーリリースバージョン。Orion 1.0では外観の選択やカスタマイズ、エディタのルールカラーなどが設定できる新たなセッティングページやブラウザ内でRAWファイルを開ける機能、Gitとの親和性の向上、ブックマークの編集機能、プラグインの無効化などが実装された。
Orion 1.0はこちらより取得できる。もしくは専用サイト「Orionhub.org」でアカウントを作成することでも利用が可能。Orionチームでは4ヶ月ごとのリリースを目指しており、2013年2月にOrion 2.0の公開を目指している。
先日Cloud9とShiftEditを試してみたんですが、日本語の都合があまりよろしくないようなのです。
Orionは日本語いけるという情報を見かけたので、後で試してみます。