私はCocos2D(cocos2d-x-3.12)でゲームを開発していますが、私は画像を保存するためにどのデータ構造を使用すべきか疑問に思っています。私はいくつかの状態(各状態が独自の別個のイメージを持つ)を持ち、すべての状態変更時にファイルからイメージをロードしたくないクラスを定義しているので、これが必要です。私のクラスはスプライトから派生しているのでCocos2D Image Storage
(私は、ファイルからの読み込みが性能に影響を与えると思います)、私はそのイメージを変更するスプライトのメンバ関数をチェックして、私は以下のが見つかりました:
- スプライト:: setTexture()を受け取り、ファイル名や名前やSpriteFrame
のいずれかを受け取るにTexture2D
auto img = new Image();
img->initWithImageFile("blah.png");
auto txtr = new Texture2D();
txtr->initWithImage(img);
sprite->setTexture(txtr);
しかし、動作しません。だから私はSpriteFrameオプションで左だ:
auto img = new Image();
img->initWithImageFile("blah.png");
auto frame = SpriteFrame::create("blah.png", Rect (0, 0, img->getWidth(), img->getHeight()));
sprite->setSpriteFrame(frame);
これは実際に動作しますが、私はのRect部分がどのように動作するかを知ることができません。また、位置決めにも影響します。
auto img = new Image;
string fileAddr = "HelloWorld.png";
img->initWithImageFile(fileAddr);
auto sprite = Sprite::create();
auto frame = SpriteFrame::create(fileAddr, Rect (0, 0, img->getWidth(), img->getHeight()));
sprite->setSpriteFrame(frame);
// position the sprite on the center of the screen
sprite->setAnchorPoint(Vec2 (0.5, 0.5));
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
しかしにおける結果:Test Run #1
と使用:画面の中央に画像を置くことになっている以下の例のようにTest Run #2:
sprite->setAnchorPoint(Vec2::ZERO);
結果は次のようになります
助けていただけたら幸いです! :) ありがとう...
ありがとう!それは私の問題を解決:) – functor