n回このメソッドを呼べば別のメソッドを呼ぶというものを実装したいけど、うまくいかないので質問させていただきました。
ソースコードは以下の通りです。
private boolean canMove(Rect movedRect) {
int horizontalBlock = movedRect.centerX() / blockSize;
int verticalBlock = movedRect.centerY() / blockSize;
if (placeHorizontalBlock != horizontalBlock
|| placeVerticalBlock != verticalBlock) {
setTargetBlock(verticalBlock, horizontalBlock);
placeHorizontalBlock = horizontalBlock;
placeVerticalBlock = verticalBlock;
}
int yLength = targetBlock.length;
for (int y = 0; y < yLength; y++) {
for (int x = 0; x < xLength; x++) {
int clearCounter =0; //最初は0 ・・・(1)
Block block = targetBlock[y][x];
if (block == null) {
continue;
}
if (block.type == Block.TYPE_WALL && Rect.intersects(block.rect, movedRect)) {
return false;
}
//ゴールと重なったらonGoalを呼び出す ・・・(2)
else if (block.type == Block.TYPE_GOAL
&& block.rect.contains(movedRect.centerX(), movedRect.centerY())) {
clearCounter += 1; //呼び出される度にclearCounterに1足したい
if ( clearCounter < 3) { //3回未満ならonGoalを呼びたい
eventCallback.onGoal();
return true;
} else { //3回以上ならonChangeを呼びたい
eventCallback.onChange();
return true;
}
}
}
}
return true;
}
(2)のところで、中に条件分岐をいれて、場合分けで処理したいのですが、"clearCounter += 1;"という処理をいれても、呼ばれる度にリセットされるのではないか?という結論にいたりましたが、解決方法がわかりません。
初めから、(1)を"clearCounter = 5;" などにすると、onChangeが呼ばれることは確認しました。
ご回答のほうよろしくおねがいいたします。
回答1件
あなたの回答
tips
プレビュー