0

私はこのコードを2つのビューmRenderSurfaceViewとgestureOverlayViewを表示するために使用します:

            relativeLayout = new RelativeLayout(this);
        final FrameLayout.LayoutParams relativeLayoutLayoutParams = new FrameLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT , RelativeLayout.LayoutParams.FILL_PARENT );

        gestureOverlayView = new GestureOverlayView(this);
        gestureOverlayView.setEnabled(true);

        this.mRenderSurfaceView = new RenderSurfaceView(this);
        this.mRenderSurfaceView.setRenderer(mEngine);
        surfaceViewLayoutParams = new RelativeLayout.LayoutParams(super.createSurfaceViewLayoutParams());          

        gestureOverlayView.addOnGesturePerformedListener(this);

        relativeLayout.addView(this.mRenderSurfaceView, surfaceViewLayoutParams);
        relativeLayout.addView(gestureOverlayView, 1248,1152);
        gestureOverlayView.setVisibility(View.GONE);
        this.setContentView(relativeLayout, relativeLayoutLayoutParams);

私はこれで描いた:

@Override
    public boolean onTouch(View v, MotionEvent paramMotionEvent) {
    //TODO Auto-generated method stub   

if(paramMotionEvent.getAction() == MotionEvent.ACTION_DOWN) {
     isDrawing = true;

 }
//TouchEvent
 if(paramMotionEvent.getAction() == MotionEvent.ACTION_UP) {
    isDrawing = false;
    rec = new Rectangle[250];
    Arrays.fill( rec, null );
    irec=0; 
 }
 if (isDrawing = true) {

    if (rec[249]!=null){
     return false;
 }


    rec[irec] = new Rectangle(paramMotionEvent.getX(), paramMotionEvent.getY(), 1, 1);
    if (irec != 0) {
       Line l = new Line(rec[irec-1].getX(), rec[irec-1].getY(), rec[irec].getX(), rec[irec].getY());
       l.setColor(0.5f, 1f, 0.3f);
       mScene.attachChild(l);
    }
    irec++;
 }
 return true;
 }

そしてOnloadSceneで私はこれgestureOverlayView.setOnTouchListener(this);

私のシーンは1248 * 1152を行います。問題はパブリックブールであるonTouchが左上にある場合は正常に動作しますが、シーンまたは右に下に移動すると描画がシフトします。幅と高さが適切なビューを作成するにはどうすればよいですか (それが問題だと思います。これはカメラの比率を維持します)。

mScene.setOnSceneTouchListener を使用すると、描画は問題ありませんが、ジェスチャーが機能しません ...

4

1 に答える 1

0

によって解決されますvelocityOnScreenControl.attachChild(l); of (private AnalogOnScreenControl velocityOnScreenControl;) AnalogOnScreenControl の例を使用します。

于 2013-03-18T22:03:36.737 に答える