0
我想說,先謝謝大家..Runnable跳過Android AndEngine
我已經做了一個代碼來使用Runnable生成精靈。 但它只執行我寫的最後一個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;
}
}
這裏談到的的Runnable代碼:
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);
}
}
所以,當我打電話LevellingManager.path()方法在onLoadScene(), 只有最後生成可執行的方法。
請幫幫我。 謝謝。