Cocos 2D 如何缩小图像?

发布于 2024-12-18 03:25:20 字数 740 浏览 1 评论 0原文

我想在 Android 中使用一张图像作为背景。该图像是平板电脑大小的,但我希望当屏幕较小时它可以缩小。我知道纵横比可能会关闭。无论如何,这是我的代码:

CGSize winSize = CCDirector.sharedDirector().displaySize();
    Log.v("MP", "Width: " + winSize.width + " Height: " + winSize.height);
    CCSprite backGround = CCSprite.sprite("background1.png");
    this.setIsTouchEnabled(true);
    //backGround.setContentSize(winSize);
    backGround.setScale(.5f);
    backGround.setPosition(CGPoint.ccp(winSize.width/2.0f,winSize.height/2.0f));
    addChild(backGround);

发生的情况是我的图像没有自动缩小。所以你会注意到我在这里设置了比例。 .5 是用于测试的任意值。我注意到,当我这样做时,图形确实缩小了,但我的图像被切断了。它仅显示图像的左上角。

也许有人可以帮助我解决这个问题,并给我一些关于使用 Cocos2D 在 Android 上支持多种屏幕分辨率的一般建议。我知道如何在不使用 Cocos2D 的情况下处理这个问题,但我仍在学习 Cocos2D 并且不确定该怎么做。

I have an image I'm trying to use as a background in Android. The image is tablet sized, but I'd like it to scale down when there is a smaller screen. I know the aspect ratio might be off. In any case, here is my code:

CGSize winSize = CCDirector.sharedDirector().displaySize();
    Log.v("MP", "Width: " + winSize.width + " Height: " + winSize.height);
    CCSprite backGround = CCSprite.sprite("background1.png");
    this.setIsTouchEnabled(true);
    //backGround.setContentSize(winSize);
    backGround.setScale(.5f);
    backGround.setPosition(CGPoint.ccp(winSize.width/2.0f,winSize.height/2.0f));
    addChild(backGround);

What is happening is my image is not being scaled down automatically. So you'll notice here i'm setting down the scale. .5 is an arbitrary value for testing. I've noticed that the graphic does scale down when I do that, but my image is cut off. It only shows the top left corner of the image.

Perhaps someone can help me with this problem and also give me some general advice on supporting multiple screen resolutions on Android with Cocos2D. I know how to handle this problem without using Cocos2D, but am still learning Cocos2D and am unsure of what to do.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

放肆 2024-12-25 03:25:20

这是一个难题;我们通常使用这种方法:

background.setScaleX(winSize .width/background.getTexture().getWidth());

background.setScaleY(size.height/background.getTexture().getHeight());

background.setPosition(CGPoint.make(size.width/2, size.height/2));

addChild(backGround);

that is a hard issue; we usually use this method:

background.setScaleX(winSize .width/background.getTexture().getWidth());

background.setScaleY(size.height/background.getTexture().getHeight());

background.setPosition(CGPoint.make(size.width/2, size.height/2));

addChild(backGround);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文