هل تقوم بقفز الكائنات عندما ينقر المستخدم على الشاشة؟
سؤال
أنا أستخدم andengine لتنفيذ كائن يمكن سحبه عبر الشاشة باستخدام هذا.
إذن ما أريد فعله هو عندما ينقر المستخدم على أي مكان على الشاشة ليقفز الكائن.
أو التحرك لأعلى ثم الانتقال لأسفل.
ما هي أفضل طريقة للقيام بذلك مع andengine؟
المحلول
يجب أن يعمل هذا:
@Override
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
if(pSceneTouchEvent.isActionDown()) { //Jump only if the user tapped, not moved his finger or something
final Entity playerEntity = ...;//Get player entity here.
final float jumpDuration = 2;
final float startX = playerEntity.getX();
final float jumpHeight = 100;
final MoveYModifier moveUpModifier = new MoveYModifier(jumpDuration / 2, startX, startX - jumpHeight); // - since we want the sprite to go up.
final MoveYModifier moveDownModifier = new MoveYModifier(jumpDuration / 2, startX + jumpHeight, startX);
final SequenceEntityModifier modifier = new SequenceEntityModifier(moveUpModifier, moveDownModifier);
playerEntity.registerEntityModifier(modifier);
return true;
}
return false;
}
ضع في اعتبارك أنه إذا كنت ستستخدم هذا، كلما كان هناك ACTION_DOWN
قد تفوتك بعض معالجات الأحداث الأخرى لهذا (على سبيل المثال، إذا كان لديك أزرار تظهر على الشاشة، فلن تتعامل مع الحدث أبدًا).
طريقة التعامل معها هي استخدام إضافة أي كيانات أخرى ترغب في تلقي أحداث اللمس كمناطق لمس للمشهد الخاص بك، Scene.registerTouchArea(ITouchArea)
يفعل ذلك. Sprite
رمل AnimatedSprite
تنفيذ ITouchArea
, ، لذا يمكنك استخدام هذه.
عندما Scene
يتلقى أ TouchEvent
للتعامل معها، وسوف تسمح لأول مرة لجميع ITouchArea
إذا قمت بالتسجيل تعامل معه، ثم إذا لم يستهلكه أي منهم، فسوف يحاول onSceneTouchEvenet
طريقة.
نصائح أخرى
يبدو أنه سيتعين عليك إعداد مستمع موضح كيف في هذا البرنامج التعليمي: http://www.andengine.org/forums/tutorials/updating-sprites-objects-listeners-t386.html ثم ربما تستخدم معدل نقل كما هو موضح في هذا المنشور: كيفية تحريك كائن الكائن باستخدام AndEngine (Android) آمل أن تكتشف مشكلتك.؛)
حظ سعيد- Lijap