我想要實現的是改變mRectangles屬性,例如用戶在設置中更改它的持續時間。我讀過,我想使用modifier.reset()與原始的各自參數。我似乎無法弄清楚我應該通過第四個參數。是否有我應該調用的變量或函數來獲取正確的上下文?如何更新Andengine的實體修飾符?
@Override
public void onPopulateScene(Scene pScene,
OnPopulateSceneCallback pOnPopulateSceneCallback) throws Exception {
// TODO Auto-generated method stub
Rectangle mRectangle = new Rectangle(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT,
mEngine.getVertexBufferObjectManager());
// With this anonymous function, you can add events to the beginning and end
// of the modified state
IEntityModifierListener mIEntityModifierListener = new IEntityModifierListener() {
@Override
public void onModifierStarted(IModifier<IEntity> pModifier,
IEntity pItem) {
// Grab the current duration value and compare it to the
// one that's stored
final int mDuration = (int) pModifier.getDuration();
Log.i("MODIFIER", "Current duration value: " + mDuration);
if(mDuration != mDurationPref)
{
Log.i("UPDATEDURATION","Duration value: " + mDurationPref);
mFinalDuration = mDurationPref;
pModifier.reset();
}
else
{
Log.i("UPDATEDURATION","Both values match: " + COLORONE_DEFAULT);
mFinalDuration = COLORONE_DEFAULT;
}
}
@Override
public void onModifierFinished(IModifier<IEntity> pModifier,
IEntity pItem) {
// TODO Auto-generated method stub
Log.i("MODIFIER", "It finished!");
}
};
Log.i("FINALDURATIONVALUE", "Final duration: " + mFinalDuration);
// This is where you can chain up the colors
// TODO: Make this in to a function that interpolates the colors together
ColorModifier mColorModifier = new ColorModifier(5, Color.CYAN,
Color.RED, mIEntityModifierListener, EaseSineIn.getInstance());
ColorModifier tColorModifier = new ColorModifier(5, Color.RED,
Color.CYAN, EaseSineInOut.getInstance());
ColorModifier iColorModifier = new ColorModifier(5, Color.CYAN,
Color.GREEN, mIEntityModifierListener, EaseSineIn.getInstance());
ColorModifier xColorModifier = new ColorModifier(5, Color.GREEN,
Color.YELLOW, EaseSineInOut.getInstance());
ColorModifier yColorModifier = new ColorModifier(5, Color.YELLOW,
Color.CYAN, mIEntityModifierListener, EaseSineIn.getInstance());
// The sequence modifier will go through the color modifiers
// and the loop entity modifier makes it continuous
SequenceEntityModifier mSequenceEntityModifier = new SequenceEntityModifier(
mColorModifier, tColorModifier, iColorModifier, xColorModifier,
yColorModifier);
LoopEntityModifier mLoopEntityModifier = new LoopEntityModifier(
mSequenceEntityModifier);
mRectangle.registerEntityModifier(mLoopEntityModifier);
scene.attachChild(mRectangle);
pOnPopulateSceneCallback.onPopulateSceneFinished();
}
你能澄清你在問什麼嗎?你提到你的目標是「改變mRectangles屬性,如持續時間」,但是Rectangle沒有持續時間屬性。如果你的意思是改變修飾符的持續時間,爲什麼不傳遞硬編碼值? (即,您的顏色修飾符的構造函數都具有硬編碼5秒的持續時間)。 – 2013-02-25 09:16:39
是的,它最初是硬編碼的,但我允許用戶更改偏好活動的顏色和持續時間屬性。這就是爲什麼我使用修飾符的接口方法。所以,我可以在線程中運行時檢查屬性。感謝您的反饋。 – wavyGravy 2013-02-25 16:40:13
那麼你的問題是什麼?如何用變量替換數字5? – 2013-02-25 16:54:50