Tui-x 自适应屏幕 (转) ----- 6
1.Tui-x 是怎么设置自适应屏幕的
Tui-x 是默认开启自适应的。开发者只需要关注自己设计尺寸就好了,而Tui-x的默认设计分辨率是480*800,如果你是希望设计分辨率是960*640的话,你需要手动设置一下
- <span style="font-size:14px;"><span style="font-size:14px;">TuiManager::getInstance()->setAdaptResolution(true,960,640); //手动设置设计分辨率</span></span>
开启自适应后,Tui-x会根据真实分辨率和设计分辨率的缩放比来进行坐标缩放,这个自适应的容器是CWidgetWindow,目前只有它是自适应容器,所有它的子节点都会进行坐标缩放,从而达到自适应的目的。
2.Tui-x 是怎么对动态点做自适应的
虽然说2dx自带了几种适应的设置方案,但它们都仅仅是对渲染画面进行拉伸,没有达到 真正的自适应,图像拉伸后会变形,如果用FIX_WIDTH这类设置会被裁切或留有黑边,不完美。其实,只要做到坐标缩放就可以解决上述的问题。但是还有 一个问题,如果你的程序是480*800,里面的Sprite写死setPosition(Vec2(100,100)),那么在高分辨率和低分辨率里面 的表现是不一样的,因为高分辨率的100,100是会偏左下角一点, 低分辨率的100,100 看起来会相对离左下角远一些。这是因为,你这个100,100已经写死在代码里面了,无法自适应。很多时候我们的动画一般会在代码里面写死这些点,比如
- <span style="font-size:14px;"><span style="font-size:14px;">Sprite *pSp = Sprite::create("hello.png");
- MoveTo *actMoveTo = MoveTo::create(1.0f,Vec2(100,100));
- pSp->runAction(actMoveTo);
- </span></span>
这种动画在游戏中非常常见,但是,它无法做到自适应分辨率,因为坐标写死了,那么要怎么才能达到自适应动态点呢? Tui-x 提供一个宏 Arp ,现在你可以这么写
- <span style="font-size:14px;"><span style="font-size:14px;">Sprite *pSp = Sprite::create("hello.png");
- MoveTo *actMoveTo = MoveTo::create(1.0f,Arp(Vec2(100,100)));
- pSp->runAction(actMoveTo);
- </span></span>
这样就能自适应动态点了。因为Arp宏会将你这个坐标进行缩放,从而实现动态点自适应。
如果是Tui-x Lua项目可以在入口初始化时候定义一个全局函数Arp,在程序需要动态定点的时候就用Arp即可,用法同上。
3.交流
CocosWidget 官方群261286285 Tui-x 官方群 347085657
4.下载
Tui-x 2.x : https://github.com/LingJiJian/tui/tree/Tui-x Tui-x 3.x https://github.com/LingJiJian/Tui-x