zoukankan      html  css  js  c++  java
  • cocod2d 兼容iphone/ipad 问题


    在iOS开发中要兼容iphone/ipad,把Devices 设置成Universal就能自动适配iphone/ipad,这个比较简单,难点是素材的适配问题。素材适配有两个问题:素材位置、素材大小

    1、素材位置问题

    关于位置有两种方式:绝对位置和相对位置。如下所示:

    绝对位置:ccp(48,32);

    相对位置:ccp(size.width*10%,size.height*10%);

    比如说当前设备大小为480*320,那么这两个位置相等,如果设备大小为960*640,那么就对位置的素材就会发生偏移,而相对位置就等于ccp(96,64),不管设备大小怎么变它始终在屏幕的(10%,10%)的位置。显然要适配不同的设备我们就需要使用相对位置。

    2、素材的大小问题

    关于素材的大小问题有两种解决方式:一种是多套素材分别适应不同的设备,一种是一套素材适应多个设备

    1、多套素材分别适应不同的设备

    在我们的iOS开发中根据不同的设备类型,会加载不同后缀名称的素材图片,默认情况下:iphone/iphone Retina(高清模式)、ipad/ipad Ratina,它们对应的素材名称分别为:Name/Name-hd、Name-ipad/Name-ipadhd

    这是默认情况下的,我们也可以自己设定其后缀名称,新建一个项目,打开AppDelegate.m找到如下代码:

        CCFileUtils *sharedFileUtils = [CCFileUtilssharedFileUtils];

    [sharedFileUtils setEnableFallbackSuffixes:NO];// Default: NO. No fallback suffixes are going to be used

    [sharedFileUtils setiPhoneRetinaDisplaySuffix:@"-hd"];// Default on iPhone RetinaDisplay is "-hd"

    [sharedFileUtils setiPadSuffix:@"-ipad"];// Default on iPad is "ipad"

    [sharedFileUtils setiPadRetinaDisplaySuffix:@"-ipadhd"];// Default on iPad RetinaDisplay is "-ipadhd"

    在这你可以设置相应素材的后缀名称。

    2、一套素材适应多个设备

    在某些情况下我们需要使用一套素材来适配多个设备,那么我们就需要对图片进行成比例放缩,来适应不同的设备:

            CGSize size;

            size.width = 480;

            size.height = 320;

    CGSize newsize = [[CCDirectorsharedDirector] winSize];

            float sp_scaleX = newsize.width / size.width;

            float sp_scaleY = newsize.height / size.height;

    CCSprite* sprite = [CCSprite spriteWithFile:@"Icon.png"];

            sprite.scaleX = sp_scaleX;

            sprite.scaleY = sp_scaleY;

    上面的代码首先设定了原比例大小为size,然后获取当前屏幕大小newsize,然后分别计算出x、y的比例sp_scaleX、sp_scaleY,最后赋值给素材的scaleX、scaleY。


    下面说一下如何获取设备类型:

    我们使用宏UI_USER_INTERFACE_IDIOM()来获取设备类型,如下:

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)

    {

    //iphone

    }

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

    {

    //ipad

    }

  • 相关阅读:
    自考新教材--p94
    prim算法--教材p146-147
    图的广度优先遍历BFS实现--邻接矩阵p143
    自考新教材--p98
    输入若干有序数放在数组中,然后输入一个数,插入到此有序数列中,插入后,数组中的数仍然有序。请对插在最前、插在最后、插在中间三种情况运行程序,以便验证程序是否正确。
    【Mybatis】02 快速入门Part2 补完CRUD
    【Mybatis】01 概述 & 快速入门Part1
    【DataBase】MySQL 13 分组查询
    【DataBase】MySQL 06 条件查询 & 排序查询
    【DataBase】MySQL 05 基础查询
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3072143.html
Copyright © 2011-2022 走看看