在我正在开发的游戏中,我需要这个功能:能够在屏幕上绘图并确定绘图是否是确定的形状(假设是矩形,三角形或其他)。
所以我想使用手势,这是更简单的方法;我用手势构建器制作了一些形状,并将它们用作模型。问题是,我无法使用AndEngine。
我需要GestureOverlayView,它基本上是绘图板,放置在游戏场景的顶部,以便我可以看到场景本身附加了所有实体,我也可以绘制手势。
现在我尝试的东西不起作用,AndEngine的东西都显示在屏幕上,或者是GestureOverlayView,而不是两者。
我是Android开发者和AndEngine的新手,所以我有点卡在这里......你有什么想法我怎么能让它起作用?我到处看,但找不到任何有用的东西......
我将把手势部分的代码保留在下面,例如,如果你在项目的路径res / raw中没有任何预制手势,它就不会真正起作用:
public class ProvaGesture extends Activity implements GestureOverlayView.OnGesturePerformedListener
{
private GestureLibrary gestureLib;
public GestureOverlayView gestureOverlayView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
gestureOverlayView = new GestureOverlayView(this);
gestureOverlayView.addOnGesturePerformedListener(this);
gestureLib = GestureLibraries.fromRawResource(this, R.raw.gestures);
if (!gestureLib.load())
{
finish();
}
setContentView(gestureOverlayView);
}
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture)
{
ArrayList<Prediction> predictions = gestureLib.recognize(gesture);
for (Prediction prediction : predictions)
{
if (prediction.score > 1.0)
{
Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT).show();
}
}
}
}
答案 0 :(得分:4)
我没有看到AndEngine参与您的演示代码。您的ProvaGesture
活动应该从AndEgine的SimpleBaseGameActivity
或BaseGameActivity
扩展,然后实施IOnSceneTouchListener
。
根据您的想法,我猜测您尝试创建一个仅处理手势的独立叠加视图,因此您必须考虑:
您在Android中只有一次运行的活动。
如果您要创建一个覆盖AndEgine表面视图的用户定义视图,您应该看到Andengine的示例:XMLLayoutExample
。
解决方案可能 [建议]:
public class OverlapLayoutExample extends SimpleLayoutGameActivity {
@Override
protected int getLayoutID() {
//your layout id (xml file in layout folder)
return R.layout.overlaplayout;
}
@Override
protected int getRenderSurfaceViewID()
{
//overlaplayout will contain a SurfaceView with following ID
//this surface is where you render Andgine
return R.id.overlaplayout_rendersurfaceview;
}
}
不要忘记创建自己的布局:overlaplayout
包含surfaceView
和OverlayView