类ToolBar扩展了Sprite,这个类有按钮;
class ToolBar extends Sprite(){
private Sprite button;
public ToolBar(ITextureRegion toolbarimg,ITextureRegion buttonimg ,VertexBufferObjectManager pVertexBufferObjectManager){
super(0,0,toolbarimg,pVertexBufferObjectManager);
button = new Sprite(0,0,buttonimg,pVertexBufferObjectManager){
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float X, float Y) {
.....
}
this.attachChild(button);
}
}
该按钮出现在ToolBar精灵上。
我的问题是如何将按钮事件注册到按钮精灵。 在这种情况下,我无法使用 Scene.registerTouchArea 方法。 在这种情况下如何注册活动? 我是否必须将Scene对象传递给此Class并注册到场景?
答案 0 :(得分:0)
您可以通过将工具栏注册为touchArea来执行此操作,然后覆盖onAreaTouched方法以调查是否有任何按钮位于点击的位置。
// In your ToolBar class:
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
final float[] touchAreaSceneCoordinates = this.convertLocalCoordinatesToSceneCoordinates(pTouchAreaLocalX, pTouchAreaLocalY);
final float touchAreaSceneX = touchAreaSceneCoordinates[Constants.VERTEX_INDEX_X];
final float touchAreaSceneY = touchAreaSceneCoordinates[Constants.VERTEX_INDEX_Y];
if (pSceneTouchEvent.isActionDown()) {
for (Button button: this.buttonsInYourToolBar) {
if (button.contains(touchAreaSceneX, touchAreaSceneY)) {
button.onPressed(); // deal with the click inside your Button class
}
}
}
return true;
}