2013-02-19 99 views

回答

0

下面是從AndEngine的TouchDragExample:

public class TouchDragExample extends SimpleBaseGameActivity { 
    // =========================================================== 
    // Constants 
    // =========================================================== 

    private static final int CAMERA_WIDTH = 720; 
    private static final int CAMERA_HEIGHT = 480; 

    // =========================================================== 
    // Fields 
    // =========================================================== 

    private BitmapTextureAtlas mBitmapTextureAtlas; 
    private ITextureRegion mFaceTextureRegion; 

    // =========================================================== 
    // Constructors 
    // =========================================================== 

    // =========================================================== 
    // Getter & Setter 
    // =========================================================== 

    // =========================================================== 
    // Methods for/from SuperClass/Interfaces 
    // =========================================================== 

    @Override 
    public EngineOptions onCreateEngineOptions() { 
     Toast.makeText(this, "Touch & Drag the face!", Toast.LENGTH_LONG).show(); 

     final Camera camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); 

     return new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), camera); 
    } 

    @Override 
    public void onCreateResources() { 
     BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/"); 

     this.mBitmapTextureAtlas = new BitmapTextureAtlas(this.getTextureManager(), 32, 32, TextureOptions.BILINEAR); 
     this.mFaceTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mBitmapTextureAtlas, this, "face_box.png", 0, 0); 
     this.mBitmapTextureAtlas.load(); 
    } 

    @Override 
    public Scene onCreateScene() { 
     this.mEngine.registerUpdateHandler(new FPSLogger()); 

     final Scene scene = new Scene(); 
     scene.setBackground(new Background(0.09804f, 0.6274f, 0.8784f)); 

     final float centerX = (CAMERA_WIDTH - this.mFaceTextureRegion.getWidth())/2; 
     final float centerY = (CAMERA_HEIGHT - this.mFaceTextureRegion.getHeight())/2; 
     final Sprite face = new Sprite(centerX, centerY, this.mFaceTextureRegion, this.getVertexBufferObjectManager()) { 
      @Override 
      public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) { 
       this.setPosition(pSceneTouchEvent.getX() - this.getWidth()/2, pSceneTouchEvent.getY() - this.getHeight()/2); 
       return true; 
      } 
     }; 
     face.setScale(4); 
     scene.attachChild(face); 
     scene.registerTouchArea(face); 
     scene.setTouchAreaBindingOnActionDownEnabled(true); 

     return scene; 
    } 

    // =========================================================== 
    // Methods 
    // =========================================================== 

    // =========================================================== 
    // Inner and Anonymous Classes 
    // =========================================================== 
} 

您還可以將圖片用pathmodifiers各地:

yourBackgroundSprite.registerEntityModifier(new PathModifier(parameters...)); 

,也可以使用setChaseEntity()遵循一些其他實體比設定相機你想要平移的圖像。

最後,看看自帶AndEngine的AutoParallaxBackgroundExample。這不僅會給你一個移動背景的例子,而且會給你一個背景多層視差層的例子。

+0

謝謝您的回答,但我的意思是,如果我有一個lagrge圖像,並將其設置爲場景背景,則只能看到我的手機背景的一部分。如何使用手指移動/滾動/平移/拖到場景中背景和看到背景的其他部分? – kylin17 2013-02-20 06:40:58

+0

@ kylin17這是否做到這一點? – 2013-02-20 06:54:04

+0

是的,它的工作原理!感謝您的幫助! – kylin17 2013-02-20 07:19:00