0

私の目的の c と cocos2d コーディングの懇願から、私は順次検索法を使用してスプライトを選択しています。タッチを検出するたびに、配列リストから各オブジェクトを検索し、オブジェクトを取得した場合にタッチがスプライト領域にあるかどうかを識別し、そのスプライトを選択します。これは私が知っている方法です。

このメソッドの問題点は、オブジェクト リストが巨大になると時間がかかることです。また、1 つの配列を操作している場合でも、配列がロックされてしまい、その配列に対して何も実行できなくなります。

これ以外にもっと良い方法を知っている人はいますか?

4

2 に答える 2

2

CCMenuItemImageの代わりに使用できますCCSprite。アイテムがタッチされたらセレクターを選択できます。もちろん、次の方法で通常のスプライトのような画像を適用できます。

itemFromNormalImage:selectedImage:target:selector:

また、このメニュー項目を含むメニューを作成する必要があります。そうしないと、それらに触れても機能しません。このメニューのインスタンスを作成しCCMenuて項目を追加し、メニューをレイヤーに追加するだけです。

効率性については、両方の実装でベンチマークを行う必要があります。これは、こちらの方が便利ですが、必ずしも高速であるとは限らないためです。

于 2013-04-04T07:29:23.140 に答える
0

配列をロックしますか? 次に、オブジェクトにもう1つのポインターを使用します。

 NSArray *array = [NSArray arrayWithArray:mSpriteArray];

    for(CCSprite *sprite in array)
    {
        if(CGRectContainsPoint([sprite boundingBox], touchPoint))
        {
          //touched...
        }
    }
于 2013-04-04T05:14:35.447 に答える