当前位置:  编程技术>移动开发
本页文章导读:
    ▪分组展示的ListView        分组显示的ListView http://www.cnblogs.com/qianxudetianxia/archive/2011/06/07/2074326.html 分组的ListView的拖拽 http://www.cnblogs.com/qianxudetianxia/archive/2011/06/13/2079253.html ......
    ▪ Makefile学习(二)        Makefile学习(2) 1.makefile文件的内容主要包含以下几个内容: 显示规则:显示规则说明了如何生成一个或者多个目标文件。即makefile的书写者明显的指出要生成的文件,文件的依赖关系,生.........
    ▪ 施用Box2d物理系统       使用Box2d物理系统   上一节讲述了粒子的相关问题,当然啦,不示弱,今天继续将物理系统给大家进行简单的介绍和讲述;        首先先介绍,如何在cocos2d中加入box2d开发lib包,因为一.........

[1]分组展示的ListView
    来源: 互联网  发布时间: 2014-02-18
分组显示的ListView

http://www.cnblogs.com/qianxudetianxia/archive/2011/06/07/2074326.html 

分组的ListView的拖拽 
http://www.cnblogs.com/qianxudetianxia/archive/2011/06/13/2079253.html


    
[2] Makefile学习(二)
    来源: 互联网  发布时间: 2014-02-18
Makefile学习(2)

1.makefile文件的内容主要包含以下几个内容:

  • 显示规则:显示规则说明了如何生成一个或者多个目标文件。即makefile的书写者明显的指出要生成的文件,文件的依赖关系,生成命令。如果有多个目标,默认第一个目标为最终目标。
  • 隐晦规则:由于make有自动推导的功能,所以隐晦规则可以让我们比较粗略地书写makefile。
  • 变量定义:makefile中可以定义一系列的变量,变量一般都是字符串,和C中的宏相似。当makefile被执行时,其中的变量都会被扩展到相应的引用位置上。
  • 文件指示:一个makefile文件中可以引用另一个makefile。
  • 注释:makefile中只有行注释,注释符:#,这个和java中的//一样。如果需要在makefile中使用“#”,可以使用反斜杠转义。

 

关于“隐晦规则”后续会进行学习说明。

注:makefile中的命令必须以Tab开始。

 

2.文件引用

语法:

include <filename>

注:

  • filename中可以包含路径和通配符
  • include前面可以有一些空字符,但是不可以以Tab键开始

示例:

有以下几个文件:a.mk   b.mk    c.mk   foo.make

还有一个变量$(bar),其包含了e.mk   f.mk

那么:   include foo.make  *.mk  $(bar)

等价于    include foo.make  a.mk  b.mk  c.mk  e.mk  f.mk

 

3.通配符的使用

make支持三种通配符:*   ?   [...]

  • *:匹配0或多个字符
  • ?:匹配任意单一字符
  • [...]:匹配...中的任意单一字符

 

4.文件搜索

由于在一些大的工程中,源文件数量很多,所以当make需要找寻文件的依赖关系时,就需要知道文件的路径。

以下是设置路径的方法:

  • makefile文件中的特殊变量“VPATH”
  • make的关键字“vpath”(全部小写)

(1)VPATH:

当makefile中指定了这个变量,make就会在当前目录找不到的情况下到指定的目录文件中去找寻;否之,make只会在当前的目录文件中去寻找依赖文件和目标文件。

 

例如:VPATH=src:../headers

 

说明:

  • 目录之间由":"分隔,所以上面的定义指定了两个目录:src   ../headers
  • 当前目录永远是最高级优先搜索的地方

(2)关键字:vpath

和上面的VPATH变量很类似,但是更为灵活。

使用方法有以下三种:

  • vpath <pattern> <directories>

为符合模式<pattern>的文件指定搜索目录<directories>

  • vpath <pattern>

清除符合模式<pattern>的文件的搜索目录

  • vpath

清除所有已经被设置好了的文件搜索目录

 

说明:

  • vpath使用方法中的<pattern>需要包含“%”字符,意思是匹配零个或者若干个字符

eg  “%.h”  :所有以“.h”结尾的文件

  • <pattern>指定了要搜索的文件集,<directories>则指定了文件的搜索目录

eg vpath %.h ../headers :表示make在 ./headers目录下搜索所有以 .h 结尾的文件(如果在当前目录下没有找到的话)

  • 可以连续的使用vpath,以指定不同的策略,make会按照语句顺序执行

eg  vpath  %.c  foo

       vpath  % blish

       vpath  %.c bar


    
[3] 施用Box2d物理系统
    来源: 互联网  发布时间: 2014-02-18
使用Box2d物理系统

 

上一节讲述了粒子的相关问题,当然啦,不示弱,今天继续将物理系统给大家进行简单的介绍和讲述;

       首先先介绍,如何在cocos2d中加入box2d开发lib包,因为一般使用cocos2d引擎进行开发游戏时,大家创建项目都会选用cocos2d框架,而不是直接采用物理系统的cocos2d框架,但是后期忽然需要在项目中使用物理系统(这种情况很经常发生,至于为什么,童鞋们都懂得~),OK,首先创建一个普通的cocos2d项目;

       OK,加入box2d->lib步骤如下:

       1. 首先将box2d的lib包拷贝到刚创建的项目下,然后右键项目的libs文件夹进行导入项目中;(如果你没有box2d的lib包,那就新建一个cocos2d-box2d的项目就有了)

       2.双击你的项目名默认打开配置信息窗口,点击Build Settings标签,然后在页面中找到”Search Paths“一栏,然后在“User Header Search Paths”中添加“xx/libs”;这里的XX是你的项目名称;紧接着在“User Header Search Paths”一项的上面设置“Always Serch Paths”的选项 为YES,默认为NO;这里务必要设置;

       3.最后commadn+B (我用的xcode For lion)编译项目代码,如果提示编译成功,OK,可以使用啦;


      下面我来给大家简单的介绍以下如何在cocos2d中使用Box2d物理系统,虽然关于Box2d的相关资料和教程很少,但是这里我也不会很详细的介绍和解释,因为我即将上市的Android游戏开发书籍中已经对Box2d进行了很详细的讲解和两个物理小游戏实战,所以这里就大概的介绍下一些重要的方法;

      便于讲解,这里我直接使用Xcode直接创建一个cocos2d-Box2d的项目,然后简单的修改:

 

//  

//  HelloWorldLayer.mm  

//  Box2dProject  

//  

//  Created by 华明 李 on 11-9-14.  

//  Himi  

//  

// Import the interfaces  

#import "HelloWorldLayer.h"  

   

#define PTM_RATIO 32  

  

// enums that will be used as tags  

enum {  

    kTagTileMap = 1,   

    kTagAnimation1 = 1,  

};  

  

  

// HelloWorldLayer implementation  

@implementation HelloWorldLayer  

  

+(CCScene *) scene  

{   

    CCScene *scene = [CCScene node];    

    HelloWorldLayer *layer = [HelloWorldLayer node];   

    [scene addChild: layer];   

    return scene;  

}  

  

// on "init" you need to initialize your instance  

-(id) init  

{  

    //初始化中,在屏幕上创建了物理世界,并且创建了在屏幕四周创建了刚体防止物理世界中的刚体超屏  

    //最后并且调用一个tick方法用于让物理世界不断的去模拟  

    if( (self=[super init])) {   

        self.isTouchEnabled = YES;   

        self.isAccelerometerEnabled = YES;   

        CGSize screenSize = [CCDirector sharedDirector].winSize;  

        CCLOG(@"Screen width %0.2f screen height %0.2f",screenSize.width,screenSize.height);   

        // Define the gravity vector.  

        b2Vec2 gravity;  

        gravity.Set(0.0f, -10.0f);  

        bool doSleep = true;    

        world = new b2World(gravity, doSleep);   

        world->SetContinuousPhysics(true);   

        // Debug Draw functions  

        m_debugDraw = new GLESDebugDraw( PTM_RATIO );  

        world->SetDebugDraw(m_debugDraw);   

        uint32 flags = 0;  

        flags += b2DebugDraw::e_shapeBit;   

        m_debugDraw->SetFlags(flags);       

        b2BodyDef groundBodyDef;  

        groundBodyDef.position.Set(0, 0); // bottom-left corner   

        b2Body* groundBody = world->CreateBody(&groundBodyDef);   

        b2PolygonShape groundBox;         

                // bottom  

        groundBox.SetAsEdge(b2Vec2(0,0), b2Vec2(screenSize.width/PTM_RATIO,0));  

        groundBody->CreateFixture(&groundBox,0);  

          

        // top  

        groundBox.SetAsEdge(b2Vec2(0,screenSize.height/PTM_RATIO), b2Vec2(screenSize.width/PTM_RATIO,screenSize.height/PTM_RATIO));  

        groundBody->CreateFixture(&groundBox,0);  

          

        // left  

        groundBox.SetAsEdge(b2Vec2(0,screenSize.height/PTM_RATIO), b2Vec2(0,0));  

        groundBody->CreateFixture(&groundBox,0);  

          

        // right  

        groundBox.SetAsEdge(b2Vec2(screenSize.width/PTM_RATIO,screenSize.height/PTM_RATIO), b2Vec2(screenSize.width/PTM_RATIO,0));  

        groundBody->CreateFixture(&groundBox,0);  

          

            

        CCLabelTTF *label = [CCLabelTTF labelWithString:@"Himi" fontName:@"Marker Felt" fontSize:32];  

        [self addChild:label z:0];  

        label.position = ccp( screenSize.width/2, screenSize.height-50);   

        [self schedule: @selector(tick:)];  

    }  

    return self;  

}  

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3