问题在cocos2d-x Android上添加背景图片

时间:2014-01-09 10:05:48

标签: android background cocos2d-x

enter image description here我试图以这种方式添加图像背景:

background = CCSprite.sprite("filename.png");
background.setAnchorPoint(CGPoint.ccp(0.5f,0.0f));
background.setPosition(width/2, background.getContentSize().height);
layer.backgroundLayer.addChild(background);

问题是增加的背景是奇怪的,有些部分是拉伸的。我需要帮助如何正确添加背景。提前谢谢。

要了解更多信息,请查看原始图片和结果

原件:

结果:

enter image description here

配置代码

    @Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    mContext = getApplicationContext();
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    _glSurfaceView = new CCGLSurfaceView(this);
    setContentView(_glSurfaceView);
}

@Override
public void onStart()
{
    super.onStart();

    CCDirector.sharedDirector().attachInView(_glSurfaceView);

    CCDirector.sharedDirector().setDeviceOrientation(CCDirector.kCCDeviceOrientationPortrait);

    CCDirector.sharedDirector().setDisplayFPS(true);

    CCDirector.sharedDirector().setAnimationInterval(1.0f / 60.0f);

    CCScene scene = HelloWorldLayer.scene();
    CCDirector.sharedDirector().runWithScene(scene);
}

2 个答案:

答案 0 :(得分:0)

你可以这样做

CCSize s = CCDirector::sharedDirector()->getWinSize();
float w = s.width;
float h = s.height;
CCSprite *bg = CCSprite::create("shop_bg.jpg");
bg->setPosition(ccp(s.width/2, s.height/2));

答案 1 :(得分:0)

    For landscape Mode you can try this in your AppDelegate Class

然后应用精灵位置

// initialize director
        director = CCDirector::sharedDirector();
        EGLView  = CCEGLView::sharedOpenGLView();

        director->setOpenGLView(EGLView);


        CCSize screenSize = EGLView->getFrameSize();
        CCSize designSize = CCSizeMake(800, 480);
        EGLView->setDesignResolutionSize(designSize.width,designSize.height, kResolutionExactFit);


        if(screenSize.height > 480 && screenSize.height < 720 )
        {

            CCSize resourceSize = CCSizeMake(960, 540);
            director->setContentScaleFactor(resourceSize.height/screenSize.height);
            CCLog("Resolution Scale OF Karboon=%f",resourceSize.width/screenSize.width);
        }


        else if (screenSize.height >= 720 && screenSize.height < 800)
        {

            CCSize resourceSize = CCSizeMake(1280, 720);
            director->setContentScaleFactor(resourceSize.height/screenSize.height);
            CCLog("Resolution Scale OF NOTE=%f",resourceSize.width/screenSize.width);

        }

        else if(screenSize.height > 800)
        {
            CCSize resourceSize = CCSizeMake(1920, 1080);
            director->setContentScaleFactor(resourceSize.height/screenSize.height);
            CCLog("Resolution Scale OF Nexus=%f",resourceSize.width/screenSize.width);

        }

        else
        {


         director->setContentScaleFactor(1);
        CCLog("Resolution Scale OF S Advance=%f");

        }