zoukankan      html  css  js  c++  java
  • cocos2d-x getVisibleSize , getVisibleOrigin 和坐标位置

    getWinSize : 获取设备屏幕大小.

    getVisibleSize:获得视口(可视区域)的大小,若是DesignResolutionSize跟屏幕尺寸一样大,则getVisibleSize便是getWinSize。

    getVisibleOrigin:获得可视区域的出发点坐标,在处理相对位置时,确保节点在不同分辨率下的位置一致。

    Cocos2D-x以OpenGL和OpenGL ES为基础,所以自然支持OpenGL坐标系。该坐标系原点在屏幕左下角,x轴向右,y轴向上。

    经简单测试:

    1 .以480*320 为例,

    在iphone4/iphone4s上,调用getVisibleSize() 获取的大小为(480,320);调用getVisibleOrigin() 获取的大小为(0,0);

    在iphone5s(1130*640)上,调用getVisibleSize() 获取的大小为(480,270)(得到了相应的缩放);调用getVisibleOrigin() 获取的大小为(0,24.);

    这对于设置控件的位置有些帮助。

    2.控件位置,在cocos2d-x中anchorpoint和position紧密联系, 

        //获取坐标系界面的屏幕可见区域
        Size visibleSize = Director::getInstance()->getWinSize();
        //获取屏幕大小
        Size visibleSize1 = Director::getInstance()->getVisibleSize();//表示获得视口(可视区域)的大小,如果DesignResolutionSize跟屏幕尺寸一样大,则getVisibleSize等于getWinSize。
        //原点位置
        Point origin = Director::getInstance()->getVisibleOrigin();//表示可视区域的起点坐标,这在处理相对位置的时候非常有用,确保节点在不同分辨率下的位置一致
        //创建一个关闭按钮,参数分别为,正常状态显示的图片,选中状态的图片,操作调用的方法即调用MainScene的menuCloseCallback方法
        auto closeItem = MenuItemImage::create("setting.png",
                                               "setting.png",
                                               CC_CALLBACK_1(MainScene::menuCloseCallback, this));
        //设置关闭按钮的位置为视图的右下方
        closeItem->setPosition(origin);//适应不同分辨率,以AnchorPoint(Vec2(0, 0))为例,位置为左下角。
        closeItem->setAnchorPoint(Vec2(0, 0));
        closeItem->setColor(Color3B(250, 100, 0));
        closeItem->setContentSize(Size(43,43));

        auto menu = Menu::create(closeItem, NULL);

        menu->setPosition(Point::ZERO);

        //这里相当于把menu作为父view,而closeItem作为subview ,而subview的closeItem的位置是相对于menu的position的相对位置。以这里为例,由于未设置,menu的默认大小为getWinSize,menu的默认anchorpoint为(0.5,0.5),menu的position由于为(0,0),所以closeItem的位置为(0,0),假设menu的position由于为(240,160),则closeItem的位置为(0 + 240,0 + 160),
        
        //把菜单添加到层中
        this->addChild(menu, 1);
        
        Sprite *visibleS = Sprite::create("setting.png" , Rect(origin,44,44));//这里的origin保证了在不同分辨率的情况下(setAnchorPoint(Vec2(0, 0))),该精灵始终处于左下角。
        visibleS->setAnchorPoint(Vec2(0, 0));
        visibleS->setColor(Color3B(100, 250, 0));
        this->addChild(visibleS);

    相关链接:

    http://www.tairan.com/archives/3367/

    http://blog.csdn.net/lnb333666/article/details/16886623

  • 相关阅读:
    Codeforces Round #648 (Div. 2).D Solve The Maze
    Codeforces Round #648 (Div. 2).C Rotation Matching
    Codeforces Round #639 (Div. 2).C. Hilbert's Hotel
    C. Linova and Kingdom.Codeforces Round #635 (Div. 2)
    influxDB基本操作(详细)
    influxDB-介绍
    grafana的安装与启动
    104. HttpRequest对象详解
    103. 重定向详解
    102.限制请求的method装饰器:require_http_methods,require_GET,require_POST,require_safe
  • 原文地址:https://www.cnblogs.com/AndyChen1/p/9030603.html
Copyright © 2011-2022 走看看