1

Cocos2D で大きな画像を使用して、ユーザーがスワイプまたはピンチでズームインおよびズームアウトできるようにすることは可能ですか?

この投稿からわかるように、Cocos2D 画像の最大解像度は 2048x2048 です。これは明らかにデバイスのビューポートよりも大きいので、ユーザーが画像内を移動できるようにしたいと考えています。

私はゲームを作成しているのではなく、ユーザーが任意のオルガネラをタップして、それらに関する情報のポップアップを表示できるようにする一種のインタラクティブな生物細胞を作成しています。

これはイメージがどうなるかのアイデアであり、デバイスのビューポートにすべてを詰め込むことは明らかに不可能です:

細胞

このプロジェクトを深く掘り下げる前に、大きな画像を使用できるかどうか、ユーザーが任意に画像を移動できるかどうか、そしてオルガネラのタッチを検出できるかどうかに興味があります。おそらくCCSprites経由ですか?

4

2 に答える 2

2

CCSprite をサブクラス化し、大きな画像をクラスの画像として使用することをお勧めします。CCSprites は、基本的な CCTouchDispatcher デリゲートをスプライトのクラスに追加するだけで、確実にタッチを検出できます。

[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:-1 swallowsTouches:YES];

次に、このメソッドも CCSprite サブクラスに追加します。

-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event

この時点で、スクロールしたり、必要に応じて何でもしたいことができます。

画像を多くの複数のスプライトに分割し、代わりに CCLayer を使用してタッチを管理することができます。それは、画像をそれほど大きくする必要があるかどうか、または単一の画像の制限で作業するのに十分かどうかによって異なります。それらもかなり大きいことを考えると。ここでの私の方法は、それよりもはるかに複雑ではありません。

于 2012-02-13T04:14:13.767 に答える
1

最大テクスチャ サイズは、coscos2d だけでなく OpenGL ES によって制限され、デバイスによって異なります。ただし、イメージを複数のテクスチャにロードして、それらのテクスチャを画面上で配置および移動することができます。したがって、実際には任意のサイズの画像を表示できますが、プログラムで画像のさまざまなスプライト (タイル) を管理する必要があります。

CCSptites はタッチを検出しません。CCLayers が持っているタッチ イベントを取得すると、ヒット テストを実行して、特定の CCSprite にヒットするかどうかを確認できます。

于 2012-02-13T03:23:40.873 に答える