0

CCLayerPanZoom サブクラスがあります。テスト目的で、画面の中央にスプライトを配置しました。ズームの前後に次のテストを行います。

 if(CGRectContainsPoint(mySprite.boundingBox,touchedPoint))
     NSLog(@"Touch inside the sprite");

ズームする前は「スプライト内でタッチ」出力を取得しますが、ズームすると表示されません。私は同様の質問をしました(ズームビューでタッチされた場所の異なる x 座標と y 座標を取得する)、後でそれを理解しました。しかし、私が見つけた解決策は、ズームではなくパン時にのみ機能します。そこにはたくさんのゲームがあり、これは非常に単純でなければなりません (少なくとも私より前に行われました)。タッチしたポイントをズーム前と同じにする必要があります。

4

1 に答える 1

0

この問題から抜け出す方法を見つけるために無駄な時間を費やしたことを後悔しています. Cocos2D には convertToNodeSpace と呼ばれるきちんとまとめられたメソッドがあり、すべての重い重量を持ち上げることがわかりました。パンされた距離とズームされたスケールを考慮に入れるために、これらすべてのクレイジーな計算を行う必要はありません。私は次のことをしただけで、すべてが魔法のように機能しました

touchedPoint=[self convertToNodeSpace: touchedPoint];

ここで、self は CCLayer のサブクラスである CCLayerPanZoom のサブクラスです。それで全部です。これが誰かに役立つことを願っています。

于 2013-09-27T16:05:57.550 に答える