私のゲームには、単純に水平方向に移動するタイプのオブジェクトがあります。次のようなメソッドがあります。
-(void)moveLeftWithBlock:(void(^)())block {
self.targetX = self.position.x - MOVE_AMOUNT;
id action = [CCMoveTo actionWithDuration:0.125f position:ccp(self.targetX, self.targetY)];
id ease = [CCEaseInOut actionWithAction:action rate:4];
[self runAction: [CCSequence actions: ease,
[CCCallBlock actionWithBlock:block], nil]];
}
...
ここで、垂直方向にも移動できることを除いて、まったく同じ 2 番目のタイプのオブジェクトを作成したいと考えました...最初に考えたのは、そのオブジェクトのクラスをサブクラス化し、moveLeftWithBlock を上書きして、その targetY を更新することでした..しかし、それだけでなく2 つのクラス間でコードが 99% 重複しているだけでなく、moveLeftWithBlock メソッドが呼び出される前にゲームで Y 位置を設定する必要があるため、このソリューションは気に入らないのでしょうか。
次に考えたのは、ゲームで prepareToMove メソッドを呼び出せるようにすることです。これにより、必要となるあらゆる種類のセットアップを行うことができます...メインのオブジェクト タイプについては、何もしません..この 2 番目のオブジェクト タイプについては、ターゲットY.
しかし、私はすぐに考え始めました--待ってください----プロトコルはOPTIONALまたはREQUIREDのメソッドを明示的に定義することであることを知っており、おそらくここでこれを利用する必要があると思いましたが、方法がわかりません.
それで、この場合にプロトコルをどのように使用できるか、そしてそれが「行くべき道」であるかどうかを誰かが私に説明できますか?