皆様にまずお礼を申し上げたいと思います..
Runnable を使用してスプライトを生成するコードを作成しました。しかし、それは私が書いた最後のランナブルのみを実行します。
コードは次のとおりです。
public class LevellingManager {
// ======================== //
// ======================== //
// THE PATH METHOD //
// ======================== //
// ======================== //
public static void path() {
currType = Leveling2.TYPE_DIGGER;
mHandler.post(mStartDigger);
// === NOT EXECUTED === //
generateSprite(Leveling2.TYPE_ROCK, 10, 2000, 2000, LevellingManager.EASY);
// === EXECUTED === //
generateSprite(Leveling2.TYPE_WORM, 8, 3000, 1000, LevellingManager.HARD);
}
generateSprite( )メソッド
public static void generateSprite(int type, int nSprts, int delayPerSprt,
int delayPerBtch, int[] difficulty) {
currType = type;
switch (type) {
case Leveling2.TYPE_ROCK:
System.out.println("Awalnya : " + GameResources2.lastIndexRock);
// ---- Set Generate Data ---- //
currIndex = 1 + GameResources2.lastIndexRock;
currList= GameResources2.listRockToBeAdded;
currLastIndex = GameResources2.lastIndexRock;
currMaxCpcty= GameResources2.MAX_ROCK;
// --- Method to Set the position, speed & delay per sprite ---- //
set(nSprts, delayPerBtch, delayPerSprt, difficulty);
mHandler.postDelayed(mStartRock, currDelay);
GameResources2.lastIndexRock = currLastIndex;
break;
case Leveling2.TYPE_WORM:
// ---- Set Generate Data ---- //
currIndex = 1 + GameResources2.lastIndexWorm;
currList=GameResources2.listWormToBeAdded;
currLastIndex = GameResources2.lastIndexWorm;
currMaxCpcty = GameResources2.MAX_WORM;
// --- Method to Set the position, speed & delay per sprite ---- //
set(nSprts, delayPerBtch, delayPerSprite, difficulty);
mHandler.postDelayed(mStartWorm, currDelay);
GameResources2.lastIndexWorm = currLastIndex;
break;
}
}
実行可能なコードは次のとおりです。
public static Runnable mStartRock = new Runnable() {
public void run() {
installAttach(this);
}
};
public static Runnable mStartWorm = new Runnable() {
public void run() {
installAttach(this);
}
};
Runnable 内で実行されるメソッドを次に示します。 installAttach()メソッド:
private static void installAttach(Runnable r) {
System.out.println("Lewat sini, type : " + currType);
currSpriteGen = currList.get(currIndex);
currSpriteGen
.registerEntityModifier(new SequenceEntityModifier(
new MoveModifier(currSpeed,
currSpriteGen.getX(),
currSpriteGen.getX(),
GameResources2.CAMERA_HEIGHT,
GameResources2.POSITION_DIGGER_HEIGHT)));
currSpriteGen.setVisible(true);
if (currSpriteGen.getParent() == null)
GameResources2.scene.attachChild(currSpriteGen);
else
currLastIndex = currIndex;
switchLastIndex();
if (currIndex == currMaxCpcty - 1) {
currNSprts = currNSprts - currIndex;
currIndex = -1;
}
System.out.println("Index : " + currIndex);
System.out.println("Max index : " + currMaxCpcty);
++currIndex;
// --- For looping ---//
if (currIndex < currNSprts) {
mHandler.postDelayed(r, currDelay);
}
}
そのため、onLoadScene() で LevellingManager.path( )メソッドを呼び出すと、最後に実行された生成メソッドのみが生成されます。
私を助けてください。ありがとうございました。