現在cocos2d-xでアプリ開発をしているものです
開発環境:
OS Windows
コードはVSで書いています
実機でためすためにEclipse使用
主のスペック:
プログラム歴10ヶ月
専門学生のひよっ子
クラスを初めて1ヶ月、継承なにそれおいしいの?
問題点1:
cocos2dで新規のクラスを追加する場合
今回はPlayerクラスを追加することとします
/-------ヘッダー----------/
class Player : public cocos2d::Layer{
private:
public:
static cocos2d::Scene createScene();*
bool init();
CREATE_FUNC(Player);
}
↑のように書くと思います
このPlayerクラスのinit();の中で
矩形を描画させる機能をもたせたとします
/-------ヘッダー----------/
private:
int x, y;
int width, height;
/-------.cpp----------/
bool Player::init(){
if ( !Layer::init() ){
return false;
}
Rect rect = (0, 0, width, height);
auto sprite = Sprite::create();
sprite->setTextureRect(rect);
sprite->setPosition(x, y);
sprite->setColor(Color3B::WHITE);
this->addChild(sprite);
}
↑これで白色の四角い矩形が描画できたとします
*x, y, width, heightの数値は他で代入したとします
コレをもとからあった
HelloWorldクラスで呼ぶ場合どういう手順を踏むとよいのでしょうか?
一応自分が確認した方法では
/-------HelloWorld.ヘッダー----------/
// プレイヤーヘッダーの呼び込み
#include "Player.h"
/-------HelloWorld.cpp----------/
Scene HelloWorld::createScene(){*
auto scene = Scene::create();
auto layer = HelloWorld::create();
/* ↓ここから /
auto layer2 = Player::create();
scene->addChild(layer2);
/ ↑ここまでを追加 */
scene->addChild(layer);
return scene;
}
↑のようにすればHelloWorldクラスでPlayerクラスを呼ぶことが出来ました
HelloWorldクラスで描画しているものと
Playerクラスで作成した矩形が同時に描画されている状態です
もし他にイイ(?)方法があれば教えていただけると嬉しいです
問題点2:
*上の内容をそのまま使います
次に問題になるのが
HelloWorldクラスでPlayerクラスで宣言しているメソッドを見たいときや
弄りたいときどうすればいいか、です
Playerクラスにx, y, width, height;がありますが
HelloWorldクラスで
/-------HelloWorld.ヘッダー----------/
private:
// クラスの宣言
Player player;*
/-------HelloWorld.cpp----------/
bool Player::init(){
if ( !Layer::init() ){
return false;
}
// 条件文を満たしたら矩形のサイズを変更したい!
if (条件文){
// player.width = 100;
// player.height = 100;
// ポインターで宣言したからこうかな? **player->width = 100;** **player->height = 100;**
}
}
プライベートのwidth, heightが見えるわけねーだろ
という問題はどこかで解決したとして
こういうことは出来るのでしょうか?
出来るのであればぜひ教えていただけたらと思います
一応自分でもいろいろ弄ってはみたのですが理解できず
質問させていただきました
初めての投稿なので至らないところはありますがよろしくお願いします
なお、ご不明な点がございましたらその都度ご連絡を・・・って
普段つかわない敬語つかうとこうなる(・ω・`)
![guest](/img/icon/icnUserSample.jpg)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。