当前位置:  编程技术>移动开发
本页文章导读:
    ▪NSArray跟NSMutableArray的详解        NSArray和NSMutableArray的详解数组中不能存放基本数据类型,必须存放对象,因此如果要存放基本数据类型,先进行NSTimer封装 NSArray的用法: 第一、初始化 NSArray *firstArray=[[NSArray alloc] initWithObjec.........
    ▪ 使用Qt的QObject种实现多叉树        使用Qt的QObject类实现多叉树使用Qt的QObject类实现多叉树          最近研究骨骼动画,需要显示人物模型的骨骼结构,说到骨骼结构,在计算机图形学中通常用树状结构来描述,在一篇介.........
    ▪ OpenGL ES2学习笔记(1)- OpenGL Console       OpenGL ES2学习笔记(1)-- OpenGL Console介绍 现在比较流行的编程语言基本上都自带了某种交互式工具,可以在里头直接输入代码,就地执行观察结果。比如Groovy提供的Groovy Shell和Groovy Console。 .........

[1]NSArray跟NSMutableArray的详解
    来源: 互联网  发布时间: 2014-02-18
NSArray和NSMutableArray的详解

数组中不能存放基本数据类型,必须存放对象,因此如果要存放基本数据类型,先进行NSTimer封装

NSArray的用法:

第一、初始化

NSArray *firstArray=[[NSArray alloc] initWithObjects:@"one",@"two",@"three", nil];
        NSArray *secondArray=[NSArray arrayWithArray:firstArray];

第二、获取元素个数和访问

        NSLog(@"the number is %ld",[secondArray count]);
        NSLog(@"the value is %@",[secondArray objectAtIndex:2]);

第三、追加数据元素

        NSArray *thirdArray=[firstArray arrayByAddingObjectsFromArray:secondArray];

第四、数组转化为字符串

        NSString *str=[firstArray componentsJoinedByString:@".."];
        NSLog(@"the number is %@",str);

第五、判断是否包含字符串

        NSArray *firstArray=[[NSArray alloc] initWithObjects:@"one",@"two",@"three", nil];
        NSLog(@"has value %d",[firstArray containsObject:@"two"]);
        NSLog(@"has value %ld",[firstArray indexOfObject:@"two"]);
        NSLog(@"the last object is %@",[firstArray lastObject]);

NSMutalbeArray 的用法-

第一、基本的增删改

     NSMutableArray *mutableArr=[NSMutableArray arrayWithCapacity:4];
        [mutableArr addObject:@"hello"];
        [mutableArr addObject:@"hello"];
        [mutableArr addObject:@"hello"];

        [mutableArr addObject:@"richard"];
        [mutableArr insertObject:@"yang" atIndex:1];
        NSLog(@"%@",mutableArr);
        [mutableArr removeObject:@"hello"];
        [mutableArr removeObjectAtIndex:0];
        [mutableArr removeLastObject];
        NSLog(@"%@",mutableArr);

第二、替换操作

        [mutableArr replaceObjectAtIndex:0 withObject:@"kaixin"];

第三、遍历

        NSMutableArray *mutableArr=[NSMutableArray arrayWithCapacity:4];
        [mutableArr addObject:@"hello"];
        [mutableArr addObject:@"hello"];
        [mutableArr addObject:@"hello"];
        for(int index=0;index<[mutableArr count];index++)
        {
            NSLog(@"the val is %@",[mutableArr objectAtIndex:index]);
        }
        for(NSString *str in mutableArr)
        {
            NSLog(@"%@",str);
        }
        for (id str in mutableArr) {
            NSLog(@"%@",str);
        }




    
[2] 使用Qt的QObject种实现多叉树
    来源: 互联网  发布时间: 2014-02-18
使用Qt的QObject类实现多叉树

使用Qt的QObject类实现多叉树

         最近研究骨骼动画,需要显示人物模型的骨骼结构,说到骨骼结构,在计算机图形学中通常用树状结构来描述,在一篇介绍骨骼动画的文章中也谈到了树状结构。树是一种数据结构,它通常通过链式结构的形式来存储,能够直观地表达自然界的层次关系。正是因为树的这些特点,它非常适合渲染骨骼。


         接下来就是如何实现树状结构了,虽然我以前实现过二叉树,但是这次要做的是多叉树,它具有多个孩子,还是有些不同的。一位高手自己通过std::vector和链式结构实现了多叉树,而强大的Qt开发框架似乎没有这样的数据结构?难道我也要自己动手?

         回家的路上我想到Qt不是有父子树结构吗?通过这样特殊的数据结构可以省去了delete操作符的调用,实现了半自动内存管理。其实Qt的父子树结构也可以用作二叉树和多叉树。下面请看我写的一小段代码:

#include <QDebug>
#include <QCoreApplication>
#include <QObject>
#include <QRegularExpression>
 
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
 
   QObject* pA1 = new QObject( Q_NULLPTR );
   pA1->setObjectName( "A1" );
   QObject* pB1 = new QObject( pA1 );
   pB1->setObjectName( "B1" );
   QObject* pB2 = new QObject( pA1 );
   pB2->setObjectName( "B2" );
   QObject* pC1 = new QObject( pB2 );
   pC1->setObjectName( "C1" );
   QObject* pC2 = new QObject( pB2 );
   pC2->setObjectName( "C2" );
   QObject* pC3 = new QObject( pB2 );
   pC3->setObjectName( "C3" );
   QObject* pD1 = new QObject( pC2 );
   pD1->setObjectName( "D1" );
 
   pA1->dumpObjectTree( );
   qDebug( ) << pA1->findChildren<QObject*>(
                     QRegularExpression("B" ),
                     Qt::FindDirectChildrenOnly);
   delete pA1;
 
   return a.exec();
}

在这里我创建了几个QObject对象,其中ABCD代表着四个层级,通过QObject::dumpObjectTree()可以在控制台上看到我们创建的树的情况,而要查找它的孩子,Qt也有多个版本的QObject::findChild()模版函数和QObject::findChildren()模版函数。要注意的是,要创建基于QObject的多叉树,所有的节点(QObject)都必须在堆上创建,因为在析构的时候Qt在内部会调用delete操作符,这就要求操作数必须在堆上创建,否则出错。我的另外一篇文章讲到了Qt父子系统更多内容。

那么如何遍历树的所有节点?也不难,通过这样调用:findChildren<QObject*>( QString() );就可以获得QObject的所有孩子(不包括本身),需要注意的是,这样的遍历方法是先序遍历方法。

Qt还提供了一个函数QObject::children(),它用来返回的是它的直属孩子。当然也可以通过findChildren<QObject*>( QString(), Qt::FindDirectChildrenOnly );来实现。


    
[3] OpenGL ES2学习笔记(1)- OpenGL Console
    来源: 互联网  发布时间: 2014-02-18
OpenGL ES2学习笔记(1)-- OpenGL Console
介绍

现在比较流行的编程语言基本上都自带了某种交互式工具,可以在里头直接输入代码,就地执行观察结果。比如Groovy提供的Groovy Shell和Groovy Console。

为了方便自己学习OpenGL ES2.0,快速试验各种API,我用Java Swing写了一个简单的应用:OpenGL Console。OpenGL Console和Groovy Console类似,在编辑器里输入Groovy脚本,调用各种OpenGL API,点击运行按钮便可立即看到效果:

用到的技术 Groovy 2.1.7

语法着色的Groovy代码编辑器使用了ConsoleTextEditor,执行Groovy脚本使用了GroovyShell。

JOGL 2.0.2

OpenGL库使用了JOGL2.0.2,JOGL为Java Swing应用提供了GLJPanel,用起来很简单,详情可以参考这个网页

Gradle

OpenGL Console用Gradle构建,对Gradle不太熟悉的可以看看我写的这篇文章

编译和运行OpenGL Console

安装Java7

安装Gradle

从github下载最新的OpenGL Console代码,解压到某个目录,比如D:\opengl-console-master

打开命令行,cd到OpenGL Console目录:

运行gradle installApp命令编译OpenGL Console代码并生成可执行文件:

进入opengl-console-master\build\install\glconsole\bin目录,双击glconsole.bat运行OpenGL Console:


OpenGL Console使用说明 右上角是Groovy脚本编辑器,在里头可以写Groovy脚本:

点击Run Script按钮运行脚本:


底部是输出窗口,可以看到脚本运行结果(点击Clear Output按钮可以清除输出):

右上角是绘图区域,可以拖动窗口改变这个区域的大小:





1楼jiangxigld前天 18:35牛

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