2013-07-10 41 views
5

Tôi gặp sự cố khi cuộn con của tôi. Tôi đã tạo một CameraScene mà tôi đang cố gắng cuộn bằng một sự kiện cảm ứng. Con của tôi không cuộn, tuy nhiên, nếu tôi cuộn trên máy ảnh được gắn vào động cơ, cảnh cha sẽ cuộn tốt.Cuộn một childscene trong AndEngine

Vậy làm cách nào để cảnh quay của con tôi cuộn mà không có các đối tượng được gắn với cảnh của bố cục của tôi?

public StatsScene(Context context, VertexBufferObjectManager vbo) { 
    super(new SmoothCamera(0, 0, WITDH, HEIGHT, 0, SPEEDY, 0)); 

    this.setOnSceneTouchListener(new IOnSceneTouchListener() { 
     @Override 
     public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) { 
      if(pSceneTouchEvent.getAction() == MotionEvent.ACTION_DOWN) { 
       mTouchY = pSceneTouchEvent.getMotionEvent().getY(); 
      } 
      else if(pSceneTouchEvent.getAction() == MotionEvent.ACTION_MOVE) { 
       float newY = pSceneTouchEvent.getMotionEvent().getY(); 

       mTouchOffsetY = (newY - mTouchY); 

       float newScrollX = getCamera().getCenterX(); 
       float newScrollY = getCamera().getCenterY() - mTouchOffsetY; 

       getCamera().setCenter(newScrollX, newScrollY); 

       mTouchY = newY; 
      } 
      return true; 
     } 
    }); 
} 

Trả lời

0

Tôi không thực sự thành AndEngine và tôi không chắc chắn nếu tôi có được quyền vấn đề của bạn (trong mã của bạn là gì về "myparents" hoặc "childscene"), nhưng khi một cái gì đó được gắn vào khung cảnh của bạn , điều này ngụ ý nó sẽ di chuyển với nó. Bạn có thể di chuyển con mình theo một hướng khác để duy trì vị trí của chúng, nhưng điều đó có thể khiến bạn gặp rắc rối trong lâu dài. Nếu có thể, hãy cố gắng tách riêng cảnh cuộn của bạn và các đối tượng của bạn, có nghĩa là chúng không nên là con của nhau. Thay vào đó, nếu bạn muốn họ giữ chúng liên quan, hãy cung cấp cho họ một phụ huynh chung. Nếu bạn di chuyển một đối tượng bây giờ, anh chị em sẽ không. Hy vọng rằng sẽ giúp.

0

Từ mô tả của bạn tôi sẽ nghĩ rằng cảnh cha mẹ của bạn là người nhận được của bạn đầu vào vì vậy tôi đoán, hãy sửa lại cho tôi nếu tôi là sai, rằng bạn đang thiết cảnh một cái gì đó con bạn như thế này:

mMainScene.attachChild(mChildScene); 

Trong trường hợp này, bạn sẽ phải xử lý việc lệch đầu vào cho con thay vì cấp độ gốc. Tuy nhiên, bạn có một vài lựa chọn ở đây:

  1. Nếu cảnh con mình chiếm toàn màn hình và bạn không cần phải lo lắng về việc cập nhật/vẽ cảnh cha mẹ của bạn, chỉ cần trao đổi với cảnh

    mEngine.setScene (mChildScene);

  2. Nếu bạn cần tiếp tục vẽ và cập nhật cảnh bố mẹ, hãy kiểm tra lớp được tạo trước MenuScene và phương thức Scene.setChildScene(), có một ví dụ về cách sử dụng trong dự án AndengineExamples mà tôi nghĩ. Sử dụng lớp này sẽ cho phép bạn lấy đầu vào trên cảnh con nhưng vẫn vẽ và cập nhật cảnh chính của bạn, nó thậm chí còn cho phép bạn đặt con theo cách phương thức.