0

cocos2d::CCLayer を拡張する 2 つの MyGameScreen オブジェクトがあります。最初の画面の ccTouchesMove をキャプチャして、iOS アプリケーション画面のページ間をスライドするのとまったく同じように移動効果を作成できるようにしています。

私のクラスは次のようになります:

class MyGameScreen: public cocos2d::CCLayer {
    cocos2d::CCLayer* m_pNextScreen;
}

bool MyGameScreen::init() {
    m_pNextScreen = MyOtherScreen::create();
}

void MyGameScreen::ccTouchesMoved(CCSet *touches, CCEvent *event){
    // it crashes here... on the setPosition... m_pNextScreen is valid pointer though I am not sure that MyOtherScreen::create() is all I need to do...
    m_pNextScreen->setPosition( CCPointMake( (fMoveTo - (2*fScreenHalfWidth)), 0.0f ) );
}

編集:明確な質問を追加

m_pNextScreen で setPosition を実行しようとするとクラッシュしました...

m_pNextScreen は有効なポインターであり、適切に初期化されているため、なぜクラッシュしたのかわかりません。誰でも理由を説明できますか?

編集:進捗レポートの追加

システム全体を改造し、 と の両方class CContainerLayer : public cocos2d::CCLayerを含むa を作成しました。ただし、これは効率的なアプローチではないように見えました.2ページ以上を並べてスクロールできるようにする必要があるかもしれません.ユーザーがスクロールするかどうかに関係なく、今後のページ...これを行うためのより良いアイデアまたはgithubオープンソースサンプルはありますか?MyGameScreenMyOtherScreenCContainerLayer

ご意見をお寄せいただきありがとうございます。

4

2 に答える 2

1

次のリンクから paging enable scrollview.download ファイルを使用し、cocos2d/extenision/gui/ に配置します。その後、scrollview のプロパティを設定して、ページング ビュー サイズで true のページングを有効にする必要があります。

https://github.com/shauket/paging-scrollview

于 2016-03-17T10:18:08.020 に答える
0

シーン トランジションの場合、次の操作を実行できます。

void MyGameScreen::ccTouchesMoved(CCSet *タッチ, CCEvent *イベント)

{

CCScene* MyOtherScene = CCTransitionFadeUp::create(0.2f, MyOtherScreen::scene());

CCDirector::sharedDirector()->replaceScene(MyOtherScene);

}

于 2013-11-23T11:57:27.830 に答える