AndEngine:缩放场景 - 如何将场景坐标转换为场景中的局部实体实体

时间:2012-01-08 18:36:19

标签: android andengine

我使用我的技巧来缩放整个场景以匹配屏幕分辨率。

然后我坚持使用缩放场景的问题。

我无法将pSceneTouchEvent坐标转换为本地实体坐标

在我的BaseGameActivity中,我喜欢这样:

            minScale = getMinScaleToMatchDeviceResolution();
    mainScene.setScale(minScale);

    sceneXposition = -(minScale*screenWidth-screenWidth)/2.0f;
    sceneYposition = -(minScale*screenHeight-screenHeight)/2.0f;
    mainScene.setPosition(screenWidth, screenHeight);

我在场景中有两层:  1)mBaseEntity是Entity直接属于Scene     mBaseEntity = new Entity(relativeBaseEntityXposition,relativeBaseEntityYposition);
    mainScene.attachChild(mBaseEntity);

2)第二个实体属于mBaseEntity     mSecondLayer = new Entity();     mBaseEntity.attachChild(mSecondLayer);

我的孩子Sprite是在第二层创建的:   Sprite stickerySprite = new StickerySprite(stickeryXposition,stickeryYposition,stickeryTextureRegion)    mSecondLayer.attachChild(stickerySprite);

现在我的目标是在触摸移动后移动stickerySprite。

我的想法是将pSceneTouchEvent转换为本地位置,但它不起作用 本地坐标错了!

        StickerySprite(stickeryXposition, stickeryYposition, stickeryTextureRegion)
       {
            @Override
            public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
        float pTouchAreaLocalX, 
                float pTouchAreaLocalY) 
            {
            float[] realPosition = 
                     mSecondLayer.convertSceneToLocalCoordinates(
                             (pSceneTouchEvent.getX() - this.getWidth() / 2), 
                         (pSceneTouchEvent.getY() this.getHeight() / 2)/);
                this.setPosition(realPostion[0], realPosition[1]);
            }

我使用了AndEngine示例,但在这种情况下,它无法工作,因为我的场景是如上所述的比例。 我试图重新计算当地的实际位置,但似乎我错过了一些重要的事情。 你能不能给我任何建议:)真的很感激和赞赏 对不起我的英语!!!

0 个答案:

没有答案