当前位置:  编程技术>移动开发
本页文章导读:
    ▪coco2d-x 兑现风雪飘动效果        coco2d-x 实现风雪飘动效果 项目中的天气系统,需要用到风雪效果,这时模拟的风雪效果,在3d效果上,还有点不足,就是雪花的消失点应该按照雪花的缩放系数算出它该消失的位置。目前.........
    ▪ UISearchDisplayController施用        UISearchDisplayController使用 用UISearchBar初始化,设置代理 UISearchBar *searchBar = [[UISearchBar alloc] init]; self.tableView.tableHeaderView = searchBar; [searchBar sizeToFit]; searchBar.delegate = self; [searchBar rele.........
    ▪ 生成goole 地图 密钥       生成goole map 密钥 keystor内容如下: keystore name:"debug.keystore" keystore password:"android" keyalias :"androiddebugkey" keypassword:"android" CN:"CN=Android Debug.D=Android.C=US"     命令行代码 cmd   keytool.exe -list -alias andr.........

[1]coco2d-x 兑现风雪飘动效果
    来源: 互联网  发布时间: 2014-02-18
coco2d-x 实现风雪飘动效果

项目中的天气系统,需要用到风雪效果,这时模拟的风雪效果,在3d效果上,还有点不足,就是雪花的消失点应该按照雪花的缩放系数算出它该消失的位置。目前是用的在屏幕外面就从新移到原始位置。上个效果图:

具体实现:

先定义几个雪花飘的方向

 

 

//先定义几个雪花的飘动方向

enum{

    tag_batch_node=0,

    tag_wind_none=1,

    tag_wind_left=2,

    tag_wind_right=3

};

//初始化雪花

voidGTWind::showWind(){

    //初始的飘动方向

   m_windDir=tag_wind_none;

    //重力的值,负数向下

   g=-4;

    //每一帧构造的雪花书

   maxV=2;

    //当前屏幕最大雪花数

   maxCount=150;

   //风速

   windVelocity=0;

   winSize=CCDirector::sharedDirector()->getWinSize();

   //使用SpriteBatchNode初始化,让所有雪花共享一块内存,

    //而且只需要调用一次OPENGL绘画,就可以构造所有雪花,提高效率

   CCSpriteBatchNode *spriteBatchNode = CCSpriteBatchNode::batchNodeWithFile("snow.png",300);

   addChild(spriteBatchNode,0,tag_batch_node);

   schedule(schedule_selector(GTWind::changeWind),5.0);

   schedule(schedule_selector(GTWind::updataWind));

}

上面使用的schedule来每一帧待用改变雪花位置,以及每5秒随机一次风向


现在随即风向,并调用函数动态改变当前的风速

//改变风的方向

voidGTWind::changeWind(){

   int dir=arc4random()%3+1;

   if(m_windDir==dir){

       return;

    }

   m_windDir=dir;

   switch (m_windDir) {

       case tag_wind_none:

           //规定雪花的最大速度

           maxWindVelocity=0;

           //动态改变速度

           schedule(schedule_selector(GTWind::upDataWindVelocity));

           break;

       case tag_wind_left:

           maxWindVelocity=20;

           schedule(schedule_selector(GTWind::upDataWindVelocity));

           break;

       case tag_wind_right:

           maxWindVelocity=-20;

           schedule(schedule_selector(GTWind::upDataWindVelocity));

           break;

       default:

           break;

    }

}


这个我以前就写过的,用于游戏中动态改变数值的

//动态改变当前的风速

voidGTWind::upDataWindVelocity(){

   int addV=maxWindVelocity-windVelocity;

   if(abs(addV)>10){

       windVelocity+=addV/10;

    }elseif(abs(addV)>2 &&abs(addV)<=10){

       windVelocity+=addV/abs(addV);

    }else{

       windVelocity=maxWindVelocity;

       unschedule(schedule_selector(GTWind::upDataWindVelocity));

    }

}


//刷新所有的雪花

voidGTWind::updataWind(ccTime dt){

   CCSpriteBatchNode *temSpriteBatchNode = (CCSpriteBatchNode*)getChildByTag(tag_batch_node);

   if(temSpriteBatchNode->getChildren()->count()<maxCount){

       for(int i=0;i<maxV;i++){

           //从SpriteBatchNode读取贴图创建sprite,并加入到SpriteBatchNode

           CCSprite* sprite=CCSprite::spriteWithTexture(temSpriteBatchNode->getTexture());

            temSpriteBatchNode->addChild(sprite);

            sprite->setScale(1.0f - (arc4random()%5+5) / 10.0);

           //初始化每个雪花的位置

           if (windVelocity >0)

                sprite->setPosition(ccp(winSize.width+10,1.0*(arc4random()%((int)winSize.height+200))));

           else

                sprite->setPosition(ccp(-10,1.0*(arc4random()%((int)winSize.height+200))));

           if (windVelocity <3 && windVelocity > -3)

                sprite->setPosition(ccp(1.0*(arc4random()%((int)winSize.height+240)),winSize.height+200));

        }

    }

    

    //得到所有雪花,改变位置

   CCArray* allSprite=temSpriteBatchNode->getChildren();

   CCObject* pObject = NULL;

   CCARRAY_FOREACH(allSprite, pObject){

       CCSprite* pChild = (CCSprite*) pObject;

       CCPoint pNow=pChild->getPosition();

        pNow.x-=pChild->getScale()*windVelocity;

        pNow.y+=g;

        pChild->setPosition(pNow);

        pChild->setRotation(pChild->getRotation()+0.1f);

       if(pChild->getPosition().x<-10 || 

           pChild->getPosition().x>winSize.width+10 ||

            pChild->getPosition().y<-10 ){

           if (windVelocity >0)

                pChild->setPosition(ccp(winSize.width+10,1.0*(arc4random()%((int)winSize.height+200))));

           else

                pChild->setPosition(ccp(-10,1.0*(arc4random()%((int)winSize.height+200))));

           if (windVelocity <3 && windVelocity > -3)

                pChild->setPosition(ccp(1.0*(arc4random()%((int)winSize.height+240)),winSize.height+10));

        }

    }

}

好了,基本效果就这样了,可以改进的地方就是雪花的消失点,要根据每个雪花的缩放系数算出消失点,这样才有3D的效果



    
[2] UISearchDisplayController施用
    来源: 互联网  发布时间: 2014-02-18
UISearchDisplayController使用
用UISearchBar初始化,设置代理
UISearchBar *searchBar = [[UISearchBar alloc] init];
    self.tableView.tableHeaderView = searchBar;
    [searchBar sizeToFit];
    searchBar.delegate = self;
    [searchBar release];
    
    searchDisplay = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];
    searchDisplay.delegate = self;
    searchDisplay.searchResultsDataSource = self;
    searchDisplay.searchResultsDelegate = self;


检测当前table view,分情况选择需要显示的数据

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if ([tableView isEqual:self.searchDisplayController.searchResultsTableView]) {
        return self.searchGroupList.count;
    }
    return [self.groupList count];
}


cellForRowAtIndexPath同样选择

实现
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString;


用于重新填充搜索出的数据

    
[3] 生成goole 地图 密钥
    来源: 互联网  发布时间: 2014-02-18
生成goole map 密钥

keystor内容如下:

keystore name:"debug.keystore"

keystore password:"android"

keyalias :"androiddebugkey"

keypassword:"android"

CN:"CN=Android Debug.D=Android.C=US"

 

 

命令行代码

cmd

 

keytool.exe -list -alias androiddebugkey -keystore "C:/Documents and Settings/Administrator/.android/debug.keystore" -storepass android -keypass android

生成的

认证指纹<MD5>: 27:61:48:6F:17:19:C0:AB:FC:A4:19:FE:D0:17:3B:11

 

 

goole 注册页面为:http://code.google.com/intl/zh-CN/android/maps-api-signup.html

生成的密钥为0neNblrPvYLSpDt197apCnd4KYljETnZFgN-akw

 


    
最新技术文章:
▪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