我是初学者和发动机用户,我需要你的帮助。
我创建了一个MySprite类延伸精灵,我希望精灵在y坐标上上下移动,当我用手指在屏幕上滑动时只触摸精灵。
我试图通过实现IScrollDetectorListener和IonSceneTouchListener来实现这一点,但问题是:我可以触摸任何地方,我的精灵会移动。
如果有人可以提供帮助,我会很高兴。
更多细节只需评论:)
答案 0 :(得分:1)
Sprite mySprite = new Sprite(x, y, textureRegion, this.getVertexBufferObjectManager()) {
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
this.setPosition(x, y);
//Insert Code Here
return true;
}};
// dont forgot to register your touch area i.e
mScene.registerTouchArea(mySprite);
// Hoping it may help you.
答案 1 :(得分:0)
希望你试图用精灵制作一个滚动条。请使用此代码
Initial scrollbarPosition = scrollbar.getX(); //fix this position
final Sprite scrollbar= new Sprite(centerX, centerY, this.scrollbarTextureRegion, this.getVertexBufferObjectManager()) {
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
this.setPosition(scrollbarPosition, pSceneTouchEvent.getY() - this.getHeight() / 2);
return true;
}
};
scene.attachChild(scrollbar);
scene.registerTouchArea(scrollbar);
scene.setTouchAreaBindingOnActionDownEnabled(true);
希望这有助于感谢。
答案 2 :(得分:0)
如果只想在Y坐标上移动它,首先必须覆盖onAreaTouched,然后在压制X移动时处理Y移动。请尝试以下代码:
Sprite mSprite = new Sprite(mX, mY, mTexture, this.mEngine.getVertexBufferObjectManager()) {
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
this.setPosition(this.getX(), pSceneTouchEvent.getY());
return true;
}
};
this.mScene.attachChild(mSprite);
this.mScene.registerTouchArea(mSprite);
哦,如果您使用GLES2-AnchorCenter分支,它将正常工作!
希望它有所帮助! :)