CrossApp是一款完全开源、免费、跨平台的移动应用开发引擎,基于最宽松的MIT开源协议,开发者根据自身情况使用CrossApp开发任何商业项目。CrossApp以C++作为开发语言,图形渲染基于OpenGL ES 2.0,采用MVC框架模式。使用CrossApp开发的应用程序支持导出到各大主流移动平台,真正实现"一次编码,多处运行"的跨平台开发技术。
CrossApp主要由9秒社团自研,官方制定了CrossApp的基本架构,确立了CrossApp的基本雏形,而其后的版本也将由来自各方的开发精英自愿组成的9秒社团常务贡献委员会共同进行更新和维护。
在学习CrossApp之前必须要了解CrossApp的一些概要
CrossApp是一个开源、免费、跨平台的应用开发引擎,使用C++作为开发语言,目前主要支持导出iOS和Android平台的应用程序。有关CrossApp的详细介绍,请参阅CrossApp介绍。
下载地址:
CrossApp工作Git :http://git.oschina.net/9miao/CrossApp
CrossApp GitHub :https://github.com/9miao/CrossApp
CrossApp是基于MVC模式设计的,关于CrossApp的MVC模式的详细说明,请参阅CrossApp的MVC模式
在不进行移植导出应用程序安装包的情况下,开发不需要特殊的工具, IDE仅仅VS或Xcode就能满足开发、调试需求。在windows下CrossApp推荐使用Visual Studio 2012或更高版本作为开发的IDE,在Mac下推荐使用Xcode 5.0或更高版本作为开发的IDE。对于移植iOS,不需要特别的环境配置,如果需要移植Android,请分别参阅Windows和Mac下配置Android开发环境。
在Windows下,有两种创建CrossApp工程的方式:使用命令行方式和使用工程创建工具。在Mac下,使用命令行的方式创建。具体创建CrossApp工程的方式请参阅创建CrossApp跨平台工程。
CrossApp会为我们创建各个平台对应的工程入口,创建的工程默认放在引擎的projects目录下,在不同平台下分别运行不同的工程就能运行起来。例如,在Windows下我们可以直接运行proj.win32里的.sln文件直接在vs中运行工程,当需要移植到Android时需要在eclipse中导入proj.android。
大家学习CrossApp的时候,搞清楚基础概念性的东西,能够大大提高我们学习CrossApp的效率。今天就和大家简单谈谈CrossApp的坐标系统。
CrossApp采用的坐标系是屏幕坐标系,即左上角为原点,向右为X轴增长方向、向下对应Y轴增长方向。如图:
除了显示内容和处理事件之外,试图还可以管理一个或多个子视图。我们可以在一个view上面添加多个子view,而作为父view,即父节点,负责管理其直接子视图,并根据需要调整他们的位置和尺寸,以及响应他们没有处理的事件。
根据类说明我们可以得出以下结论:
新手朋友可能不看明白父节点和子视图的概念 并且B是添加在A上的,假如这时候,我们调整A的坐标位置,那么B也将随A的坐标改变而改变。这样我们就说:B是A的子节点(也称子视图),A是B的父节点。 由于B是A的子节点(子视图),那么B则可以使用A的节点坐标系
,我画图来说明:
如图所示,屏幕上显示了两个CAView分别是A和B,
CAView在坐标系中定义了属性:DLayout。API定义如下:
Layout
类型:DLayout
解释:确定view在屏幕上显示的自适应方式。
//Frame CAView * frameView = CAView::createWithColor(CAColor_blue); frameView->setFrame(DRect(100, 100, 100, 100)); //this->getView()->addSubview(frameView); //添加并设置z为2 this->getView()->insertSubview(frameView, 2); //Bounds CAView* boundsView = CAView::createWithColor(CAColor_red); boundsView->setBounds(DRect(300, 300, 100, 100)); this->getView()->addSubview(boundsView); //Center CAView* centerView = CAView::createWithColor(CAColor_orange); centerView->setCenter(DRect(100, 100, 100, 100)); //this->getView()->addSubview(centerView); //添加并设置z为1 this->getView()->insertSubview(centerView, 1);
测试View缩放后,frame和bounds的变化:
//缩放后的Frame和Bounds frameView->setScale(2); DRect frameRect = frameView->getFrame(); DRect boundsRect = frameView-> getBounds(); CCLog( "frameView->getFrame():x:%f,y:%f,width:%f,height:%f", frameRect.getMinX(), frameRect.getMinY(), frameRect.getMaxX() - frameRect.getMinX(), frameRect.getMaxY() - frameRect.getMinY() ); CCLog( "frameView->getBounds():x:%f,y:%f,width:%f,height:%f", boundsRect.getMinX(), boundsRect.getMinY(), boundsRect.getMaxX() - boundsRect.getMinX(), boundsRect.getMaxY() - boundsRect.getMinY() );
我们在开发移动端应用时,首先会面临一个很棘手的问题,就是市场上的手机,平板等设备的屏幕尺寸、分辨率各有不同,屏宽比也多种多样,如何来解决这个问题呢?
想要解决这个问题,我们需要了解一下关于显示的一些基础概念,已经市场上我们常见的尺寸及分辨率。
常见的分辨率
1136*640,1920*1080,960*640,1280*720,800*480。
常见的屏幕尺寸
3.5英寸、4英寸、5英寸、5.5英寸、7英寸等等。
PX:pixels,就是绝对像素。大小固定,不会随着屏幕不同而改变
PPI:Pixels Per Inch所表示的是每英寸所拥有的像素(Pixel)数目。因此PPI数值越高,即代表显示屏能够以越高的密度显示图像。当然,显示的密度越高,拟真度就越高。
DPI:每英寸所包含的点,在Android设备上,通常以DPI来表示设备屏幕的显示精细度。通常情况下,PPI和DPI可以表示同一个概念,PPI主要针对显示设备,DPI更多应用于打印输出设备,但都表示每英寸所包含的像素点
打开ios目录下RootViewController.mm文件
// Override to allow orientations other than the default portrait orientation.// This method is deprecated on ios6- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { //竖屏 //return UIInterfaceOrientationIsPortrait( interfaceOrientation ); //横屏 //return UIInterfaceOrientationIsLandscape( interfaceOrientation );}// For ios6, use supportedInterfaceOrientations & shouldAutorotate instead- (NSUInteger) supportedInterfaceOrientations{ #ifdef __IPHONE_6_0 //竖屏 //return UIInterfaceOrientationMaskPortrait; //横屏 //return UIInterfaceOrientationMaskLandscapeRight;#endif}- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{ //竖屏 //return UIInterfaceOrientationPortrait; //横屏 //return UIInterfaceOrientationLandscapeRight;
更改Device Orientation 属性为Landscape Right 如图:
AndroidManifest.xml中 activity 找到 android:screenOrientation属性。
"unspecified":默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.
"landscape":横屏显示(宽比高要长)
"portrait":竖屏显示(高比宽要长)
"user":用户当前首选的方向
"behind":和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)
"sensor":有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。
"nosensor":忽略物理感应器,这样就不会随着用户旋转设备而更改了("unspecified"设置除外)。
目录 | 说明 |
CrossApp | 此目录为引擎的源码目录,其主要的两个目录 CrossApp.h: 所有引擎功能需要包含的头文件,对使用CrossApp开发应用的开发者,屏蔽了底层的系统差异,在需要跨平台的情况下,这个目录下的头文件会包含CrossAppplatform目录下对应的头文件。 CrossAppplatform: 用一堆#if宏判断当前操作系统,不同系统include相应系统下的头文件。CrossApp基于OPENGL ES(OPENGL的子集,专用于移动设备),所以底层的图像和动画绘制已经是跨平台了,所以cocos2d中真正需要跨平台的不多(platform下的头文件并不多),一些像消息循环响应机制等不同平台有不同方式的才需要跨平台 |
CocosDenshion | 音频库 |
extensions | json、http、sqlite3库等 |
licenses | 本引擎依赖了很多的开源工程,他们的所有许可声明都在这里了。 |
scripting | 支持的脚本 |
template | 包含在不同IDE和平台下来创建CrossApp工程的模板 |
projects | 工程目录 |
tools | 各种脚本处理文件、包含工程创建等 |
面向对象的目标就是设计出低耦合、高聚合的程序,MVC模式提供了一种很好的解决方案。CrossApp是基于MVC模式的,这里的MVC即模型层(Model)、视图层(View)、控制层(Controller),三者各司其职,共同维持一个完整的应用程序。
在CrossApp中的Model层也就是我们各种数据原型、业务逻辑和算法,View层顾名思义就是展现给用户的UI界面,而Controller层的职责就是把Model和View两个相互关联不大的层衔接起来。CrossApp通过CAView和丰富的UI控件来实现View层的功能,通过CAViewController及其子类来共同完成Controller层,实现Model和View之间的通信。
View层和Model层通常不能直接进行通信,View层接收用户的操作,并把操作通知给Controller,Controller接收到消息后就更新Model层。同理Model层的数据发生变动后,通知Controller,Controller提示View层进行界面的更新。
使用CrossApp开发移动应用程序必要的准备工作可参考以下步骤:
1. 从CrossApp官网http://crossapp.9miao.com/Home/List/index/cid/3.html下载CrossApp的源码,解压至本地计算机。以下是CrossApp解压的目录结构
2. 开发前的环境配置,在CrossApp的官网有环境配置的详细说明,参考说明进行开发前的环境配置,以便开发完成导出各个平台的安装包。
3. 以上两步完成后,现在就可以开始我们的App开发,首先需要新建一个自己的CrossApp工程,同样在环境配置文档中也说明了如何使用命令行新建一个CrossApp工程,运行proj.win32下的.sln文件就可以运行我们新建的工程,
4. 参考CrossApp的API文档就可以进行我们跨平台应用程序的开发了,以后我们自己的编码通常就是从AppDelegate类开始,具体的使用范例可以参考CrossApp官网的Demo示例。
我创建一个名为HelloCrossApp的工程,那么在引擎的根目录的projects文件夹下,将会出现一个名为HelloCrossApp的工程目录。我们打开这个目录可见下图的的结构:
HelloCrossApp的工程目录结构 | |
Classes | 存放我们编写的C++代码 |
proj.android | android平台工程配置 |
proj.ios | ios平台工程配置(需要在MacOS下使用xode) |
proj.mac | mac平台工程配置(需要在MacOS下使用xode) |
proj.win32 | win32平台工程配置(用于在win下开发,推荐vs2013) |
Resources | 项目的资源目录(存放:图片、音效、字体等) |
大家打开各自平台使用的工程配置,我以win下vs2013为例子截图
工程配置结构 | |
HelloCrossApp | 我们自己的项目 |
libCocosDenshion | 声音库 |
libCrossApp | CrossApp引擎库 |
libExtensions | 使用的第三方的库(json、sqlit3、network、websockets等) |
打开HelloCrossApp下的Classes目录,看到如下结构:
Classes目录结构 | |
AppDelegate | 项目入口 |
FirstViewController | 项目的CAViewController |
RootWindow | 项目启动的CAWindow |
我在这里引用API给出的CAWindow和CAViewController解释
#ifndef _APP_DELEGATE_H_#define _APP_DELEGATE_H_ #include "CrossApp.h" /**@brief The CrossApp Application.The reason for implement as private inheritance is to hide some interface call by CAApplication.*/ class AppDelegate : private CrossApp::CCApplication{public: AppDelegate(); virtual ~AppDelegate(); /** @brief Implement CAApplication and CCScene init code here. @return true Initialize success, app continue. @return false Initialize failed, app terminate. */ /* 这个函数用于实现CAApplication和CAWindow(CCScene应该为注释的错误,以后版本会修正)的初始化 如果返回true,初始化成功,程序正常运行 如果返回false,初始化失败,程序终止运行 */ virtual bool applicationDidFinishLaunching(); /* @brief The function be called when the application enter background @param the pointer of the application */ /* 当程序进入后台运行时,此函数会被调用(例如,电话) */ virtual void applicationDidEnterBackground(); /* @brief The function be called when the application enter foreground @param the pointer of the application */ /* 当程序从后台切回被激活时调用此函数 */ virtual void applicationWillEnterForeground();};#endif // _APP_DELEGATE_H_
我们再来看看Application.cpp里又都做了什么
#include "AppDelegate.h"#include "RootWindow.h" USING_NS_CC; AppDelegate::AppDelegate(){} AppDelegate::~AppDelegate() { } bool AppDelegate::applicationDidFinishLaunching(){ // initialize director //初始化direction CAApplication* pDirector = CAApplication::getApplication(); //初始化窗口 CCEGLView* pEGLView = CCEGLView::sharedOpenGLView(); pDirector->setOpenGLView(pEGLView); // run //启动 RootWindow入口 pDirector->runWindow(RootWindow::create()); return true;} // This function will be called when the app is inactive. When comes a phone call,it's be invoked toovoid AppDelegate::applicationDidEnterBackground(){ //暂停动画 CAApplication::getApplication()->stopAnimation(); // if you use SimpleAudioEngine, it must be pause //暂停音效,如果你有使用音效,希望程序切到后台音效停止,请解下面代码的注释 // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();} // this function will be called when the app is active againvoid AppDelegate::applicationWillEnterForeground(){ //回复动画 CAApplication::getApplication()->startAnimation(); // if you use SimpleAudioEngine, it must resume here //回复音效,如果你有使用音效,希望程序切到激活状态音效恢复,请解下面代码的注释 // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();}
RootWindow比较简单,我这里就不想详述,我来看一看FirstViewController都做了什么?
首先打开FirstViewController.h文件
//加载函数 一般做初始化UI和逻辑void viewDidLoad();//卸载函数 一般做移除和释放void viewDidUnload();
再来看看FirstViewController.cpp的 vievDidLoad();里的代码:
void FirstViewController::viewDidLoad(){ // Do any additional setup after loading the view from its nib. DRect winRect = this->getView()->getBounds(); //获得屏幕的Bounds(Bounds不收缩放影响) //加载一张图片 CAImageView* imageView = CAImageView::createWithImage(CAImage::create("HelloWorld.png")); //设置图片的Frame显示大小(Frame的值缩放后会被改变) imageView->setFrame(winRect); //将图片添加的到屏幕上面(如果不添加,那么这个ui将不会被渲染,内存也会在下一个loop时被释放) this->getView()->addSubview(imageView); //设置一个文本 CALabel* label = CALabel::createWithCenter(DRect(winRect.size.width*0.5, winRect.size.height*0.5-270, winRect.size.width, 200)); //文本水平方向中间对其 label->setTextAlignment(CATextAlignmentCenter); //文本竖直方向中间对其 label->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter); //设置字体大小(CROSSAPP_ADPTATION_RATIO是用于适配的系数) label->setFontSize(72 * CROSSAPP_ADPTATION_RATIO); //设置文本内容 label->setText("Hello World!"); //设置文本颜色 label->setColor(CAColor_white); //添加到屏幕并设置z轴 this->getView()->insertSubview(label, 1);}
CrossApp是用一种引用计数的方式来管理内存对象,通过CAObject、CAAutoreleasePool、CAPoolManager来完成内存的管理。
CAObject为引用计数类,在其构造函数的时候,CAObject的引用计数为1,但此时并未加入到自动释放池里,所有自动引用计数为0
在使用create创建对象时候,会调用autorelease,将对象放到对象池,CAAutoreleasePool的队列中接受管理。CAObject调用retain()则引用计数会增加1,调用release()引用计数会减少1.
CAAutoreleasePool是引擎初始化时创建了一个默认的自动释放对象列表,并把它加入到CAPoolManager里进行管理。
引擎每次主循环都会有一次CAPoolManager中pool的清理,那些引用计数为0的CAObject都会被释放掉。这就是CrossApp的内
存管理机制。
CAObject
//属性://引用数量unsigned int m_uReference; //自动引用数量unsigned int m_uAutoReleaseCount;
//方法://引用计数+1retain(); //引用计数-1relesase(); //添加到自动释放管理autorelease(); //返回当前的引用计数retainCount();
同时引擎为了方便内存管理,用一些关于内存管理的函数和宏定义。
常见的函数 | |
create(); | 内包含autorelease()调用 |
insertSubview(); | 内包含retain()调用 |
removeSubview(); | 内包含relesase()调用 |
常见的宏 | |
#define CC_SAFE_DELETE(p) | do { if(p) { delete (p); (p) = 0; } } while(0) |
#define CC_SAFE_DELETE_ARRAY(p) | do { if(p) { delete[] (p); (p) = 0; } } while(0) |
#define CC_SAFE_FREE(p) | do { if(p) { free(p); (p) = 0; } } while(0) |
#define CC_SAFE_RELEASE(p) | do { if(p) { (p)->release(); } } while(0) |
#define CC_SAFE_RELEASE_NULL(p) | do { if(p) { (p)->release(); (p) = 0; } } while(0) |
#define CC_SAFE_RETAIN(p) | do { if(p) { (p)->retain(); } } while(0) |
还有专门用于适应CrossApp的数据容器: CAVector、CAList、CADeque、CAMap 其使用方法类似于c++的vector、list、deque、map的用法,其根本不同在于其添加和移除时,遵循CrossApp的内存管理原则。
假如我们有需求,需要我们自己手动管理一个对象指针的内存,那么我们需要,retain()和relesase()在一个类中成对出现,遵循谁负责retain谁就负责relesase的原则。
CrossApp的根类是CAObject,主要分为视图(view)和控制器(controller),view都派生自CAView,controller都派生自CAViewController。
CAView主要分为三类,用于显示文本和图片的view:CALabel、CAImageView、CAScale9ImageView;容器类:CAScrollView、CATableView、CACollectionView;控件类:CAButton、CAAlertView、CASlider、CASwitch、CASegmentedControl等。
CAControllerView包括三个子类:CADrawerController、CATabBarController和CANavigationController,分别实现不同的view管理方式。
下面是CrossApp的主要类结构图。
1.Windows下创建CrossApp工程
使用命令行的方式:在CrossApp的解压目录下CrossApp/tools/project-creator中有一个创建工程的Python脚本,我们使用create_project.py来创建工程。因此在Windows下要求安装Python环境,用于运行create_project.py脚本Python的安装过程很简单,需要注意的是,在安装完成后,需要在系统环境变量”Path”中加入Python的安装路径。
python下载地址:https://www.python.org/downloads/windows
命令行创建工程示例:
使用工具创建:在CrossApp的解压根目录,有一个project-creator.exe创建工程工具,我们可以直接运行这个工具,之后只需要输入工程名和包名就可以创建CrossApp工程。注意,无论使用哪种方式创建工程,包名的字段的首字母不能为数字,否则在Android下会产生错误。
2.Mac下创建CrossApp工程
在Mac下我们通过命令行的方式来创建CrossApp工程,由于Mac自带Python环境,所以直接通过命令行的方式创建工程,创建方式和在Windows下一样,运行create_project.py脚本创建工程。
命令行创建工程示例:
我们这里分别对CAVector、CAList、CADeque、CAMap的常用函数进行说明:
CAVector<CAObject*> ca_vector;//增ca_vector.insert(size_t index, CrossApp::CAObject *object);//插入一个元素到指定位置ca_vector.pushBack(CrossApp::CAObject *object);//在list末尾插入一个元素 //删ca_vector.erase(ca_vector.begin());//删除指定位置的元素ca_vector.erase(ca_vector.begin(),ca_vector.end());//删除指定范围的元素ca_vector.popBack();//删除最后一个元素ca_vector.clear();//删除所有元素 //查ca_vector.empty();//是否含有元素ca_vector.size();//返回vector中的元素个数ca_vector.end();//返回末尾的迭代器ca_vector.begin();//返回指向第一个元素的迭代器ca_vector.front();//返回第一个元素ca_vector.back();//返回最后一个元素 //遍历for (int i = 0; i < ca_vector.size(); i++) { CAObject* obj = ca_vector.at(i);}
CAList<CAObject*> ca_list;//增ca_list.insert(size_t index, CrossApp::CAObject *object);//插入一个元素到指定位置ca_list.pushBack(CrossApp::CAObject *object);//在list末尾插入一个元素ca_list.pushFront(CrossApp::CAObject *object);//在list头部添加一个元素//删ca_list.erase(ca_list.begin());//删除指定位置的元素ca_list.erase(ca_list.begin(),ca_list.end());//删除指定范围的元素ca_list.popBack();//删除最后一个元素ca_list.popFront();//删除第一个元素ca_list.clear();//删除所有元素//查ca_list.size();//返回list中的元素个数ca_list.begin();//返回指向第一个元素的迭代器ca_list.end();//返回末尾的迭代器ca_list.front();//返回第一个元素ca_list.back();//返回最后一个元素//遍历std::list<CAObject*>::iterator it;for (it = ca_list.begin(); it != ca_list.end(); it++) { CAObject* obj = (CAObject*)*it;}
CADeque<CAObject*> ca_deque;//增ca_deque.insert(size_t index, CrossApp::CAObject *object);//插入一个元素到指定位置ca_deque.pushBack(CrossApp::CAObject *object);//在list末尾插入一个元素ca_deque.pushFront(CrossApp::CAObject *object);//在list头部添加一个元素 //删ca_deque.erase(size_t index);//删除指定位置的元素ca_deque.erase(ca_deque.begin()+1, ca_deque.end()-2);//删除指定范围的元素ca_deque.popBack();//删除最后一个元素ca_deque.popFront();//删除第一个元素ca_deque.clear();//删除所有元素 //查ca_deque.size();//返回deque中的元素个数ca_deque.begin();//返回指向第一个元素的迭代器ca_deque.end();//返回末尾的迭代器ca_deque.front();//返回第一个元素ca_deque.back();//返回最后一个元素ca_deque.at(size_t index);//返指定位置的元素 //遍历for (int i = 0; i < ca_deque.size(); i++) { CAObject* obj = ca_deque.at(i);}
CAMap<int, CAObject*> ca_map;//增ca_map.insert(int key, CrossApp::CAObject *object);//增加一个元素键值对 //删ca_map.erase(int key);//通过key删除元素ca_map.clear();//删除所有元素 //查ca_map.empty();//判断mpa是否是空ca_map.contains(int key);//是否有这个key返回boolca_map.getValue(int key);//根据key返回对应的Valuestd::vector<int> vec = ca_map.getKeys();//返回包含所有key的vector //遍历std::map<int, CAObject*>::iterator it;for (it = ca_map.begin(); it != ca_map.end(); ++it) { int key = it->first; CAObject* obj = it->second;}
我们以CAVector为例子做一个内存管理的实验,看在添加和移除元素时,CAObject的引用计数是否发生了变化。CAObject* obj = new CAObject(); CAVector<CAObject*> ca_vector; //打印引用计数CCLog("count:%d",obj->retainCount()); //把obj添加到vector尾部ca_vector.pushBack(obj); //打印引用计数CCLog("count:%d",obj->retainCount()); //把obj移除ca_vector.eraseObject(obj); //打印引用计数CCLog("count:%d",obj->retainCount());
环境需求如下:
①操作系统:windows7以上版本
②开发工具:vs2012以上版本(推荐vs2013)
https://www.microsoft.com/zh-cn/download/details.aspx?id=44921
③Python: 推荐Python2.7版本(可装可不装,如果你要用命令行创建新工程项目就装吧)
=========编译到android所用=========
④ADT(eclipse+androidSDK): adt-bundle-windows
http://pan.baidu.com/s/1dDnvbjj
⑤androidNDK: 推荐android-ndk-r9c
http://pan.baidu.com/s/1o6KmBmq
⑥JDK: jdk for windows就行了
http://pan.baidu.com/s/1sj8BgNr
方法二: Python脚本创建
1.双击安装Python
2.配置环境path
右键计算器(我的电脑)-->属性-->高级系统设置-->环境变量-->系统变量-->双击Path-->在变量值结尾添加:“;C:/Python27”(引号改成你的Python安装路径,注意前面有一个分号";")
看到提示成功的信息,工程就创建成功了!
ADT(eclipse+androidSDK)
http://pan.baidu.com/s/1dDnvbjj
androidNDK(推荐android-ndk-r9c)
http://pan.baidu.com/s/1o6KmBmq
JDK(jdk-7u45-windows-x64)
http://pan.baidu.com/s/1sj8BgNr
以上列出的工具也可以使用其他的版本,NDK的要求r8以上版本,配置的方法基本一样,请根据操作系统型号选择配置环境所需的工具包。
配置Android环境必须要先安装java环境,安装的过程没有什么特别要求。
安装完成后需要配置环境变量,在Windows系统变量中新建一个变量名为 JAVA_HOME 的变量,变量值为jdk的安装目录。例如:C:Program FilesJavajdk1.7.0_45。
再新建一个名为 CLASSPATH 的变量,变量的值为:.;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar (最前面的.;一定要加上),在系统变量中找到 Path 变量,点击编辑,在变量值最前面添加一个分号,然后在分号的前面添加 %JAVA_HOME%bin;%JAVA_HOME%jrebin 这样java的环境变量已经配置好了,打开dos,输入java、javac、java –version等命令就能看见相关的信息。
将工程导入eclipse,File->New->Other->Android Project from Existing Code,点击 Browse 找到我们引擎目录下 CrossApp 里的 proj.android。
如图:
将工程导入eclipse,File->New->Other->Android Project from Existing Code,点击 Browse 找到我们新创建的工程目录下的 proj.android。
如图:
4.导入完成后需要确认以下配置:
1)确认Android 版本和引擎版本一致
如图中 Android 版本都为 4.4.2,如果不一样右键引擎选择 Properties->Android 选择和新建项目版本一样的 Android版本。
2)更改新建项目的ndk路径为ndk的根目录。例如:D:androidandorid-ndk-r9
例如:D:androidandroid-ndk-r9c
3)在新建项目中找到 jni 目录下的 Android.mk 文件找到如下代码:
#$(call import-add-path, $(LOCAL_PATH)/../../../..)#$(call import-add-path, $(LOCAL_PATH)/../../../../CrossApp/the_third_party/)
5.以上步骤完成后,我们直接右键工程->Run As Android Application,开始编译我们的工程。
6.工程导入eclipse后,编译运行过程中所出现的异常和错误以及对应的解决办法如下表所示。
错误 | 解决办法 |
在工程src下的包错误,提示找不到org.CrossApp.lib这个包 | 将工程导入eclipse,File->New->Other->Android Project from Existing Code,点击 Browse 找到我们引擎目录下 CrossApp 里的 proj.android。 |
运行工程出现Error: Program "bash" is not found in PATH | 右键工程->Properties,在打开面板中点击C/C++ Build,在Build command一项中,把默认的command替换为自己ndk目录下的ndk-build.cmd,例如:D:android-ndk-r9cndk-build.cmd。 |
运行工程出现Cannot find module with tag 'CrossApp' in import path | 在新建项目中找到 jni 文件夹下的 android.mk 中找到$(call import-module,CrossApp),在这句前面添加如下两段代码: $(call import-add-path, $(LOCAL_PATH)/../../../..) $(call import-add-path, $(LOCAL_PATH)/../../../../CrossApp/the_third_party/) 路径修改为自己的对应路径。 |
模拟器运行崩溃 | android模拟器从sdk 4.0.3开始才支持OpenGL ES2.0,新建的模拟器的sdk也要求4.0.3及以上(建议真机看运行效果)。 |
7.环境配置参考视频
我们想要在win环境下搭建开发环境需要以下工具,请在必须下载完成后再开始学习:
首先下载CROSSAPP引擎:crossapp越新越好啦
github地址:https://github.com/9miao/CrossApp
oschina地址:http://git.oschina.net/9miao/CrossApp (国内较快)
环境需求如下:
①操作系统:Mac OS
②开发工具:Xcode
https://developer.apple.com/cn/xcode/downloads/
③Python: 推荐Python2.7版本(可装可不装,如果你要用命令行创建新工程项目就装吧)
=========编译到android所用=========
④ADT(eclipse+androidSDK)
http://pan.baidu.com/s/1dDnvbjj
⑤androidNDK: 推荐android-ndk-r9c
http://pan.baidu.com/s/1o6KmBmq
⑥JDK
http://pan.baidu.com/s/1sj8BgNr
三、根据提示 输入创建c++代码项目命令:
./create_project.py -project MyGame -package com.MyCompany.AwesomeGame -language cpp
看到下面的提示就创建成功了
方法二:project-creator.app创建项目
双击CrossApp引擎根目录下的project-creator.app
这样我们点CrossApp引擎点根目录就会多一个名为projects的文件夹,这里面存放着我们创建的CrossApp项目。
1.以下移植android的环境配置所需的工具:
ADT(eclipse+androidSDK)
http://pan.baidu.com/s/1nts4yet
androidNDK(推荐android-ndk-r9c)
http://pan.baidu.com/s/1o6KmBmq
JDK(jdk-7u45-windows-x64)
http://pan.baidu.com/s/1sjOQmMp
2.安装java环境
配置Android环境必须要先安装java环境,安装JDK安装的过程没有什么特别要求。
3.移植Android
将工程导入eclipse,File->New->Other->Android Project from Existing Code 点击 Browse 找到我们引擎目录下 CrossApp 里的 proj.android。
如图:
将工程导入eclipse,File->New->Other->Android Project from Existing Code 点击 Browse 找到我们新创建的工程目录下的 proj.android。
如图:
4.导入完成后需要确认以下配置:
1)确认 Android 版本和引擎版本一致
如图中 Android 版本都为 4.4.2,如果不一样右键引擎选择 Properties->Android 选择和新建项目版本一样的 Android版本。
2)更改新建项目的 ndk 路径为ndk的根目录。例如:D:androidandorid-ndk-r9
5.以上步骤完成后,我们直接右键工程->Run As Android Application,开始编译我们的工程。
6.工程导入eclipse后,编译运行过程中所出现的异常和错误以及对应的解决办法如下表所示。
7.环境配置参考视屏
类说明
DLayout自适应布局。
DLayout 属性(点击属性名可查看属性介绍)
属性 | 说明 |
horizontal | 水平方向 |
vertical | 垂直方向 |
DHorizontalLayoutZero | 水平方向清零 |
DVerticalLayoutZero | 垂直方向清零 |
DLayoutZero | Layout 清零 |
DHorizontalLayoutFill | 水平方向塞满 |
DVerticalLayoutFill | 垂直方向塞满 |
DLayoutFill | 塞满 |
DLayout 方法(点击属性名可查看属性介绍)
方法 | 说明 |
DHorizontalLayout_L_R | 设置水平方向 左侧边距和右侧边距 |
DHorizontalLayout_L_W | 设置水平方向 左侧边距和宽度 |
DHorizontalLayout_L_C | 设置水平方向 左侧边距和中心点 |
DHorizontalLayout_R_W | 设置水平方向 右侧边距和宽度 |
DHorizontalLayout_R_C | 设置水平方向 右侧边距和中心点 |
DHorizontalLayout_W_C | 设置水平方向 宽度和中心点 |
DVerticalLayout_T_B | 设置垂直方向 上边距和下边距 |
DVerticalLayout_T_H | 设置垂直方向 上边距和高度 |
DVerticalLayout_T_C | 设置垂直方向 上边距和中心点 |
DVerticalLayout_B_H | 设置垂直方向 下边距和高度 |
DVerticalLayout_B_C | 设置垂直方向 下边距和中心点 |
DVerticalLayout_H_C | 设置垂直方向 高度和中心点 |
DHorizontalLayout 属性(点击属性名可查看属性介绍)
属性 | 说明 |
left | 左侧边距 |
right | 右侧边距 |
width | 宽度 |
center | 中心点 |
DVerticalLayout 属性(点击属性名可查看属性介绍)
属性 | 说明 |
top | 上边距 |
bottom | 下边距 |
height | 高度 |
center | 中心点 |
//DLayout 相对于this->getView() 内缩50DPCAView * LayoutView = CAView::createWithColor(CAColor_blue);LayoutView->setLayout(DLayout(DHorizontalLayout_L_R(50, 50), DVerticalLayout_T_B(50, 50)));this->getView()->addSubview(LayoutView); //DLayout 塞满this->getView()CAView * LayoutView = CAView::createWithColor(CAColor_blue);LayoutView->setLayout(DLayoutFill);this->getView()->addSubview(LayoutView); //DLayout 宽高为300,在this->getView()中心CAView * LayoutView = CAView::createWithColor(CAColor_blue);LayoutView->setLayout(DLayout(DHorizontalLayout_W_C(300, 0.5), DVerticalLayout_H_C(300, 0.5)));this->getView()->addSubview(LayoutView);
CALayout 属性说明
类型:DHorizontalLayout
解释:水平方向
类型:DVerticalLayout
解释:垂直方向
类型:DHorizontalLayout
解释:水平方向L、R、W、C清零
类型:DVerticalLayout
解释:垂直方向T、B、H、C清零
类型:DLayoutZ
解释:Layout L、R、W、T、B、H、C清零
类型:DHorizontalLayout
解释:水平方向塞满
类型:DVerticalLayout
解释:垂直方向塞满
类型:DLayout
解释:塞满
CALayout 方法说明
static inline DHorizontalLayout DHorizontalLayout_L_R(float left, float right);
返回值: DHorizontalLayout
参数:
类型 | 参数名 | 说明 |
float | left | 左侧边距 |
float | right | 右侧边距 |
解释:设置水平方向 左侧边距和右侧边距
static inline DHorizontalLayout DHorizontalLayout_L_W(float left, float width);
返回值: DHorizontalLayout
参数:
类型 | 参数名 | 说明 |
float | left | 左侧边距 |
float | width | 宽度 |
解释:设置水平方向 左侧边距和宽度
static inline DHorizontalLayout DHorizontalLayout_L_C(float left, float center);
返回值: DHorizontalLayout
参数:
类型 | 参数名 | 说明 |
float | left | 左侧边距 |
float | center | 中心点 |
解释:设置水平方向 左侧边距和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)
static inline DHorizontalLayout DHorizontalLayout_R_W(float right, float width);
返回值: DHorizontalLayout
参数:
类型 | 参数名 | 说明 |
float | right | 左侧边距 |
float | width | 宽度 |
解释:设置水平方向 右侧边距和宽度
static inline DHorizontalLayout DHorizontalLayout_R_C(float right, float center);
返回值: DHorizontalLayout
参数:
类型 | 参数名 | 说明 |
float | right | 左侧边距 |
float | center | 中心点 |
解释:设置水平方向 右侧边距和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)
static inline DHorizontalLayout DHorizontalLayout_W_C(float width, float center);
返回值: DHorizontalLayout
参数:
类型 | 参数名 | 说明 |
float | width | 宽度 |
float | center | 中心点 |
解释:设置水平方向 宽度和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)
static inline DVerticalLayout DVerticalLayout_T_B(float top, float bottom);
返回值: DVerticalLayout
参数:
类型 | 参数名 | 说明 |
float | top | 上边距 |
float | bottom | 下边距 |
解释:设置垂直方向 上边距和下边距
static inline DVerticalLayout DVerticalLayout_T_H(float top, float height);
返回值: DVerticalLayout
参数:
类型 | 参数名 | 说明 |
float | top | 上边距 |
float | height | 宽度 |
解释:设置垂直方向 上边距和宽度
static inline DVerticalLayout DVerticalLayout_T_C(float top, float center);
返回值: DVerticalLayout
参数:
类型 | 参数名 | 说明 |
float | top | 上边距 |
float | center | 中心点 |
解释:设置垂直方向 上边距和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)
static inline DVerticalLayout DVerticalLayout_B_H(float bottom, float height);
返回值: DVerticalLayout
参数:
类型 | 参数名 | 说明 |
float | bottom | 下边距 |
float | height | 宽度 |
解释:设置垂直方向 下边距和宽度
static inline DVerticalLayout DVerticalLayout_B_C(float bottom, float center);
返回值: DVerticalLayout
参数:
类型 | 参数名 | 说明 |
float | bottom | 下边距 |
float | center | 中心点 |
解释:设置垂直方向 下边距和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)
static inline DVerticalLayout DVerticalLayout_H_C(float height, float center);
返回值: DVerticalLayout
参数:
类型 | 参数名 | 说明 |
float | height | 高度 |
float | center | 中心点 |
解释:设置垂直方向 高度和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)
DHorizontalLayout 属性说明
类型:float
解释:Layout 水平方向左侧边距(单位DP)
类型:float
解释:Layout 水平方向右侧边距(单位DP)
类型:float
解释:Layout 水平方向宽度(单位DP)
类型:float
解释:Layout 水平方向中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)
DVerticalLayout 属性说明
类型:float
解释:Layout 垂直方向上边距(单位DP)
类型:float
解释:Layout 垂直方向下边距(单位DP)
类型:float
解释:Layout 垂直方向高度(单位DP)
类型:float
解释:Layout 垂直方向中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)
类说明
标签文字类,用于显示文本。
CALabel 属性 (点击属性名可查看属性介绍)
属性 | 说明 |
Text | label的文本内容 |
FontName | label的字体 |
FontSize | label的字体大小 |
Dimensions | label的尺寸大小 |
VerticalTextAlignmet | 文本的竖直对齐方式 |
TextAlignment | 文本的水平对齐方式 |
NumberOfLine | label的行数 |
UnderLine | label的字体下划线 |
Bold | label的字体加粗 |
Italics | label的字体斜体 |
EnableCopy | label的字体启用复制 |
LineSpacing | label的字体的行间距 |
WordWrap | label的字体自动换行 |
LabelSize | 获取label的大小 |
CALabel 方法 (点击方法名可查看方法介绍)
方法 | 说明 |
sizeToFit | 设置自适应label宽度 |
unsizeToFi | 取消设置自适应label宽度 |
applyStyle | label的样式风格 |
applyStyle | label的应用风格 |
createWithFrame | 创建,并指定其Frame,默认Frame为(0,0,0,0) |
createWithCenter | 创建,并指定其Frame,默认Center为(0,0,0,0) |
initWithFrame | 初始化,并指定其Frame |
initWithCenter | 初始化,并指定其Center |
setColor | 设置label的颜色 |
getColor | 获取label的颜色 |
使用介绍
第一:Label的行数:
其实Label行数是受Label的范围的影响,假如你设置的Frame太小,你超出Frame范围的行数是不被显示的。
例如:Frame的范围只够显示2行,那么NumberOfLine设置比2大也是最多显示2行。
第二:win开放中文字符:
假如是是在win下开发CrossApp那么,label->setText("中文");这样直接设置中文字符,CALabel的显示不正常的。
我们可以设置转为UTF8格式,格式如下:label->setText(UTF8("伟大的矮人王索林·橡木盾"));
第三:LabelSize 版本6.0有个bug
LabelSize在你缩放CALabel和改变CALabel的文本内容时候,LabelSize的值都不会变化。正常情况下应该是在文本 内容或字体大小发生改变时,LabelSize也跟着改变
//通过设置Center来创建一个CALabel (CRect前两个参数是中心点x,y;后两个参数是width,height) CALabel* label = CALabel::createWithCenter(DRect(100, 200, 400, 400)); //设置文本水平方向的对齐方式 label->setTextAlignment(CATextAlignmentCenter); //设置文本竖直方向的对齐方式 label->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter); //设置文本大小(CROSSAPP_ADPTATION_RATIO 是用于适配的缩放比) label->setFontSize(72 * CROSSAPP_ADPTATION_RATIO); //设置文本内容 label->setText("Hello World!"); //设置行数 label->setNumberOfLine(10); //设置文本颜色 label->setColor(CAColor_white); //设置文本字体 label->setFontName("fonts/arial.ttf"); this->getView()->insertSubview(label, 1);
CALabel 属性说明
类型:string
解释:设置文本显示的字符串。 set/get{}。
类型:string
解释:设置文本显示的字体。FontName
类型:unsigned int
解释:设置文本小时的字体大小。set/get{}。
类型:DSize
解释:设置文本显示的尺寸大小。set/get{}。
类型:CAVerticalTextAlignment
解释:设置文本显示的竖直对齐方式,枚举类型。set/get{}。
typedef enum { CAVerticalTextAlignmentTop, //顶部对齐方式 CAVerticalTextAlignmentCenter, //中心对齐方式 CAVerticalTextAlignmentBottom, //底部对齐方式} CAVerticalTextAlignment;
类型:CATextAlignment
解释:设置文本显示的水平对齐方式,枚举类型。set/get{}。
typedef enum{ CATextAlignmentLeft, //左对齐方式 CATextAlignmentCenter, //中心对齐方式 CATextAlignmentRight, //右对齐方式} CATextAlignment;
类型:unsigned int
解释:设置文本显示的行数。set/get{}。set/get{}。
类型:bool
解释:设置文本显示的字体下划线。set/get{}。
类型:bool
解释:设置文本显示的字体加粗。set/get{}。
类型:bool
解释:设置文本显示的字体斜体。set/get{}。
类型:bool
解释:设置文本显示的字体启用复制。set/get{}。
类型:int
解释:设置文本显示的字体行间距。set/get{}。
类型:bool
解释:设置文本显示的字体自动换行。set/get{}。
示例:
CALabel* c_Label = CALabel::createWithCenter(DRect(size.width*0.5,size.height*0.5,220,500)); c_Label->setText("CrossApp is a cross platform application engine,developed by 9miao.com"); c_Label->setTextAlignment(CATextAlignmentCenter); c_Label->setColor(CAColor_orange); c_Label->setFontSize(28); this->getView()->addSubview(c_Label);
LabelSize
类型:DSize
解释:获取Label的大小。get{}。
CALabel 方法说明
返回值: void
参数:
解释:设置自适应label宽度,即label的宽度随文本变化而变换。
返回值: void
参数:
解释:取消设置自适应label宽度
void applyStyle(const string& sStyleName);
返回值: void
参数:
类型 | 参数名 | 说明 |
const string& | sStyleName | label的样式名称 |
解释:label的样式风格
void applyStyle(const CALabelStyle* pLabelStyle);
返回值: void
参数:
类型 | 参数名 | 说明 |
const CALabelStyle* | pLabelStyle | label的应用风格 |
解释:label的应用风格
static CALabel* createWithFrame(const DRect& rect);
返回值: static CALabel*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
解释:创建,并指定其Frame,默认Frame为(0,0,0,0)
static CALabel* createWithCenter(const DRect& rect);
返回值: static CALabel*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
解释:创建,并指定其Frame,默认Center为(0,0,0,0)
virtual bool initWithFrame(const DRect& rect);
返回值: virtual bool
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
解释:初始化,并指定其Frame
virtual bool initWithCenter(const DRect& rect);
返回值:virtual bool
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
解释:初始化,并指定其Center
void setColor(const CAColor4B& var);
返回值: void
参数:
类型 | 参数名 | 说明 |
const CAColor4B& | var | CAColor4B的类型颜色 |
解释:设置label的颜色
返回值: const CAColor4B&
参数:
解释:获取label的颜色
类说明
CAImage贴图类,即内存中的纹理,主要用于创建贴图对象,将图像加载进内存,是所有有关贴图类的基础。
CAImage 属性(点击方法名可查看方法介绍)
属性 | 说明 |
PixelFormat | 像素格式 |
PixelsWide | 像素宽 |
PixelsHigh | 像素高 |
ContentSize | 内容大小 |
ShaderProgram | 着色程序 |
Monochrome | 单色 |
Data | 数据 |
DataLenght | 数据长度 |
CAImage 方法(点击方法名可查看方法介绍)
方法 | 说明 |
create | 创建,默认Frame为(0,0,0,0) |
createWithImageDataNoCache | 创建,默认没有缓存 |
createWithImageData | 创建,默认有缓存 |
createWithString | 创建,并指定文本内容 |
getFontHeight | 获得字体高度 |
getStringWidth | 获得字体宽度 |
cutStringByWidth | 减少字符串的宽度 |
getStringHeight | 减少字符串的高度 |
scaleToNewImageWithImage | 缩放当前图像做新图像 |
scaleToNewImageWithImage | 缩放当前图像做新图像 |
generateMipmapsWithImage | 生成mipmap图像 |
createWithRawDataNoCache | 创建,并指定Raw Data,默认没有缓存 |
createWithRawData | 创建,并指定Raw Data,默认没有缓存 |
initWithImageFile | 初始化,并指定其图像文件 |
initWithImageFileThreadSafe | 初始化,并指定其图像文件(支持子线程) |
initWithImageData | 初始化,并指定其图像缓存 |
initWithRawData | 初始化,并指定其原数据 |
description | 添加图像描述 |
releaseData | 释放所有数据 |
releaseData | 释放指定数据 |
drawAtPoint | 基于某个点显示(大小为图像大小) |
drawInRect | 基于某个矩形区域显示 |
initWithETCFile | 初始化,并指定其ETC文件 |
stringForFormat | 格式字符串 |
saveToFile | 保存到文件 |
getImageFileType | 获取图像文件类型 |
getAspectRatio | 得到长宽比 |
detectFormat | 检测格式 |
premultipliedImageData | 进行图像数据 |
repremultipliedImageData | 再进行图像数据 |
updateGifImageWithIndex | 通过index更新GIF图像 |
getGifImageIndex | 获取GIF图像的index |
getGifImageCounts | 获取GIF图像的参数 |
reloadAllImages | 重新加载所有图像 |
CAImageView 属性(点击方法名可查看方法介绍)
属性 | 说明 |
ImageViewScaleType | 图像缩放类型 |
AnimationImages | 动画图像 |
AnimationDuration | 动画间隔的时间 |
AnimationRepeatCount | 动画重复次数 |
CAImageView 方法(点击方法名可查看方法介绍)
方法 | 说明 |
create | 创建,默认Frame为(0,0,0,0) |
createWithImage | 创建,并指定Image |
createWithFrame | 创建,并指定Frame,默认Frame为(0,0,0,0) |
createWithCenter | 创建,并指定Center,默认Center为(0,0,0,0) |
init | 初始化 |
initWithImage | 初始化,并指定其图像 |
setImage | 设置图像 |
getImage | 获取图像 |
setImageAsyncWithFile | 异步设置图像文件 |
startAnimating | 开始动画 |
stopAnimating | 结束动画 |
isAnimating | 查看图像动画 |
使用方法
//创建一个CAImage CAImage* image = CAImage::create("HelloWorld.png"); //CAImage函数//打印贴图描述 CCLog("Description:%s", image->description()); //打印像素格式 CCLog("StringForFormat:%s", image->stringForFormat()); //打印像素位深 CCLog("bitsPerPixelForFormat:%d", image->bitsPerPixelForFormat()); //方法一:通过CAImage创建一个CAImageView CAImageView* imageView = CAImageView::createWithImage(image); //设置显示的范围(如果不设置,默认不会被显示出来) imageView->setFrame(winRect); //添加到绘制 this->getView()->addSubview(imageView); //方法二:通过设置Center创建一个CAImageViewD CAImageView* imageView_1 = CAImageView::createWithCenter(DRect(50,50,100,100)); //设置显示的纹理 imageView_1->setImage(image); //异步加载 //imageView_1->setImageAsyncWithFile("source_material/stepper_inc_n.png"); //添加到绘制,设置z轴为1 this->getView()->insertSubview(imageView_1,1);
CCLog的打印结果:
Description:<CAImage | Name = 3 | Dimensions = 640 x 960 | Coordinates = (1.00, 1.00)>
StringForFormat:RGB888
bitsPerPixelForFormat:32
CAImage 属性说明
类型:CAImage::PixelFormat
解释:像素格式。get{}。
类型:unsigned int
解释:像素宽。get{}。
类型:unsigned int
解释:像素高。get{}。
类型:DSize
解释:内容大小。get{}。
类型:CAGLProgram*
解释:着色程序。set/get{}。
类型:bool
解释:单色。is{}。
类型:unsigned char*
解释:数据。get{}。
类型:unsigned long
解释:数据长度。get{}。
CAImage 方法说明
static CAImage* create(const std::string& file);
返回值:static CAImage*
参数:
类型 | 参数名 | 说明 |
const std::string& | file | 图像名 |
解释:创建,默认Frame为(0,0,0,0)
static CAImage* createWithImageDataNoCache(const unsigned char * data, unsigned long lenght);
返回值:static CAImage*
参数:
类型 | 参数名 | 说明 |
const unsigned char * | data | 数据 |
unsigned long | lenght | 长度 |
解释:创建,默认没有缓存
static CAImage* createWithImageData(const unsigned char * data, unsigned long lenght, const std::string& key);
返回值:static CAImage*
参数:
类型 | 参数名 | 说明 |
const unsigned char * | data | 数据 |
unsigned long | lenght | 长度 |
const std::string& | key | 属性 |
解释:创建,默认有缓存
static CAImage* createWithString(const char *text, const char *fontName, float fontSize, const DSize& dimensions, CATextAlignment hAlignment, CAVerticalTextAlignment vAlignment, bool isForTextField = false, int iLineSpacing = 0, bool bBold = false, bool bItalics = false, bool bUnderLine = false);
返回值:static CAImage*
参数:
类型 | 参数名 | 说明 |
const char | *text | 文字 |
const char | *fontName | 字体名称 |
float | fontSize | 字体大小 |
const DSize& | dimensions | 图像大小 |
CATextAlignment | hAlignment | 文本对齐 |
CAVerticalTextAlignment | vAlignment | 垂直文本对齐 |
bool | isForTextField = false | 是否显示文本框(默认不显示) |
int | iLineSpacing = 0 | 文本间距(默认0) |
bool | bBold = false | 是否显示加粗(默认不加粗) |
bool | bItalics = false | 是否显示斜体(默认不斜体) |
bool | bUnderLine = false | 是否显示下划线(默认不显示) |
解释:创建,并指定文本内容
static int getFontHeight(const char* pFontName, unsigned long nSize);
返回值:static int
参数:
类型 | 参数名 | 说明 |
const char* | pFontName | 字体名字 |
unsigned long | nSize | 字体大小 |
解释:获得字体高度
static int getStringWidth(const char* pFontName, unsigned long nSize, const std::string& pText);
返回值:static int
参数:
类型 | 参数名 | 说明 |
const char* | pFontName | 字体名字 |
unsigned long | nSize | 字体大小 |
const std::string& | pText | 文本内容 |
解释:获得字体宽度
static int cutStringByWidth(const char* pFontName, unsigned long nSize, const std::string& text, int iLimitWidth, int& cutWidth);
返回值:static int
参数:
类型 | 参数名 | 说明 |
const char* | pFontName | 字体名字 |
unsigned long | nSize | 字体大小 |
const std::string& | pText | 文本内容 |
int | iLimitWidth | 最大宽度 |
int& | cutWidth | 减少的宽度 |
解释:减少字符串的宽度
static int getStringHeight(const char* pFontName, unsigned long nSize, const std::string& pText, int iLimitWidth, int iLineSpace = 0, bool bWordWrap = true);
返回值:static int
参数:
类型 | 参数名 | 说明 |
const char* | pFontName | 字体名字 |
unsigned long | nSize | 字体大小 |
const std::string& | pText | 文本内容 |
int | iLimitWidth | 最大宽度 |
int | iLineSpace = 0 | 间距 |
bool | bWordWrap = true | 自动换行 |
解释:减少字符串的高度
static CAImage* scaleToNewImageWithImage(CAImage* image, const DSize& size);
返回值:static CAImage*
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
const DSize& | size | 大小 |
解释:缩放当前图像做新图像
static CAImage* scaleToNewImageWithImage(CAImage* image, float scaleX, float scaleY);
返回值:static CAImage*
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
float | scaleX | 缩放X轴 |
float | scaleY | 缩放Y轴 |
解释:缩放当前图像做新图像
static CAImage* generateMipmapsWithImage(CAImage* image);
返回值:static CAImage*
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
解释:生成mipmap图像
static CAImage* createWithRawDataNoCache(const unsigned char * data, const CAImage::PixelFormat& pixelFormat, unsigned int pixelsWide, unsigned int pixelsHigh);
返回值:static CAImage*
参数:
类型 | 参数名 | 说明 |
const unsigned char * | data | 数据 |
const CAImage::PixelFormat& | pixelFormat | 像素格式 |
unsigned int | pixelsWide | 像素宽 |
unsigned int | pixelsHigh | 像素高 |
解释:创建,并指定Raw Data,默认没有缓存
static CAImage* createWithRawData(const unsigned char * data, const CAImage::PixelFormat& pixelFormat, nsigned int pixelsWide, unsigned int pixelsHigh, const std::string& key);
返回值:static CAImage*
参数:
类型 | 参数名 | 说明 |
const unsigned char * | data | 数据 |
const CAImage::PixelFormat& | pixelFormat | 像素格式 |
unsigned int | pixelsWide | 像素宽 |
unsigned int | pixelsHigh | 像素高 |
const std::string& | key | 属性 |
解释:创建,并指定Raw Data,默认有缓存
bool initWithImageFile(const std::string& file);
返回值:bool
参数:
类型 | 参数名 | 说明 |
const std::string& | file | 图像名 |
解释:初始化,并指定其图像文件
bool initWithImageFileThreadSafe(const std::string& fullPath);
返回值:bool
参数:
类型 | 参数名 | 说明 |
const std::string& | fullPath | 完整路径 |
解释:初始化,并指定其图像文件(支持子线程)
bool initWithImageData(const unsigned char * data, unsigned long dataLen);
返回值:bool
参数:
类型 | 参数名 | 说明 |
const unsigned char * | data | 数据 |
unsigned long | dataLen | 数据长度 |
解释:初始化,并指定其图像缓存
bool initWithRawData(const unsigned char * data, const CAImage::PixelFormat& pixelFormat, unsigned int pixelsWide, unsigned int pixelsHigh);
返回值:bool
参数:
类型 | 参数名 | 说明 |
const unsigned char * | data | 数据 |
const CAImage::PixelFormat& | pixelFormat | 像素格式 |
unsigned int | pixelsWide | 像素宽 |
unsigned int | pixelsHigh | 像素高 |
解释:初始化,并指定其原数据
const char* description(void);
返回值:const char*
参数:
解释:获取图像描述
返回值:void
参数:
解释:释放所有数据
void releaseData(unsigned char ** data);
返回值:void
参数:
类型 | 参数名 | 说明 |
unsigned char ** | data | 数据 |
解释:释放指定数据
void drawAtPoint(const DPoint& point);
返回值:void
参数:
类型 | 参数名 | 说明 |
const DPoint& | point | 点的位置 |
解释:基于某个点显示(大小为图像大小)
void drawInRect(const DPoint& rect);
返回值:void
参数:
类型 | 参数名 | 说明 |
const DPoint& | rect | 矩形大小 |
解释:基于某个矩形区域显示
bool initWithETCFile(const char* file);
返回值:bool
参数:
类型 | 参数名 | 说明 |
const char* | file | 文件名 |
解释:初始化,并指定其ETC文件
const char* stringForFormat();
返回值:const char*
参数:
解释:格式字符串
bool saveToFile(const std::string& fullPath, bool bIsToRGB = false);
返回值:bool
参数:
类型 | 参数名 | 说明 |
const std::string& | fullPath | 完全路径 |
bool | bIsToRGB = false | 是否用RGB格式保存(默认否) |
解释:是否保存成RGB格式
const char* getImageFileType();
返回值:const char*
参数:
解释:获取图像文件类型
返回值:float
参数:
解释:得到长宽比
CAImage::Format detectFormat(const unsigned char * data, unsigned long dataLen);
返回值: CAImage::Format
参数:
类型 | 参数名 | 说明 |
const unsigned char * | data | 数据 |
unsigned long | dataLen | 数据长度 |
解释:检测格式
void premultipliedImageData();
返回值:void
参数:
解释:进行图像数据
void repremultipliedImageData();
返回值:void
参数:
解释:再进行图像数据
void updateGifImageWithIndex(unsigned int index);
返回值:void
参数:
类型 | 参数名 | 说明 |
unsigned int | index | index |
解释:通过index更新GIF图像
unsigned int getGifImageIndex();
返回值:unsigned int
参数:
解释:获取GIF图像的index
unsigned int getGifImageCounts();
返回值:unsigned int
参数:
解释:获取GIF图像的参数
static void reloadAllImages();
返回值:static void
参数:
解释:重新加载所有图像
CAImageView 属性说明
类型:CAImageViewScaleType
解释:图像缩放类型。set/get{}。
类型:CAVector<CAImage*>
解释:动画图像。set/get{}。
类型:float
解释:动画间隔的时间。set/get{}。
类型:unsigned int
解释:动画重复次数。set/get{}。
CAImageView 方法说明
返回值:static CAImageView*
参数:
解释:创建,默认Frame为(0,0,0,0)
static CAImageView* createWithImage(CAImage* image);
返回值:static CAImageView*
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
解释:创建,并指定其Image
static CAImageView* createWithFrame(const DRect& rect);
返回值:static CAImageView*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
解释:创建,并指定其Frame,默认Frame为(0,0,0,0)
static CAImageView* createWithCenter(const DRect& rect);
返回值:static CAImageView*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
解释:创建,并指定其Center,默认Center为(0,0,0,0)
返回值:virtual bool
参数:
解释:初始化
virtual bool initWithImage(CAImage* image);
返回值:virtual bool
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
解释:初始化图像
virtual void setImage(CAImage* image);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
解释:设置图像
virtual CAImage* getImage(void);
返回值:virtual CAImage*
参数:
解释:获取图像
virtual void setImageAsyncWithFile(const std::string& path);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
const std::string& | path | 路径 |
解释:异步设置图像文件
返回值:void
参数:
解释:开始动画
返回值:void
参数:
解释:结束动画
返回值:bool
参数:
解释:查看图像动画
类说明
CAScale9ImageView是CrossApp提供的一种九宫格拉伸图片的解决方案,我们先来了解一下什么是九宫格图片拉伸。
在App的设计过程中,为了适配不同的手机分辨率,图片大小需要拉伸或者压缩,这样就出现了可以任意调整大小的拉伸样式。
CAScale9ImageView 属性(点击方法名可查看方法介绍)
属性 | 说明 |
OriginalSize | 原始尺寸 |
CapInsets | 拉伸区域 |
InsetLeft | 左侧拉伸距离 |
InsetTop | 上侧拉伸距离 |
InsetRight | 右侧拉伸距离 |
InsetBottom | 下侧拉伸距离 |
CAScale9ImageView 方法(点击方法名可查看方法介绍)
方法 | 说明 |
create | 创建,默认Frame为(0,0,0,0) |
createWithImage | 创建,并指定其图像 |
createWithFrame | 创建,并指定其Frame,默认Frame为(0,0,0,0) |
createWithCenter | 创建,并指定其Center,默认Center为(0,0,0,0) |
init | 初始化 |
initWithImage | 初始化,并指定其图像 |
setCapInsets | 设置拉伸区域 |
setInsetLeft | 设置左侧拉伸区域 |
setInsetTop | 设置上侧拉伸区域 |
setInsetRight | 设置右侧拉伸区域 |
setInsetBottom | 设置下侧拉伸区域 |
setColor | 设置颜色 |
getColor | 获取颜色 |
setAlpha | 设置透明度 |
copy | 复制 |
setImage | 设置图像 |
getImage | 获取图像 |
draw | 重新绘制图像 |
void FirstViewController::viewDidLoad(){ //创建CAScale9ImageView* first9IV = CAScale9ImageView::createWithImage(CAImage::create("source_material/btn_rounded_normal.png"));//设置显示大小(拉伸后的大小)//设置非拉伸区域为(5,5,20,20) first9IV->setCapInsets(DRect(5,5,20,20));this->getView()->addSubview(first9IV);first9IV->setFrame(DRect(100, 100, 50, 140)); //添加渲染 //创建CAImage::create("source_material/btn_rounded_highlighted.png"));CAScale9ImageView* second9IV = CAScale9ImageView::createWithImage( //设置非拉伸区域与顶部的距离 second9IV->setInsetTop(3.0f);second9IV->setInsetLeft(3.0f);//设置非拉伸区域与底部的距离 second9IV->setInsetBottom(3.0f); //设置非拉伸区域与右边的距离 second9IV->setInsetRight(3.0f); //设置非拉伸区域与左边的距离CALabel* image9Label = CALabel::createWithFrame(DRect(400, 200, 150, 40));//设置显示区域(拉伸后的大小)second9IV->setFrame(DRect(400, 200, 150, 40));//添加渲染 this->getView()->addSubview(second9IV);this->getView()->addSubview(image9Label);//创建 image9Label->setText(UTF8("使用九图"));image9Label->setTextAlignment(CATextAlignmentCenter);image9Label->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);imageView->setImage(CAImage::create("source_material/btn_rounded_highlighted.png"));//不使用9宫格拉伸 设置大小与上同 CAImageView* imageView = CAImageView::createWithFrame(DRect(400, 300, 150, 40)); //设置显示图片 //添加渲染 this->getView()->addSubview(imageView); //创建imageLabel->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);CALabel* imageLabel = CALabel::createWithFrame(DRect(400, 300, 150, 40)); imageLabel->setText(UTF8("不用九图")); imageLabel->setTextAlignment(CATextAlignmentCenter); this->getView()->addSubview(imageLabel);}
CAScale9ImageView 属性说明
类型:DSize
解释:原始尺寸,get{}。
类型:DSize
解释:拉伸区域,get{}。
类型:float
解释:左侧拉伸距离。get{}。
类型:float
解释:上侧拉伸距离。get{}。
类型:float
解释:右侧拉伸距离。get{}。
类型:float
解释:下侧拉伸距离。get{}。
CAScale9ImageView 方法说明
static CAScale9ImageView* create();
返回值:static CAScale9ImageView*
参数:
解释:创建,默认Frame为(0,0,0,0)
static CAScale9ImageView* createWithImage(CAImage* image);
返回值:static CAScale9ImageView*
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
解释:创建,并指定其图像
static CAScale9ImageView* createWithFrame(const DRect& rect);
返回值:static CAScale9ImageView*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
解释:创建,并指定其Frame,默认Frame为(0,0,0,0)
static CAScale9ImageView* createWithCenter(const DRect& rect);
返回值:static CAScale9ImageView*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
解释:创建,并指定其Center,默认Center为(0,0,0,0)
返回值:virtual bool
参数:
解释:初始化
virtual bool initWithImage(CAImage* image);
返回值:virtual bool
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
解释:初始化,并指定其图像
virtual void setCapInsets(const DRect& capInsets);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
const DRect& | capInsets | 拉伸区域 |
解释:设置拉伸区域
virtual void setInsetLeft(float insetLeft);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
float | insetLeft | 左侧拉伸区域 |
解释:设置左侧拉伸区域
virtual void setInsetTop(float insetTop);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
float | insetTop | 上侧拉伸区域 |
解释:设置上侧拉伸区域
virtual void setInsetRight(float insetRight);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
float | insetRight | 右侧拉伸区域 |
解释:设置右侧拉伸区域
virtual void setInsetBottom(float insetBottom);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
float | insetBottom | 下侧拉伸区域 |
解释:设置下侧拉伸区域
virtual void setColor(const CAColor4B& color);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
const CAColor4B& | color | 颜色 |
解释:设置颜色
virtual const CAColor4B& getColor();
返回值:virtual const CAColor4B&
参数:
解释:获取颜色
virtual void setAlpha(float alpha);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
float | alpha | 透明度 |
解释:设置透明度
返回值:virtual CAView*
参数:
解释:复制
virtual void setImage(CAImage* image);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
解释:设置图像
返回值:using
参数:
解释:获取图像
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
void | void | 空 |
解释:重新绘制图像
类说明
在app开放中按钮是最常用的控件之一,大家对Button的需要也多种多样,CrossApp提供了CAButton,其使用思路主要是根据状态设置来完成的。
CAButton按钮类,主要为了接收用户的点击操作,从而触发特定的事件。
CAButton 属性 (点击属性名可查看属性介绍)
属性 | 说明 |
AllowsSelected | 是否可以选择 |
Selected | 是否被选择 |
TouchClick | 是否被触摸点击 |
CAButton 方法 (点击属性名可查看属性介绍)
方法 | 说明 |
create | 创建 |
createWithFrame | 创建,并指定其Frame |
createWithCenter | 创建,并指定其Center |
init | 初始化 |
setBackGroundViewForState | 设置Button的背景View |
getBackGroundViewForState | 获取Button的背景View |
setImageForState | 设置Button的图片(不支持九宫格) |
getImageForState | 获取Button的图片(不支持九宫格) |
setTitleForState | 设置Button标题的显示文本 |
getTitleForState | 获取Button标题的显示文本 |
setImageColorForState | 设置Button的图像颜色和状态 |
setTitleColorForState | 设置Button的标题颜色和状态 |
setTitleFontName | 设置Button文本的字体 |
setImageOffset | 设置图像偏移量 |
setImageSize | 设置图像大小 |
setTitleOffset | 设置标题偏移量 |
setTitleLabelSize | 设置标题标签大小 |
setTitleFontSize | 设置标题字体大小 |
setControlState | 设置状态 |
interruptTouchState | 中断接触状态 |
ccTouchBegan | 触摸事件开始时的回调函数 |
ccTouchMoved | 触摸事件中触点移动时的回调函数 |
ccTouchEnded | 触摸事件结束时的回调函数 |
ccTouchCancelled | 触摸非正常结束时的回调函数。(例如:电话或锁屏) |
addTarget | 添加回调事件 |
removeTarget | 删除回调事件 |
removeAllTargets | 删除所有回调事件 |
/* 创建一个Button 参数类型CAButtonType:CAButtonTypeCustom、CAButtonTypeSquareRect、CAButtonTypeRoundedRect CAButtonTypeCustom:默认看不见任何效果,需要自己定义效果 CAButtonTypeSquareRect:矩形边框类型 CAButtonTypeRoundedRect:圆角边框类型*/CAButton* firstButton = CAButton::create(CAButtonTypeRoundedRect); /* 设置Button的状态显示文本 CAControlStateNormal:缺省状态 CAControlStateHighlighted:高亮状态 CAControlStateDisabled:禁用状态 CAControlStateSelected:选中状态 CAControlStateAll:全部状态*/firstButton->setTitleForState(CAControlStateAll,"Button"); /* 设置Button的状态显示文本的颜色*/firstButton->setTitleColorForState(CAControlStateAll, ccc4(0, 0, 0, 255)); //设置Button文本的字体firstButton->setTitleFontName("宋体"); /* 设置Button的状态的背景View*///九宫格图//firstButton->setBackGroundViewForState(CAControlStateAll,CAScale9ImageView::createWithImage("HelloWorld.png")); //设置纯色View//firstButton->setBackGroundViewForState(CAControlStateAll, CAView::createWithColor(CAColor_red)); /* 设置Button的状态的图片(不支持九宫格)*///firstButton->setImageForState(CAControlStateAll,CAImage::create("HelloWorld.png")); /* 设置Button的状态*///firstButton->setControlState(CAControlStateHighlighted); /* 设置Frame(如果不设置Frame,默认是不显示的)*/firstButton->setFrame(DRect(100,100,200,80)); //添加到绘制this->getView()->addSubview(firstButton); /* 设置Button的监听 CAControlEventTouchDown:按下按钮响应 CAControlEventTouchDownRepeat:(未实现预留)双击时响应 CAControlEventTouchMoved:触点在Button范围内移动 CAControlEventTouchMovedOutSide:触点移动到Button范围外 CAControlEventTouchUpInSide:触点在Button范围内抬起 CAControlEventTouchUpSide:Button抬起 CAControlEventTouchValueChanged:此状态在CAButton无效,在CASlider中响应*/firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackDown), CAControlEventTouchDown); //此状态6.0版本未实现//firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackDownRepeat), CAControlEventTouchDownRepeat); firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackMoved), CAControlEventTouchMoved); firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackMovedOutSide), CAControlEventTouchMovedOutSide); firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackUpInSide), CAControlEventTouchUpInSide); firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackUpSide), CAControlEventTouchUpSide); //此状态6.0版本 Button无效//firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackValueChanged), CAControlEventTouchValueChanged); /* 中断监听*///firstButton->interruptTouchState();
监听的回调函数也很简单:有两个参数:CAControl* 和DPoint
CAControl是Button本身
DPoint是触点的坐标
void FirstViewController::callbackDown(CAControl* control, DPoint point){ CCLog("callbackDown()-->");} void FirstViewController::callbackDownRepeat(CAControl* control, DPoint point){ CCLog("callbackDownRepeat()-->");} void FirstViewController::callbackMoved(CAControl* control, DPoint point){ CCLog("callbackMoved()-->");} void FirstViewController::callbackMovedOutSide(CAControl* control, DPoint point){ CCLog("callbackMovedOutSide()-->");} void FirstViewController::callbackUpInSide(CAControl* control, DPoint point){ CCLog("callbackUpInSide()-->"); //((CAButton*)control)->setTitleForState(CAControlStateAll, "changed");} void FirstViewController::callbackUpSide(CAControl* control, DPoint point){ CCLog("callbackUpSide()-->");} void FirstViewController::callbackValueChanged(CAControl* control, DPoint point){ CCLog("callbackValueChanged()-->");}
CAButton 属性说明
类型:bool
解释:是否可以选择。is/set{}。
类型:bool
解释:是否被选择。is{}。
类型:bool
解释:是否被触摸点击。is{}。
CAButton 方法说明
static CAButton* create(const CAButtonType& buttonType);
返回值:static CAButton*
参数:
类型 | 参数名 | 说明 |
const CAButtonType& | buttonType | 按钮类型 |
解释:创建
typedef enum{ CAButtonTypeCustom = 0, 默认看不见任何效果,需要自己定义效果 CAButtonTypeSquareRect, 矩形边框类型 CAButtonTypeRoundedRect, 圆角边框类型} CAButtonType;
static CAButton* createWithFrame(const DRect& rect, const CAButtonType& buttonType);
返回值:static CAButton*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
const CAButtonType& | buttonType | 按钮类型 |
解释:创建,并指定其Frame
typedef enum{ CAButtonTypeCustom = 0, 默认看不见任何效果,需要自己定义效果 CAButtonTypeSquareRect, 矩形边框类型 CAButtonTypeRoundedRect, 圆角边框类型} CAButtonType;
static CAButton* createWithCenter(const DRect& rect, const CAButtonType& buttonType);
返回值:static CAButton*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
const CAButtonType& | buttonType | 按钮类型 |
解释:创建,并指定其Center
typedef enum{ CAButtonTypeCustom = 0, 默认看不见任何效果,需要自己定义效果 CAButtonTypeSquareRect, 矩形边框类型 CAButtonTypeRoundedRect, 圆角边框类型} CAButtonType;
返回值:virtual bool
参数:
解释:初始化
void setBackGroundViewForState(const CAControlState& controlState, CAView *var);
返回值:void
参数:
类型 | 参数名 | 说明 |
const CAControlState& | controlState | Button的状态 |
CAView | *var | 图像 |
解释:设置Button的状态的背景View
typedef enum{ CAControlStateNormal: 缺省状态 CAControlStateHighlighted: 高亮状态 CAControlStateDisabled: 禁用状态 CAControlStateSelected: 选中状态 CAControlStateAll: 全部状态}CAControlState;
CAView* getBackGroundViewForState(const CAControlState& controlState);
返回值:CAView*
参数:
类型 | 参数名 | 说明 |
const CAControlState& | controlState | Button的状态 |
解释:获取Button的状态的背景View
typedef enum{ CAControlStateNormal: 缺省状态 CAControlStateHighlighted: 高亮状态 CAControlStateDisabled: 禁用状态 CAControlStateSelected: 选中状态 CAControlStateAll: 全部状态}CAControlState;
返回值:void
参数:
类型 | 参数名 | 说明 |
const CAControlState& | controlState | Button的状态 |
CAImage* | var | 图像 |
解释:设置Button的状态和图像(不支持九宫格)
typedef enum{ CAControlStateNormal: 缺省状态 CAControlStateHighlighted: 高亮状态 CAControlStateDisabled: 禁用状态 CAControlStateSelected: 选中状态 CAControlStateAll: 全部状态}CAControlState;
返回值:CAImage*
参数:
类型 | 参数名 | 说明 |
const CAControlState& | controlState | Button的状态 |
解释:获取Button的状态和图像(不支持九宫格)
typedef enum{ CAControlStateNormal: 缺省状态 CAControlStateHighlighted: 高亮状态 CAControlStateDisabled: 禁用状态 CAControlStateSelected: 选中状态 CAControlStateAll: 全部状态}CAControlState;
返回值:void
参数:
类型 | 参数名 | 说明 |
const CAControlState& | controlState | Button的状态 |
const std::string& | var | 文本 |
解释:设置Button标题的显示文本
typedef enum{ CAControlStateNormal: 缺省状态 CAControlStateHighlighted: 高亮状态 CAControlStateDisabled: 禁用状态 CAControlStateSelected: 选中状态 CAControlStateAll: 全部状态}CAControlState;
返回值:const std::string&
参数:
类型 | 参数名 | 说明 |
const CAControlState& | controlState | Button的状态 |
解释:获取Button标题的显示文本
typedef enum{ CAControlStateNormal: 缺省状态 CAControlStateHighlighted: 高亮状态 CAControlStateDisabled: 禁用状态 CAControlStateSelected: 选中状态 CAControlStateAll: 全部状态}CAControlState;
返回值:void
参数:
类型 | 参数名 | 说明 |
const CAControlState& | controlState | Button的状态 |
const CAColor4B& | var | 颜色 |
解释:设置Button的图像颜色和状态
typedef enum{ CAControlStateNormal: 缺省状态 CAControlStateHighlighted: 高亮状态 CAControlStateDisabled: 禁用状态 CAControlStateSelected: 选中状态 CAControlStateAll: 全部状态}CAControlState;
返回值:void
参数:
类型 | 参数名 | 说明 |
const CAControlState& | controlState | Button的状态 |
const CAColor4B& | var | 颜色 |
解释:设置Button的标题颜色和状态
typedef enum{ CAControlStateNormal: 缺省状态 CAControlStateHighlighted: 高亮状态 CAControlStateDisabled: 禁用状态 CAControlStateSelected: 选中状态 CAControlStateAll: 全部状态}CAControlState;
返回值:void
参数:
类型 | 参数名 | 说明 |
const std::string& | var | 文本 |
解释:设置Button文本的字体
void setImageOffset(const DSize& offset);
返回值:void
参数:
类型 | 参数名 | 说明 |
const DSize& | offset | 偏移量 |
解释:设置图像偏移
void setImageSize(const DSize& size);
返回值:void
参数:
类型 | 参数名 | 说明 |
const DSize& | size | 大小 |
解释:设置图像大小
void setTitleOffset(const DSize& offset);
返回值:void
参数:
类型 | 参数名 | 说明 |
const DSize& | offset | 偏移量 |
解释:设置标题偏移量
void setTitleLabelSize(const DSize& size);
返回值:void
参数:
类型 | 参数名 | 说明 |
const DSize& | size | 大小 |
解释:设置标题标签大小
void setTitleFontSize(float fontSize);
返回值:void
参数:
类型 | 参数名 | 说明 |
float | fontSize | 字体大小 |
解释:设置标题字体大小
virtual void setControlState(const CAControlState& var);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
const CAControlState& | var | 状态 |
解释:设置状态
typedef enum{ CAControlStateNormal: 缺省状态 CAControlStateHighlighted: 高亮状态 CAControlStateDisabled: 禁用状态 CAControlStateSelected: 选中状态 CAControlStateAll: 全部状态}CAControlState;
返回值:void
参数:
解释:中断接触状态
virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual bool
参数:
类型 | 参数名 | 说明 |
CATouch | *pTouch | 触摸传递对象 |
CAEvent | *pEven | 此参数待定 |
解释:触摸事件开始时的回调函数
virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch | *pTouch | 触摸传递对象 |
CAEvent | *pEven | 此参数待定 |
解释:触摸事件中触点移动时的回调函数
virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch | *pTouch | 触摸传递对象 |
CAEvent | *pEven | 此参数待定 |
解释:触摸事件结束时的回调函数
virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch | *pTouch | 触摸传递对象 |
CAEvent | *pEven | 此参数待定 |
解释:触摸非正常结束时的回调函数。(例如:电话或锁屏)
返回值:using
参数:
解释:添加回调事件
using CAControl::removeTarget;
返回值:using
参数:
解释:删除回调事件
using CAControl::removeAllTargets;
返回值:using
参数:
解释:删除所有回调事件
类说明
CATextView是多行输入框,其主要用法和CATextField相似。
CATextView 属性 (点击属性名可查看属性介绍)
属性 | 说明 |
TextFontSize | TextView的字体大小 |
Text | TextView的文本内容 |
TextColor | TextView的文字颜色 |
Delegate | TextView绑定Delegate |
TextViewAlign | TextView的文本对齐方式 |
ReturnType | TextView的确认键类型 |
CATextView 方法 (点击方法名可查看方法介绍)
方法 | 说明 |
setBackGroundImage | 背景图像 |
resignFirstResponder | 隐藏键盘第一响应者状态 |
becomeFirstResponder | 弹出键盘第一响应者状态 |
createWithFrame | 创建一个CATextView,并指定其Frame |
createWithCenter | 创建一个CATextView,并指定其Center |
CATextView 属性介绍
类型:int
解释:设置TextView的字体大小。set/get{}。
类型:std::string
解释:设置TextView的文本内容。set/get{}。
类型:CAColor4B
解释:设置TextView的文字颜色。set/get{}。
类型:CATextViewDelegate*
解释:TextView绑定Delegate。set/get{}。
类型:TextViewAlign
解释:TextView的文本对齐方式。set/get{}。
类型:ReturnType
解释:TextView的确认键类型。set/get{}。
CATextView 方法介绍
void setBackGroundImage(CAImage* image);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
解释:设置输入框背景图片
virtual bool resignFirstResponder();
返回值:bool
参数:
解释:隐藏键盘第一响应者状态
virtual bool becomeFirstResponder();
返回值:bool
参数:
解释:弹出键盘第一响应者状态
static CATextView* createWithFrame(const DRect& rect);
返回值:CATextView*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
解释:创建,并指定其Frame
static CATextView* createWithCenter(const DRect& rect);
返回值:CATextView*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
解释:创建,并指定其Center
类说明
textView事件代理
CATextViewDelegate 方法(点击查看方法介绍)
方法 | 说明 |
textViewShouldBeginEditing | 开始编辑时触发 |
textViewShouldEndEditing | 结束编辑时触发 |
textViewShouldReturn | 返回时触发 |
keyBoardHeight | 键盘高度 |
textViewShouldChangeCharacters | 文字更改后触发 |
CATextViewDelegate 方法说明
virtual bool textViewShouldBeginEditing(CATextView * sender)
返回值:bool
参数:
类型 | 参数名 | 说明 |
CATextView* | sender | 当前textField |
解释:开始编辑时触发
virtual bool textViewShouldEndEditing(CATextView * sender)
返回值:bool
参数:
类型 | 参数名 | 说明 |
CATextView* | sender | 当前textField |
解释:结束编辑时触发(如果发件人不想从时间中分离,返回true)
virtual void textViewShouldReturn(CATextView *sender){}
返回值:void
参数:
类型 | 参数名 | 说明 |
CATextView* | sender | 当前textField |
解释:返回时触发
virtual void keyBoardHeight(CATextView *sender, int height){}
返回值:void
参数:
类型 | 参数名 | 说明 |
CATextView* | sender | 当前textField |
int | height | 高度 |
解释:键盘高度
virtual bool textViewShouldChangeCharacters(CATextView* sender, unsigned int location, unsigned int lenght, const std::string& changedText);
返回值:bool
参数:
类型 | 参数名 | 说明 |
CATextView* | sender | 当前textField |
unsigned int | location | 光标选中的字符串,即被替换的字符串 |
unsigned int | lenght | length为0时,表示删除 |
const std::string& | changedText | 更改文本时Text内容 |
解释:TextView文字更改后触发(返回true表示修改生效,返回false表示不做修改,textField的内容不变)
类说明
CASwitch控件,它是开关控件,可以实现类型开关。
CASwitch 属性 (点击属性名可查看属性介绍)
属性 | 说明 |
On | switch是否处于开状态 |
TouchClick | switch是否处于触摸点击事件 |
OnImage | 获取开状态的图像 |
OffImage | 获取关状态的图像 |
ThumbTintImage | 获取Switch的图像 |
CASwitch 方法 (点击方法名可查看方法介绍)
方法 | 说明 |
setOnImage | switch开状态时的图像 |
setOffImage | switch关状态时的图像 |
setThumbTintImage | switch的图像 |
setIsOn | 设置switch处于开状态 |
createWithFrame | 创建,并指定其Frame |
createWithCenter | 创建,并指定其Center |
addTarget | 添加回调事件 |
removeTarget | 删除回调事件 |
initWithFrame | 初始化,并指定其Frame |
initWithCenter | 初始化,并指定其Center |
CASwitch使用起来也非常简单,我们看一下实例代码:
首先在.h文件添加CASwitch的监听函数
//CASwitch状态回调 void callback(CAControl* control, CCPoint point);
然后在cpp文件中添加一下代码:
void FirstViewController::viewDidLoad(){ // Do any additional setup after loading the view from its nib. DSize size = this->getView()->getBounds().size; //创建 CASwitch* defaultSwitch = CASwitch::createWithCenter(DRect(size.width*0.5, size.height*0.2, size.width*0.3, 20)); //设置tag defaultSwitch->setTag(100); //设置监听函数 defaultSwitch->addTarget(this, CAControl_selector(FirstViewController::callback)); //添加绘制 this->getView()->addSubview(defaultSwitch); //创建 CASwitch* customSwitch = CASwitch::createWithCenter(DRect(size.width*0.5, size.height*0.4, size.width*0.3, 20)); //设置tag customSwitch->setTag(101); //设置开启时图片 customSwitch->setOnImage(CAImage::create("source_material/btn_rounded_highlighted.png")); //设置关闭时图片 customSwitch->setOffImage(CAImage::create("source_material/btn_rounded_normal.png")); //设置中间图片 customSwitch->setThumbTintImage(CAImage::create("source_material/btn_rounded3D_selected.png")); //设置监听函数 customSwitch->addTarget(this, CAControl_selector(FirstViewController::callback)); //添加绘制 this->getView()->addSubview(customSwitch);}
监听函数内容如下:
void FirstViewController::callback(CAControl* control, DPoint point){ CCLog("callback"); //强转类型 CASwitch* caSwtich = (CASwitch*)control; //获得tag CCLog("Tag:%d", caSwtich->getTag()); //获得状态 if (!caSwtich->isOn()) { CCLog("OFF"); } else { CCLog("ON"); }}
CASwitch 属性介绍
类型:bool
解释:查看是否处于开状态 。is{}。
类型:bool
解释:查看是否处于触摸点击事件。is{}。
类型:CAImage*
解释:获取开状态的图像。get{}。
类型:CAImage*
解释:获取关状态的图像。get{}。
类型:CAImage*
解释:获取Switch的图像。get{}。
CASwitch 方法介绍
void setOnImage(CAImage* onImage)
返回值:void
参数:
类型 | 参数名 | 说明 |
CAImage* | onImage | 开状态时的图像 |
解释:设置开状态时的图像
void setOffImage(CAImge* offImage)
返回值:void
参数:
类型 | 参数名 | 说明 |
CAImge* | offImage | 关状态时的图像 |
解释:设置关状态时的图像
void setThumTintImage(CAImage* thumbTintImage)
返回值:void
参数:
类型 | 参数名 | 说明 |
CAImage* | thumbTintImage | Switch的背景图像 |
解释:设置Switch的背景图像
void setIsOn(bool on, bool animated);
返回值:void
参数:
类型 | 参数名 | 说明 |
bool | on | 是否处于开状态 |
bool | animated | 是否添加动画 |
解释:设置switch处于开状态
static CASwitch* createWithFrame(const DRect& rect);
返回值:static CASwitch*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
解释:创建,并指定其Frame
static CASwitch* createWithCenter(const DRect& rect);
返回值:static CASwitch*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
解释:创建,并指定其Center
void addTarget(CAObject* target, SEL_CAControl selector);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAObject* | target | 当前对象 |
SEL_CAControl | selector | 函数回调器 |
解释:添加回调事件
void removeTarget(CAObject* target, SEL_CAControl selector);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAObject* | target | 当前对象 |
SEL_CAControl | selector | 函数回调器 |
解释:删除回调事件
bool initWithFrame(const DRect& rect);
返回值:bool
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
解释:初始化,并指定其Frame
bool initWithCenter(const DRect& rect);
返回值:
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
解释:初始化,并指定其Center
类说明
CAProgress是进度条控件,主要用于显示任务进度。
CAProgress 属性(点击查看方法介绍)
属性 | 说明 |
ProgressTintColor | 设置进度的颜色 |
ProgressTrackColor | 设置背景的颜色 |
ProgressTintImage | 设置进度的图片 |
ProgressTrackImage | 设置背景的图片 |
CAProgress 方法(点击查看方法介绍)
方法 | 说明 |
init | 初始化 |
create | 创建,默认Frame为(0,0,0,0) |
setColor | 设置进度条颜色 |
setProgress | 设置进度 |
getProgress | 获取进度 |
CAProgress是一个很简单的控件,其使用方式也比较便捷,我们只需要在相应的逻辑里对齐值进行增减便可以了,下面我们的实例中,就演示了在CrossApp的定时器中,每间隔一段时间增减CAProgress的值,当CAProgress值超过最大时设置为0的循环演示。
首先我们在FirstViewController.h添加一个定时器函数
//定时器函数 void updateProgressValue(float dt);
然后在FirstViewController.cpp中添加一下代码:
void FirstViewController::viewDidLoad(){ // Do any additional setup after loading the view from its nib. DSize size = this->getView()->getBounds().size; CAProgress* progress = CAProgress::create(); //设置显示区域 progress->setCenter(DRect(size.width * 0.5, 200, 300, 60)); //设置进度值(0--1)之间的float progress->setProgress(0.5f); //设置进度的颜色 progress->setProgressTintColor(CAColor_orange); //设置进度的图片 //progress->setProgressTintImage(CAImage::create("source_material/btn_rounded_highlighted.png")); //设置背景的颜色 progress->setProgresstrackColor(CAColor_yellow); //设置背景的图片 //progress->setProgressTrackImage(CAImage::create("source_material/btn_rounded3D_selected.png")); //设置tag值 progress->setTag(1); //添加到屏幕 this->getView()->addSubview(progress); //创建Label用于显示progress的值 CALabel* label = CALabel::createWithCenter(DRect(size.width * 0.5, 100, 200, 100)); //水平剧中 label->setTextAlignment(CATextAlignmentCenter); //显示progress的值 label->setText(crossapp_format_string("Progress:%.02f")); //设置tag值 label->setTag(2); //添加到屏幕 this->getView()->addSubview(label); //启动定时器,间隔0.05秒调用 CAScheduler::schedule(schedule_selector(FirstViewController::updateProgressValue), this, 0.05, false);} //定时器函数void FirstViewController::updateProgressValue(float dt){ //根据tag获得progress对象 CAProgress* progress = (CAProgress*) this->getView()->getSubviewByTag(1); //获得progress的值 float value = progress->getProgress(); if (value < 1.0f) { value = value + 0.01; } else { value = 0; } //赋值 progress->setProgress(value); //根据tag获得label CALabel* label = (CALabel*)this->getView()->getSubviewByTag(2); //显示value值 label->setText(crossapp_format_string("Progress:%.02f", value));}
CAProgress 属性说明
类型:CAColor4B
解释:设置进度的颜色。set/get{}。
类型:CAColor4B
解释:设置背景的颜色。set/get{}。
类型:CAImage*
解释:设置进度的图片。set/get{}。
类型:CAImage*
解释:设置背景的图片。set/get{}。
CAProgress 方法说明
返回值:bool
参数:
解释:初始化
返回值:static CAProgress*
参数:
解释:创建,默认Frame为(0,0,0,0)
virtual void setColor(const CAColor4B& color);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
const CAColor4B& | color | 颜色 |
解释:设置进度条颜色
void setProgress(float progress, bool animated = false);
返回值:void
参数:
类型 | 参数名 | 说明 |
float | progress | 进度值 |
bool | animated = false | 是否显示动画 |
解释:设置进度
返回值:float
参数:
解释:获取进度
类说明
CAAlertView是提示框控件,如果提示框内的按钮个数不超过三个,这个横向排列按钮,如果按钮个数超过三个则纵向排列。
CAAlertView 方法 (点击方法名可查看方法介绍)
方法 | 说明 |
addButton | 添加一个按钮到CAAlertView |
setAlertMessage | 提示框的提示信息 |
hide | 隐藏提示框 |
setMessageFontName | 提示信息的字体 |
show | 显示提示框 |
setTarget | 添加监听 |
setTitle | 提示框的标题 |
hideWithDisplayed | 隐藏提示框 |
create | 创建 |
createWithText | 创建,并指定其Text |
initWithText | 初始化,并指定化文本 |
addButton | 添加按钮到CAAlertView |
CAAlertView是提示框控件,如果提示框内的按钮个数不超过三个,这个横向排列按钮,如果按钮个数超过三个则纵向排列。
我们来看一下实例代码:
首先在.h文件中声明一下函数:
//按钮的回调函数 void respondTouch(CAControl* btn, DPoint point); //提示框的回调函数 void alertViewCallback(int btnIndex);
然后在.cpp文件中添加以下代码:
void FirstViewController::viewDidLoad(){ //获取屏幕宽度 DSize size = this->getView()->getBounds().size; //设置背景颜色为黑色 this->getView()->setColor(CAColor_black); //创建Button CAButton* imageBtn = CAButton::createWithCenter(DRect(size.width*0.5, 500, 200, 50), CAButtonTypeSquareRect); //设置Buttion文本 imageBtn->setTitleForState(CAControlStateAll, "Click"); //设置tag值 imageBtn->setTag(1); //设置按钮监听 imageBtn->addTarget(this, CAControl_selector(FirstViewController::respondTouch), CAControlEventTouchUpInSide); //添加到屏幕 this->getView()->addSubview(imageBtn);} void FirstViewController::respondTouch(CAControl* btn, DPoint point){ //获得屏幕大小 DSize size = this->getView()->getBounds().size; //创建CAAlerView 并设置显示文本和 green按钮和yellow按钮 CAAlertView* alertView = CAAlertView::createWithText("ButtonImage", UTF8("点击替换按钮颜色"), "green", "yellow", NULL); //获得0-1之间的随机数 float randNum = CCRANDOM_0_1(); if (randNum > 0.333f) { //添加按钮设置文本为orange alertView->addButton("orange"); } if (randNum> 0.666f) { //添加按钮并设置文本为blue alertView->addButton("blue"); } //显示弹窗(如果不调用,弹窗不显示) alertView->show(); //设置弹窗按钮的回调 alertView->setTarget(this, CAAlertView_selector(FirstViewController::alertViewCallback));} void FirstViewController::alertViewCallback(int btnIndex){ //根据tag获得imageBtn对象 CAButton* imageBtn =(CAButton*) this->getView()->getSubviewByTag(1); //根据CAAlertView上按钮的index判断响应的逻辑 if (btnIndex == 0) { //设置imageBtn背景色为green imageBtn->setBackGroundViewForState(CAControlStateNormal, CAView::createWithColor(CAColor_green)); } else if (btnIndex == 1) { //设置imageBtn背景色为yellow imageBtn->setBackGroundViewForState(CAControlStateNormal, CAView::createWithColor(CAColor_yellow)); } else if (btnIndex == 2) { //设置imageBtn背景色为orange imageBtn->setBackGroundViewForState(CAControlStateNormal, CAView::createWithColor(CAColor_orange)); } else { //设置imageBtn背景色为blue imageBtn->setBackGroundViewForState(CAControlStateNormal, CAView::createWithColor(CAColor_blue)); }}
void setMessageFontName(std::string &var);
返回值:void
参数:
类型 | 参数名 | 说明 |
std::string | var | 信息文字 |
解释:设置提示信息的字体
void setTitle(std::string var, CAColor4B col);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAColor4B | col | 标题颜色 |
std::string | var | 信息文字 |
解释:设置提示框的标题
void setAlertMessage(std::string var, CAColor4B col);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAColor4B | col | 提示信息颜色 |
std::string | var | 提示信息字体 |
解释:设置提示框的提示信息
void addButton(const std::string& btnText, CAColor4B col = ccc4(3, 100, 255, 255), CAImage* pNormalImage = NULL,AImage* pHighlightedImage = NULL);
返回值:void
参数:
类型 | 参数名 | 说明 |
std::string& | btnText | 按钮文字 |
CAColor4B | col | 按钮颜色 |
CAImage* | pNormalImage | 按钮图像 |
AImage* | pHighlightedImage | 高亮度图像 |
解释:添加一个按钮到CAAlertView
void setTarget(CAObject* target, SEL_CAAlertBtnEvent selector);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAObject* | target | 监听目标 |
SEL_CAAlertBtnEvent | selector | 监听选择器 |
解释:设置 CAAlertView 的监听
返回值:void
参数:
解释:设置显示提示框
返回值:void
参数:
解释:设置隐藏提示框void
static bool hideWithDisplayed();
返回值:static bool
参数:
解释:隐藏提示框
返回值:static CAAlertView*
参数:
解释:创建
static CAAlertView* createWithText(const char* pszTitle, const char* pszAlertMsg, const char* pszBtnText, ...);
返回值:CAAlertView*
参数:
类型 | 参数名 | 说明 |
const char* | pszTitle | 标题 |
const char* | pszAlertMsg | 提示框内容 |
const char* | pszBtnText | 按钮文本 |
解释:创建,并指定其Text
bool initWithText(const char* szTitle, const char* szAlertMsg, const char* pszBtnText, ...);
返回值:bool
参数:
类型 | 参数名 | 说明 |
const char* | szTitle | 标题 |
const char* | szAlertMsg | 提示框内容 |
const char* | pszBtnText | 按钮文本 |
解释:初始化,并指定化文本
void addButton(CAButton* pBtn);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAButton* | pBtn | 按钮 |
解释:添加按钮到CAAlertView
类说明
CAScrollView即滚动视图,负责CrossApp的所有滚动操作。可支持裁剪其矩形区域以外的渲染,并让其子数图支持滑动操作与缩放功能。我们在使用CAScrollView时,有时需要对CAScrollView的一个事件进行监听,那么我要就要去实现CAScrollViewDelegate,并重写其函数。
CAScrollView 属性 (点击属性名可查看属性介绍)
属性 | 说明 |
TouchEnabledAtSubviews | 触摸事件启用在子视图 |
ViewSize | 设置容器的内部大小 |
Bounces | 设置是否滚动回弹 |
BounceHorizontal | 水平方向回弹 |
BounceVertical | 竖直方向回弹 |
ShowsHorizontalScrollIndicator | 设置是否显示水平滚动条 |
ShowsVerticalScrollIndicator | 设置是否显示竖直滚动条 |
MaximumZoomScale | 最大缩放比例,默认值为1 |
MinimumZoomScale | 最小缩放比例,默认值为1 |
ZoomScale | 滑动层缩放比例, 默认值为1 |
ScrollViewDelegate | 滚动视图代表 |
ShowsScrollIndicators | 显示滚动指示器 |
HeaderRefreshView | 头部刷新试图 |
FooterRefreshView | 尾部刷新试图 |
Tracking | 是否正在滚动 |
Decelerating | 是否在惯性运动中 |
MultitouchGesture | 多点触控手势 |
Zooming | 是否正在进行缩放控制 |
CAScrollView 方法 (点击方法名可查看方法介绍)
方法 | 说明 |
setContentOffset | 设置相对于视图顶部的偏移量 |
setBackGroundImage | 设置背景图片 |
setBackGroundColor | 设置背景颜色 |
addSubview | 添加子视图 |
insertSubview | 插入子视图 |
removeAllSubviews | 删除所有子视图 |
removeSubview | 删除子视图 |
removeSubviewByTag | 通过标签删除视图 |
getSubviewByTag | 通过标签获取视图 |
setContentOffset | 获得内容偏移 |
setZoomScale | 设置缩放比例 |
isReachBoundaryLeft | 是否到达左边界 |
isReachBoundaryRight | 是否到达右边界 |
isReachBoundaryUp | 是否到达上边界 |
isReachBoundaryDown | 是否到达下边界 |
endHeaderRefresh | 端头刷新 |
endFooterRefresh | 端尾刷新 |
getContentOffset | 获取相对于视图顶部的偏移量 |
ccTouchBegan | 触摸事件开始时的回调函数 |
ccTouchMoved | 触摸事件中触点移动时的回调函数 |
ccTouchEnded | 触摸事件结束时的回调函数 |
ccTouchCancelled | 触摸非正常结束时的回调函数。(例如:电话或锁屏) |
mouseScrollWheel | 鼠标滚轮 |
createWithFrame | 创建,并指定其Frame,默认Frame为(0,0,0,0) |
createWithCenter | 创建,并设置其Center,默认Center为(0,0,0,0) |
init | 初始化 |
startPullToHeaderRefreshView | 开始顶端刷新视图 |
switchPCMode | 开关PC模式 |
CAScrollView即滚动视图,负责CrossApp的所有滚动操作。可支持裁剪其矩形区域以外的渲染,并让其子数图支持滑动操作与缩放功能。我们在使用CAScrollView时,有时需要对CAScrollView的一个事件进行监听,那么我要就要去实现CAScrollViewDelegate,并重写其函数。
CAScrollView相对于前面的控件来说,使用比较复杂。但我们清楚了每个函数的意义之后,便可以很清晰的构建出我们所需要的CAScrollView。这里我们就举一个展示文本的一个CAScrollView。
首先,我们希望能够监听到CAScrollView的变化,那么我则需要去实现CAScrollViewDelegate,我们修该FirstViewController.h,添加要实现的函数如下:
#include <iostream>#include "CrossApp.h" USING_NS_CC; class FirstViewController: public CAViewController ,public CAScrollViewDelegate{ public: FirstViewController(); virtual ~FirstViewController(); //触摸滚动时调用 virtual void scrollViewDidMoved(CAScrollView* view); //触摸滚动停止时调用 virtual void scrollViewStopMoved(CAScrollView* view); //滚动时调用(包括惯性滚动时) virtual void scrollViewDidScroll(CAScrollView* view); //开始滚动时调用 virtual void scrollViewWillBeginDragging(CAScrollView* view); //结束滚动时调用 virtual void scrollViewDidEndDragging(CAScrollView* view); //缩放时调用 virtual void scrollViewDidZoom(CAScrollView* view); //头部开始刷新时调用 virtual void scrollViewHeaderBeginRefreshing(CAScrollView* view); //尾巴开始刷新时调用 virtual void scrollViewFooterBeginRefreshing(CAScrollView* view); protected: void viewDidLoad(); void viewDidUnload(); }
void FirstViewController::viewDidLoad(){ // 获得屏幕大小 DSize size = this->getView()->getBounds().size; //设置背景颜色为黑色 this->getView()->setColor(CAColor_black); //创建scrollView CAScrollView* scrollView = CAScrollView::createWithCenter(DRect(size.width*0.5,size.height*0.5 - 270,size.width * 0.5, 100)); //CACScrollView容器的大小 scrollView->setViewSize(DSize(size.width, 200)); //设置背景颜色 scrollView->setBackGroundColor(CAColor_orange); //设置背景图片 //scrollView->setBackGroundImage(CAImage::create("r/HelloWorld.png")); //水平方向是否回弹 scrollView->setBounceHorizontal(false); //竖直方向是否回弹 scrollView->setBounceVertical(true); //是否滚动回弹,控制竖直和水平方向,默认为ture //scrollView->setBounces(false); scrollView->setScrollViewDelegate(this); this->getView()->addSubview(scrollView); //创建label CALabel* label = CALabel::createWithFrame(DRect(0, 0, size.width * 0.5, 200)); //设置水平剧中 label->setTextAlignment(CATextAlignmentCenter); //设置竖直剧中 label->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter); //设置字体大小 label->setFontSize(18 * CROSSAPP_ADPTATION_RATIO); //设置文本内容 label->setText(UTF8("CrossApp具有强大的跨平台性能,并且具有离线能力,可以进行离线操作。对开发者和用户入门要求较低,且功能强大。综合效率高,开发者可以根据实际情况,考虑各方面因素来选择合适的开发解决方案。")); //设置文本颜色 label->setColor(CAColor_blue); //将label添加到scrollView scrollView->addSubview(label);} //触摸滚动时调用void FirstViewController::scrollViewDidMoved(CAScrollView* view){ CCLog("DidMoved-->");} //触摸滚动停止时调用void FirstViewController::scrollViewStopMoved(CAScrollView* view){ CCLog("StopMoved-->");} //滚动时调用(包括惯性滚动时)void FirstViewController::scrollViewDidScroll(CAScrollView* view){ CCLog("DidMScroll-->");} //开始滚动时调用void FirstViewController::scrollViewWillBeginDragging(CAScrollView* view){ CCLog("BeginDragging-->");} //结束滚动时调用void FirstViewController::scrollViewDidEndDragging(CAScrollView* view){ CCLog("DidEndDragging-->");} //缩放时调用void FirstViewController::scrollViewDidZoom(CAScrollView* view){ CCLog("DidZoom-->");} //头部开始刷新时调用void FirstViewController::scrollViewHeaderBeginRefreshing(CAScrollView* view){ CCLog("HeaderBeginRefreshing-->");} //尾巴开始刷新时调用void FirstViewController::scrollViewFooterBeginRefreshing(CAScrollView* view){ CCLog("FooterBeginRefeshing-->");}
CAScrollView 属性介绍
类型:bool
解释:触摸事件启用在子视图。is/set{}。
类型:DSize
解释:设置容器的内部大小。set/get{}。
类型:bool
解释:设置是否滚动回弹。is/set{}。
类型:bool
解释:水平方向回弹。is/set{}。
类型:bool
解释:竖直方向回弹。is/set{}。
ShowsHorizontalScrollIndicator
类型:bool
解释:设置是否显示水平滚动条。is/set{}。
类型:bool
解释:设置是否显示竖直滚动条。is/set{}。
类型:float
解释:最大缩放比例,默认值为1。set/get{}。
类型:float
解释:最小缩放比例,默认值为1。set/get{}。
类型:float
解释: 滑动层缩放比例, 默认值为1。get{}。
类型:CAScrollViewDelegate*
解释:滚动视图代表。set/get{}。
类型:bool
解释:显示滚动指示器。is/set{}。
类型:CAPullToRefreshView*
解释:头部刷新试图。set/get{}。
类型:CAPullToRefreshView*
解释:尾部刷新试图。set/get{}。
类型:bool
解释:查看 ScrollView 是否正在滚动。is{}。
类型:bool
解释:查看 ScrollView 是否正在进行缩放控制。is{}。
类型:bool
解释:查看 ScrollView 是否在惯性运动中。is{}。
类型:MultitouchGesture
解释:多点触控手势,set/get{}。
CAScrollView 方法介绍
void setContentOffset(const DPoint& offset, bool animated);
返回值:void
参数:
类型 | 参数名 | 说明 |
const DPoint& | offset | 偏移量 |
bool | animated | 是否播放动画 |
解释:设置内容偏移量
void setBackGroundImage(CAImage* image);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 背景图像 |
解释:设置背景图像
void setBackGroundColor(const CAColor4B &color);
返回值:void
参数:
类型 | 参数名 | 说明 |
const CAColor4B& | color | 背景颜色 |
解释:设置背景颜色
virtual void addSubview(CAView* subview);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAView* | subview | 子视图 |
解释:添加子视图
virtual void insertSubview(CAView* subview, int z);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAView* | subview | 子视图 |
int | z | 数量 |
解释:插入子视图
返回值:void
参数:
解释:删除所有子视图
void removeSubview(CAView* subview);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAView* | subview | 子视图 |
解释:删除子视图
CAView* getSubviewByTag(int aTag);
返回值:CAView*
参数:
类型 | 参数名 | 说明 |
int | aTag | 子视图标签 |
解释:通过标签获取子视图
void removeSubviewByTag(int tag);
返回值:void
参数:
类型 | 参数名 | 说明 |
int | tag | 子视图标签 |
解释:通过标签删除子视图
CAView* getSubviewByTag(int aTag);
返回值:CAView*
参数:
类型 | 参数名 | 说明 |
int | aTag | 子视图标签 |
解释:过标签获取子视图
返回值:DPoint
参数:
解释:获得内容偏移量
void setZoomScale(float zoom);
返回值:void
参数:
类型 | 参数名 | 说明 |
float | zoom | 缩放比例 |
解释:设置缩放比例
virtual bool isReachBoundaryLeft();
返回值:bool
参数:
解释:是否到达左边界
virtual bool isReachBoundaryRight();
返回值:bool
参数:
解释:是否到达右边界
virtual bool isReachBoundaryUp();
返回值:bool
参数:
解释:是否到达上边界
virtual bool isReachBoundaryDown();
返回值:bool
参数:
解释:是否到达下边界
返回值:void
参数:
解释:端头刷新
返回值:void
参数:
解释:端尾刷新
返回值:DPoint
参数:
解释:获取相对于视图顶部的偏移量
virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual bool
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEven | 此参数待定 |
解释:触摸事件开始时的回调函数
virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEven | 此参数待定 |
解释:触摸事件中触点移动时的回调函数
virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEven | 此参数待定 |
解释:触摸事件结束时的回调函数
virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEven | 此参数待定 |
解释:触摸非正常结束时的回调函数。(例如:电话或锁屏)
virtual void mouseScrollWheel(CATouch* pTouch, float off_x, float off_y, CAEvent* pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸 |
float | off_x | x坐标偏移量 |
float | off_y | y坐标偏移量 |
CAEvent* | pEvent | 事件 |
解释:鼠标滚轮
static CAScrollView* createWithFrame(const DRect& rect);
返回值:static CAScrollView*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
解释:创建,并指定其Frame,默认Frame为(0,0,0,0)
static CAScrollView* createWithCenter(const DRect& rect);
返回值:static CAScrollView*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
解释:创建,并设置其Center,默认Center为(0,0,0,0)
返回值:virtual bool
参数:
解释:初始化
void startPullToHeaderRefreshView();
返回值:void
参数:
解释:开始顶端刷新视图
virtual void switchPCMode(bool var);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
bool | var | 开关 |
解释:开关PC模式
类说明
CAScrollView的代理类,定义了四个响应scrollView相关操作的接口,以及声明了一个用于移除代理的接口。
CAScrollViewDelegate 方法(点击查看方法介绍)
方法 | 说明 |
scrollViewDidMoved | 触摸滚动时调用 |
scrollViewStopMoved | 停止移动时调用 |
scrollViewWillBeginDragging | 开始滚动时调用 |
scrollViewDragging | 拖动时调用 |
scrollViewDidEndDragging | 结束滚动时调用 |
scrollViewDidZoom | 缩放时调用 |
scrollViewHeaderBeginRefreshing | 头部开始刷新时调用 |
scrollViewFooterBeginRefreshing | 尾部开始刷新时调用 |
scrollViewTouchUpWithoutMoved | 触摸选中时调用 |
scrollViewDidScroll | 滚动时调用,包括惯性 |
CAScrollViewDelegate 方法说明
virtual void scrollViewDidMoved(CAScrollView* view){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
解释:触摸滚动时调用
virtual void scrollViewStopMoved(CAScrollView* view){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
解释:停止移动时调用
virtual void scrollViewWillBeginDragging(CAScrollView* view){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
解释:开始滚动时调用
virtual void scrollViewDragging(CAScrollView* view){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
解释:拖动时调用
virtual void scrollViewDidEndDragging(CAScrollView* view){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
解释:结束滚动时调用
virtual void scrollViewDidZoom(CAScrollView* view){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
解释:缩放时调用
virtual void scrollViewHeaderBeginRefreshing(CAScrollView* view){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
解释:头部开始刷新时调用
virtual void scrollViewFooterBeginRefreshing(CAScrollView* view){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
解释:尾部开始刷新时调用
virtual void scrollViewTouchUpWithoutMoved(CAScrollView* view, const DPoint& point){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
const DPoint& | point | 触摸点 |
解释:触摸选中时调用
virtual void scrollViewDidScroll(CAScrollView* view){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
解释:滚动时调用,包括惯性
类说明
CAListView和CAScrollView非常相似,只是其内部成列表状,支持水平方案和竖直方向的滑动。常用于一些列表信息的展示,如:通讯录、新闻列表、目录索引等。
CAListView使用起来相对比较复杂,一般我们要同时使用CAListView、CAListViewCell、CAListViewDelegate、CAListViewDataSource来同时构建我们的列表界面,这么我们先分别了解一下它们的作用:
CAListView就是列表控件,是显示列表的载体,它是由多个CAListViewCell列组成的。
CAListViewCell是组成列表的每一个单元,下面我们都简称为cell
CAListViewDelegate是CAListView的交互代理,主要代理选择cell和取消选择cell的事件
CAListViewDataSource是CAListView的数据代理,主要代理cell的数量、cell的高度和将cell添加到CAListView显示。
CAListView 属性(点击查看方法介绍)
属性 | 说明 |
ListViewOrientation | listView的滚动方向 |
ListViewDataSource | 添加数据代理 |
ListViewDelegate | 添加交互代理 |
ListHeaderView | 添加头部视图 |
ListFooterView | 添加尾部视图 |
SeparatorColor | 设置cell分割线的颜色 |
ListHeaderHeight | 设置头部视图的高度 |
ListFooterHeight | 设置尾部视图的高度 |
SeparatorViewHeight | 设置cell分割线的高度 |
AllowsHeadAndFootHover | 允许头和尾的悬停 |
AllowsSelection | 是否开启cell选择 |
AllowsMultipleSelection | 是否可以多选cell |
CAListView 方法(点击查看方法介绍)
方法 | 说明 |
setAllowsSelection | 是否开启cell选择 |
setAllowsMultipleSelection | 是否可以多选cell |
setSelectAtIndex | 根据索引设置cell为选中状态 |
setUnSelectAtIndex | 根据索引设置cell为未选中状态 |
setShowsScrollIndicators | 设置显示滚动条 |
dequeueReusableCellWithIdentifier | 可以重用单元标示符 |
cellForRowAtIndex | 通过cell索引获取Index |
switchPCMode | 开关PC模式 |
ccTouchBegan | 触摸事件开始时的回调函数 |
ccTouchMoved | 触摸事件中触点移动时的回调函数 |
ccTouchEnded | 触摸事件结束时的回调函数 |
ccTouchCancelled | 触摸非正常结束时的回调函数。(例如:电话或锁屏) |
mouseMoved | 鼠标移动 |
mouseMovedOutSide | 鼠标移出 |
CAListViewDelegate 方法(点击查看方法介绍)
方法 | 说明 |
listViewDidSelectCellAtIndex | 选中cell时调用 |
listViewDidDeselectCellAtIndex | 取消选择cell时调用 |
CAListViewDataSource 方法(点击查看方法介绍)
方法 | 说明 |
numberOfIndex | cell的总数量 |
listViewHeightForIndex | cell的高度 |
listViewCellAtIndex | 添加生成cell |
listViewWillDisplayCellAtIndex | 回调当前将要显示的CAListView |
CAListViewCell 属性(点击查看方法介绍)
属性 | 说明 |
ContentView | 获得内容视图 |
BackgroundView | 设置背景视图 |
ReuseIdentifier | 设置重用标识符 |
Index | 获得重用标识符 |
ControlStateEffect | 设置控制状态效应 |
AllowsSelected | CAListViewCell是否可以选择 |
CAListViewCell 方法(点击查看方法介绍)
方法 | 说明 |
create | 创建,默认Frame为(0,0,0,0) |
initWithReuseIdentifier | 重用标识符初始化 |
了解CAListView的主要函数,我们来实现一个CAListView的列表视图。
第一步:创建我们自己的cell
我们需要创建一个先的class,我这里创建一个MyCell,并继承CAListViewCell。用于每个列表单元的布局显示,下面看一下MyCell.h和MyCell.cpp的代码实现。
#pragma once#include "CrossApp.h"class MyCell : public CAListViewCell{public: MyCell(); ~MyCell(); //创建MyCell static MyCell* create(const std::string& identifier, const DRect& _rect = DRectZero); public: //初始化Cell void initWithCell(); //设置回调 void cellBtnCallback(CAControl* btn, DPoint point); protected: //正常状态 virtual void normalListViewCell(); //高亮状态 virtual void highlightedListViewCell(); //选中状态 virtual void selectedListViewCell(); //禁用状态 virtual void disabledListViewCell(); };
MyCell.cpp代码如下:
#include "MyCell.h" MyCell::MyCell(){} MyCell::~MyCell(){} MyCell* MyCell::create(const std::string& identifier, const DRect& _rect){ MyCell* listViewCell = new MyCell(); //设置重用标示符 if (listViewCell&&listViewCell->initWithReuseIdentifier(identifier)) { //设置Frame范围 listViewCell->setFrame(_rect); //设置为内存自动释放 listViewCell->autorelease(); return listViewCell; } //如果创建失败安全释放内存 CC_SAFE_DELETE(listViewCell); return NULL;} void MyCell::initWithCell(){ //获得当前的宽度 DSize _size = this->getFrame().size; //创建CALabel CALabel* test = CALabel::createWithCenter(DRect(_size.width*0.5, _size.height*0.5, _size.width*0.8, _size.height)); test->setTextAlignment(CATextAlignmentCenter); test->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter); test->setFontSize(_px(40)); test->setTag(100); this->addSubview(test);} void MyCell::cellBtnCallback(CAControl* btn, DPoint point){ CCLog("MyCell::cellBtnCallback-->");} void MyCell::normalListViewCell(){ this->setBackgroundView(CAView::createWithColor(CAColor_white));} void MyCell::highlightedListViewCell(){ this->setBackgroundView(CAView::createWithColor(CAColor_yellow));} void MyCell::selectedListViewCell(){ this->setBackgroundView(CAView::createWithColor(CAColor_orange));} void MyCell::disabledListViewCell(){ this->setBackgroundView(CAView::createWithColor(CAColor_black));}
CAListView 属性介绍
类型:CAListViewOrientation*
解释:listView的滚动方向。set/get{}。
类型:CAListViewDataSource*
解释:添加数据代理。set/get{}。
类型:CAListViewDelegate*
解释:添加交互代理。set/get{}。
类型:CAView*
解释:添加头部视图。set/get{}。
类型:CAView*
解释:添加尾部视图。set/get{}。
类型:CAColor4B
解释:设置cell分割线的颜色。set/get{}。
类型:unsigned int
解释:设置头部视图的高度。set/get{}。
类型:unsigned int
解释:设置尾部视图的高度。set/get{}。
类型:unsigned int
解释:设置fell分割线的高度。set/get{}。
类型:bool
解释:允许头和尾的悬停。set/get{}。
类型:bool
解释:是否开启cell选择。is{}。
类型:bool
解释:是否可以多选cell。is{}。
CAListView 方法介绍
virtual void setAllowsSelection(bool var);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
bool | var |
解释:是否可以多选cell
void setSelectAtIndex(unsigned int index);
返回值:void
参数:
类型 | 参数名 | 说明 |
unsigned int | index | cell的索引值 |
解释:根据索引设置cell为选中状态
void setUnSelectAtIndex(unsigned int index);
返回值:void
参数:
类型 | 参数名 | 说明 |
unsigned int | index | cell的索引值 |
解释:根据索引设置cell为未选中状态
virtual void setShowsScrollIndicators(bool var);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
bool | var | 是否显示滚动条 |
解释:设置显示滚动条
CAListViewCell* dequeueReusableCellWithIdentifier(const char* reuseIdentifier);
返回值:CAListViewCell*
参数:
类型 | 参数名 | 说明 |
const char* | reuseIdentifier | 标识符 |
解释:可以重用单元标示符
CAListViewCell* cellForRowAtIndex(unsigned int index);
返回值:CAListViewCell*
参数:
类型 | 参数名 | 说明 |
unsigned int | index | cell的索引值 |
解释:通过cell索引获取Index
virtual void switchPCMode(bool var)
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
bool | var | 开关 |
解释:开关PC模式
virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual bool
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEvent | 此参数待定 |
解释:触摸事件开始时的回调函数
virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEvent | 此参数待定 |
解释:触摸事件中触点移动时的回调函数
virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEvent | 此参数待定 |
解释:触摸事件结束时的回调函数
virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEvent | 此参数待定 |
解释:触摸非正常结束时的回调函数。(例如:电话或锁屏)
virtual void mouseMoved(CATouch* pTouch, CAEvent* pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 传递对象 |
CAEvent* | pEvent | 此参数待定 |
解释:鼠标移动
virtual void mouseMovedOutSide(CATouch* pTouch, CAEvent* pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 传递对象 |
CAEvent* | pEvent | 此参数待定 |
解释:鼠标移出
CAListViewDelegate 方法介绍
virtual void listViewDidSelectCellAtIndex(CAListView *listView, unsigned int index)
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CAListView | listView | 当前的listView |
unsigned int | index | cell的索引值 |
解释:选中cell时调用
virtual void listViewDidDeselectCellAtIndex(CAListView *listView, unsigned int index)
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CAListView | listView | 当前的listView |
unsigned int | index | cell的索引值 |
解释:取消选择cell时调用
CAListViewDataSource方法介绍
virtual unsigned int numberOfIndex(CAListView *listView)
返回值:virtual unsigned int
参数:
类型 | 参数名 | 说明 |
CAListView | listView | 当前的listView |
解释:cell的总数量
virtual unsigned int listViewHeightForIndex(CAListView *listView, unsigned int index)
返回值:virtual unsigned int
参数:
类型 | 参数名 | 说明 |
CAListView | listView | 当前的listView |
unsigned int | index | cell的索引值 |
解释:cell的高度
virtual CAListViewCell* listViewCellAtIndex(CAListView *listView, const DSize& cellSize, unsigned int index)
返回值:virtual CAListViewCell*
参数:
类型 | 参数名 | 说明 |
CAListView | listView | 当前的listView |
DSize | cellSize | cell的size |
unsigned int | index | cell的索引值 |
解释:添加生成cell
virtual void listViewWillDisplayCellAtIndex(CAListView* table, CAListViewCell* cell, unsigned int index) ;
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CAListView | listView | 当前的listView |
CAListViewCell | cell | 显示添加的cell |
unsigned int | index | cell的索引值 |
解释:回调当前将要显示的CAListView
CAListViewCell 属性介绍
类型:CAView*
解释:获得内容视图。get{}。
类型:CAView*
解释:设置背景视图。set/get{}。
类型:std::string
解释:设置重用标识符。set/get{}。
类型:unsigned int
解释:获得重用标识符。set/get{}。
类型:bool
解释:设置控制状态效应。is/set{}。
类型:bool
解释:CAListViewCell是否可以选择。is/set{}。
CAListViewCell 方法介绍
static CAListViewCell* create(const std::string& reuseIdentifier);
返回值:static CAListViewCell*
参数:
类型 | 参数名 | 说明 |
std::string& | reuseIdentifier | 重用标识符 |
解释:创建,默认Frame为(0,0,0,0)
virtual bool initWithReuseIdentifier(const std::string& reuseIdentifier);
返回值:virtual bool
参数:
类型 | 参数名 | 说明 |
std::string& | reuseIdentifier | 重用标识符 |
解释:创建一个空CAListViewCell,默认Frame为(0,0,0,0)
类说明
CAListView的数据代理
CAListView 方法(点击查看方法介绍)
方法 | 说明 |
numberOfIndex | cell的数量 |
listViewHeightForIndex | cell的高度 |
listViewCellAtIndex | 生成cell |
listViewWillDisplayCellAtIndex | 回调当前将要显示的list |
CAListView 方法说明
virtual unsigned int numberOfIndex(CAListView *listView) = 0;
返回值:unsigned int
参数:
类型 | 参数名 | 说明 |
CAListView* | listView | 当前的listView |
解释:cell的数量
virtual unsigned int listViewHeightForIndex(CAListView *listView, unsigned int index) = 0;
返回值:unsigned int
参数:
类型 | 参数名 | 说明 |
CAListView* | listView | 当前的listView |
unsigned int | index | cell的索引值 |
解释:cell的高度
virtual CAListViewCell* listViewCellAtIndex(CAListView *listView, const DSize& cellSize, unsigned int index) = 0;
返回值:CAListViewCell*
参数:
类型 | 参数名 | 说明 |
CAListView* | listView | 当前的listView |
const DSize& | cellSize | cell的size |
unsigned int | index | cell的索引值 |
解释:生成cell
virtual void listViewWillDisplayCellAtIndex(CAListView* table, CAListViewCell* cell, unsigned int index) {};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAListView* | table | ListView的table |
CAListView* | listView | 当前的listView |
unsigned int | index | cell的索引值 |
解释:回调当前将要显示的list
类说明
CAListView的数据代理
CAListViewDelegate 方法(点击查看方法介绍)
方法 | 说明 |
listViewDidSelectCellAtIndex | 选中cell时调用 |
listViewDidDeselectCellAtIndex | 取消选中时调用 |
CAListViewDelegate 方法说明
virtual void listViewDidSelectCellAtIndex(CAListView *listView, unsigned int index)
返回值:void
参数:
类型 | 参数名 | 说明 |
CAListView* | listView | 当前的listView |
unsigned int | index | cell的索引值 |
解释:选中cell时调用
virtual void listViewDidDeselectCellAtIndex(CAListView *listView, unsigned int index)
返回值:void
参数:
类型 | 参数名 | 说明 |
CAListView* | listView | 当前的listView |
unsigned int | index | cell的索引值 |
解释:取消选中时调用
类说明
CATableView 主要用于生成列表,在table中展示数据,是一个一维的表,可以让用户能通过分层的数据进行导航,表可以是静态的或者动态的,可通过 dataSource 协议和 delegate 协议可以实现很多的个性化定制,即便拥有大量数据也非常有效率。CATableView只能有一列数据(cell),且只支持纵向滑动。
我们先了解一下CATableView的界面构成,CATableView主要是由两级目录构成Selection级和Cell级。如图所示,一个CATableView包含一个或多个Selection,一个Selection包含一个或多个Cell,这样就构成了CATableVIew的层级表示图。
CATableView的使用方法和CAListView比较类似,我们也要分别使用:CATableView、CATableViewCell、CATableViewDelegate、CATableViewDataSource来构建。
CATableView是表格视图的容器,是容器的载体。
CATableViewCell是表格视图的一个单元(本节后面简称cell)。
CATableViewDelegate是交互代理,响应cell选中和取消状态。
CATableViewDataSource是数据代理,设置Selection个数及Selection包含cell个数。
CATableView 属性(点击查看方法介绍)
属性 | 说明 |
TableViewDataSource | 添加数据代理 |
TableViewDelegate | 添加交互代理 |
TableHeaderView | 添加头部视图 |
TableFooterView | 添加尾部视图 |
SeparatorColor | 设置cell分割线的颜色 |
TableHeaderHeight | 设置头部的高度 |
TableFooterHeight | 设置尾部的高度 |
SeparatorViewHeight | 设置cell分割线的高度 |
AllowsSelection | 是否开启cell选择 |
AllowsMultipleSelection | 是否可以多选cell |
AlwaysTopSectionHeader | 设置cell顶部的标题 |
AlwaysBottomSectionFooter | 设置cell底部的标题 |
CATableView 方法(点击查看方法介绍)
方法 | 说明 |
setAllowsSelection | 是否开启cell选择 |
setAllowsMultipleSelection | 是否可以多选cell |
setSelectRowAtIndexPath | 设置选中cell时调用 |
setUnSelectRowAtIndexPath | 设置取消选中cell时调用 |
setShowsScrollIndicators | 设置显示滚动条 |
getNumberOfSections | 获取tableview包含的section个数 |
getNumberOfRowsInSection | 获取对应的section所包含的cell个数 |
getSectionHeightInSection | 通过索引获取section高度 |
getSectionHeaderHeightInSection | 通过索引获取section顶部的高度 |
getSectionFooterHeightInSection | 通过索引获取section底部的高度 |
getRowHeightInSectionInRow | 通过索引cell高度获取section和cell |
createWithFrame | 创建,并指定其Frame,默认Frame为(0,0,0,0) |
createWithCenter | 创建,并指定其Center,默认Center为(0,0,0,0) |
dequeueReusableCellWithIdentifier | 可以重用单元标示符 |
cellForRowAtIndexPath | 通过索引cell获取Index路径 |
switchPCMode | 开关PC模式 |
ccTouchBegan | 触摸事件开始时的回调函数 |
ccTouchMoved | 触摸事件中触点移动时的回调函数 |
ccTouchEnded | 触摸事件结束时的回调函数 |
ccTouchCancelled | 触摸非正常结束时的回调函数。(例如:电话或锁屏) |
mouseMoved | 鼠标移动 |
mouseMovedOutSide | 鼠标移出 |
init | 初始化 |
reloadData | 重载数据 |
CATableViewCell 属性(点击查看方法介绍)
属性 | 说明 |
ContentView | 内容视图 |
BackgroundView | 背景视图 |
ReuseIdentifier | 重用标识符 |
Section | section |
Row | cell |
ControlStateEffect | 控制状态 |
AllowsSelected | 允许选择 |
CATableViewCell 方法(点击查看方法介绍)
方法 | 说明 |
create | 创建,默认Frame为(0,0,0,0) |
initWithReuseIdentifier | 重用标识符初始化 |
CATableViewDelegate 方法(点击查看方法介绍)
方法 | 说明 |
tableViewDidSelectRowAtIndexPath | 选中cell时调用 |
tableViewDidDeselectRowAtIndexPath | 取消选择cell时调用 |
CATableViewDataSource 方法(点击查看方法介绍)
方法 | 说明 |
tableCellAtIndex | 获取指定cell |
tableViewHeightForRowAtIndexPath | 获取指定的cell高度 |
numberOfRowsInSection | 获取对应的section所包含的cell个数 |
numberOfSections | 获取section个数 |
tableViewSectionViewForHeaderInSection | 在tableView中通过索引获取头部Section |
tableViewHeightForHeaderInSection | 在tableView中通过索引获取头部Section高度 |
tableViewSectionViewForFooterInSection | 在tableView中通过索引获取尾部Section |
tableViewHeightForFooterInSection | 在tableView中通过索引获取尾部Section高度 |
tableViewWillDisplayCellAtIndex | 回调当前将要显示的tableView |
我们本节也使用CATableView来实现一个简单的表单视图,首先我们需要新建一个Class,命名为:MyTableViewCell并继承CATableViewCell。代码示例如下:
文件CATableViewCell.h
#ifndef _My_TableViewCell_h_#define _My_TableViewCell_h_#include <iostream>#include "CrossApp.h"USING_NS_CC;class MyTableViewCell:public CATableViewCell{public: MyTableViewCell(); virtual ~MyTableViewCell(); //创建MyTableViewCell static MyTableViewCell* create(const std::string& identifier, const DRect& _rect = DRectZero); public: //初始化 void initWithCell(); //按钮的回调函数 void cellBtnCallback(CAControl* btn, DPoint point);protected: //正常状态下调用 virtual void normalTableViewCell(); //高亮状态下调用 virtual void highlightedTableViewCell(); //选择状态下调用 virtual void selectedTableViewCell(); //禁用状态下调用 virtual void disabledTableViewCell(); //恢复状态下调用 virtual void recoveryTableViewCell();};#endif
文件CATableViewCell.cpp
#include "MyTableViewCell.h"MyTableViewCell::MyTableViewCell(){}MyTableViewCell::~MyTableViewCell(){}MyTableViewCell* MyTableViewCell::create(const std::string& identifier, const DRect& _rect){ //创建 MyTableViewCell* tableViewCell = new MyTableViewCell(); if(tableViewCell&&tableViewCell->initWithReuseIdentifier(identifier)) { tableViewCell->setFrame(_rect); tableViewCell->autorelease(); return tableViewCell; } CC_SAFE_DELETE(tableViewCell); return NULL;}void MyTableViewCell::initWithCell(){ //Cell的大小 DSize m_size = this->getFrame().size; //创建CALabel CALabel* cellText = CALabel::createWithCenter(DRect(m_size.width*0.1, m_size.height*0.5, m_size.width*0.3, m_size.height*0.8)); //设置tag cellText->setTag(100); //设置字体大小 cellText->setFontSize(_px(30)); //设置中心对齐 cellText->setTextAlignment(CATextAlignmentCenter); cellText->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter); //添加到当前cell this->addSubview(cellText); //创建CAButton CAButton* btnOnCell = CAButton::createWithCenter(DRect(m_size.width*0.85, m_size.height*0.5, m_size.width*0.2, m_size.height*0.7), CAButtonTypeRoundedRect); //设置tag btnOnCell->setTag(102); //设置显示文本 btnOnCell->setTitleForState(CAControlStateAll, "Touch"); //添加回调监听 btnOnCell->addTarget(this, CAControl_selector(MyTableViewCell::cellBtnCallback), CAControlEventTouchUpInSide); //添加到cell this->addSubview(btnOnCell);}void MyTableViewCell::cellBtnCallback(CAControl* btn, DPoint point){ //按钮被点击时打印log CCLog("MyTableViewCell::cellBtnCallback-->");}void MyTableViewCell::normalTableViewCell(){ //改变背景颜色 this->setBackgroundView(CAView::createWithColor(CAColor_white));}void MyTableViewCell::highlightedTableViewCell(){ //改变背景颜色 this->setBackgroundView(CAView::createWithColor(CAColor_gray));}void MyTableViewCell::selectedTableViewCell(){ //改变背景颜色 this->setBackgroundView(CAView::createWithColor(CAColor_orange));}void MyTableViewCell::disabledTableViewCell(){ //改变背景颜色 this->setBackgroundView(CAView::createWithColor(CAColor_black));}void MyTableViewCell::recoveryTableViewCell(){ //改变背景颜色 this->setBackgroundView(CAView::createWithColor(CAColor_blue));}
我们创建了cell之后,就在FirstViewController实现CATableViewDelegate和CATableViewDataSource这两个代理,那么FirstViewController.h的内容如下:
#ifndef __HelloCpp__ViewController__#define __HelloCpp__ViewController__#include <iostream>#include "CrossApp.h"#include "MyTableViewCell.h"USING_NS_CC;class FirstViewController: public CAViewController , public CATableViewDataSource ,public CATableViewDelegate{ public: FirstViewController(); virtual ~FirstViewController(); public: //选中cell时触发 virtual void tableViewDidSelectRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row); //取消选中cell时触发 virtual void tableViewDidDeselectRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row); //获取对应的section所包含的cell个数 virtual unsigned int numberOfRowsInSection(CATableView *table, unsigned int section); //获取tableview包含的section个数 virtual unsigned int numberOfSections(CATableView *table); //获得指定cell virtual CATableViewCell* tableCellAtIndex(CATableView* table, const DSize& cellSize, unsigned int section, unsigned int row); //设置section的头部 virtual CAView* tableViewSectionViewForHeaderInSection(CATableView* table, const DSize& viewSize, unsigned int section); //设置section的尾部 virtual CAView* tableViewSectionViewForFooterInSection(CATableView* table, const DSize& viewSize, unsigned int section); //获取指定的cell高度 virtual unsigned int tableViewHeightForRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row); //获得指定的section的header vier的高度 virtual unsigned int tableViewHeightForHeaderInSection(CATableView* table, unsigned int section); //获得指定的section的footer view的高度 virtual unsigned int tableViewHeightForFooterInSection(CATableView* table, unsigned int section); protected: void viewDidLoad(); void viewDidUnload(); };#endif /* defined(__HelloCpp__ViewController__) */
然后我们在FirstViewController.cpp中实现表格视图如下:
#include "FirstViewController.h"FirstViewController::FirstViewController(){}FirstViewController::~FirstViewController(){}void FirstViewController::viewDidLoad(){ DSize size = this->getView()->getBounds().size; CATableView* p_TableView = CATableView::createWithCenter(DRect(size.width*0.5, size.height*0.5, size.width, size.height)); p_TableView->setTableViewDataSource(this); p_TableView->setTableViewDelegate(this); p_TableView->setAllowsSelection(true); p_TableView->setAllowsMultipleSelection(true); p_TableView->setSeparatorColor(CAColor_clear); this->getView()->addSubview(p_TableView);}void FirstViewController::viewDidUnload(){ // Release any retained subviews of the main view. // e.g. self.myOutlet = nil;}void FirstViewController::tableViewDidSelectRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row){}void FirstViewController::tableViewDidDeselectRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row){}CATableViewCell* FirstViewController::tableCellAtIndex(CATableView* table, const DSize& cellSize, unsigned int section, unsigned int row){ DSize _size = cellSize; //根据标识获得cell MyTableViewCell* cell = dynamic_cast<MyTableViewCell*>(table->dequeueReusableCellWithIdentifier("CrossApp")); //如果没有找到cell if (cell == NULL) { //创建一个 cell = MyTableViewCell::create("CrossApp", DRect(0, 0, _size.width, _size.height)); //调用cell的初始化 cell->initWithCell(); } //如果是section为1的情况 if (section == 1) { //根据tag获得CAButton CAButton* cellBtn = (CAButton*)cell->getSubviewByTag(102); //隐藏按钮 cellBtn->setVisible(false); } else { //根据tag获得CAButton CAButton* cellBtn = (CAButton*)cell->getSubviewByTag(102); //显示按钮 cellBtn->setVisible(true); } string order = crossapp_format_string("cell-%d",row); //根据tag获得CALabel CALabel* cellText = (CALabel*)cell->getSubviewByTag(100); //设置文本显示 cellText->setText(order); return cell;}CAView* FirstViewController::tableViewSectionViewForHeaderInSection(CATableView* table, const DSize& viewSize, unsigned int section){ CCLog("Header-->"); string head = crossapp_format_string("Selection-%d", section); //创建Section头部视图 CAView* view = CAView::createWithColor(CAColor_gray); DSize _size = viewSize; CALabel* header = CALabel::createWithCenter(DRect(_size.width*0.5, _size.height*0.5, _size.width*0.8, _size.height)); header->setText(head); header->setFontSize(_px(30)); header->setColor(CAColor_white); header->setTextAlignment(CATextAlignmentCenter); header->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter); view->addSubview(header); return view;}CAView* FirstViewController::tableViewSectionViewForFooterInSection(CATableView* table, const DSize& viewSize, unsigned int section){ CCLog("Footer-->"); CAView* view = CAView::createWithColor(CAColor_white); return view;}unsigned int FirstViewController::numberOfRowsInSection(CATableView *table, unsigned int section){ //cell数,从0计算。10表示0-9 return 10;}unsigned int FirstViewController::numberOfSections(CATableView *table){ //表格数,从0开始计算。4则表示0-3 return 4;}unsigned int FirstViewController::tableViewHeightForRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row){ //高度 return _px(130);}unsigned int FirstViewController::tableViewHeightForHeaderInSection(CATableView* table, unsigned int section){ //高度 return _px(50);}unsigned int FirstViewController::tableViewHeightForFooterInSection(CATableView* table, unsigned int section){ return 1;}
这样我们就构建了一个表格视图,大家可以自己尝试这用CATableVIew去实现一个微信的通信录列表。
CATableView 属性说明
类型:CATableViewDataSource*
解释:添加数据代理。set/get{}。
类型:CATableViewDelegate*
解释:添加交互代理。set/get{}。
类型:CAView*
解释:添加头部视图。set/get{}。
类型:CAView*
解释:添加尾部视图。set/get{}。
类型:CAColor4B
解释:设置cell分割线的颜色。set/get{}。
类型:unsigned int
解释:设置头部视图的高度。set/get{}。
类型:unsigned int
解释:设置尾部视图的高度。set/get{}。
类型:unsigned int
解释:设置cell分割线的高度。set/get{}。
类型:bool
解释:是否开启cell选择。is{}。
类型:bool
解释:是否可以多选cell。is{}。
类型:bool
解释:设置cell顶部的标题。is/set{}。
类型:bool
解释:设置cell底部的标题。is/set{}。
CATableView 方法说明
virtual void setAllowsSelection(bool var);
返回值:virtual void
参数:
类型 | 参数名 | 说明 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
类说明 CATableView的数据代理类,用于定义tableView的数据接口。 CATableViewDataSource 方法(点击查看方法介绍)
CATableViewDataSource 方法说明 virtual CATableViewCell* tableCellAtIndex(CATableView* table, const DSize& cellSize, unsigned int section, unsigned int row) = 0; 返回值:CATableViewCell* 参数:
解释:获取指定cell virtual unsigned int tableViewHeightForRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row) = 0; 返回值:unsigned int 参数:
解释:获取指定的cell高度 virtual unsigned int numberOfRowsInSection(CATableView* table, unsigned int section) = 0; 返回值:unsigned int 参数:
解释:获取对应的section所包含的cell个数 virtual unsigned int numberOfSections(CATableView* table); 返回值:unsigned int 参数:
解释:获取tableview包含的section个数 virtual CAView* tableViewSectionViewForHeaderInSection(CATableView* table, const DSize& viewSize, unsigned int section); 返回值:CAView* 参数:
解释:在tableView中通过索引获取头部Section virtual unsigned int tableViewHeightForHeaderInSection(CATableView* table, unsigned int section); 返回值:unsigned int 参数:
解释:在tableView中通过索引获取头部Section高度 virtual CAView* tableViewSectionViewForFooterInSection(CATableView* table, const DSize& viewSize, unsigned int section); 返回值:CAView* 参数:
解释:在tableView中通过索引获取尾部Section virtual unsigned int tableViewHeightForFooterInSection(CATableView* table, unsigned int section); 返回值:unsigned int 参数:
解释:在tableView中通过索引获取尾部Section高度 virtual void tableViewWillDisplayCellAtIndex(CATableView* table, CATableViewCell* cell, unsigned int section, unsigned int row) {}; 返回值:void 参数:
解释:回调当前将要显示的tableView 类说明 CATableView的代理类,用于响应拖动和点击事件。 CATableViewDelegate 方法(点击查看方法介绍)
CATableViewDelegate 方法说明 virtual void tableViewDidSelectRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row) 返回值:void 参数:
解释:选中cell时触发 virtual void tableViewDidDeselectRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row) 返回值:void 参数:
解释:取消选择时触发 类说明 作为CATableView的cell添加进tableView,具备CAControl的功能。 基类 CAControl CATableViewCell 属性(点击查看方法介绍)
CATableViewCell 方法(点击查看方法介绍)
CATableViewCell 属性说明 类型:CAView 解释:内容视图,get{}。 类型:CAView* 解释:设置cell的背景视图,set/get{}。 类型:std::string 解释:复用标示符,set/get{}。 类型:unsigned int 解释:Section,get{}。 类型:unsigned int 解释:行,get{}。 类型:bool 解释:控制状态,is/set{}。 类型:bool 解释:允许选择,is/set{}。 CATableViewCell 方法说明 static CATableViewCell* create(const std::string& reuseIdentifier); 返回值:CATableViewCell* 类型:
解释:创建,并指定cell的复用标示符 virtual bool initWithReuseIdentifier(const std::string& reuseIdentifier); 返回值:bool 类型:
解释:初始化,并指定复用标示符 类说明 CACollectionView同CATableView类似,主要用于数据的展示,实现了tableView的基本功能,同时对tableView拓展,更完美的进行展示数据。 CACollectionView的使用方法和CATableView比较类似,我们也要分别使用:CACollectionView、CACollectionViewCell、CACollectionViewDelegate、CACollectionViewDataSource来构建。 CACollectionView是表格视图的容器,是容器的载体。 CACollectionViewCell是表格视图的一个单元(本节后面简称cell)。 CACollectionViewDelegate是交互代理,响应cell选中和取消状态。 CACollectionViewDataSource是数据代理,设置Selection个数及Selection包含cell个数。 CACollectionView 属性(点击查看方法介绍)
CACollectionView 方法(点击查看方法介绍)
CACollectionViewDelegate 方法(点击查看方法介绍)
CACollectionViewDataSource 方法(点击查看方法介绍)
我们本机的示例,不再使用自定义的CACollectionViewCell的方法来实现,我们来看看本节的示例代码: FirstViewController.h内容:
FirstViewController.cpp内容:
CACollectionView 属性说明 类型:CACollectionViewDataSource* 解释:添加数据代理。set/get{}。
类型:CACollectionViewDelegate* 解释:添加交互代理。set/get{}。 类型:CAView* 解释:添加头部视图。set/get{}。 类型:CAView** 解释:添加尾部视图。set/get{}。 类型:unsigned int 解释:设置头部的高度。set/get{}。 类型:unsigned int 解释:设置尾部的高度。set/get{}。 类型:unsigned int 解释:水平间隔。set/get{}。 类型:unsigned int 解释:垂直间隔。set/get{}。 类型:bool 解释:允许选择。is{}。 类型:bool 解释:允许多个选择。is{}。 类型:bool 解释:总是顶部的标题。is/set{}。 类型:bool 解释:总是底部的节尾。is/set{}。 CACollectionView 方法说明 static CACollectionView* createWithFrame(const DRect& rect); 返回值:static CACollectionView* 参数:
解释:创建,并指定其Frame,默认Frame为(0,0,0,0) static CACollectionView* createWithCenter(const DRect& rect); 返回值:static CACollectionView* 参数:
解释:创建,并指定其Center,默认Center为(0,0,0,0) CACollectionViewCell* dequeueReusableCellWithIdentifier(const char* reuseIdentifier); 返回值:CACollectionViewCell* 参数:
解释:从复用队列中寻找指定标识符的cell virtual void setAllowsSelection(bool var); 返回值:virtual void 参数:
解释:设置是否开启cell选择 virtual void setAllowsMultipleSelection(bool var); 返回值:virtual void 参数:
解释:设置是否可以多选cell void setSelectRowAtIndexPath(unsigned int section, unsigned int row, unsigned int item); 返回值:void 参数:
解释:设置索引路径选择行 void setUnSelectRowAtIndexPath(unsigned int section, unsigned int row, unsigned int item); 返回值:void 参数:
解释:设置索引路径不允许选择行 virtual void setShowsScrollIndicators(bool var); 返回值:virtual void 参数:
解释:设置显示滚动指示器 CACollectionViewCell* cellForRowAtIndexPath(unsigned int section, unsigned int row, unsigned int item); 返回值:CACollectionViewCell* 参数:
解释:根据索引获取显示的cell CACollectionViewCell* getHighlightCollectionCell(); 返回值:CACollectionViewCell* 参数: 解释:获取高亮显示的collectioncell virtual void switchPCMode(bool var); 返回值:virtual void 参数:
解释:开关PC模式 返回值:virtual bool 参数: 解释:初始化 返回值:void 参数: 解释:清除数据 返回值:void 参数: 解释:重载数据 CACollectionViewDelegate 方法说明 virtual void collectionViewDidSelectCellAtIndexPath(CACollectionView *collectionView, unsigned int section, unsigned int row, unsigned int item){}; 返回值:virtual void 参数:
解释:选中cell时调用 virtual void collectionViewDidDeselectCellAtIndexPath(CACollectionView *collectionView, unsigned int section, unsigned int row, unsigned int item){}; 返回值:virtual void 参数:
解释:取消选择cell时调用 CACollectionViewDataSource 方法说明 virtual CACollectionViewCell* collectionCellAtIndex(CACollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int row, unsigned int item) 返回值:virtual CACollectionViewCell* 参数:
解释:获取指定cell virtual unsigned int collectionViewHeightForRowAtIndexPath(CACollectionView* collectionView, unsigned int section, unsigned int row) 返回值:virtual unsigned int 参数:
解释:cell的高度 virtual unsigned int numberOfItemsInRowsInSection(CACollectionView *collectionView, unsigned int section, unsigned int row) 返回值:virtual unsigned int 参数:
解释:每个cell里的item数量 virtual unsigned int numberOfRowsInSection(CACollectionView *collectionView, unsigned int section) 返回值:virtual unsigned int 参数:
解释:获取对应的section所包含的cell个数 virtual unsigned int numberOfSections(CACollectionView *collectionView) 返回值:virtual unsigned int 参数:
解释:获取tableview包含的section个数 virtual CAView* collectionViewSectionViewForHeaderInSection(CACollectionView *collectionView, const DSize& viewSize, unsigned int section) 返回值:virtual CAView* 参数:
解释:headerView的内容 virtual unsigned int collectionViewHeightForHeaderInSection(CACollectionView *collectionView, unsigned int section) 返回值:virtual unsigned int 参数:
解释:每个section的headerView virtual CAView* collectionViewSectionViewForFooterInSection(CACollectionView *collectionView, const DSize& viewSize, unsigned int section) 返回值:virtual CAView* 参数:
解释:footerView的内容 virtual unsigned int collectionViewHeightForFooterInSection(CACollectionView *collectionView, unsigned int section) 返回值:virtual unsigned int 参数:
解释:每个section的footerView virtual void collectionViewWillDisplayCellAtIndex(CACollectionView* table, CACollectionViewCell* cell, unsigned int section, unsigned int row, unsigned int item) {}; 返回值:virtual void 参数:
解释:回调当前将要显示的collectionView 类说明 CACollectionView的数据代理 CACollectionViewDataSource 方法(点击查看方法介绍)
CACollectionViewDataSource 方法说明 virtual CACollectionViewCell* collectionCellAtIndex(CACollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int row, unsigned int item) 返回值:virtual CACollectionViewCell* 参数:
解释:获取指定cell 示例:
virtual unsigned int collectionViewHeightForRowAtIndexPath(CACollectionView* collectionView, unsigned int section, unsigned int row) 返回值:virtual unsigned int 参数:
解释:cell的高度 virtual unsigned int numberOfItemsInRowsInSection(CACollectionView *collectionView, unsigned int section, unsigned int row) 返回值:virtual unsigned int 参数:
解释:每个cell里的item数量 virtual unsigned int numberOfRowsInSection(CACollectionView *collectionView, unsigned int section) 返回值:virtual unsigned int 参数:
解释:获取对应的section所包含的cell个数 virtual unsigned int numberOfSections(CACollectionView *collectionView) 返回值:virtual unsigned int 参数:
解释:获取tableview包含的section个数 virtual CAView* collectionViewSectionViewForHeaderInSection(CACollectionView *collectionView, const DSize& viewSize, unsigned int section) 返回值:virtual CAView* 参数:
解释:headerView的内容 virtual unsigned int collectionViewHeightForHeaderInSection(CACollectionView *collectionView, unsigned int section) 返回值:virtual unsigned int 参数:
解释:每个section的headerView virtual CAView* collectionViewSectionViewForFooterInSection(CACollectionView *collectionView, const DSize& viewSize, unsigned int section) 返回值:virtual CAView* 参数:
解释:footerView的内容 virtual unsigned int collectionViewHeightForFooterInSection(CACollectionView *collectionView, unsigned int section) 返回值:virtual unsigned int 参数:
解释:每个section的footerView virtual void collectionViewWillDisplayCellAtIndex(CACollectionView* table, CACollectionViewCell* cell, unsigned int section, unsigned int row, unsigned int item) {}; 返回值:virtual void 参数:
解释:回调当前将要显示的Collection 类说明 CASlider是滚动条控件,主要作用是方便数值调节,如音量大小控制、缩放视图等操作。 CASlider 属性(点击查看方法介绍)
CASlider 方法(点击查看方法介绍)
然后我们在FirstViewController.cpp中去实现CASlider来控制CAImageView的缩放变化。
我们通过addTarget来为CASlider绑定一个监听,我们又在监听函数中,根据CASlider的变化来改变CAImageView的缩放值,同样的原理我们也可以进行其它数值的改变,大家举一反三可以自己去尝试一下。 CASlider 属性说明 类型:bool 解释:触摸点击。is{}。
类型:float 解释:值。get{}。 类型:float 解释:最小值。get{}。 类型:float 解释:最大值。get{}。 类型:float 解释:滚动条高度。get{}。 类型:CAImage* 解释:设置前景图片(已经划过的部分) 。get{}。 类型:CAImage* 解释:设置后景图片(未划过的部分) 。get{}。 类型:CAImage* 解释:滚动块的图片 。get{}。 CASlider 方法说明 static CASlider* createWithFrame(const DRect& rect); 返回值:static CASlider 参数:
解释:创建,并指定其Frame,默认Frame为(0,0,0,0) static CASlider* createWithCenter(const DRect& rect); 返回值:static CASlider 参数:
解释:创建,并指定其Center,默认Center为(0,0,0,0) void addTarget(CAObject* target, SEL_CAControl selector); 返回值:void 参数:
解释:添加回调事件 void addTargetForTouchUpSide(CAObject* target, SEL_CAControl selector); 返回值:void 参数:
解释:添加回调事件的触摸 void removeTarget(CAObject* target, SEL_CAControl selector); 返回值:void 参数:
解释:删除回调事件 virtual void setValue(float value); 返回值:virtual void 参数:
解释:设定值 virtual void setMinValue(float minValue); 返回值:virtual void 参数:
解释:设定最小值 virtual void setMaxValue(float maxValue); 返回值:virtual void 参数:
解释:设定最大值 virtual void setTrackHeight(float trackHeight); 返回值:virtual void 参数:
解释:设置滚动条高度 virtual void setMinTrackTintImage(CAImage* minTrackTintImage); 返回值:virtual void 参数:
解释:设置前景图片(已经划过的部分) virtual void setMaxTrackTintImage(CAImage* maxTrackTintImage); 返回值:virtual void 参数:
解释:设置后景图片(未划过的部分) virtual void setThumbTintImage(CAImage* thumbTintImage); 返回值:virtual void 参数:
解释:设置滚动块的图片 void setContentSize(const CCSize & var); 返回值:void 参数:
解释:设置内容大小 bool initWithFrame(const DRect& rect); 返回值:bool 参数:
解释:初始化,并指定其Frame bool initWithCenter(const DRect& rect); 返回值:bool 参数:
解释:初始化,并指定其Center virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent); 返回值:virtual bool 参数:
解释:触摸事件开始时的回调函数 virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent); 返回值:virtual void 参数:
解释:触摸事件中触点移动时的回调函数 virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent); 返回值:virtual void 参数:
解释:触摸事件结束时的回调函数 virtual void layoutSubViews(); 返回值:virtual void 参数: 解释:子视图布局 类说明 CAStepper是步进控件,它的作用和CASlider非常类似,只是CAStepper的改变的固定值,它包括左右两部分,左部为减少,右部为增加。 CAStepper 属性(点击查看方法介绍)
CAStepper 方法(点击查看方法介绍)
我们尝试这用CAStepper去控制一张图片的旋转,每次旋转30度。
然后我们在FirstViewController.cpp添加CAStepper控件并为其绑定监听。
这样我们就可以通过增减CAStepper的值来控制CAImageView的旋转角度了。 CAStepper 属性说明 类型:bool 解释:设置连续,set/get{}。 类型:bool 解释:设置自动重复,set/get{}。 类型:bool 解释:设置是否可在最大值和最小值循环,set/get{}。 类型:double 解释:设定值,set/get{}。 类型:double 解释:设定最小值,set/get{}。 类型:double 解释:设定最大值。set/get{}。 类型:double 解释:设置步进值。set/get{}。 类型:bool 解释:设置接触效应,set/get{}。 CAStepper 方法说明 返回值:static CAStepper 参数: 解释:创建,默认Frame为(0,0,0,0) static CAStepper* createWithFrame(const CCRect& rect); 返回值:static CAStepper 参数:
解释:创建,并指定其Frame,默认Frame为(0,0,0,0) static CAStepper* createWithCenter(const CCRect& rect); 返回值:static CAStepper 参数:
解释:创建,并指定其Center,默认Center为(0,0,0,0) void setBackgroundImage(CAImage* image, CAControlState state); 返回值:void 参数:
解释:设置背景图像 CAImage* getBackgroundImageForState(CAControlState state); 返回值:CAImage* 参数:
解释:获取背景图像 void setIncrementImage(CAImage* image, CAControlState state); 返回值:void 参数:
解释:设置右部增加部分的背景 CAImage* getIncrementImageForState(CAControlState state); 返回值:CAImage* 参数:
解释:获取右部增加部分的背景 void setDecrementImage(CAImage* image, CAControlState state); 返回值:void 参数:
解释:设置左部减少部分的背景 CAImage* getDecrementImageForState(CAControlState state); 返回值:CAImage* 参数:
解释:获取左部减少部分的背景 virtual void addTarget(CAObject* target, SEL_CAControl selector); 返回值:virtual void 参数:
解释:添加回调事件 virtual void removeTarget(CAObject* target, SEL_CAControl selector); 返回值:virtual void 参数:
解释:删除回调事件 virtual void removeAllTargets(); 返回值:virtual void 参数: 解释:删除所有回调事件 返回值:virtual bool 参数: 解释:初始化 virtual bool initWithFrame(const DRect& rect); 返回值:virtual bool 参数:
解释:初始化,并指定其Frame virtual bool initWithCenter(const DRect& rect); 返回值:virtual bool 参数:
解释:初始化,并指定其Center 返回值:virtual void 参数: 解释:输入 返回值:virtual void 参数: 解释:退出 返回值:virtual void 参数: 解释:访问 void setDividerColor(CAColor4B color); 返回值:void 参数:
解释:设置分频器颜色 返回值:CAColor4B 参数: 解释:获取分频器颜色 void setTailorImageAtIndex(int index); 返回值:void 参数:
解释:设置索引裁剪图像 CAView* getTailorImageAtIndex(int index); 返回值:CAView* 参数:
解释:获取索引截取图像
类说明 CAPageView用于实现分页、翻页效果。CAPageView为我们提供了横向和竖直两个方向的样式。我也可以通过继承CAPageViewDelegate来实现对CAPageView的监听。 CAPageView 属性(点击查看方法介绍)
CAPageView 方法(点击查看方法介绍)
我来看一下代码实例:
然后在.cpp中实现逻辑:
我们创建了一个含有三个CAView的CAPageView,横向滑动可以切换到不同的CAView,在我们切换时候会调用pageViewDidBeginTurning函数和pageViewDidEndTurning函数,当我们点击某个页面的时候pageViewDidSelectPageAtIndex会被调用。 CAPageView 属性说明 类型:CAPageViewDirection 解释:页面浏览方向。get{}。
类型:CAPageViewDelegate* 解释:页面视图代表。set/get{}。 类型:int 解释:当前页。get{}。 类型:int 解释:间距。set/get{}。 CAPageView 方法说明 static CAPageView* createWithFrame(const CCRect& rect, const CAPageViewDirection& type); 返回值:CAPageView* 参数:
解释:创建,并指定其Frame,默认Frame为(0,0,0,0)
static CAPageView* createWithCenter(const CCRect& rect, const CAPageViewDirection& type); 返回值:CAPageView* 参数:
解释:创建,并指定其Center,默认Center为(0,0,0,0) void setCurrPage(int var, bool animated, bool listener = false); 返回值:void 参数:
解释:设置显示指定页
返回值:unsigned int 参数: 解释:获取页面总数 void setViews(const CADeque<CAView*>& vec); 返回值:void 参数:
解释:添加存放View的CADeque容器 void setViews(const CAVector<CAView*>& vec); 返回值:void 参数:
解释:添加存放View的CAVector容器 CAView* getSubViewAtIndex(int index); 返回值:CAView* 参数:
解释:通过索引获取子视图 virtual void setShowsScrollIndicators(bool var); 返回值:void 参数:
解释:设置显示滚动条 返回值:bool 参数: 解释:初始化 类说明 CAPageView的滚动事件的代理 CAPageViewDelegate 方法(点击查看方法介绍)
CAPageViewDelegate 方法说明 virtual void pageViewDidBeginTurning(CAPageView* pageView) 返回值:void 参数:
解释:开始滚动时触发
virtual void pageViewDidEndTurning(CAPageView* pageView) 返回值:void 参数:
解释:滚动结束时触发
virtual void pageViewDidSelectPageAtIndex(CAPageView* pageView, unsigned int index) 返回值:void 参数:
解释:点击pageView时触发 类说明 CAWaterfallView 由很多的格子组成,但是每个格子的宽度和高速都是不确定的,是在动态改变的,就像瀑布一样,是一条线一条线的。 CAWaterfallView 属性(点击查看方法介绍)
CAWaterfallView 方法(点击查看方法介绍)
CAWaterfallView 属性说明 类型:CAWaterfallViewDataSource* 解释:添加数据代理,set/get{}。 类型:CAWaterfallViewDelegate* 解释:添加交互代理,set/get{}。 类型:CAView* 解释:添加头部视图,set/get{}。 类型:CAView* 解释:添加尾部视图,set/get{}。 类型:unsigned int 解释:设置头部的高度,set/get{}。 类型:unsigned int 解释:设置尾部的高度,set/get{}。 类型:unsigned int 解释:列计数,set/get{}。 类型:unsigned int 解释:项目边缘,set/get{}。 类型:unsigned int 解释:列边缘,set/get{}。 类型:bool 解释:允许选择,is{}。 类型:bool 解释:允许多个选择,is{}。 类型:bool 解释:总是显示顶部,is/set{}。 类型:bool 解释:总是显示底部,is/set{}。 CAWaterfallView 方法说明 static CAWaterfallView* createWithFrame(const DRect& rect); 返回值:CAWaterfallView* 参数:
解释:创建,并指定其Frame static CAWaterfallView* createWithCenter(const DRect& rect); 返回值:CAWaterfallView* 参数:
解释: 创建,并设置其Center 返回值:bool 参数: 解释:初始化 返回值:void 参数: 解释:重载数据 CAWaterfallViewCell* dequeueReusableCellWithIdentifier(const char* reuseIdentifier); 返回值:CAWaterfallViewCell* 参数:
解释:从复用队列中寻找指定标识符的cell virtual void setAllowsSelection(bool var); 返回值:void 参数:
解释:是否开启cell选择 virtual void setAllowsMultipleSelection(bool var); 返回值:void 参数:
解释:是否可以多选cell void setSelectRowAtIndexPath(unsigned int itemIndex); 返回值:void 参数:
解释:通过索引选择一行 void setUnSelectRowAtIndexPath(unsigned int itemIndex); 返回值:void 参数:
解释:通过索引取消选择一行 virtual void setShowsScrollIndicators(bool var); 返回值:void 参数:
解释:显示滚动指示器 CAWaterfallViewCell* cellForRowAtIndexPath(unsigned int itemIndex); 返回值:CAWaterfallViewCell* 参数:
解释:根据索引获取显示的cell const CAVector<CAWaterfallViewCell*>& displayingWaterfallCell(); 返回值:CAVector<CAWaterfallViewCell*>& 参数: 解释:显示Waterfall的Cell CAWaterfallViewCell* getHighlightWaterfallCell(); 返回值:CAWaterfallViewCell* 参数: 解释:突出Waterfall的Cell virtual void switchPCMode(bool var); 返回值:void 参数:
解释:开关PC模式 类说明: 数据代理方法 CAWaterfallViewDataSource 方法
CAWaterfallViewDataSource 方法说明 virtual CAWaterfallViewCell* waterfallCellAtIndex(CAWaterfallView *waterfallView, const DSize& cellSize, unsigned int itemIndex); 返回值:CAWaterfallViewCell* 参数:
解释:获取指定cell virtual unsigned int waterfallViewHeightForItemAtIndex(CAWaterfallView *waterfallView, unsigned int itemIndex); 返回值:unsigned int 参数:
解释:Item高度 virtual unsigned int numberOfItems(CAWaterfallView *waterfallView); 返回值:unsigned int 参数:
解释:item数量 virtual CAView* waterfallViewSectionViewForHeader(CAWaterfallView *waterfallView, const DSize& viewSize); 返回值:CAView* 参数:
解释:waterfallView的标题图像 virtual unsigned int waterfallViewHeightForHeader(CAWaterfallView *waterfallView); 返回值:unsigned int 参数:
解释:waterfallView的头部高度 virtual CAView* waterfallViewSectionViewForFooter(CAWaterfallView *waterfallView, const DSize& viewSize); 返回值:CAView* 参数:
解释:waterfallView的底部图像 virtual unsigned int waterfallViewHeightForFooter(CAWaterfallView *waterfallView); 返回值:unsigned int 参数:
解释:waterfallView的底部高度 virtual void waterfallViewWillDisplayCellAtIndex(CAWaterfallView* waterfallView, CAWaterfallViewCell* cell, unsigned int itemIndex) {}; 返回值:void 参数:
解释:回调当前将要显示的waterfallView 类说明 瀑布流控件代理方法 CAWaterfallViewDelegate 方法(点击查看方法介绍)
CAWaterfallViewDelegate 方法说明 virtual void waterfallViewDidSelectCellAtIndexPath(CAWaterfallView *waterfallView, unsigned int itemIndex){}; 返回值:void 参数:
解释:选中cell时调用 virtual void waterfallViewDidDeselectCellAtIndexPath(CAWaterfallView *waterfallView, unsigned int itemIndex){}; 返回值:void 参数:
解释:取消选择cell时调用 类说明 作为CAWaterfallViewCell添加进WaterfallView。 CAWaterfallViewCell 属性(点击查看方法介绍)
CAWaterfallViewCell 方法(点击查看方法介绍)
CAWaterfallViewCell 属性说明 类型:CAView* 解释:显示图像,get{}。 类型:CAView* 解释:背景图像,set/get{}。 类型:std::string 解释:重用标识符,set/get{}。 类型:unsigned int 解释:项目Index,get{}。 类型:bool 解释:控制状态,is/set{}。 类型:bool 解释:允许选择,is/set{}。 CAWaterfallViewCell 方法说明 static CAWaterfallViewCell* create(const std::string& reuseIdentifier); 返回值:CAWaterfallViewCell* 参数:
解释:创建 virtual bool initWithReuseIdentifier(const std::string& reuseIdentifier); 返回值:bool 参数:
解释:重用标识符初始化 类说明 CATextField是单行输入框控件。主要接收用户的文本输入,多用于用户名、密码、聊天输入等。 CATextField 属性(点击查看方法介绍)
CATextField 方法(点击查看方法介绍)
CATextField 属性说明 类型:CATextFieldDelegate* 解释:数据代理,set/get{}。 类型:ClearButtonMode 解释:添加按钮模式,set/get{}。
类型:int 解释:左边缘(如果选择默认:左16,右16),set/get{}。 类型:int 解释:右边缘(如果选择默认:左16,右16),set/get{}。 类型:int 解释:字体大小,set/get{}。 类型:std::string 解释:PlaceHolder文本内容,set/get{}。 类型:CAColor4B 解释:PlaceHolder文本内容颜色,set/get{}。 类型:std::string 解释:文本内容,set/get{}。 类型:CAColor4B 解释:文本内容颜色,set/get{}。 类型:KeyboardType 解释:键盘类型,set/get{}。(默认为KeyboardTypeDefault类型)
类型:ReturnType 解释:Return键类型,set/get{}。(默认ReturnTypeDone类型)
类型:TextFieldAlign 解释:TextField的对齐方式,set/get{}。(默认:中心)
类型:bool 解释:设置TextField为密码输入框,is/set{}。(密码输入框,默认为假) 类型:bool 解释:返回键恢复键盘,is/set{}。(返回键恢复键盘,默认为真) 类型:int 解释:最大长度,set/get{}。 CATextField 方法说明 virtual bool resignFirstResponder(); 返回值:bool 参数: 解释:隐藏键盘第一响应者状态 virtual bool becomeFirstResponder(); 返回值:bool 参数: 解释:弹出键盘第一响应者状态 static CATextField* createWithFrame(const DRect& frame); 返回值:CATextField* 参数:
解释:创建,并指定其Frame static CATextField* createWithCenter(const DRect& rect); 返回值:CATextField* 参数:
解释:创建,并设置其Center 返回值:bool 参数: 解释:初始化 void setMarginImageLeft(const DSize& imgSize,const std::string& filePath); 返回值:void 参数:
解释:设置左边缘图像 void setMarginImageRight(const DSize& imgSize,const std::string& filePath); 返回值:void 参数:
解释:设置右边缘图像 void setBackgroundImage(CAImage* image); 返回值:void 参数:
解释:设置背景图像 类说明 CATextField的数据代理 CATextFieldDelegate 方法(点击查看方法介绍)
CATextFieldDelegate 方法说明 virtual bool textFieldShouldBeginEditing(CATextField * sender) 返回值:bool 参数:
解释:开始编辑时触发 virtual bool textFieldShouldEndEditing(CATextField * sender) 返回值:bool 参数:
解释:结束编辑时触发(如果发件人不想从时间中分离,返回true) virtual void textFieldShouldReturn(CATextField *sender){} 返回值:void 参数:
解释:返回时触发 virtual void keyBoardHeight(CATextField *sender, int height){} 返回值:void 参数:
解释:键盘高度 virtual bool textFieldShouldChangeCharacters(CATextField* sender, unsigned int location, unsigned int lenght, const std::string& changedText); 返回值:bool 参数:
解释:textField文字更改后触发(返回true表示修改生效,返回false表示不做修改,textField的内容不变) 类说明: CAAutoCollectionView同CATableView类似,主要用于数据的展示,实现了tableView的基本功能,同时对tableView拓展,更完美的进行展示数据。 CAAutoCollectionView的使用方法和CATableView比较类似,我们也要分别使用:CAAutoCollectionView、CACollectionViewCell、CAAutoCollectionViewDelegate、CAAutoCollectionViewDataSource来构建。 CAAutoCollectionView是表格视图的容器,是容器的载体。 CACollectionViewCell是表格视图的一个单元(本节后面简称cell)。 CAAutoCollectionViewDelegate是交互代理,响应cell选中和取消状态。 CAAutoCollectionViewDataSource是数据代理,设置Selection个数及Selection包含Item个数。 CAAutoCollectionView 属性(点击查看方法介绍)
CAAutoCollectionView 方法(点击查看方法介绍)
我们本机的示例,不再使用自定义的CACollectionViewCell的方法来实现,我们来看看本节的示例代码: FirstViewController.h内容:
FirstViewController.cpp内容:
CAAutoCollectionView 属性说明 类型:CAAutoCollectionViewDataSource* 解释:添加数据代理,set/get{}。 类型:CAAutoCollectionViewDelegate* 解释:添加交互代理,set/get{}。 类型:CAView* 解释:添加头部视图,set/get{}。 类型:CAView* 解释:添加尾部视图,set/get{}。 类型:unsigned int 解释:设置头部的高度,set/get{}。 类型:unsigned int 解释:设置尾部的高度,set/get{}。 类型:CACollectionViewOrientation 解释:CollectionView方向取向,set/get{}。 类型:CACollectionViewCellHoriAlign 解释:CollectionView的Cell水平对齐,set/get{}。 类型:CACollectionViewCellVertAlign 解释:CollectionView的Cell垂直对齐,set/get{}。 类型:unsigned int 解释:cell水平间隔,set/get{}。 类型:unsigned int 解释:cell垂直间隔,set/get{}。 类型:unsigned int 解释:水平边距,set/get{}。 类型:unsigned int 解释:垂直边距,set/get{}。 类型:bool 解释:允许选择,is{}。 类型:bool 解释:允许多个选择,is{}。 类型:bool 解释:总是顶部的标题,is/set{}。 类型:bool 解释:总是底部的节尾,is/set{}。 CAAutoCollectionView 方法说明 static CAAutoCollectionView* createWithFrame(const DRect& rect); 返回值:CAAutoCollectionView* 参数:
解释:创建,并指定其Frame static CAAutoCollectionView* createWithCenter(const DRect& rect); 返回值:CAAutoCollectionView* 参数:
解释:创建,并指定Color 返回值:bool 参数: 解释:初始化 返回值:void 参数: 解释:重载数据 CACollectionViewCell* dequeueReusableCellWithIdentifier(const char* reuseIdentifier); 返回值:CACollectionViewCell* 参数:
解释:从复用队列中寻找指定标识符的cell virtual void setAllowsSelection(bool var); 返回值:void 参数:
解释:是否开启cell选择 virtual void setAllowsMultipleSelection(bool var); 返回值:void 参数:
解释:是否可以多选cell void setSelectRowAtIndexPath(unsigned int section, unsigned int item); 返回值:void 参数:
解释:通过索引选择一行 void setUnSelectRowAtIndexPath(unsigned int section, unsigned int item); 返回值:void 参数:
解释:通过索引取消选择一行 virtual void setShowsScrollIndicators(bool var); 返回值:void 参数:
解释:设置显示滚动指示器 CACollectionViewCell* cellForRowAtIndexPath(unsigned int section, unsigned int row, unsigned int item); 返回值:CACollectionViewCell* 参数:
解释:根据索引获取显示的cell const CAVector<CACollectionViewCell*>& displayingCollectionCell(); 返回值:CAVector<CACollectionViewCell*>& 参数: 解释:显示CollectionCell CACollectionViewCell* getHighlightCollectionCell(); 返回值:CACollectionViewCell* 参数: 解释:获取高亮显示的collectioncell virtual void switchPCMode(bool var); 返回值:void 参数:
解释:开关PC模式 类说明: CAAutoCollectionViewDataSource是数据代理,设置Selection个数及Selection包含Item个数。 CAAutoCollectionViewDataSource 方法(点击查看方法介绍)
CAAutoCollectionViewDataSource 方法说明 virtual CACollectionViewCell* collectionCellAtIndex(CAAutoCollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int item); 返回值:CACollectionViewCell* 参数:
解释:获取指定cell virtual DSize collectionViewSizeForItemAtIndexPath(CAAutoCollectionView* collectionView, unsigned int section, unsigned int item); 返回值:DSize 参数:
解释: 获取对应的collectionView的Item大小 virtual unsigned int numberOfItemsInSection(CAAutoCollectionView *collectionView, unsigned int section); 返回值:unsigned int 参数:
解释:每个Section里的item数量 virtual unsigned int numberOfSections(CAAutoCollectionView *collectionView); 返回值:unsigned int 参数:
解释:获取collectionView包含的section个数 virtual CAView* collectionViewSectionViewForHeaderInSection(CAAutoCollectionView *collectionView, const DSize& viewSize, unsigned int section); 返回值:CAView* 参数:
解释:headerView的内容 virtual unsigned int collectionViewHeightForHeaderInSection(CAAutoCollectionView *collectionView, unsigned int section); 返回值:unsigned int 参数:
解释:每个section的headerView virtual CAView* collectionViewSectionViewForFooterInSection(CAAutoCollectionView *collectionView, const DSize& viewSize, unsigned int section); 返回值:CAView* 参数:
解释:footerView的内容 virtual unsigned int collectionViewHeightForFooterInSection(CAAutoCollectionView *collectionView, unsigned int section); 返回值:unsigned int 参数:
解释:每个section的footerView virtual void collectionViewWillDisplayCellAtIndex(CAAutoCollectionView* table, CACollectionViewCell* cell, unsigned int section, unsigned int item) {}; 返回值:void 参数:
解释:回调当前将要显示的collectionView 类说明 CAAutoCollectionViewDelegate是交互代理,响应cell选中和取消状态。 CAAutoCollectionViewDelegate 方法(点击查看方法介绍)
CAAutoCollectionViewDelegate 方法说明 virtual void collectionViewDidSelectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item){}; 返回值:void 参数:
解释:选中cell时调用 virtual void collectionViewDidDeselectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item){}; 返回值:void 参数:
解释:取消选择cell时调用 类说明 视频播放器控制。 CAVideoPlayerControlView 属性(点击查看方法介绍)
CAVideoPlayerControlView 方法(点击查看方法介绍)
CAVideoPlayerControlView 属性说明 类型:std::string 解释:标题,set/get{}。 类型:bool 解释:显示后退按钮,set/get{}。 类型:CAVideoPlayerControlViewDelegate* 解释:PlayerControlView代理类,set/get{}。 CAVideoPlayerControlView 方法说明 static CAVideoPlayerControlView* createWithFrame(const DRect& rect); 返回值:CAVideoPlayerControlView* 参数:
解释:创建,并指定其Frame static CAVideoPlayerControlView* createWithCenter(const DRect& rect); 返回值:CAVideoPlayerControlView* 参数:
解释:创建,并设置其Center void initWithPath(const std::string& szPath); 返回值:void 参数:
解释:初始化并制定文件路径 void initWithUrl(const std::string& szUrl); 返回值:void 参数:
解释:初始化并制定Url 类说明 CAVideoPlayerControlView的代理类 CAVideoPlayerControlViewDelegate 方法(点击查看方法介绍)
CAVideoPlayerControlViewDelegate 方法说明 virtual void onBackButtonClicked(CAVideoPlayerControlView *playerControlView) {}; 返回值:void 参数:
解释:点击后退按钮调用 类说明 Web视图控件 CAWebView 属性(点击查看方法介绍)
CAWebView 方法(点击查看方法介绍)
CAWebView 属性说明 类型:CAWebViewDelegate* 解释:WebView代理类,set/get{}。 CAWebView 方法说明 返回值:bool 参数: 解释:初始化
static CAWebView* createWithFrame(const DRect& rect); 返回值:CAWebView* 参数:
解释:创建,并指定其Frame static CAWebView* createWithCenter(const DRect& rect); 返回值:CAWebView* 参数:
解释:创建,并设置其Center void setJavascriptInterfaceScheme(const std::string &scheme); 返回值:void 参数:
解释:JavaScript接口方法 void loadHTMLString(const std::string &string, const std::string &baseURL); 返回值:void 参数:
解释:加载HTML字符串 void loadURL(const std::string &url); 返回值:void 参数:
解释:加载URL void loadFile(const std::string &fileName); 返回值:void 参数:
解释:加载File 返回值:void 参数: 解释:停止加载 返回值:void 参数: 解释:重载 返回值:bool 参数: 解释:可以后退 返回值:bool 参数: 解释:可以前进 返回值:void 参数: 解释:返回 返回值:void 参数: 解释:前进 std::string evaluateJS(const std::string &js); 返回值:std::string 参数:
解释:evaluateJS 返回值:std::string 参数: 解释:获取HTMLSource void setScalesPageToFit(const bool scalesPageToFit); 返回值:void 参数:
解释:设置页面适度大小 void hideNativeWebAndShowImage(); 返回值:void 参数: 解释:隐藏本地网络和显示图像 返回值:void 参数: 解释:显示本地网络 virtual void update(float dt); 返回值:void 参数:
解释:更新 返回值:void 参数: 解释:显示 virtual void setVisible(bool visible); 返回值:void 参数:
解释:设置可见 void setActivityView(CAActivityIndicatorView* loadingView); 返回值:void 参数:
解释:设置活动视图 void showLoadingActivity(bool show); 返回值:void 参数:
解释:显示加载活动 类说明 CAWebView代理类 CAWebViewDelegate 方法
CAWebViewDelegate 方法说明 virtual bool onShouldStartLoading(CAWebView* pWebView, const std::string &url); 返回值: 参数:
解释:在应开始加载时触发 virtual void onDidFinishLoading(CAWebView* pWebView, const std::string &url); 返回值:void 参数:
解释:在完成加载时触发 virtual void onDidFailLoading(CAWebView* pWebView, const std::string &url); 返回值:void 参数:
解释:在未加载时触发 virtual void onJSCallback(CAWebView* pWebView, const std::string &message); 返回值: 参数:
解释:在JS调用返回时触发 类说明 显示一张Gif图片 CAGifView 方法
CAGifView 方法说明 static CAGifView* createWithFrame(const DRect& rect); 返回值:CAGifView* 参数:
解释:创建,并指定其Frame static CAGifView* createWithCenter(const DRect& rect); 返回值:CAGifView* 参数:
解释: 创建,并设置其Center static CAGifView* createWithGif(CAGif* gif); 返回值: 参数:
解释:创建,并指定Gif 返回值:bool 参数: 解释:初始化 virtual bool initWithGif(CAGif* gif); 返回值:bool 参数:
解释:初始化指定Gif virtual void setFrame(DRect rect); 返回值:void 参数:
解释:设置Frame virtual void setCenter(DRect rect); 返回值:void 参数:
解释:设置Center 返回值: 参数:
解释:设置Gif 返回值:void 参数:
解释:设置Times void setRepeatForever(bool repeatForever); 返回值:void 参数:
解释:设置Gif永远重复 返回值:bool 参数: 解释:查看Gif是否永远重复 类说明 图像渲染 CARenderImage 方法
CARenderImage 方法说明 返回值:void 参数: 解释:访问 返回值:void 参数: 解释:显示 static CARenderImage* create(int w ,int h, CAImage::PixelFormat eFormat, GLuint uDepthStencilFormat); 返回值:CARenderImage* 参数:
解释:创建,指定Format和DepthStencilFormat static CARenderImage* create(int w, int h, CAImage::PixelFormat eFormat); 返回值:CARenderImage* 参数:
解释:创建,指定Format static CARenderImage* create(int w, int h); 返回值:CARenderImage* 参数:
解释:创建 bool initWithWidthAndHeight(int w, int h, CAImage::PixelFormat eFormat); 返回值:bool 参数:
解释:初始化指定格Format bool initWithWidthAndHeight(int w, int h, CAImage::PixelFormat eFormat, GLuint uDepthStencilFormat); 返回值:bool 参数:
解释:初始化指定格Format和DepthStencilFormat void printscreenWithView(CAView* view); 返回值:void 参数:
解释:截图并指定view void printscreenWithView(CAView* view, DPoint offset); 返回值:void 参数:
解释:截图并指定view和offset void printscreenWithView(CAView* view, const CAColor4B& backgroundColor); 返回值:void 参数:
解释:截图并指定view和backgroundColor void printscreenWithView(CAView* view, DPoint offset, const CAColor4B& backgroundColor); 返回值:void 参数:
解释:截图并指定view、offset和backgroundColor void clear(const CAColor4B& backgroundColor); 返回值:void 参数:
解释:清除背景颜色 void clearDepth(float depthValue); 返回值:void 参数:
解释:清除depthValue void clearStencil(int stencilValue); 返回值:void 参数:
解释:清除Stencil bool saveToFile(const char* szFilePath); 返回值:bool 参数:
解释:保存到文件 void listenToBackground(CAObject *obj); 返回值:void 参数:
解释:监听背景 void listenToForeground(CAObject *obj); 返回值:void 参数:
解释:监听前景 unsigned int getClearFlags() const; 返回值:unsigned int 参数: 解释:获取清除的标志 void setClearFlags(unsigned int uClearFlags); 返回值:void 参数:
解释:设置清除的标志 const CAColor4F& getClearColor() const; 返回值:const CAColor4F& 参数: 解释:获取清除的颜色 void setClearColor(const CAColor4F &clearColor); 返回值:void 参数:
解释:设置清除的颜色 返回值:float 参数: 解释:获取清除的深度 void setClearDepth(float fClearDepth); 返回值:void 参数:
解释:设置清除的深度 返回值:int 参数: 解释:获取清除的模板 void setClearStencil(float fClearStencil); 返回值:void 参数:
解释:设置清除的模板 返回值:bool 参数: 解释:查看是否自动显示 void setAutoDraw(bool bAutoDraw); 返回值:void 参数:
解释:设置自动显示 类说明 分段按钮,segmentedControl由一个或多个segment组成,点击不同段得到不同的信息,每次只能选择一段。 基类 CAControl CASegmentedControl 属性(点击查看方法介绍)
CASegmentedControl 方法(点击查看方法介绍) CASegmentedControl 属性说明 类型:CAView* 解释:背景视图,get{}。 CASegmentedControl 方法说明 static CASegmentedControl* create(unsigned int itemsCount); 返回值:CASegmentedControl* 参数:
解释:创建,并指定itemsCount,默认Frame为(0,0,0,0) static CASegmentedControl* createWithFrame(const DRect& rect, unsigned int itemsCount); 返回值:CASegmentedControl* 参数:
解释:创建,并指定其Frame和itemsCount,默认Frame为(0,0,0,0) static CASegmentedControl* createWithCenter(const DRect& rect, unsigned int itemsCount); 返回值:CASegmentedControl* 参数:
解释:创建,并指定其Create和itemsCount,默认Create为(0,0,0,0) 返回值:bool 参数: 解释:初始化 void setBackgroundImage(CAImage* image); 返回值:void 参数:
解释:设置背景图像 void setTitleColor(const CAColor4B& color); 返回值:void 参数:
解释:设置标题颜色 const CAColor4B& getTitleColor(); 返回值:CAColor4B& 参数: 解释:获取标题颜色 void setImageColor(const CAColor4B& color); 返回值:void 参数:
解释:设置图像颜色 const CAColor4B& getImageColor(); 返回值:CAColor4B& 参数: 解释:获取图像颜色 void insertSegmentWithTitleAtIndex(const std::string& title, int index); 返回值:void 参数:
解释:根据传递的参数,插入segment并设置标题,标题默认为空。 void insertSegmentWithImageAtIndex(CAImage* image, int index, CAControlState controlState); 返回值:void 参数:
解释:根据传递的参数,插入segment并设置前景图片,标题默认为空。 void removeSegmentAtIndex(int index); 返回值:void 参数:
解释:移除segment的某一段 void setTitleFontName(std::string titleName); 返回值:void 参数:
解释:设置标题字体 void setTitleFontSize(float titleSize); 返回值:void 参数:
解释:设置标题大小 void setSegmentItemBackgroundImage(CAImage* image); 返回值:void 参数:
解释:设置Segment背景图像 void addTarget(CAObject* target, SEL_CASegmentedControl selector); 返回值:void 参数:
解释:添加点击事件 void setSelectedAtIndex(int index); 返回值:void 参数:
解释:设置Selected的index 返回值:int 参数: 解释:获取Selected的index 返回值:int 参数: 解释:获取segment的数量 void setTitleForSegmentAtIndex(const std::string& title, int index); 返回值:void 参数:
解释:设置segment标题,通过index std::string getTitleForSegmentAtIndex(int index); 返回值:std::string 参数:
解释:获取segment标题,通过index void setImageForSegmentAtIndex(CAImage* image, int index, CAControlState controlState); 返回值:void 参数:
解释:设置segment图像和状态,通过index CAImage* getImageForSegmentAtIndex(int index); 返回值:CAImage* 参数:
解释:获取segment图像,通过index void setWidthForSegmentAtIndex(float width, int index); 返回值:void 参数:
解释:设置segment的宽度,通过index float getWidthForSegmentAtIndex(int index); 返回值:float 参数:
解释:获取segment的宽度,通过index void setContentOffsetForSegmentAtIndex(DSize offset, int index); 返回值:void 参数:
解释:设置segment偏移量,通过index DSize getContentOffsetForSegmentAtIndex(int index); 返回值:DSize 参数:
解释:获取segment偏移量,通过index void setEnabledForSegmentAtIndex(bool isEnable, int index); 返回值:void 参数:
解释:设置segment的段是否启用,通过index bool isEnabledForSegmentAtIndex(int index); 返回值:bool 参数:
解释:通过index 查看segment的段是否启用 void setImageSizeAtIndex(DSize size, int index); 返回值:void 参数:
解释: 设置图像大小和index void setImageSelectedColor(const CAColor4B& color); 返回值:void 参数:
解释:设置图像Selected颜色 const CAColor4B& getImageSelectedColor(); 返回值:CAColor4B& 参数: 解释:获取图像Selected颜色 void setTintColor(const CAColor4B& color); 返回值:void 参数:
解释:设置标题颜色 void setTitleSelectedColor(const CAColor4B& color); 返回值:void 参数:
解释:设置标题Selected颜色 const CAColor4B& getTitleSelectedColor(); 返回值:CAColor4B& 参数: 解释:获取标题Selected颜色 类说明 选择器控件,pickerView至少包括一个组件(component),每个组件包括供选择的子项(row)。 基类 CAView,CATableViewDataSource CAPickerView 属性(点击查看方法介绍)
CAPickerView 方法(点击查看方法介绍)
CAPickerView 属性说明 类型:CAPickerViewDelegate* 解释:pickerView的选中事件代理,包含一个选中时触发的接口,public get/set{}。 类型:CAPickerViewDataSource* 解释:pickerView的数据代理,详细接口请参考CAPickerViewDataSource代理类,public get/set{}。 类型:float 解释:备选项的字体大小,public get/set{}。 类型:float 解释:选中项的字体大小,public get/set{}。 类型:CAColor4B 解释:备选项的字体颜色,public get/set{}。 类型:CAColor4B 解释:选中项的字体颜色,public get/set{}。 类型:CAColor4B 解释:选框的边框颜色,public get/set{}。 CAPickerView 方法说明 static CAPickerView* create(); 返回值:CAPickerView* 参数: 解释:创建,默认Frame为(0,0,0,0) static CAPickerView* createWithFrame(const DRect& rect); 返回值:CAPickerView* 参数:
解释:创建,并指定其Frame,默认Frame为(0,0,0,0) static CAPickerView* createWithCenter(const DRect& rect); 返回值:CAPickerView* 参数:
解释:创建,并设置其Center,默认Center为(0,0,0,0) 返回值:bool 参数: 解释:初始化 返回值:void 参数: 解释:进入 返回值:void 参数: 解释:退出 返回值:void 参数: 解释:访问 virtual bool initWithFrame(const DRect& rect); 返回值:bool 参数:
解释:初始化,并指定其Frame virtual bool initWithCenter(const DRect& rect); 返回值:bool 参数:
解释:初始化,并指定其Center virtual int numberOfComponents(); 返回值:int 参数: 解释:获取组件的数量 virtual int numberOfComponents() 返回值:int 参数: 解释:返回pickerView中component的数量 virtual int numberOfRowsInComponent(unsigned int component) 返回值:int 参数:
解释:返回pickerView中component的数量 virtual CCSize rowSizeForComponent(unsigned int component) 返回值:CCSize 参数:
解释:获取指定组件的size virtual CAView* viewForRow(unsigned int row, unsigned int component) 返回值:CAView* 参数:
解释:获取row virtual void reloadAllComponents() 返回值:void 参数: 解释:刷新所有的组件,创建pickerView时必须手动刷新一次pickerView。 示例:
virtual void reloadComponent(unsigned int component, bool bReload = true) 返回值:void 参数:
解释:刷新指定组件 virtual void selectRow(unsigned int row, unsigned int component, bool animated = false) 返回值:void 参数:
解释:指定选中的row virtual int selectedRowInComponent(unsigned int component) 返回值:int 参数:
解释:获取当前被选中的row virtual void setBackgroundColor(const CAColor4B& color); 返回值:void 参数:
解释:设置背景颜色 类说明 CAPickerView的数据代理 CAPickerViewDataSource 方法(点击查看方法介绍)
CAPickerViewDataSource 方法说明 virtual unsigned int numberOfComponentsInPickerView(CAPickerView* pickerView) = 0 返回值:unsigned int 参数:
类型 参数名 说明 CAPickerView* pickerView 当前pickerView 解释:设定component的数量 virtual unsigned int numberOfRowsInComponent(CAPickerView* pickerView, unsigned int component) = 0 返回值:unsigned int 参数:
解释:设定component中row的数量 virtual float widthForComponent(CAPickerView* pickerView, unsigned int component) {return 0;} 返回值:float 参数:
解释:设定component的宽
virtual float rowHeightForComponent(CAPickerView* pickerView, unsigned int component) {return 0;} 返回值:float 参数:
解释:设定row的高
virtual CCString* titleForRow(CAPickerView* pickerView, unsigned int row, unsigned int component) {return NULL;} 返回值:CCString* 参数:
解释:设定row的显示内容
virtual CAView* viewForRow(CAPickerView* pickerView, unsigned int row, unsigned int component) {return NULL;} 返回值:CAView* 参数:
解释:设定row的显示内容
virtual CAView* viewForSelect(CAPickerView* pickerView, unsigned int component, const CCSize& size) {return NULL;} 返回值:CAView* 参数:
解释:设定选中row的view 类说明 CAPickerView的滚动事件的代理 CAPickerViewDelegate 方法(点击查看方法介绍)
CAPickerViewDelegate 方法说明 virtual unsigned int numberOfComponentsInPickerView(CAPickerView* pickerView) = 0; 返回值:unsigned int 参数:
解释:获取PickerView的Component数量 virtual unsigned int numberOfRowsInComponent(CAPickerView* pickerView, unsigned int component) = 0; 返回值:unsigned int 参数:
解释:获取PickerView的Component行数 virtual float widthForComponent(CAPickerView* pickerView, unsigned int component) {return 0;} 返回值:float 参数:
解释:PickerView的Component宽度 virtual float rowHeightForComponent(CAPickerView* pickerView, unsigned int component) {return 0;} 返回值:float 参数:
解释:PickerView的Component高度 virtual const char* titleForRow(CAPickerView* pickerView, unsigned int row, unsigned int component) {return NULL;} 返回值:const char* 参数:
解释:PickerView的Row标题 virtual CAView* viewForRow(CAPickerView* pickerView, unsigned int row, unsigned int component) {return NULL;} 返回值:CAView* 参数:
解释:PickerView的背景图像 virtual CAView* viewForSelect(CAPickerView* pickerView, unsigned int component, const DSize& size) {return NULL;} 返回值:CAView* 参数:
解释:PickerView的选中时图像 类说明 活动指示器,即加载动画。 基类 CAView CAActivityIndicatorView 属性(点击查看方法介绍)
CAActivityIndicatorView 方法(点击查看方法介绍)
CAActivityIndicatorView 属性介绍 类型:CAView* 解释:活动指示器的动画视图,动作为重复旋转动画,get/set{}。
类型:CAView* 解释:活动指示器动画的背景视图,get/set{}。
类型:float 解释:最小加载时间,默认为0,如果加载时间小于最小加载时间,则在这期间加载动画不能被停止,get/set{}。 CAActivityIndicatorView 方法说明 返回值:void 参数: 解释:开始运行活动指示器 返回值:void 参数: 解释:停止活动指示器 返回值:bool 参数: 解释:判断活动指示器是否正在运行,即是否有任务等待。 void setTargetOnCancel(CAObject* target, SEL_CallFunc callBack) 返回值:void 参数:
解释:取消活动指示器后的操作,通过回调函数定义操作。 static CAActivityIndicatorView* create(); 返回值:CAActivityIndicatorView* 参数: 解释:创建,默认Frame为(0,0,0,0) static CAActivityIndicatorView* createWithFrame(const DRect& rect); 返回值:CAActivityIndicatorView* 参数:
解释:创建,并指定其Frame,默认Frame为(0,0,0,0) static CAActivityIndicatorView* createWithCenter(const DRect& rect); 返回值:CAActivityIndicatorView* 参数:
解释:创建,并设置其Center,默认Center为(0,0,0,0) 返回值:bool 参数: 解释:初始化 返回值:void 参数: 解释:进入 返回值:void 参数: 解释:退出 返回值:void 参数: 解释:访问 返回值:void 参数: 解释:显示 virtual void setStyle(CAActivityIndicatorViewStyle style); 返回值:void 参数:
解释: 设置活动指示器的类型,枚举值,默认包括四种类型
void setTimesOneCycle(float times); 返回值:void 参数:
解释:设置一个循环周期时间 void setCycleTime(float time); 返回值:void 参数:
解释:设置周期时间 UI编辑器说明: 新添加CACell的布局编辑。 CATableViewCell、CACollectionViewCell和CAWaterfallViewCell都继承CACell。 CACell可单独使用,也可以运用到CATableViewCell、CACollectionViewCell和CAWaterfallViewCell。 UI编辑器CACell布局使用简单介绍: FirstViewController.h文件:
FirstViewController.cpp文件:
UI编辑器Controller布局使用简单介绍: FirstViewController.h文件:
FirstViewController.cpp文件:
类说明 CAViewController是CrossApp中MVC中的C(控制器),它的作用是用于CAView的管理、控制视图及CAViewController之间的通信与协调。CAViewController是所有CrossApp中Controller的基类。 基类 CAContentContainer, CAKeypadDelegate CAViewController 属性(点击查看方法介绍)
CAViewController 方法(点击查看方法介绍)
生命周期 viewDidLoad() //第一次被加载时调用(仅有一次会被调用) viewDidAppear() //显示时被调用(例如TableController切换到显示) viewDidDisappear() //隐藏时被调用(例如TableController切换到其他Controller viewDidUnload() //移除时被调用(仅有一次会被调用) 注意: Window直接加载的CAViewController显示时不会调用viewDidAppear()函数 CAViewController之间的管理 切换 如果CAViewController是直接被CAWindow所加载的,那么它就可以直接使用presentModalViewController(CAViewController* controller, bool animated);来跳转到新的CAViewController,或通过dismissModalViewController(bool animated);对当前的CAViewController关闭。 嵌套 CAViewController是可以相互嵌套管理的,例如CATableController可以管理多个其他的CAViewController. 例如:
CAView的管理 一般我们会把逻辑代码写到viewDidLoad()方法中,我回把所要显示的CAView通过this->getView()->addSubview(CrossApp::CAView *child);添加到m_pView的子节点上。 例如:
CAViewController 属性 类型:std::string 解释:标题。set/get{}。
类型:CANavigationController* 解释:获取NavigationController属性。get{}。 类型:CANavigationBarItem* 解释:获取NavigationBarItem属性。get{}。 类型:CATabBarController* 解释:获取TabBarController。get{}。 类型:CATabBarItem* 解释:获取TabBarItem。get{}。 CAViewController 方法 返回值:bool 参数: 解释:初始化,默认返回true,如果返回false则初始化失败 返回值:const char* 参数: 解释:返回类型的名称 返回值:bool 参数: 解释:当前View是否再运行 void setNavigationBarItem(CANavigationBarItem* item); 返回值:void 参数:
解释:设置CANavigationBarItem属性(只有被CANavigationController管理才会显示) void setTabBarItem(CATabBarItem* item); 返回值:void 参数:
解释:设置CATabBarItem属性(只有被CATableController管理才会显示) void presentModalViewController(CAViewController* controller, bool animated); 返回值:void 参数:
解释:弹出一个CAViewController void dismissModalViewController(bool animated); 返回值:void 参数:
解释:移除CAViewController virtual bool isKeypadEnabled(); 返回值:virtual bool 参数: 解释:是否监听物理返回键(android的Back键或pc的Esc键) virtual void setKeypadEnabled(bool value); 返回值:virtual void 参数:
解释:设置是否监听物理返回键,默认为false
返回值:CAView* 参数: 解释:当前CAViewController的View根节点 virtual CAResponder* nextResponder(); 返回值:CAResponder* 参数: 解释:获得下个监听者 virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent); 返回值:bool 参数:
解释:触摸事件开始时的回调函数
virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent); 返回值:void 参数:
解释:触摸事件中触点移动时的回调函数 virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent); 返回值:void 参数:
解释:触摸事件结束时的回调函数 virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent); 返回值:void 参数:
解释:触摸非正常结束时的回调函数。(例如:电话或锁屏) virtual void viewDidLoad() {}; 返回值:void 参数: 解释:当前控制器的view被加载完毕后调用 virtual void viewDidUnload() {}; 返回值:void 参数: 解释:当前控制器的view被移除掉时调用 virtual void viewDidAppear() {}; 返回值:void 参数: 解释:显示时被调用
virtual void viewDidDisappear() {}; 返回值:void 参数: 解释:隐藏时被调用
virtual void reshapeViewRectDidFinish() {}; 返回值:void 参数: 解释:当前view被修改大小时被自动调用 virtual void keyBackClicked() {}; 返回值:void 参数: 解释:back键响应函数(android平台) virtual void keyMenuClicked() {}; 返回值:void 参数: 解释:menu键响应函数(android平台) virtual void addViewFromSuperview(CAView* node); 返回值:void 参数:
解释:将自己添加到根节点View(例如window,也可是其他View) virtual void removeViewFromSuperview(); 返回值:void 参数: 解释:将自己从根节View点移除 类说明 CADrawerController是易用的侧边抽屉式导航控制器。 基类 CAViewController CADrawerController 方法(点击查看方法介绍)
创建与初始
显示与隐藏
CADrawerController 方法 virtual bool initWithController(CAViewController* leftViewController,CAViewController* rightViewController,float division); 返回值:bool 参数:
解释:初始化 CAViewController* getLeftViewController(); 返回值:CAViewController* 参数: 解释:获得左边的ViewController CAViewController* getRightViewController(); 返回值:CAViewController* 参数: 解释:获得右边的ViewController void showLeftViewController(bool animated); 返回值:void 参数:
解释:显示左边的viewController
void hideLeftViewController(bool animated); 返回值:void 参数:
解释:隐藏左边的viewController bool isShowLeftViewController(); 返回值:bool 参数: 解释:左边是否在显示 类说明 CANavigationController是CAViewController的子类,它的作用是管理多个CAViewController,我们要明白的是CANavigationController是使用堆栈的方式管理的,即我们每往CANavigationController添加一个CAViewController,则进行一次堆栈的操作,每次移除则进行一次出栈操作。 基类 CAViewController, CANavigationBarDelegate CANavigationController 属性(点击查看方法介绍)
CANavigationController 方法(点击查看方法介绍)
创建与初始化
样式属性 可控制样式:barItem位置、标题、左按钮、右按钮
主要了解:CABarButtonItem这个类的样式
管理 初始化
替换
增加
移除
CANavigationController 属性 类型:bool 解释:导航栏隐藏。is{}。 类型:bool 解释:触摸移动。is/set{}。 类型:CAImage*, 解释:导航栏背面图像。set/get{}。 类型:CAColor4B 解释:导航栏背面颜色。set/get{}。 类型:CAColor4B 解释:导航栏标题颜色。set/get{}。 类型:CAColor4B 解释:导航栏按钮颜色。set/get{}。 CANavigationController 方法 virtual bool initWithRootViewController(CAViewController* viewController,CABarVerticalAlignment var = CABarVerticalAlignmentTop); 返回值:bool 参数:
解释:使用CAViewController来初始化,这个是必须的 virtual void replaceViewController(CAViewController* viewController, bool animated); 返回值:void 参数:
解释:替换栈顶的viewController
virtual void pushViewController(CAViewController* viewController, bool animated); 返回值:void 参数:
解释:将新的viewController压入栈顶 CAViewController* popViewControllerAnimated(bool animated); 返回值:CAViewController* 参数:
解释:移除栈顶的viewController void popToRootViewControllerAnimated(bool animated); 返回值:void 参数:
解释:移除根的viewController CAViewController* popFirstViewController(); 返回值:CAViewController* 参数: 解释:移除第一个viewController CAViewController* popViewControllerAtIndex(int index); 返回值:CAViewController* 参数:
解释:根据索引值移除viewController CAViewController* getViewControllerAtIndex(int index); 返回值:CAViewController* 参数:
解释:根据索引值获取viewController CAViewController* getBackViewController(); 返回值:CAViewController* 参数: 解释:返回最后一个ViewController inline unsigned long getViewControllerCount() ; 返回值:unsigned long 参数: 解释:当前栈内viewController总数 virtual void setNavigationBarHidden(bool hidden, bool animated); 返回值:void 参数:
解释:是否隐藏navigationBar void updateItem(CAViewController* viewController); 返回值:void 参数:
解释:更新navigationBarItem virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent); 返回值:bool 参数:
解释:触摸事件开始时的回调函数
virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent); 返回值:void 参数:
解释:触摸事件中触点移动时的回调函数
virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent); 返回值:void 参数:
解释:触摸事件结束时的回调函数 virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent); 返回值:void 参数:
解释:触摸非正常结束时的回调函数。(例如:电话或锁屏) virtual bool isReachBoundaryLeft(); 返回值:virtual bool 参数: 解释:到左边界 virtual bool isReachBoundaryRight(); 返回值:virtual bool 参数: 解释:到右边界 virtual bool isReachBoundaryUp(); 返回值:virtual bool 参数: 解释:到上边界 virtual bool isReachBoundaryDown(); 返回值:virtual bool 参数: 解释:到下边界 类说明 CANavigationBar的代理类,在navigationController中移除栈顶的viewController。 CANavigationBarDelegate 方法(点击查看方法介绍)
CANavigationBarDelegate 方法说明 virtual void navigationPopViewController(CANavigationBar* navigationBar, bool animated) = 0 返回值:void 参数:
解释:将viewControlller从栈顶移除 类说明 每个viewController都具有一个navigationBarItem,在navigationBar中用于标识当前的viewController。 基类 CABarItem CANavigationBarItem 属性(点击查看方法介绍)
CANavigationBarItem 方法(点击查看方法介绍)
CANavigationBarItem 属性介绍 类型:bool 解释:初始化,is/set{}。 类型:CAView* 解释:使用view设置标题,get/set{}。 类型:CAImage* 解释:使用图片设置标题,get/set{}。 类型:CCArray* 解释:navigationBar上,左边添加的按钮的记录数组,只读属性。,get{}。 类型:CCArray* 解释:navigationBar上,右边添加的按钮的记录数组,只读属性。get{}。 类型:bool 解释:是否隐藏navigationBar左边自动生成的返回按钮,is/set{}。 CANavigationBarItem 方法介绍 static CANavigationBarItem* create(const std::string& title); 返回值:CANavigationBarItem* 参数:
解释:创建,并指定标题 bool init(const std::string& title); 返回值:bool 参数:
解释:初始化 void addLeftButtonItem(CABarButtonItem* item) 返回值:void 参数:
解释:通过传递的item参数,自定义导航栏左边按钮 。 void addRightButtonItem(CABarButtonItem* item) 返回值:void 参数:
解释:通过传递的item参数,自定义导航栏右边按钮 。 类说明 导航栏控件,对应于CANavigationController,一般不单独使用,交由navigationController管理,实现App的层次结构。 基类 CAView CANavigationBar 属性(点击查看方法介绍)
CANavigationBar 方法(点击查看方法介绍)
效果图 CANavigationBar 属性说明 类型:CAView 解释:背景图片,get{}。 类型:CAColor4B 解释:标题颜色,get{}。 类型:CAColor4B 解释:按钮颜色,get{}。 类型:CANavigationBarDelegate* 解释:代理,set/get{}。 类型:CANavigationBarItem* 解释:子项数组,get{}。 CANavigationBar 方法说明 virtual bool init(const DSize& size = DSizeZero); 返回值:bool 参数:
解释:初始化,并指定size static CANavigationBar* create(const DSize& size = DSizeZero); 返回值:CANavigationBar* 参数:
解释:创建,并指定Dsize virtual void setBackGroundView(CAView* var); 返回值:void 参数:
解释:设置背景图片 virtual void setTitleColor(const CAColor4B& color); 返回值:void 参数:
解释:设置标题颜色 virtual void setButtonColor(const CAColor4B& color); 返回值:void 参数:
解释:设置按钮颜色 virtual void setItem(CANavigationBarItem* item); 返回值:void 参数:
解释:设置子项数组 类说明 视图管理器的派生类,CATabBarController作为一个特殊的视图管理器,负责协调多个视图管理器之间的工作,是对视图管理器的一种特殊封装。通常当你的程序需要使用一些平行的界面,这里说的平行界面就是程序中的某些功能界面是处于平级的,这些功能界面可以相互切换,tabBarController就很适合这种情况。 基类 CAViewController,CATabBarDelegate,CAPageViewDelegate,CAScrollViewDelegate CATabBarController 属性(点击查看方法介绍)
CATabBarController 方法(点击查看方法介绍)
创建与初始化
样式 可设置样式:文本、位置(上、下)、背景颜色、图片 CATabBarItem控制:文本、默认图片、选中图片
管理 主要是切换:
CATabBarController 属性 类型:bool 解释:TabBar可以滑动切换。is/set{}。
类型:bool 解释:查看TabBar是否隐藏。is{}。 类型:CABarVerticalAlignment 解释:TabBar对齐方式。get{}。 类型:CAImage* 解释:TabBar的背景图像。set/get{}。 类型:CAColor4B 解释:TabBar的背景颜色。set/get{}。 类型:CAImage* 解释:TabBar选择状态下背景的图像。set/get{}。 类型:CAColor4B 解释:TabBar选择状态下背景的颜色。set/get{}。 类型:CAImage* 解释:TabBar选择状态下指标的图像。set/get{}。 类型:CAColor4B 解释:TabBar选择状态下指标的颜色。set/get{}。 类型:CAColor4B 解释:TabBar标题为正常的颜色。set/get{}。 类型:CAColor4B 解释:TabBar标题为选定的颜色。set/get{}。 CATabBarController 方法 virtual bool initWithViewControllers(const CAVector<CAViewController*>& viewControllers,CABarVerticalAlignment var = CABarVerticalAlignmentBottom); 返回值:bool 参数:
解释:初始化CATabBar
bool showSelectedViewController(CAViewController* viewController); 返回值:bool 参数:
解释:设置当前被选中的viewController CAViewController* getViewControllerAtIndex(unsigned int index); 返回值:CAViewController* 参数:
解释:获取当前显示view的viewController的索引值 CAViewController* getSelectedViewController(); 返回值:CAViewController* 参数: 解释:获取当前选中的viewController virtual bool showSelectedViewControllerAtIndex(unsigned int index); 返回值:bool 参数:
解释:根据索引值显示当前选中的viewController virtual unsigned int getSelectedViewControllerAtIndex(); 返回值:unsigned int 参数: 解释:获取当前的被选中的viewController的索引值 virtual void setTabBarHidden(bool hidden, bool animated); 返回值:void 参数:
解释:TabBar的显示与隐藏 void updateItem(CAViewController* viewController); 返回值:void 参数:
解释:更新视图 void showTabBarSelectedIndicator(); 返回值:void 参数: 解释:显示刷新TabBar 类说明 作为CATabBar的代理类,抽象类。 CATabBarDelegate 方法(点击查看方法介绍)
CATabBarDelegate 方法说明 void tabBarSelectedItem(CATabBar* tabBar, CATabBarItem* item, unsigned int index) 返回值:void 参数:
解释:声明一个接口,供子类实现,用于显示和管理tabBar的每个子项所包含的内容。 virtual void tabBarClickToForbidSelectedItem(CATabBar* tabBar, CATabBarItem* item, unsigned int index){}; 返回值:void 参数:
解释:通过索引禁止单击选择子项 类说明 每个viewController都具有一个tabBarItem,在tabBar中标识当前的viewController。 基类 CABarItem CATabBarItem 属性(点击查看方法介绍)
CATabBarItem 方法 (点击查看方法介绍)
CATabBarItem 属性说明 类型:CAImage* 解释:tabBarItem被选中时的图片,get/set{}。 类型:std::string 解释:标签,get/set{}。 CATabBarItem 方法说明 static CATabBarItem* create(std::string title, CAImage* image, CAImage* selectedImage=NULL) 返回值:static CATabBarItem* 参数:
解释:创建一个tabBarItem,并指定它的标题,图片。 bool init(const std::string& title, CAImage* image, CAImage* selectedImage = NULL); 返回值:bool 参数:
解释:初始化 类说明 在移动开发过程中,常常要遇到调用移动设备的需求,如调用摄像头、通信录、wifi列表、蓝牙等等。CrossApp也为我们提供了调用Android和IOS平台设备的统一接口,我们只需要在CrossApp写统一的调用,然后在Android和IOS平台设置相对的权限,这样引擎会根据不同的平台去调用相应的执行,达到一样的效果。 CrossApp引擎中为我们提供设置调用的为CADevice,它在引擎的extensionsdevice目录下。我们想要使用CADevice时,需要引入:#include "CrossAppExt.h"并声明命名空间:USING_NS_CC_EXT; 基类 CAObject CADevice 方法(点击查看方法介绍)
通过上面的函数列表我们可以清楚的知道,CrossApp为我们提供的设备调用函数,但我还有时还需要实现相应的代理,才能获得想要的信息,比如调用摄像机拍照后,我们想要获得照片,那么我们必须要实现CAMediaDelegate代理,这我们才能获得这张照片的问题。 我们这里查看一这些代理函数: 摄像头代理:
蓝牙代理:
WIFI代理:
CADevice 方法介绍 CC_DLL const char* getSystemVersionWithIOS(); 返回值:const char* 参数: 解释:获取IOS系统版本 CC_DLL const char* getAppVersion(); 返回值:const char* 参数: 解释:获取app版本 CC_DLL void openCamera(CAMediaDelegate* target); 返回值:void 参数:
解释:打开相机 CC_DLL void openAlbum(CAMediaDelegate* target); 返回值:void 参数:
解释:打开相册 CC_DLL float getScreenBrightness(); 返回值:float 参数: 解释:获取屏幕亮度 CC_DLL void setScreenBrightness(float brightness); 返回值:void 参数:
解释:设置屏幕亮度 CC_DLL void writeToSavedPhotosAlbum(const std::string &s); 返回值:void 参数:
解释:保存到相册 CC_DLL std::vector<CAAddressBookRecord> getAddressBook(); 返回值:std::vector<CAAddressBookRecord> 参数: 解释:获取通信录 CC_DLL void updateVersion(const std::string &url ,unsigned int versionNumber ,const std::string &appId); 返回值:void 参数:
解释:更新版本 CC_DLL CANetWorkType getNetWorkType(); 返回值:CANetWorkType 参数: 解释:获取网络类型 CC_DLL void getWifiListWithAndroid(CAWifiDelegate *target); 返回值:void 参数:
解释:获取WiFi列表(Android) CC_DLL void setVolume(float sender, int type); 返回值:void 参数:
解释:设置音量 CC_DLL float getVolume(int type); 返回值:float 参数:
解释:获取音量 CC_DLL void OpenURL(const std::string &url); 返回值:void 参数:
解释:打开网址(调用浏览器打开网址) CC_DLL float getBatteryLevel(); 返回值:float 参数: 解释:获取电池电量 CC_DLL bool isNetWorkAvailble(); 返回值:bool 参数: 解释:查看是否连接到网络 CC_DLL void sendLocalNotification(const char* title, const char* content, unsigned long time); 返回值:void 参数:
解释:发送本地通知 CC_DLL CAWifiInfo getWifiConnectionInfo(); 返回值:CAWifiInfo 参数: 解释:获取WiFi连接信息 CC_DLL void initBlueTooth(CABlueToothDelegate *target); 返回值:void 参数:
解释:初始化蓝牙 CC_DLL void setBlueToothType(CABlueToothType type); 返回值:void 参数:
解释:设置蓝牙类型
CC_DLL void startGyroscope(CAGyroDelegate* delegate); 返回值:void 参数:
解释:开始陀螺仪 CC_DLL void setGyroInterval(float interval); 返回值:void 参数:
解释:陀螺间隔 返回值:void 参数: 解释:停止陀螺仪 类说明 在CrossApp中提供了自带的存储类:CAUserDefault,适合存储数据量比较小,结构比较简单的数据。如果你需要存储大量的复杂数据,建议使用SQlite3比较合适。 CAUserDefault 方法 (点击查看方法介绍)
存储代码如下:
读取示例代码:
CAUserDefault 方法 void setBoolForKey(const char* pkey,bool valuer) 返回值:void 参数:
解释:根据pkey存储一个bool类型 void setIntegerForKey(const char* pkey,int valuer) 返回值:void 参数:
解释:根据pkey存储一个int类型 void setFloatForKey(const char* pkey,float valuer) 返回值:void 参数:
解释: 根据pkey存储一个float类型 void setDoubleForKey(const char* pkey,double valuer) 返回值:void 参数:
解释: 根据pkey存储一个double类型 void setStringForKey(const char* pkey, const std::string & value) 返回值:void 参数:
解释: 根据pkey存储一个string类型 bool getBoolForKey(const char* pKey) 返回值:bool 参数:
解释: 根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回false bool getBoolForKey(const char* pKey,bool defaultValue) 返回值:bool 参数:
解释: 根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue int getIntegerForKey(const char* pKey) 返回值:int 参数:
解释:根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回0 int getIntegerForKey(const char* pKey, int defaultValue) 返回值:int 参数:
解释: 根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue float getFloatForKey(const char* pKey) 返回值:float 参数:
解释: 根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回0.0f float getFloatForKey(const char* pKey,float defaultValue) 返回值:float 参数:
解释:根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue double getDoubleForKey(const char* pKey) 返回值:double 参数:
解释: 根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回0.0 double getDoubleForKey(const cha * pKey,double defaultValue) 返回值:double 参数:
解释: 根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue 返回值:void 参数: 解释: 存储到UserDefault.xml,不写的话不会存入 const string& getXMLFilePath(); 返回值:const string& 参数: 解释: 获得UserDefault.xml的存储路径 std::string getStringForKey(const char* pKey); 返回值: 参数:
解释:根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回"" std::string getStringForKey(const char* pKey, const std::string & defaultValue); 返回值: 参数:
解释:根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue 在CrossApp中,简单数据存储,可以使用CAUserDefault。那么如何存储大量,不规则的数据?我们可以使用SQLite数据库存储数据。SQLite是使用非常广泛的嵌入式数据库,它有小巧 、高效、跨平台、开源免费和易操作的特点。 SQLite数据库是使用C语言来编写的,在CrossApp中使用也是非常容易的。
//创建数据库表的sql语句
查询
删除
注意 使用sqlite一定要注意的内存管理问题,那就是打开数据库之后,数据操作完成之后,一定要关闭数据库,否侧会造成内存泄漏。
SQlite保存路径 Android:
IOS: 位于程序沙盒的文档目录下
CrossApp使用lib_json来解析json文件。lib_json已经加入了libExtensions下,我们在CrossApp中使用非常的便捷。 首先引入头文件
通过上面的注释,我们可以很清楚的了解函数的意义。下面我们开始生成Json数据和解析Json数据。 Json数据生成
上面的打印结果:
Json数据解析 有时候我们需要解析Resources目录下的json文件,首先我们就需要将json文件拷贝到Resources目录下。我们将下面的Json格式文件拷贝到Resources目录下命名为info.json.
我们在程序中添加以下代码对其解析:
CrossAppy已经加入了tinyxml2库用于xml解析。#include "CrossApp.h"时候已经包含tinyxml2.h无须再引入头文件,这样我们就能在开发时方便的生成和解析xml文件。 xml文档生成 命名空间
生成xml代码
生成XML如下:
下面我们就来解析一下上面生成的XML文档 解析代码:
打印结果:
注意: tinyxml在android上解析assert文件夹下会有问题,解决方式如下:
CrossApp为我们封装了http的网络框架,其文件在CrossApp引擎包的extensions etwork文件下的 HttpClient、HttpRequest 、HttpResponse。 进行一次http交互,需要涉及的有三个类: HttpRequest 用来描述一个请求。 HttpResponse 用来描述对应请求的响应。 HttpClient是一个单例模式的类,它的职责就是负责将收到的HttpRequest对象push到发送队列中,并发送一个信号量驱动工作线程工作,工作线程再将收到的数据封装成一个HttpResponse对象push接收队列,并启用调度来派送数据。 引用头文件:
请求
接收
本节贴出如何通过http请求网络图片,并绘制到屏幕上 发送请求
接受图片
如果成功,将会看到9秒社团的logo。 类说明 CAViewAnimation 方法(点击查看方法介绍)
基本用法 这是CAViewAnimation最基本的用法,beginAnimations和commitAnimations函数都是成对出现的,上一段代码就能够实现让CAView放大5倍的动画效果,虽然我们没有设置它的时间,但默认时间为0.2秒
我们可以根据自己的需求,定制更多的属性来实现我们想要的动画效果。这是CAViewAnimation最基本的用法,beginAnimations和commitAnimations函数都是成对出现的,上一段代码就能够实现让CAView放大5倍的动画效果,虽然我们没有设置它的时间,但默认时间为0.2秒 动画的嵌套
多个CAViewAnimation之间可以嵌套使用,可以设置不同的时间、延时、反函数及回调等。当一定要注意View属性改变的位置,要写在对应的嵌套层级。 监听与回调 开始回调函数如下
注意:回调的第二个参数“void* context”就是CAViewAnimation::beginAnimations("animation1", NULL);传入的第二个参数(我们这里传的是NULL),它本身是一个void指针类型,使用时候需要类型转换。开始回调函数如下 例如:
这个样我们就可以获得Label并改变其属性,当然我们可以传入其他类型的参数。
方法二:回调 CAViewAnimation::beginAnimations( "animation1" , NULL); //开始 /* *CAView属性的改变:缩放、位置、旋转、透明度等等. *例如:label->setScale(5); */ //结束回调,在Animation结束时调用 CAViewAnimation::setAnimationDidStopSelector( this , CAViewAnimation0_selector(FirstViewController::callbackStopAnimation0)); CAViewAnimation::commitAnimations(); //结束 在回调函数里实现另一个Animation void FirstViewController::callbackStopAnimation0() { CAViewAnimation::beginAnimations( "NextAnimation" , NULL); //开始 /* *CAView属性的改变:缩放、位置、旋转、透明度等等. *例如:label->setRotation(180); */
宏名:CALLBACK_BIND_1 宏定义:#define CALLBACK_BIND_1(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, ##__VA_ARGS__) 解释:这是回调宏定义,__selector__代表回调方法, __target__代表目标对象, CALLBACK_BIND_0表示回调方法没有参数,CALLBACK_BIND_1表示回调方法有一个参数,以此类推 示例代码:
宏名:CC_LISTENING_FUNCTION 宏定义: #define CC_LISTENING_FUNCTION(FUNCTION, VARNAME) protected: std::function<FUNCTION> m_ob##VARNAME{nullptr}; public: void on##VARNAME(const std::function<FUNCTION>& var){ m_ob##VARNAME = var; } 解释:主要替代delegate,之前的需要先设置代理,然后实现代理中的方法,现在就可以直接实现方法,方便、简洁。 FUNCTION代表回调的方法,VARNAME代表类中的方法。 示例:
判断平台的宏: #define CC_PLATFORM_UNKNOWN 0 // 未知平台 #define CC_PLATFORM_IOS 1 // 苹果手机 #define CC_PLATFORM_ANDROID 2 // 安卓手机 #define CC_PLATFORM_WIN32 3 // Windows系统 #define CC_PLATFORM_LINUX 5 // LINUX 系统 #define CC_PLATFORM_BADA 6 // 三星智能手机操作系统 #define CC_PLATFORM_MAC 8 // 苹果的Mac系统 #define CC_PLATFORM_EMSCRIPTEN 10 // EMSCRIPTEN系统 #define CC_PLATFORM_WINRT 12 // windows rt #define CC_PLATFORM_WP8 13 // Windows Phone 8系统 CC_TARGET_PLATFORM用于来判断平台。 下面来看一个通过判断平台打开网址的示例:
类说明 视图类CAView是整个CrossApp引擎最基本的类,负责将各式各样的界面呈现出来,我们在App中所能看见的的一切界面其实就是一个个CAView的组合。CAView负责在屏幕上定义矩形区域,在展示用户界面及响应用户界面交互方面发挥关键作用。每个视图对象要负责渲染试图矩形区域中的内容,并响应该区域内发生的操作事件,视图是应用程序用户交互的重要机制。 除了显示内容和处理事件之外,试图还可以管理一个或多个子视图。我们可以在一个view上面添加多个子view,而作为父view,即父节点,负责管理其直接子视图,并根据需要调整他们的位置和尺寸,以及响应他们没有处理的事件。 基类 CAResponder CAView 方法(点击查看方法介绍) CAView 方法说明 返回值:CAView* 参数: 解释:创建 static CAView* createWithFrame(const DRect& rect); 返回值:CAView* 参数:
解释:创建,并指定其Frame static CAView* createWithFrame(const DRect& rect, const CAColor4B& color4B); 返回值:CAView* 参数:
解释:创建,并指定Frame和Color static CAView* createWithCenter(const DRect& rect); 返回值:CAView* 参数:
解释:创建,并设置其Center static CAView* createWithCenter(const DRect& rect, const CAColor4B& color4B); 返回值:CAView* 参数:
解释:创建,并设置其Center和Color static CAView* createWithLayout(const DLayout& layout); 返回值:CAView* 参数:
解释:创建,并设置其Layout static CAView* createWithLayout(const DLayout& layout, const CAColor4B& color4B); 返回值:CAView* 参数:
解释:创建,并设置其Layout和Color static CAView* createWithColor(const CAColor4B& color4B); 返回值:CAView* 参数:
解释:创建,并指定Color 返回值:bool 参数: 解释:初始化 virtual bool initWithFrame(const DRect& rect); 返回值:bool 参数:
解释:初始化,并指定其Frame virtual bool initWithCenter(const DRect& rect); 返回值:bool 参数:
解释:初始化,并指定其Center virtual bool initWithLayout(const DLayout& layout); 返回值:bool 参数:
解释:初始化,并指定其Layout virtual bool initWithColor(const CAColor4B& color4B); 返回值:bool 参数:
解释:初始化,并指定其Color const char* description(void); 返回值:char* 参数: 解释:描述 virtual void setZOrder(int zOrder); 返回值:void 参数:
解释:zOrder轴值 virtual void _setZOrder(int z); 返回值:void 参数:
解释:z轴值 返回值:int 参数: 解释:获取z轴值 virtual void setVertexZ(float vertexZ); 返回值:void 参数:
解释:顶点z轴值 返回值:float 参数: 解释:获取顶点z轴值 virtual void setScaleX(float fScaleX); 返回值:void 参数:
解释:设置X轴缩放 返回值:float 参数: 解释:获取X轴缩放 virtual void setScaleY(float fScaleY); 返回值:void 参数:
解释:设置Y轴缩放 返回值:float 参数: 解释:获取Y轴缩放 virtual void setScale(float scale); 返回值:void 参数:
解释:设置缩放 返回值:float 参数: 解释:获取缩放 virtual void setScale(float fScaleX,float fScaleY); 返回值:void 参数:
解释:设置缩放,并指定其X轴Y轴 virtual void setSkewX(float fSkewX); 返回值:void 参数:
解释:设置X倾斜 返回值:float 参数: 解释:获取X倾斜 virtual void setSkewY(float fSkewY); 返回值:void 参数:
解释:设置Y倾斜 返回值:float 参数: 解释:获取Y倾斜 void setAnchorPoint(const DPoint& anchorPoint); 返回值:void 参数:
解释:设置锚点 const DPoint& getAnchorPoint(); 返回值:DPoint& 参数: 解释:获取锚点 void setAnchorPointInPoints(const DPoint& anchorPointInPoints); 返回值:void 参数:
解释:设置锚点的点 const DPoint& getAnchorPointInPoints(); 返回值:DPoint& 参数: 解释:获取锚点的点 virtual void setFrame(const DRect& rect); 返回值:void 参数:
解释:设置Frame virtual const DRect& getFrame() const; 返回值:DRect& 参数: 解释:获取Frame virtual void setFrameOrigin(const DPoint& point); 返回值:void 参数:
解释:设置Frame轴值 virtual const DPoint& getFrameOrigin(); 返回值:DPoint& 参数: 解释:获取Frame轴值 virtual void setCenter(const DRect& rect); 返回值:void 参数:
解释:设置Center 返回值:DRect 参数: 解释:获取Center virtual void setBounds(const DRect& rect); 返回值:void 参数:
解释:设置边界 virtual DRect getBounds() const; 返回值:DRect 参数: 解释:获取边界 virtual void setCenterOrigin(const DPoint& point); 返回值:void 参数:
解释:设置Center轴值 virtual DPoint getCenterOrigin(); 返回值:DPoint 参数: 解释:获取Center轴值 virtual void setVisible(bool visible); 返回值:void 参数:
解释:设置是否可见 返回值:bool 参数: 解释:查看是否可见 virtual void setRotation(float fRotation); 返回值:void 参数:
解释:设置旋转,并指定角度 返回值:float 参数: 解释:获取旋转角度 virtual void setRotationX(float fRotaionX); 返回值:void 参数:
解释:设置X轴旋转,并指定角度 返回值:float 参数: 解释:获取X周旋转角度 virtual void setRotationY(float fRotationY); 返回值:void 参数:
解释:设置Y轴旋转,并指定角度 返回值:float 参数: 解释:获取Y轴旋转角度 virtual void addSubview(CAView * child); 返回值:void 参数:
解释:将子视图添加进当前视图 virtual void insertSubview(CAView* subview, int z); 返回值:void 参数:
解释:将子视图添加进当前视图,并指定一个Z轴值 virtual CAView * getSubviewByTag(int tag); 返回值:CAView* 参数:
解释:通过 tag 获取子视图 virtual CAView * getSubviewByTextTag(const std::string& textTag); 返回值:CAView* 参数:
解释:通过 TextTag 获取子视图 virtual const CAVector<CAView*>& getSubviews(); 返回值:CAVector<CAView*>& 参数: 解释:获取子视图的集合 virtual unsigned int getSubviewsCount(void) const; 返回值:unsigned int 参数: 解释:获取子视图数量 virtual void setSuperview(CAView* superview); 返回值:void 参数:
解释:设置视图 virtual CAView* getSuperview(); 返回值:CAView* 参数: 解释:获取视图 virtual void removeFromSuperview(); 返回值:void 参数: 解释:从父视图移除 virtual void removeSubview(CAView* subview); 返回值:void 参数:
解释:删除子视图 virtual void removeSubviewByTag(int tag); 返回值:void 参数:
解释:删除子视图,根据tag virtual void removeSubviewByTextTag(const std::string& textTag); 返回值:void 参数:
解释:删除子视图,根据TextTag virtual void removeAllSubviews(); 返回值:void 参数: 解释:移除当前视图的所有子视图 virtual void reorderSubview(CAView * child, int zOrder); 返回值:void 参数:
MVC模式简介 |
HelloCrossApp的工程目录结构 | |
Classes | 存放我们编写的C++代码 |
proj.android | android平台工程配置 |
proj.ios | ios平台工程配置(需要在MacOS下使用xode) |
proj.mac | mac平台工程配置(需要在MacOS下使用xode) |
proj.win32 | win32平台工程配置(用于在win下开发,推荐vs2013) |
Resources | 项目的资源目录(存放:图片、音效、字体等) |
大家打开各自平台使用的工程配置,我以win下vs2013为例子截图
工程配置结构 | |
HelloCrossApp | 我们自己的项目 |
libCocosDenshion | 声音库 |
libCrossApp | CrossApp引擎库 |
libExtensions | 使用的第三方的库(json、sqlit3、network、websockets等) |
打开HelloCrossApp下的Classes目录,看到如下结构:
Classes目录结构 | |
AppDelegate | 项目入口 |
FirstViewController | 项目的CAViewController |
RootWindow | 项目启动的CAWindow |
我在这里引用API给出的CAWindow和CAViewController解释
#ifndef _APP_DELEGATE_H_#define _APP_DELEGATE_H_ #include "CrossApp.h" /**@brief The CrossApp Application.The reason for implement as private inheritance is to hide some interface call by CAApplication.*/ class AppDelegate : private CrossApp::CCApplication{public: AppDelegate(); virtual ~AppDelegate(); /** @brief Implement CAApplication and CCScene init code here. @return true Initialize success, app continue. @return false Initialize failed, app terminate. */ /* 这个函数用于实现CAApplication和CAWindow(CCScene应该为注释的错误,以后版本会修正)的初始化 如果返回true,初始化成功,程序正常运行 如果返回false,初始化失败,程序终止运行 */ virtual bool applicationDidFinishLaunching(); /* @brief The function be called when the application enter background @param the pointer of the application */ /* 当程序进入后台运行时,此函数会被调用(例如,电话) */ virtual void applicationDidEnterBackground(); /* @brief The function be called when the application enter foreground @param the pointer of the application */ /* 当程序从后台切回被激活时调用此函数 */ virtual void applicationWillEnterForeground();};#endif // _APP_DELEGATE_H_
我们再来看看Application.cpp里又都做了什么
#include "AppDelegate.h"#include "RootWindow.h" USING_NS_CC; AppDelegate::AppDelegate(){} AppDelegate::~AppDelegate() { } bool AppDelegate::applicationDidFinishLaunching(){ // initialize director //初始化direction CAApplication* pDirector = CAApplication::getApplication(); //初始化窗口 CCEGLView* pEGLView = CCEGLView::sharedOpenGLView(); pDirector->setOpenGLView(pEGLView); // run //启动 RootWindow入口 pDirector->runWindow(RootWindow::create()); return true;} // This function will be called when the app is inactive. When comes a phone call,it's be invoked toovoid AppDelegate::applicationDidEnterBackground(){ //暂停动画 CAApplication::getApplication()->stopAnimation(); // if you use SimpleAudioEngine, it must be pause //暂停音效,如果你有使用音效,希望程序切到后台音效停止,请解下面代码的注释 // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();} // this function will be called when the app is active againvoid AppDelegate::applicationWillEnterForeground(){ //回复动画 CAApplication::getApplication()->startAnimation(); // if you use SimpleAudioEngine, it must resume here //回复音效,如果你有使用音效,希望程序切到激活状态音效恢复,请解下面代码的注释 // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();}
RootWindow比较简单,我这里就不想详述,我来看一看FirstViewController都做了什么?
首先打开FirstViewController.h文件
//加载函数 一般做初始化UI和逻辑void viewDidLoad();//卸载函数 一般做移除和释放void viewDidUnload();
再来看看FirstViewController.cpp的 vievDidLoad();里的代码:
void FirstViewController::viewDidLoad(){ // Do any additional setup after loading the view from its nib. DRect winRect = this->getView()->getBounds(); //获得屏幕的Bounds(Bounds不收缩放影响) //加载一张图片 CAImageView* imageView = CAImageView::createWithImage(CAImage::create("HelloWorld.png")); //设置图片的Frame显示大小(Frame的值缩放后会被改变) imageView->setFrame(winRect); //将图片添加的到屏幕上面(如果不添加,那么这个ui将不会被渲染,内存也会在下一个loop时被释放) this->getView()->addSubview(imageView); //设置一个文本 CALabel* label = CALabel::createWithCenter(DRect(winRect.size.width*0.5, winRect.size.height*0.5-270, winRect.size.width, 200)); //文本水平方向中间对其 label->setTextAlignment(CATextAlignmentCenter); //文本竖直方向中间对其 label->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter); //设置字体大小(CROSSAPP_ADPTATION_RATIO是用于适配的系数) label->setFontSize(72 * CROSSAPP_ADPTATION_RATIO); //设置文本内容 label->setText("Hello World!"); //设置文本颜色 label->setColor(CAColor_white); //添加到屏幕并设置z轴 this->getView()->insertSubview(label, 1);}
CrossApp是用一种引用计数的方式来管理内存对象,通过CAObject、CAAutoreleasePool、CAPoolManager来完成内存的管理。
CAObject为引用计数类,在其构造函数的时候,CAObject的引用计数为1,但此时并未加入到自动释放池里,所有自动引用计数为0
在使用create创建对象时候,会调用autorelease,将对象放到对象池,CAAutoreleasePool的队列中接受管理。CAObject调用retain()则引用计数会增加1,调用release()引用计数会减少1.
CAAutoreleasePool是引擎初始化时创建了一个默认的自动释放对象列表,并把它加入到CAPoolManager里进行管理。
引擎每次主循环都会有一次CAPoolManager中pool的清理,那些引用计数为0的CAObject都会被释放掉。这就是CrossApp的内
存管理机制。
CAObject
//属性://引用数量unsigned int m_uReference; //自动引用数量unsigned int m_uAutoReleaseCount;
//方法://引用计数+1retain(); //引用计数-1relesase(); //添加到自动释放管理autorelease(); //返回当前的引用计数retainCount();
同时引擎为了方便内存管理,用一些关于内存管理的函数和宏定义。
常见的函数 | |
create(); | 内包含autorelease()调用 |
insertSubview(); | 内包含retain()调用 |
removeSubview(); | 内包含relesase()调用 |
常见的宏 | |
#define CC_SAFE_DELETE(p) | do { if(p) { delete (p); (p) = 0; } } while(0) |
#define CC_SAFE_DELETE_ARRAY(p) | do { if(p) { delete[] (p); (p) = 0; } } while(0) |
#define CC_SAFE_FREE(p) | do { if(p) { free(p); (p) = 0; } } while(0) |
#define CC_SAFE_RELEASE(p) | do { if(p) { (p)->release(); } } while(0) |
#define CC_SAFE_RELEASE_NULL(p) | do { if(p) { (p)->release(); (p) = 0; } } while(0) |
#define CC_SAFE_RETAIN(p) | do { if(p) { (p)->retain(); } } while(0) |
还有专门用于适应CrossApp的数据容器: CAVector、CAList、CADeque、CAMap 其使用方法类似于c++的vector、list、deque、map的用法,其根本不同在于其添加和移除时,遵循CrossApp的内存管理原则。
假如我们有需求,需要我们自己手动管理一个对象指针的内存,那么我们需要,retain()和relesase()在一个类中成对出现,遵循谁负责retain谁就负责relesase的原则。
CrossApp的根类是CAObject,主要分为视图(view)和控制器(controller),view都派生自CAView,controller都派生自CAViewController。
CAView主要分为三类,用于显示文本和图片的view:CALabel、CAImageView、CAScale9ImageView;容器类:CAScrollView、CATableView、CACollectionView;控件类:CAButton、CAAlertView、CASlider、CASwitch、CASegmentedControl等。
CAControllerView包括三个子类:CADrawerController、CATabBarController和CANavigationController,分别实现不同的view管理方式。
下面是CrossApp的主要类结构图。
1.Windows下创建CrossApp工程
使用命令行的方式:在CrossApp的解压目录下CrossApp/tools/project-creator中有一个创建工程的Python脚本,我们使用create_project.py来创建工程。因此在Windows下要求安装Python环境,用于运行create_project.py脚本Python的安装过程很简单,需要注意的是,在安装完成后,需要在系统环境变量”Path”中加入Python的安装路径。
python下载地址:https://www.python.org/downloads/windows
命令行创建工程示例:
使用工具创建:在CrossApp的解压根目录,有一个project-creator.exe创建工程工具,我们可以直接运行这个工具,之后只需要输入工程名和包名就可以创建CrossApp工程。注意,无论使用哪种方式创建工程,包名的字段的首字母不能为数字,否则在Android下会产生错误。
2.Mac下创建CrossApp工程
在Mac下我们通过命令行的方式来创建CrossApp工程,由于Mac自带Python环境,所以直接通过命令行的方式创建工程,创建方式和在Windows下一样,运行create_project.py脚本创建工程。
命令行创建工程示例:
我们这里分别对CAVector、CAList、CADeque、CAMap的常用函数进行说明:
CAVector<CAObject*> ca_vector;//增ca_vector.insert(size_t index, CrossApp::CAObject *object);//插入一个元素到指定位置ca_vector.pushBack(CrossApp::CAObject *object);//在list末尾插入一个元素 //删ca_vector.erase(ca_vector.begin());//删除指定位置的元素ca_vector.erase(ca_vector.begin(),ca_vector.end());//删除指定范围的元素ca_vector.popBack();//删除最后一个元素ca_vector.clear();//删除所有元素 //查ca_vector.empty();//是否含有元素ca_vector.size();//返回vector中的元素个数ca_vector.end();//返回末尾的迭代器ca_vector.begin();//返回指向第一个元素的迭代器ca_vector.front();//返回第一个元素ca_vector.back();//返回最后一个元素 //遍历for (int i = 0; i < ca_vector.size(); i++) { CAObject* obj = ca_vector.at(i);}
CAList<CAObject*> ca_list;//增ca_list.insert(size_t index, CrossApp::CAObject *object);//插入一个元素到指定位置ca_list.pushBack(CrossApp::CAObject *object);//在list末尾插入一个元素ca_list.pushFront(CrossApp::CAObject *object);//在list头部添加一个元素//删ca_list.erase(ca_list.begin());//删除指定位置的元素ca_list.erase(ca_list.begin(),ca_list.end());//删除指定范围的元素ca_list.popBack();//删除最后一个元素ca_list.popFront();//删除第一个元素ca_list.clear();//删除所有元素//查ca_list.size();//返回list中的元素个数ca_list.begin();//返回指向第一个元素的迭代器ca_list.end();//返回末尾的迭代器ca_list.front();//返回第一个元素ca_list.back();//返回最后一个元素//遍历std::list<CAObject*>::iterator it;for (it = ca_list.begin(); it != ca_list.end(); it++) { CAObject* obj = (CAObject*)*it;}
CADeque<CAObject*> ca_deque;//增ca_deque.insert(size_t index, CrossApp::CAObject *object);//插入一个元素到指定位置ca_deque.pushBack(CrossApp::CAObject *object);//在list末尾插入一个元素ca_deque.pushFront(CrossApp::CAObject *object);//在list头部添加一个元素 //删ca_deque.erase(size_t index);//删除指定位置的元素ca_deque.erase(ca_deque.begin()+1, ca_deque.end()-2);//删除指定范围的元素ca_deque.popBack();//删除最后一个元素ca_deque.popFront();//删除第一个元素ca_deque.clear();//删除所有元素 //查ca_deque.size();//返回deque中的元素个数ca_deque.begin();//返回指向第一个元素的迭代器ca_deque.end();//返回末尾的迭代器ca_deque.front();//返回第一个元素ca_deque.back();//返回最后一个元素ca_deque.at(size_t index);//返指定位置的元素 //遍历for (int i = 0; i < ca_deque.size(); i++) { CAObject* obj = ca_deque.at(i);}
CAMap<int, CAObject*> ca_map;//增ca_map.insert(int key, CrossApp::CAObject *object);//增加一个元素键值对 //删ca_map.erase(int key);//通过key删除元素ca_map.clear();//删除所有元素 //查ca_map.empty();//判断mpa是否是空ca_map.contains(int key);//是否有这个key返回boolca_map.getValue(int key);//根据key返回对应的Valuestd::vector<int> vec = ca_map.getKeys();//返回包含所有key的vector //遍历std::map<int, CAObject*>::iterator it;for (it = ca_map.begin(); it != ca_map.end(); ++it) { int key = it->first; CAObject* obj = it->second;}
我们以CAVector为例子做一个内存管理的实验,看在添加和移除元素时,CAObject的引用计数是否发生了变化。CAObject* obj = new CAObject(); CAVector<CAObject*> ca_vector; //打印引用计数CCLog("count:%d",obj->retainCount()); //把obj添加到vector尾部ca_vector.pushBack(obj); //打印引用计数CCLog("count:%d",obj->retainCount()); //把obj移除ca_vector.eraseObject(obj); //打印引用计数CCLog("count:%d",obj->retainCount());
环境需求如下:
①操作系统:windows7以上版本
②开发工具:vs2012以上版本(推荐vs2013)
https://www.microsoft.com/zh-cn/download/details.aspx?id=44921
③Python: 推荐Python2.7版本(可装可不装,如果你要用命令行创建新工程项目就装吧)
=========编译到android所用=========
④ADT(eclipse+androidSDK): adt-bundle-windows
http://pan.baidu.com/s/1dDnvbjj
⑤androidNDK: 推荐android-ndk-r9c
http://pan.baidu.com/s/1o6KmBmq
⑥JDK: jdk for windows就行了
http://pan.baidu.com/s/1sj8BgNr
方法二: Python脚本创建
1.双击安装Python
2.配置环境path
右键计算器(我的电脑)-->属性-->高级系统设置-->环境变量-->系统变量-->双击Path-->在变量值结尾添加:“;C:/Python27”(引号改成你的Python安装路径,注意前面有一个分号";")
看到提示成功的信息,工程就创建成功了!
ADT(eclipse+androidSDK)
http://pan.baidu.com/s/1dDnvbjj
androidNDK(推荐android-ndk-r9c)
http://pan.baidu.com/s/1o6KmBmq
JDK(jdk-7u45-windows-x64)
http://pan.baidu.com/s/1sj8BgNr
以上列出的工具也可以使用其他的版本,NDK的要求r8以上版本,配置的方法基本一样,请根据操作系统型号选择配置环境所需的工具包。
配置Android环境必须要先安装java环境,安装的过程没有什么特别要求。
安装完成后需要配置环境变量,在Windows系统变量中新建一个变量名为 JAVA_HOME 的变量,变量值为jdk的安装目录。例如:C:Program FilesJavajdk1.7.0_45。
再新建一个名为 CLASSPATH 的变量,变量的值为:.;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar (最前面的.;一定要加上),在系统变量中找到 Path 变量,点击编辑,在变量值最前面添加一个分号,然后在分号的前面添加 %JAVA_HOME%bin;%JAVA_HOME%jrebin 这样java的环境变量已经配置好了,打开dos,输入java、javac、java –version等命令就能看见相关的信息。
将工程导入eclipse,File->New->Other->Android Project from Existing Code,点击 Browse 找到我们引擎目录下 CrossApp 里的 proj.android。
如图:
将工程导入eclipse,File->New->Other->Android Project from Existing Code,点击 Browse 找到我们新创建的工程目录下的 proj.android。
如图:
4.导入完成后需要确认以下配置:
1)确认Android 版本和引擎版本一致
如图中 Android 版本都为 4.4.2,如果不一样右键引擎选择 Properties->Android 选择和新建项目版本一样的 Android版本。
2)更改新建项目的ndk路径为ndk的根目录。例如:D:androidandorid-ndk-r9
例如:D:androidandroid-ndk-r9c
3)在新建项目中找到 jni 目录下的 Android.mk 文件找到如下代码:
#$(call import-add-path, $(LOCAL_PATH)/../../../..)#$(call import-add-path, $(LOCAL_PATH)/../../../../CrossApp/the_third_party/)
5.以上步骤完成后,我们直接右键工程->Run As Android Application,开始编译我们的工程。
6.工程导入eclipse后,编译运行过程中所出现的异常和错误以及对应的解决办法如下表所示。
错误 | 解决办法 |
在工程src下的包错误,提示找不到org.CrossApp.lib这个包 | 将工程导入eclipse,File->New->Other->Android Project from Existing Code,点击 Browse 找到我们引擎目录下 CrossApp 里的 proj.android。 |
运行工程出现Error: Program "bash" is not found in PATH | 右键工程->Properties,在打开面板中点击C/C++ Build,在Build command一项中,把默认的command替换为自己ndk目录下的ndk-build.cmd,例如:D:android-ndk-r9cndk-build.cmd。 |
运行工程出现Cannot find module with tag 'CrossApp' in import path | 在新建项目中找到 jni 文件夹下的 android.mk 中找到$(call import-module,CrossApp),在这句前面添加如下两段代码: $(call import-add-path, $(LOCAL_PATH)/../../../..) $(call import-add-path, $(LOCAL_PATH)/../../../../CrossApp/the_third_party/) 路径修改为自己的对应路径。 |
模拟器运行崩溃 | android模拟器从sdk 4.0.3开始才支持OpenGL ES2.0,新建的模拟器的sdk也要求4.0.3及以上(建议真机看运行效果)。 |
7.环境配置参考视频
我们想要在win环境下搭建开发环境需要以下工具,请在必须下载完成后再开始学习:
首先下载CROSSAPP引擎:crossapp越新越好啦
github地址:https://github.com/9miao/CrossApp
oschina地址:http://git.oschina.net/9miao/CrossApp (国内较快)
环境需求如下:
①操作系统:Mac OS
②开发工具:Xcode
https://developer.apple.com/cn/xcode/downloads/
③Python: 推荐Python2.7版本(可装可不装,如果你要用命令行创建新工程项目就装吧)
=========编译到android所用=========
④ADT(eclipse+androidSDK)
http://pan.baidu.com/s/1dDnvbjj
⑤androidNDK: 推荐android-ndk-r9c
http://pan.baidu.com/s/1o6KmBmq
⑥JDK
http://pan.baidu.com/s/1sj8BgNr
三、根据提示 输入创建c++代码项目命令:
./create_project.py -project MyGame -package com.MyCompany.AwesomeGame -language cpp
看到下面的提示就创建成功了
方法二:project-creator.app创建项目
双击CrossApp引擎根目录下的project-creator.app
这样我们点CrossApp引擎点根目录就会多一个名为projects的文件夹,这里面存放着我们创建的CrossApp项目。
1.以下移植android的环境配置所需的工具:
ADT(eclipse+androidSDK)
http://pan.baidu.com/s/1nts4yet
androidNDK(推荐android-ndk-r9c)
http://pan.baidu.com/s/1o6KmBmq
JDK(jdk-7u45-windows-x64)
http://pan.baidu.com/s/1sjOQmMp
2.安装java环境
配置Android环境必须要先安装java环境,安装JDK安装的过程没有什么特别要求。
3.移植Android
将工程导入eclipse,File->New->Other->Android Project from Existing Code 点击 Browse 找到我们引擎目录下 CrossApp 里的 proj.android。
如图:
将工程导入eclipse,File->New->Other->Android Project from Existing Code 点击 Browse 找到我们新创建的工程目录下的 proj.android。
如图:
4.导入完成后需要确认以下配置:
1)确认 Android 版本和引擎版本一致
如图中 Android 版本都为 4.4.2,如果不一样右键引擎选择 Properties->Android 选择和新建项目版本一样的 Android版本。
2)更改新建项目的 ndk 路径为ndk的根目录。例如:D:androidandorid-ndk-r9
5.以上步骤完成后,我们直接右键工程->Run As Android Application,开始编译我们的工程。
6.工程导入eclipse后,编译运行过程中所出现的异常和错误以及对应的解决办法如下表所示。
7.环境配置参考视屏
类说明
DLayout自适应布局。
DLayout 属性(点击属性名可查看属性介绍)
属性 | 说明 |
horizontal | 水平方向 |
vertical | 垂直方向 |
DHorizontalLayoutZero | 水平方向清零 |
DVerticalLayoutZero | 垂直方向清零 |
DLayoutZero | Layout 清零 |
DHorizontalLayoutFill | 水平方向塞满 |
DVerticalLayoutFill | 垂直方向塞满 |
DLayoutFill | 塞满 |
DLayout 方法(点击属性名可查看属性介绍)
方法 | 说明 |
DHorizontalLayout_L_R | 设置水平方向 左侧边距和右侧边距 |
DHorizontalLayout_L_W | 设置水平方向 左侧边距和宽度 |
DHorizontalLayout_L_C | 设置水平方向 左侧边距和中心点 |
DHorizontalLayout_R_W | 设置水平方向 右侧边距和宽度 |
DHorizontalLayout_R_C | 设置水平方向 右侧边距和中心点 |
DHorizontalLayout_W_C | 设置水平方向 宽度和中心点 |
DVerticalLayout_T_B | 设置垂直方向 上边距和下边距 |
DVerticalLayout_T_H | 设置垂直方向 上边距和高度 |
DVerticalLayout_T_C | 设置垂直方向 上边距和中心点 |
DVerticalLayout_B_H | 设置垂直方向 下边距和高度 |
DVerticalLayout_B_C | 设置垂直方向 下边距和中心点 |
DVerticalLayout_H_C | 设置垂直方向 高度和中心点 |
DHorizontalLayout 属性(点击属性名可查看属性介绍)
属性 | 说明 |
left | 左侧边距 |
right | 右侧边距 |
width | 宽度 |
center | 中心点 |
DVerticalLayout 属性(点击属性名可查看属性介绍)
属性 | 说明 |
top | 上边距 |
bottom | 下边距 |
height | 高度 |
center | 中心点 |
//DLayout 相对于this->getView() 内缩50DPCAView * LayoutView = CAView::createWithColor(CAColor_blue);LayoutView->setLayout(DLayout(DHorizontalLayout_L_R(50, 50), DVerticalLayout_T_B(50, 50)));this->getView()->addSubview(LayoutView); //DLayout 塞满this->getView()CAView * LayoutView = CAView::createWithColor(CAColor_blue);LayoutView->setLayout(DLayoutFill);this->getView()->addSubview(LayoutView); //DLayout 宽高为300,在this->getView()中心CAView * LayoutView = CAView::createWithColor(CAColor_blue);LayoutView->setLayout(DLayout(DHorizontalLayout_W_C(300, 0.5), DVerticalLayout_H_C(300, 0.5)));this->getView()->addSubview(LayoutView);
CALayout 属性说明
类型:DHorizontalLayout
解释:水平方向
类型:DVerticalLayout
解释:垂直方向
类型:DHorizontalLayout
解释:水平方向L、R、W、C清零
类型:DVerticalLayout
解释:垂直方向T、B、H、C清零
类型:DLayoutZ
解释:Layout L、R、W、T、B、H、C清零
类型:DHorizontalLayout
解释:水平方向塞满
类型:DVerticalLayout
解释:垂直方向塞满
类型:DLayout
解释:塞满
CALayout 方法说明
static inline DHorizontalLayout DHorizontalLayout_L_R(float left, float right);
返回值: DHorizontalLayout
参数:
类型 | 参数名 | 说明 |
float | left | 左侧边距 |
float | right | 右侧边距 |
解释:设置水平方向 左侧边距和右侧边距
static inline DHorizontalLayout DHorizontalLayout_L_W(float left, float width);
返回值: DHorizontalLayout
参数:
类型 | 参数名 | 说明 |
float | left | 左侧边距 |
float | width | 宽度 |
解释:设置水平方向 左侧边距和宽度
static inline DHorizontalLayout DHorizontalLayout_L_C(float left, float center);
返回值: DHorizontalLayout
参数:
类型 | 参数名 | 说明 |
float | left | 左侧边距 |
float | center | 中心点 |
解释:设置水平方向 左侧边距和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)
static inline DHorizontalLayout DHorizontalLayout_R_W(float right, float width);
返回值: DHorizontalLayout
参数:
类型 | 参数名 | 说明 |
float | right | 左侧边距 |
float | width | 宽度 |
解释:设置水平方向 右侧边距和宽度
static inline DHorizontalLayout DHorizontalLayout_R_C(float right, float center);
返回值: DHorizontalLayout
参数:
类型 | 参数名 | 说明 |
float | right | 左侧边距 |
float | center | 中心点 |
解释:设置水平方向 右侧边距和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)
static inline DHorizontalLayout DHorizontalLayout_W_C(float width, float center);
返回值: DHorizontalLayout
参数:
类型 | 参数名 | 说明 |
float | width | 宽度 |
float | center | 中心点 |
解释:设置水平方向 宽度和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)
static inline DVerticalLayout DVerticalLayout_T_B(float top, float bottom);
返回值: DVerticalLayout
参数:
类型 | 参数名 | 说明 |
float | top | 上边距 |
float | bottom | 下边距 |
解释:设置垂直方向 上边距和下边距
static inline DVerticalLayout DVerticalLayout_T_H(float top, float height);
返回值: DVerticalLayout
参数:
类型 | 参数名 | 说明 |
float | top | 上边距 |
float | height | 宽度 |
解释:设置垂直方向 上边距和宽度
static inline DVerticalLayout DVerticalLayout_T_C(float top, float center);
返回值: DVerticalLayout
参数:
类型 | 参数名 | 说明 |
float | top | 上边距 |
float | center | 中心点 |
解释:设置垂直方向 上边距和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)
static inline DVerticalLayout DVerticalLayout_B_H(float bottom, float height);
返回值: DVerticalLayout
参数:
类型 | 参数名 | 说明 |
float | bottom | 下边距 |
float | height | 宽度 |
解释:设置垂直方向 下边距和宽度
static inline DVerticalLayout DVerticalLayout_B_C(float bottom, float center);
返回值: DVerticalLayout
参数:
类型 | 参数名 | 说明 |
float | bottom | 下边距 |
float | center | 中心点 |
解释:设置垂直方向 下边距和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)
static inline DVerticalLayout DVerticalLayout_H_C(float height, float center);
返回值: DVerticalLayout
参数:
类型 | 参数名 | 说明 |
float | height | 高度 |
float | center | 中心点 |
解释:设置垂直方向 高度和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)
DHorizontalLayout 属性说明
类型:float
解释:Layout 水平方向左侧边距(单位DP)
类型:float
解释:Layout 水平方向右侧边距(单位DP)
类型:float
解释:Layout 水平方向宽度(单位DP)
类型:float
解释:Layout 水平方向中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)
DVerticalLayout 属性说明
类型:float
解释:Layout 垂直方向上边距(单位DP)
类型:float
解释:Layout 垂直方向下边距(单位DP)
类型:float
解释:Layout 垂直方向高度(单位DP)
类型:float
解释:Layout 垂直方向中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)
类说明
标签文字类,用于显示文本。
CALabel 属性 (点击属性名可查看属性介绍)
属性 | 说明 |
Text | label的文本内容 |
FontName | label的字体 |
FontSize | label的字体大小 |
Dimensions | label的尺寸大小 |
VerticalTextAlignmet | 文本的竖直对齐方式 |
TextAlignment | 文本的水平对齐方式 |
NumberOfLine | label的行数 |
UnderLine | label的字体下划线 |
Bold | label的字体加粗 |
Italics | label的字体斜体 |
EnableCopy | label的字体启用复制 |
LineSpacing | label的字体的行间距 |
WordWrap | label的字体自动换行 |
LabelSize | 获取label的大小 |
CALabel 方法 (点击方法名可查看方法介绍)
方法 | 说明 |
sizeToFit | 设置自适应label宽度 |
unsizeToFi | 取消设置自适应label宽度 |
applyStyle | label的样式风格 |
applyStyle | label的应用风格 |
createWithFrame | 创建,并指定其Frame,默认Frame为(0,0,0,0) |
createWithCenter | 创建,并指定其Frame,默认Center为(0,0,0,0) |
initWithFrame | 初始化,并指定其Frame |
initWithCenter | 初始化,并指定其Center |
setColor | 设置label的颜色 |
getColor | 获取label的颜色 |
使用介绍
第一:Label的行数:
其实Label行数是受Label的范围的影响,假如你设置的Frame太小,你超出Frame范围的行数是不被显示的。
例如:Frame的范围只够显示2行,那么NumberOfLine设置比2大也是最多显示2行。
第二:win开放中文字符:
假如是是在win下开发CrossApp那么,label->setText("中文");这样直接设置中文字符,CALabel的显示不正常的。
我们可以设置转为UTF8格式,格式如下:label->setText(UTF8("伟大的矮人王索林·橡木盾"));
第三:LabelSize 版本6.0有个bug
LabelSize在你缩放CALabel和改变CALabel的文本内容时候,LabelSize的值都不会变化。正常情况下应该是在文本 内容或字体大小发生改变时,LabelSize也跟着改变
//通过设置Center来创建一个CALabel (CRect前两个参数是中心点x,y;后两个参数是width,height) CALabel* label = CALabel::createWithCenter(DRect(100, 200, 400, 400)); //设置文本水平方向的对齐方式 label->setTextAlignment(CATextAlignmentCenter); //设置文本竖直方向的对齐方式 label->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter); //设置文本大小(CROSSAPP_ADPTATION_RATIO 是用于适配的缩放比) label->setFontSize(72 * CROSSAPP_ADPTATION_RATIO); //设置文本内容 label->setText("Hello World!"); //设置行数 label->setNumberOfLine(10); //设置文本颜色 label->setColor(CAColor_white); //设置文本字体 label->setFontName("fonts/arial.ttf"); this->getView()->insertSubview(label, 1);
CALabel 属性说明
类型:string
解释:设置文本显示的字符串。 set/get{}。
类型:string
解释:设置文本显示的字体。FontName
类型:unsigned int
解释:设置文本小时的字体大小。set/get{}。
类型:DSize
解释:设置文本显示的尺寸大小。set/get{}。
类型:CAVerticalTextAlignment
解释:设置文本显示的竖直对齐方式,枚举类型。set/get{}。
typedef enum { CAVerticalTextAlignmentTop, //顶部对齐方式 CAVerticalTextAlignmentCenter, //中心对齐方式 CAVerticalTextAlignmentBottom, //底部对齐方式} CAVerticalTextAlignment;
类型:CATextAlignment
解释:设置文本显示的水平对齐方式,枚举类型。set/get{}。
typedef enum{ CATextAlignmentLeft, //左对齐方式 CATextAlignmentCenter, //中心对齐方式 CATextAlignmentRight, //右对齐方式} CATextAlignment;
类型:unsigned int
解释:设置文本显示的行数。set/get{}。set/get{}。
类型:bool
解释:设置文本显示的字体下划线。set/get{}。
类型:bool
解释:设置文本显示的字体加粗。set/get{}。
类型:bool
解释:设置文本显示的字体斜体。set/get{}。
类型:bool
解释:设置文本显示的字体启用复制。set/get{}。
类型:int
解释:设置文本显示的字体行间距。set/get{}。
类型:bool
解释:设置文本显示的字体自动换行。set/get{}。
示例:
CALabel* c_Label = CALabel::createWithCenter(DRect(size.width*0.5,size.height*0.5,220,500)); c_Label->setText("CrossApp is a cross platform application engine,developed by 9miao.com"); c_Label->setTextAlignment(CATextAlignmentCenter); c_Label->setColor(CAColor_orange); c_Label->setFontSize(28); this->getView()->addSubview(c_Label);
LabelSize
类型:DSize
解释:获取Label的大小。get{}。
CALabel 方法说明
返回值: void
参数:
解释:设置自适应label宽度,即label的宽度随文本变化而变换。
返回值: void
参数:
解释:取消设置自适应label宽度
void applyStyle(const string& sStyleName);
返回值: void
参数:
类型 | 参数名 | 说明 |
const string& | sStyleName | label的样式名称 |
解释:label的样式风格
void applyStyle(const CALabelStyle* pLabelStyle);
返回值: void
参数:
类型 | 参数名 | 说明 |
const CALabelStyle* | pLabelStyle | label的应用风格 |
解释:label的应用风格
static CALabel* createWithFrame(const DRect& rect);
返回值: static CALabel*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
解释:创建,并指定其Frame,默认Frame为(0,0,0,0)
static CALabel* createWithCenter(const DRect& rect);
返回值: static CALabel*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
解释:创建,并指定其Frame,默认Center为(0,0,0,0)
virtual bool initWithFrame(const DRect& rect);
返回值: virtual bool
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
解释:初始化,并指定其Frame
virtual bool initWithCenter(const DRect& rect);
返回值:virtual bool
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
解释:初始化,并指定其Center
void setColor(const CAColor4B& var);
返回值: void
参数:
类型 | 参数名 | 说明 |
const CAColor4B& | var | CAColor4B的类型颜色 |
解释:设置label的颜色
返回值: const CAColor4B&
参数:
解释:获取label的颜色
类说明
CAImage贴图类,即内存中的纹理,主要用于创建贴图对象,将图像加载进内存,是所有有关贴图类的基础。
CAImage 属性(点击方法名可查看方法介绍)
属性 | 说明 |
PixelFormat | 像素格式 |
PixelsWide | 像素宽 |
PixelsHigh | 像素高 |
ContentSize | 内容大小 |
ShaderProgram | 着色程序 |
Monochrome | 单色 |
Data | 数据 |
DataLenght | 数据长度 |
CAImage 方法(点击方法名可查看方法介绍)
方法 | 说明 |
create | 创建,默认Frame为(0,0,0,0) |
createWithImageDataNoCache | 创建,默认没有缓存 |
createWithImageData | 创建,默认有缓存 |
createWithString | 创建,并指定文本内容 |
getFontHeight | 获得字体高度 |
getStringWidth | 获得字体宽度 |
cutStringByWidth | 减少字符串的宽度 |
getStringHeight | 减少字符串的高度 |
scaleToNewImageWithImage | 缩放当前图像做新图像 |
scaleToNewImageWithImage | 缩放当前图像做新图像 |
generateMipmapsWithImage | 生成mipmap图像 |
createWithRawDataNoCache | 创建,并指定Raw Data,默认没有缓存 |
createWithRawData | 创建,并指定Raw Data,默认没有缓存 |
initWithImageFile | 初始化,并指定其图像文件 |
initWithImageFileThreadSafe | 初始化,并指定其图像文件(支持子线程) |
initWithImageData | 初始化,并指定其图像缓存 |
initWithRawData | 初始化,并指定其原数据 |
description | 添加图像描述 |
releaseData | 释放所有数据 |
releaseData | 释放指定数据 |
drawAtPoint | 基于某个点显示(大小为图像大小) |
drawInRect | 基于某个矩形区域显示 |
initWithETCFile | 初始化,并指定其ETC文件 |
stringForFormat | 格式字符串 |
saveToFile | 保存到文件 |
getImageFileType | 获取图像文件类型 |
getAspectRatio | 得到长宽比 |
detectFormat | 检测格式 |
premultipliedImageData | 进行图像数据 |
repremultipliedImageData | 再进行图像数据 |
updateGifImageWithIndex | 通过index更新GIF图像 |
getGifImageIndex | 获取GIF图像的index |
getGifImageCounts | 获取GIF图像的参数 |
reloadAllImages | 重新加载所有图像 |
CAImageView 属性(点击方法名可查看方法介绍)
属性 | 说明 |
ImageViewScaleType | 图像缩放类型 |
AnimationImages | 动画图像 |
AnimationDuration | 动画间隔的时间 |
AnimationRepeatCount | 动画重复次数 |
CAImageView 方法(点击方法名可查看方法介绍)
方法 | 说明 |
create | 创建,默认Frame为(0,0,0,0) |
createWithImage | 创建,并指定Image |
createWithFrame | 创建,并指定Frame,默认Frame为(0,0,0,0) |
createWithCenter | 创建,并指定Center,默认Center为(0,0,0,0) |
init | 初始化 |
initWithImage | 初始化,并指定其图像 |
setImage | 设置图像 |
getImage | 获取图像 |
setImageAsyncWithFile | 异步设置图像文件 |
startAnimating | 开始动画 |
stopAnimating | 结束动画 |
isAnimating | 查看图像动画 |
使用方法
//创建一个CAImage CAImage* image = CAImage::create("HelloWorld.png"); //CAImage函数//打印贴图描述 CCLog("Description:%s", image->description()); //打印像素格式 CCLog("StringForFormat:%s", image->stringForFormat()); //打印像素位深 CCLog("bitsPerPixelForFormat:%d", image->bitsPerPixelForFormat()); //方法一:通过CAImage创建一个CAImageView CAImageView* imageView = CAImageView::createWithImage(image); //设置显示的范围(如果不设置,默认不会被显示出来) imageView->setFrame(winRect); //添加到绘制 this->getView()->addSubview(imageView); //方法二:通过设置Center创建一个CAImageViewD CAImageView* imageView_1 = CAImageView::createWithCenter(DRect(50,50,100,100)); //设置显示的纹理 imageView_1->setImage(image); //异步加载 //imageView_1->setImageAsyncWithFile("source_material/stepper_inc_n.png"); //添加到绘制,设置z轴为1 this->getView()->insertSubview(imageView_1,1);
CCLog的打印结果:
Description:<CAImage | Name = 3 | Dimensions = 640 x 960 | Coordinates = (1.00, 1.00)>
StringForFormat:RGB888
bitsPerPixelForFormat:32
CAImage 属性说明
类型:CAImage::PixelFormat
解释:像素格式。get{}。
类型:unsigned int
解释:像素宽。get{}。
类型:unsigned int
解释:像素高。get{}。
类型:DSize
解释:内容大小。get{}。
类型:CAGLProgram*
解释:着色程序。set/get{}。
类型:bool
解释:单色。is{}。
类型:unsigned char*
解释:数据。get{}。
类型:unsigned long
解释:数据长度。get{}。
CAImage 方法说明
static CAImage* create(const std::string& file);
返回值:static CAImage*
参数:
类型 | 参数名 | 说明 |
const std::string& | file | 图像名 |
解释:创建,默认Frame为(0,0,0,0)
static CAImage* createWithImageDataNoCache(const unsigned char * data, unsigned long lenght);
返回值:static CAImage*
参数:
类型 | 参数名 | 说明 |
const unsigned char * | data | 数据 |
unsigned long | lenght | 长度 |
解释:创建,默认没有缓存
static CAImage* createWithImageData(const unsigned char * data, unsigned long lenght, const std::string& key);
返回值:static CAImage*
参数:
类型 | 参数名 | 说明 |
const unsigned char * | data | 数据 |
unsigned long | lenght | 长度 |
const std::string& | key | 属性 |
解释:创建,默认有缓存
static CAImage* createWithString(const char *text, const char *fontName, float fontSize, const DSize& dimensions, CATextAlignment hAlignment, CAVerticalTextAlignment vAlignment, bool isForTextField = false, int iLineSpacing = 0, bool bBold = false, bool bItalics = false, bool bUnderLine = false);
返回值:static CAImage*
参数:
类型 | 参数名 | 说明 |
const char | *text | 文字 |
const char | *fontName | 字体名称 |
float | fontSize | 字体大小 |
const DSize& | dimensions | 图像大小 |
CATextAlignment | hAlignment | 文本对齐 |
CAVerticalTextAlignment | vAlignment | 垂直文本对齐 |
bool | isForTextField = false | 是否显示文本框(默认不显示) |
int | iLineSpacing = 0 | 文本间距(默认0) |
bool | bBold = false | 是否显示加粗(默认不加粗) |
bool | bItalics = false | 是否显示斜体(默认不斜体) |
bool | bUnderLine = false | 是否显示下划线(默认不显示) |
解释:创建,并指定文本内容
static int getFontHeight(const char* pFontName, unsigned long nSize);
返回值:static int
参数:
类型 | 参数名 | 说明 |
const char* | pFontName | 字体名字 |
unsigned long | nSize | 字体大小 |
解释:获得字体高度
static int getStringWidth(const char* pFontName, unsigned long nSize, const std::string& pText);
返回值:static int
参数:
类型 | 参数名 | 说明 |
const char* | pFontName | 字体名字 |
unsigned long | nSize | 字体大小 |
const std::string& | pText | 文本内容 |
解释:获得字体宽度
static int cutStringByWidth(const char* pFontName, unsigned long nSize, const std::string& text, int iLimitWidth, int& cutWidth);
返回值:static int
参数:
类型 | 参数名 | 说明 |
const char* | pFontName | 字体名字 |
unsigned long | nSize | 字体大小 |
const std::string& | pText | 文本内容 |
int | iLimitWidth | 最大宽度 |
int& | cutWidth | 减少的宽度 |
解释:减少字符串的宽度
static int getStringHeight(const char* pFontName, unsigned long nSize, const std::string& pText, int iLimitWidth, int iLineSpace = 0, bool bWordWrap = true);
返回值:static int
参数:
类型 | 参数名 | 说明 |
const char* | pFontName | 字体名字 |
unsigned long | nSize | 字体大小 |
const std::string& | pText | 文本内容 |
int | iLimitWidth | 最大宽度 |
int | iLineSpace = 0 | 间距 |
bool | bWordWrap = true | 自动换行 |
解释:减少字符串的高度
static CAImage* scaleToNewImageWithImage(CAImage* image, const DSize& size);
返回值:static CAImage*
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
const DSize& | size | 大小 |
解释:缩放当前图像做新图像
static CAImage* scaleToNewImageWithImage(CAImage* image, float scaleX, float scaleY);
返回值:static CAImage*
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
float | scaleX | 缩放X轴 |
float | scaleY | 缩放Y轴 |
解释:缩放当前图像做新图像
static CAImage* generateMipmapsWithImage(CAImage* image);
返回值:static CAImage*
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
解释:生成mipmap图像
static CAImage* createWithRawDataNoCache(const unsigned char * data, const CAImage::PixelFormat& pixelFormat, unsigned int pixelsWide, unsigned int pixelsHigh);
返回值:static CAImage*
参数:
类型 | 参数名 | 说明 |
const unsigned char * | data | 数据 |
const CAImage::PixelFormat& | pixelFormat | 像素格式 |
unsigned int | pixelsWide | 像素宽 |
unsigned int | pixelsHigh | 像素高 |
解释:创建,并指定Raw Data,默认没有缓存
static CAImage* createWithRawData(const unsigned char * data, const CAImage::PixelFormat& pixelFormat, nsigned int pixelsWide, unsigned int pixelsHigh, const std::string& key);
返回值:static CAImage*
参数:
类型 | 参数名 | 说明 |
const unsigned char * | data | 数据 |
const CAImage::PixelFormat& | pixelFormat | 像素格式 |
unsigned int | pixelsWide | 像素宽 |
unsigned int | pixelsHigh | 像素高 |
const std::string& | key | 属性 |
解释:创建,并指定Raw Data,默认有缓存
bool initWithImageFile(const std::string& file);
返回值:bool
参数:
类型 | 参数名 | 说明 |
const std::string& | file | 图像名 |
解释:初始化,并指定其图像文件
bool initWithImageFileThreadSafe(const std::string& fullPath);
返回值:bool
参数:
类型 | 参数名 | 说明 |
const std::string& | fullPath | 完整路径 |
解释:初始化,并指定其图像文件(支持子线程)
bool initWithImageData(const unsigned char * data, unsigned long dataLen);
返回值:bool
参数:
类型 | 参数名 | 说明 |
const unsigned char * | data | 数据 |
unsigned long | dataLen | 数据长度 |
解释:初始化,并指定其图像缓存
bool initWithRawData(const unsigned char * data, const CAImage::PixelFormat& pixelFormat, unsigned int pixelsWide, unsigned int pixelsHigh);
返回值:bool
参数:
类型 | 参数名 | 说明 |
const unsigned char * | data | 数据 |
const CAImage::PixelFormat& | pixelFormat | 像素格式 |
unsigned int | pixelsWide | 像素宽 |
unsigned int | pixelsHigh | 像素高 |
解释:初始化,并指定其原数据
const char* description(void);
返回值:const char*
参数:
解释:获取图像描述
返回值:void
参数:
解释:释放所有数据
void releaseData(unsigned char ** data);
返回值:void
参数:
类型 | 参数名 | 说明 |
unsigned char ** | data | 数据 |
解释:释放指定数据
void drawAtPoint(const DPoint& point);
返回值:void
参数:
类型 | 参数名 | 说明 |
const DPoint& | point | 点的位置 |
解释:基于某个点显示(大小为图像大小)
void drawInRect(const DPoint& rect);
返回值:void
参数:
类型 | 参数名 | 说明 |
const DPoint& | rect | 矩形大小 |
解释:基于某个矩形区域显示
bool initWithETCFile(const char* file);
返回值:bool
参数:
类型 | 参数名 | 说明 |
const char* | file | 文件名 |
解释:初始化,并指定其ETC文件
const char* stringForFormat();
返回值:const char*
参数:
解释:格式字符串
bool saveToFile(const std::string& fullPath, bool bIsToRGB = false);
返回值:bool
参数:
类型 | 参数名 | 说明 |
const std::string& | fullPath | 完全路径 |
bool | bIsToRGB = false | 是否用RGB格式保存(默认否) |
解释:是否保存成RGB格式
const char* getImageFileType();
返回值:const char*
参数:
解释:获取图像文件类型
返回值:float
参数:
解释:得到长宽比
CAImage::Format detectFormat(const unsigned char * data, unsigned long dataLen);
返回值: CAImage::Format
参数:
类型 | 参数名 | 说明 |
const unsigned char * | data | 数据 |
unsigned long | dataLen | 数据长度 |
解释:检测格式
void premultipliedImageData();
返回值:void
参数:
解释:进行图像数据
void repremultipliedImageData();
返回值:void
参数:
解释:再进行图像数据
void updateGifImageWithIndex(unsigned int index);
返回值:void
参数:
类型 | 参数名 | 说明 |
unsigned int | index | index |
解释:通过index更新GIF图像
unsigned int getGifImageIndex();
返回值:unsigned int
参数:
解释:获取GIF图像的index
unsigned int getGifImageCounts();
返回值:unsigned int
参数:
解释:获取GIF图像的参数
static void reloadAllImages();
返回值:static void
参数:
解释:重新加载所有图像
CAImageView 属性说明
类型:CAImageViewScaleType
解释:图像缩放类型。set/get{}。
类型:CAVector<CAImage*>
解释:动画图像。set/get{}。
类型:float
解释:动画间隔的时间。set/get{}。
类型:unsigned int
解释:动画重复次数。set/get{}。
CAImageView 方法说明
返回值:static CAImageView*
参数:
解释:创建,默认Frame为(0,0,0,0)
static CAImageView* createWithImage(CAImage* image);
返回值:static CAImageView*
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
解释:创建,并指定其Image
static CAImageView* createWithFrame(const DRect& rect);
返回值:static CAImageView*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
解释:创建,并指定其Frame,默认Frame为(0,0,0,0)
static CAImageView* createWithCenter(const DRect& rect);
返回值:static CAImageView*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
解释:创建,并指定其Center,默认Center为(0,0,0,0)
返回值:virtual bool
参数:
解释:初始化
virtual bool initWithImage(CAImage* image);
返回值:virtual bool
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
解释:初始化图像
virtual void setImage(CAImage* image);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
解释:设置图像
virtual CAImage* getImage(void);
返回值:virtual CAImage*
参数:
解释:获取图像
virtual void setImageAsyncWithFile(const std::string& path);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
const std::string& | path | 路径 |
解释:异步设置图像文件
返回值:void
参数:
解释:开始动画
返回值:void
参数:
解释:结束动画
返回值:bool
参数:
解释:查看图像动画
类说明
CAScale9ImageView是CrossApp提供的一种九宫格拉伸图片的解决方案,我们先来了解一下什么是九宫格图片拉伸。
在App的设计过程中,为了适配不同的手机分辨率,图片大小需要拉伸或者压缩,这样就出现了可以任意调整大小的拉伸样式。
CAScale9ImageView 属性(点击方法名可查看方法介绍)
属性 | 说明 |
OriginalSize | 原始尺寸 |
CapInsets | 拉伸区域 |
InsetLeft | 左侧拉伸距离 |
InsetTop | 上侧拉伸距离 |
InsetRight | 右侧拉伸距离 |
InsetBottom | 下侧拉伸距离 |
CAScale9ImageView 方法(点击方法名可查看方法介绍)
方法 | 说明 |
create | 创建,默认Frame为(0,0,0,0) |
createWithImage | 创建,并指定其图像 |
createWithFrame | 创建,并指定其Frame,默认Frame为(0,0,0,0) |
createWithCenter | 创建,并指定其Center,默认Center为(0,0,0,0) |
init | 初始化 |
initWithImage | 初始化,并指定其图像 |
setCapInsets | 设置拉伸区域 |
setInsetLeft | 设置左侧拉伸区域 |
setInsetTop | 设置上侧拉伸区域 |
setInsetRight | 设置右侧拉伸区域 |
setInsetBottom | 设置下侧拉伸区域 |
setColor | 设置颜色 |
getColor | 获取颜色 |
setAlpha | 设置透明度 |
copy | 复制 |
setImage | 设置图像 |
getImage | 获取图像 |
draw | 重新绘制图像 |
void FirstViewController::viewDidLoad(){ //创建CAScale9ImageView* first9IV = CAScale9ImageView::createWithImage(CAImage::create("source_material/btn_rounded_normal.png"));//设置显示大小(拉伸后的大小)//设置非拉伸区域为(5,5,20,20) first9IV->setCapInsets(DRect(5,5,20,20));this->getView()->addSubview(first9IV);first9IV->setFrame(DRect(100, 100, 50, 140)); //添加渲染 //创建CAImage::create("source_material/btn_rounded_highlighted.png"));CAScale9ImageView* second9IV = CAScale9ImageView::createWithImage( //设置非拉伸区域与顶部的距离 second9IV->setInsetTop(3.0f);second9IV->setInsetLeft(3.0f);//设置非拉伸区域与底部的距离 second9IV->setInsetBottom(3.0f); //设置非拉伸区域与右边的距离 second9IV->setInsetRight(3.0f); //设置非拉伸区域与左边的距离CALabel* image9Label = CALabel::createWithFrame(DRect(400, 200, 150, 40));//设置显示区域(拉伸后的大小)second9IV->setFrame(DRect(400, 200, 150, 40));//添加渲染 this->getView()->addSubview(second9IV);this->getView()->addSubview(image9Label);//创建 image9Label->setText(UTF8("使用九图"));image9Label->setTextAlignment(CATextAlignmentCenter);image9Label->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);imageView->setImage(CAImage::create("source_material/btn_rounded_highlighted.png"));//不使用9宫格拉伸 设置大小与上同 CAImageView* imageView = CAImageView::createWithFrame(DRect(400, 300, 150, 40)); //设置显示图片 //添加渲染 this->getView()->addSubview(imageView); //创建imageLabel->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);CALabel* imageLabel = CALabel::createWithFrame(DRect(400, 300, 150, 40)); imageLabel->setText(UTF8("不用九图")); imageLabel->setTextAlignment(CATextAlignmentCenter); this->getView()->addSubview(imageLabel);}
CAScale9ImageView 属性说明
类型:DSize
解释:原始尺寸,get{}。
类型:DSize
解释:拉伸区域,get{}。
类型:float
解释:左侧拉伸距离。get{}。
类型:float
解释:上侧拉伸距离。get{}。
类型:float
解释:右侧拉伸距离。get{}。
类型:float
解释:下侧拉伸距离。get{}。
CAScale9ImageView 方法说明
static CAScale9ImageView* create();
返回值:static CAScale9ImageView*
参数:
解释:创建,默认Frame为(0,0,0,0)
static CAScale9ImageView* createWithImage(CAImage* image);
返回值:static CAScale9ImageView*
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
解释:创建,并指定其图像
static CAScale9ImageView* createWithFrame(const DRect& rect);
返回值:static CAScale9ImageView*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
解释:创建,并指定其Frame,默认Frame为(0,0,0,0)
static CAScale9ImageView* createWithCenter(const DRect& rect);
返回值:static CAScale9ImageView*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
解释:创建,并指定其Center,默认Center为(0,0,0,0)
返回值:virtual bool
参数:
解释:初始化
virtual bool initWithImage(CAImage* image);
返回值:virtual bool
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
解释:初始化,并指定其图像
virtual void setCapInsets(const DRect& capInsets);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
const DRect& | capInsets | 拉伸区域 |
解释:设置拉伸区域
virtual void setInsetLeft(float insetLeft);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
float | insetLeft | 左侧拉伸区域 |
解释:设置左侧拉伸区域
virtual void setInsetTop(float insetTop);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
float | insetTop | 上侧拉伸区域 |
解释:设置上侧拉伸区域
virtual void setInsetRight(float insetRight);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
float | insetRight | 右侧拉伸区域 |
解释:设置右侧拉伸区域
virtual void setInsetBottom(float insetBottom);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
float | insetBottom | 下侧拉伸区域 |
解释:设置下侧拉伸区域
virtual void setColor(const CAColor4B& color);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
const CAColor4B& | color | 颜色 |
解释:设置颜色
virtual const CAColor4B& getColor();
返回值:virtual const CAColor4B&
参数:
解释:获取颜色
virtual void setAlpha(float alpha);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
float | alpha | 透明度 |
解释:设置透明度
返回值:virtual CAView*
参数:
解释:复制
virtual void setImage(CAImage* image);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
解释:设置图像
返回值:using
参数:
解释:获取图像
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
void | void | 空 |
解释:重新绘制图像
类说明
在app开放中按钮是最常用的控件之一,大家对Button的需要也多种多样,CrossApp提供了CAButton,其使用思路主要是根据状态设置来完成的。
CAButton按钮类,主要为了接收用户的点击操作,从而触发特定的事件。
CAButton 属性 (点击属性名可查看属性介绍)
属性 | 说明 |
AllowsSelected | 是否可以选择 |
Selected | 是否被选择 |
TouchClick | 是否被触摸点击 |
CAButton 方法 (点击属性名可查看属性介绍)
方法 | 说明 |
create | 创建 |
createWithFrame | 创建,并指定其Frame |
createWithCenter | 创建,并指定其Center |
init | 初始化 |
setBackGroundViewForState | 设置Button的背景View |
getBackGroundViewForState | 获取Button的背景View |
setImageForState | 设置Button的图片(不支持九宫格) |
getImageForState | 获取Button的图片(不支持九宫格) |
setTitleForState | 设置Button标题的显示文本 |
getTitleForState | 获取Button标题的显示文本 |
setImageColorForState | 设置Button的图像颜色和状态 |
setTitleColorForState | 设置Button的标题颜色和状态 |
setTitleFontName | 设置Button文本的字体 |
setImageOffset | 设置图像偏移量 |
setImageSize | 设置图像大小 |
setTitleOffset | 设置标题偏移量 |
setTitleLabelSize | 设置标题标签大小 |
setTitleFontSize | 设置标题字体大小 |
setControlState | 设置状态 |
interruptTouchState | 中断接触状态 |
ccTouchBegan | 触摸事件开始时的回调函数 |
ccTouchMoved | 触摸事件中触点移动时的回调函数 |
ccTouchEnded | 触摸事件结束时的回调函数 |
ccTouchCancelled | 触摸非正常结束时的回调函数。(例如:电话或锁屏) |
addTarget | 添加回调事件 |
removeTarget | 删除回调事件 |
removeAllTargets | 删除所有回调事件 |
/* 创建一个Button 参数类型CAButtonType:CAButtonTypeCustom、CAButtonTypeSquareRect、CAButtonTypeRoundedRect CAButtonTypeCustom:默认看不见任何效果,需要自己定义效果 CAButtonTypeSquareRect:矩形边框类型 CAButtonTypeRoundedRect:圆角边框类型*/CAButton* firstButton = CAButton::create(CAButtonTypeRoundedRect); /* 设置Button的状态显示文本 CAControlStateNormal:缺省状态 CAControlStateHighlighted:高亮状态 CAControlStateDisabled:禁用状态 CAControlStateSelected:选中状态 CAControlStateAll:全部状态*/firstButton->setTitleForState(CAControlStateAll,"Button"); /* 设置Button的状态显示文本的颜色*/firstButton->setTitleColorForState(CAControlStateAll, ccc4(0, 0, 0, 255)); //设置Button文本的字体firstButton->setTitleFontName("宋体"); /* 设置Button的状态的背景View*///九宫格图//firstButton->setBackGroundViewForState(CAControlStateAll,CAScale9ImageView::createWithImage("HelloWorld.png")); //设置纯色View//firstButton->setBackGroundViewForState(CAControlStateAll, CAView::createWithColor(CAColor_red)); /* 设置Button的状态的图片(不支持九宫格)*///firstButton->setImageForState(CAControlStateAll,CAImage::create("HelloWorld.png")); /* 设置Button的状态*///firstButton->setControlState(CAControlStateHighlighted); /* 设置Frame(如果不设置Frame,默认是不显示的)*/firstButton->setFrame(DRect(100,100,200,80)); //添加到绘制this->getView()->addSubview(firstButton); /* 设置Button的监听 CAControlEventTouchDown:按下按钮响应 CAControlEventTouchDownRepeat:(未实现预留)双击时响应 CAControlEventTouchMoved:触点在Button范围内移动 CAControlEventTouchMovedOutSide:触点移动到Button范围外 CAControlEventTouchUpInSide:触点在Button范围内抬起 CAControlEventTouchUpSide:Button抬起 CAControlEventTouchValueChanged:此状态在CAButton无效,在CASlider中响应*/firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackDown), CAControlEventTouchDown); //此状态6.0版本未实现//firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackDownRepeat), CAControlEventTouchDownRepeat); firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackMoved), CAControlEventTouchMoved); firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackMovedOutSide), CAControlEventTouchMovedOutSide); firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackUpInSide), CAControlEventTouchUpInSide); firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackUpSide), CAControlEventTouchUpSide); //此状态6.0版本 Button无效//firstButton->addTarget(this, CAControl_selector(FirstViewController::callbackValueChanged), CAControlEventTouchValueChanged); /* 中断监听*///firstButton->interruptTouchState();
监听的回调函数也很简单:有两个参数:CAControl* 和DPoint
CAControl是Button本身
DPoint是触点的坐标
void FirstViewController::callbackDown(CAControl* control, DPoint point){ CCLog("callbackDown()-->");} void FirstViewController::callbackDownRepeat(CAControl* control, DPoint point){ CCLog("callbackDownRepeat()-->");} void FirstViewController::callbackMoved(CAControl* control, DPoint point){ CCLog("callbackMoved()-->");} void FirstViewController::callbackMovedOutSide(CAControl* control, DPoint point){ CCLog("callbackMovedOutSide()-->");} void FirstViewController::callbackUpInSide(CAControl* control, DPoint point){ CCLog("callbackUpInSide()-->"); //((CAButton*)control)->setTitleForState(CAControlStateAll, "changed");} void FirstViewController::callbackUpSide(CAControl* control, DPoint point){ CCLog("callbackUpSide()-->");} void FirstViewController::callbackValueChanged(CAControl* control, DPoint point){ CCLog("callbackValueChanged()-->");}
CAButton 属性说明
类型:bool
解释:是否可以选择。is/set{}。
类型:bool
解释:是否被选择。is{}。
类型:bool
解释:是否被触摸点击。is{}。
CAButton 方法说明
static CAButton* create(const CAButtonType& buttonType);
返回值:static CAButton*
参数:
类型 | 参数名 | 说明 |
const CAButtonType& | buttonType | 按钮类型 |
解释:创建
typedef enum{ CAButtonTypeCustom = 0, 默认看不见任何效果,需要自己定义效果 CAButtonTypeSquareRect, 矩形边框类型 CAButtonTypeRoundedRect, 圆角边框类型} CAButtonType;
static CAButton* createWithFrame(const DRect& rect, const CAButtonType& buttonType);
返回值:static CAButton*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
const CAButtonType& | buttonType | 按钮类型 |
解释:创建,并指定其Frame
typedef enum{ CAButtonTypeCustom = 0, 默认看不见任何效果,需要自己定义效果 CAButtonTypeSquareRect, 矩形边框类型 CAButtonTypeRoundedRect, 圆角边框类型} CAButtonType;
static CAButton* createWithCenter(const DRect& rect, const CAButtonType& buttonType);
返回值:static CAButton*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
const CAButtonType& | buttonType | 按钮类型 |
解释:创建,并指定其Center
typedef enum{ CAButtonTypeCustom = 0, 默认看不见任何效果,需要自己定义效果 CAButtonTypeSquareRect, 矩形边框类型 CAButtonTypeRoundedRect, 圆角边框类型} CAButtonType;
返回值:virtual bool
参数:
解释:初始化
void setBackGroundViewForState(const CAControlState& controlState, CAView *var);
返回值:void
参数:
类型 | 参数名 | 说明 |
const CAControlState& | controlState | Button的状态 |
CAView | *var | 图像 |
解释:设置Button的状态的背景View
typedef enum{ CAControlStateNormal: 缺省状态 CAControlStateHighlighted: 高亮状态 CAControlStateDisabled: 禁用状态 CAControlStateSelected: 选中状态 CAControlStateAll: 全部状态}CAControlState;
CAView* getBackGroundViewForState(const CAControlState& controlState);
返回值:CAView*
参数:
类型 | 参数名 | 说明 |
const CAControlState& | controlState | Button的状态 |
解释:获取Button的状态的背景View
typedef enum{ CAControlStateNormal: 缺省状态 CAControlStateHighlighted: 高亮状态 CAControlStateDisabled: 禁用状态 CAControlStateSelected: 选中状态 CAControlStateAll: 全部状态}CAControlState;
返回值:void
参数:
类型 | 参数名 | 说明 |
const CAControlState& | controlState | Button的状态 |
CAImage* | var | 图像 |
解释:设置Button的状态和图像(不支持九宫格)
typedef enum{ CAControlStateNormal: 缺省状态 CAControlStateHighlighted: 高亮状态 CAControlStateDisabled: 禁用状态 CAControlStateSelected: 选中状态 CAControlStateAll: 全部状态}CAControlState;
返回值:CAImage*
参数:
类型 | 参数名 | 说明 |
const CAControlState& | controlState | Button的状态 |
解释:获取Button的状态和图像(不支持九宫格)
typedef enum{ CAControlStateNormal: 缺省状态 CAControlStateHighlighted: 高亮状态 CAControlStateDisabled: 禁用状态 CAControlStateSelected: 选中状态 CAControlStateAll: 全部状态}CAControlState;
返回值:void
参数:
类型 | 参数名 | 说明 |
const CAControlState& | controlState | Button的状态 |
const std::string& | var | 文本 |
解释:设置Button标题的显示文本
typedef enum{ CAControlStateNormal: 缺省状态 CAControlStateHighlighted: 高亮状态 CAControlStateDisabled: 禁用状态 CAControlStateSelected: 选中状态 CAControlStateAll: 全部状态}CAControlState;
返回值:const std::string&
参数:
类型 | 参数名 | 说明 |
const CAControlState& | controlState | Button的状态 |
解释:获取Button标题的显示文本
typedef enum{ CAControlStateNormal: 缺省状态 CAControlStateHighlighted: 高亮状态 CAControlStateDisabled: 禁用状态 CAControlStateSelected: 选中状态 CAControlStateAll: 全部状态}CAControlState;
返回值:void
参数:
类型 | 参数名 | 说明 |
const CAControlState& | controlState | Button的状态 |
const CAColor4B& | var | 颜色 |
解释:设置Button的图像颜色和状态
typedef enum{ CAControlStateNormal: 缺省状态 CAControlStateHighlighted: 高亮状态 CAControlStateDisabled: 禁用状态 CAControlStateSelected: 选中状态 CAControlStateAll: 全部状态}CAControlState;
返回值:void
参数:
类型 | 参数名 | 说明 |
const CAControlState& | controlState | Button的状态 |
const CAColor4B& | var | 颜色 |
解释:设置Button的标题颜色和状态
typedef enum{ CAControlStateNormal: 缺省状态 CAControlStateHighlighted: 高亮状态 CAControlStateDisabled: 禁用状态 CAControlStateSelected: 选中状态 CAControlStateAll: 全部状态}CAControlState;
返回值:void
参数:
类型 | 参数名 | 说明 |
const std::string& | var | 文本 |
解释:设置Button文本的字体
void setImageOffset(const DSize& offset);
返回值:void
参数:
类型 | 参数名 | 说明 |
const DSize& | offset | 偏移量 |
解释:设置图像偏移
void setImageSize(const DSize& size);
返回值:void
参数:
类型 | 参数名 | 说明 |
const DSize& | size | 大小 |
解释:设置图像大小
void setTitleOffset(const DSize& offset);
返回值:void
参数:
类型 | 参数名 | 说明 |
const DSize& | offset | 偏移量 |
解释:设置标题偏移量
void setTitleLabelSize(const DSize& size);
返回值:void
参数:
类型 | 参数名 | 说明 |
const DSize& | size | 大小 |
解释:设置标题标签大小
void setTitleFontSize(float fontSize);
返回值:void
参数:
类型 | 参数名 | 说明 |
float | fontSize | 字体大小 |
解释:设置标题字体大小
virtual void setControlState(const CAControlState& var);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
const CAControlState& | var | 状态 |
解释:设置状态
typedef enum{ CAControlStateNormal: 缺省状态 CAControlStateHighlighted: 高亮状态 CAControlStateDisabled: 禁用状态 CAControlStateSelected: 选中状态 CAControlStateAll: 全部状态}CAControlState;
返回值:void
参数:
解释:中断接触状态
virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual bool
参数:
类型 | 参数名 | 说明 |
CATouch | *pTouch | 触摸传递对象 |
CAEvent | *pEven | 此参数待定 |
解释:触摸事件开始时的回调函数
virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch | *pTouch | 触摸传递对象 |
CAEvent | *pEven | 此参数待定 |
解释:触摸事件中触点移动时的回调函数
virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch | *pTouch | 触摸传递对象 |
CAEvent | *pEven | 此参数待定 |
解释:触摸事件结束时的回调函数
virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch | *pTouch | 触摸传递对象 |
CAEvent | *pEven | 此参数待定 |
解释:触摸非正常结束时的回调函数。(例如:电话或锁屏)
返回值:using
参数:
解释:添加回调事件
using CAControl::removeTarget;
返回值:using
参数:
解释:删除回调事件
using CAControl::removeAllTargets;
返回值:using
参数:
解释:删除所有回调事件
类说明
CATextView是多行输入框,其主要用法和CATextField相似。
CATextView 属性 (点击属性名可查看属性介绍)
属性 | 说明 |
TextFontSize | TextView的字体大小 |
Text | TextView的文本内容 |
TextColor | TextView的文字颜色 |
Delegate | TextView绑定Delegate |
TextViewAlign | TextView的文本对齐方式 |
ReturnType | TextView的确认键类型 |
CATextView 方法 (点击方法名可查看方法介绍)
方法 | 说明 |
setBackGroundImage | 背景图像 |
resignFirstResponder | 隐藏键盘第一响应者状态 |
becomeFirstResponder | 弹出键盘第一响应者状态 |
createWithFrame | 创建一个CATextView,并指定其Frame |
createWithCenter | 创建一个CATextView,并指定其Center |
CATextView 属性介绍
类型:int
解释:设置TextView的字体大小。set/get{}。
类型:std::string
解释:设置TextView的文本内容。set/get{}。
类型:CAColor4B
解释:设置TextView的文字颜色。set/get{}。
类型:CATextViewDelegate*
解释:TextView绑定Delegate。set/get{}。
类型:TextViewAlign
解释:TextView的文本对齐方式。set/get{}。
类型:ReturnType
解释:TextView的确认键类型。set/get{}。
CATextView 方法介绍
void setBackGroundImage(CAImage* image);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 图像 |
解释:设置输入框背景图片
virtual bool resignFirstResponder();
返回值:bool
参数:
解释:隐藏键盘第一响应者状态
virtual bool becomeFirstResponder();
返回值:bool
参数:
解释:弹出键盘第一响应者状态
static CATextView* createWithFrame(const DRect& rect);
返回值:CATextView*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
解释:创建,并指定其Frame
static CATextView* createWithCenter(const DRect& rect);
返回值:CATextView*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
解释:创建,并指定其Center
类说明
textView事件代理
CATextViewDelegate 方法(点击查看方法介绍)
方法 | 说明 |
textViewShouldBeginEditing | 开始编辑时触发 |
textViewShouldEndEditing | 结束编辑时触发 |
textViewShouldReturn | 返回时触发 |
keyBoardHeight | 键盘高度 |
textViewShouldChangeCharacters | 文字更改后触发 |
CATextViewDelegate 方法说明
virtual bool textViewShouldBeginEditing(CATextView * sender)
返回值:bool
参数:
类型 | 参数名 | 说明 |
CATextView* | sender | 当前textField |
解释:开始编辑时触发
virtual bool textViewShouldEndEditing(CATextView * sender)
返回值:bool
参数:
类型 | 参数名 | 说明 |
CATextView* | sender | 当前textField |
解释:结束编辑时触发(如果发件人不想从时间中分离,返回true)
virtual void textViewShouldReturn(CATextView *sender){}
返回值:void
参数:
类型 | 参数名 | 说明 |
CATextView* | sender | 当前textField |
解释:返回时触发
virtual void keyBoardHeight(CATextView *sender, int height){}
返回值:void
参数:
类型 | 参数名 | 说明 |
CATextView* | sender | 当前textField |
int | height | 高度 |
解释:键盘高度
virtual bool textViewShouldChangeCharacters(CATextView* sender, unsigned int location, unsigned int lenght, const std::string& changedText);
返回值:bool
参数:
类型 | 参数名 | 说明 |
CATextView* | sender | 当前textField |
unsigned int | location | 光标选中的字符串,即被替换的字符串 |
unsigned int | lenght | length为0时,表示删除 |
const std::string& | changedText | 更改文本时Text内容 |
解释:TextView文字更改后触发(返回true表示修改生效,返回false表示不做修改,textField的内容不变)
类说明
CASwitch控件,它是开关控件,可以实现类型开关。
CASwitch 属性 (点击属性名可查看属性介绍)
属性 | 说明 |
On | switch是否处于开状态 |
TouchClick | switch是否处于触摸点击事件 |
OnImage | 获取开状态的图像 |
OffImage | 获取关状态的图像 |
ThumbTintImage | 获取Switch的图像 |
CASwitch 方法 (点击方法名可查看方法介绍)
方法 | 说明 |
setOnImage | switch开状态时的图像 |
setOffImage | switch关状态时的图像 |
setThumbTintImage | switch的图像 |
setIsOn | 设置switch处于开状态 |
createWithFrame | 创建,并指定其Frame |
createWithCenter | 创建,并指定其Center |
addTarget | 添加回调事件 |
removeTarget | 删除回调事件 |
initWithFrame | 初始化,并指定其Frame |
initWithCenter | 初始化,并指定其Center |
CASwitch使用起来也非常简单,我们看一下实例代码:
首先在.h文件添加CASwitch的监听函数
//CASwitch状态回调 void callback(CAControl* control, CCPoint point);
然后在cpp文件中添加一下代码:
void FirstViewController::viewDidLoad(){ // Do any additional setup after loading the view from its nib. DSize size = this->getView()->getBounds().size; //创建 CASwitch* defaultSwitch = CASwitch::createWithCenter(DRect(size.width*0.5, size.height*0.2, size.width*0.3, 20)); //设置tag defaultSwitch->setTag(100); //设置监听函数 defaultSwitch->addTarget(this, CAControl_selector(FirstViewController::callback)); //添加绘制 this->getView()->addSubview(defaultSwitch); //创建 CASwitch* customSwitch = CASwitch::createWithCenter(DRect(size.width*0.5, size.height*0.4, size.width*0.3, 20)); //设置tag customSwitch->setTag(101); //设置开启时图片 customSwitch->setOnImage(CAImage::create("source_material/btn_rounded_highlighted.png")); //设置关闭时图片 customSwitch->setOffImage(CAImage::create("source_material/btn_rounded_normal.png")); //设置中间图片 customSwitch->setThumbTintImage(CAImage::create("source_material/btn_rounded3D_selected.png")); //设置监听函数 customSwitch->addTarget(this, CAControl_selector(FirstViewController::callback)); //添加绘制 this->getView()->addSubview(customSwitch);}
监听函数内容如下:
void FirstViewController::callback(CAControl* control, DPoint point){ CCLog("callback"); //强转类型 CASwitch* caSwtich = (CASwitch*)control; //获得tag CCLog("Tag:%d", caSwtich->getTag()); //获得状态 if (!caSwtich->isOn()) { CCLog("OFF"); } else { CCLog("ON"); }}
CASwitch 属性介绍
类型:bool
解释:查看是否处于开状态 。is{}。
类型:bool
解释:查看是否处于触摸点击事件。is{}。
类型:CAImage*
解释:获取开状态的图像。get{}。
类型:CAImage*
解释:获取关状态的图像。get{}。
类型:CAImage*
解释:获取Switch的图像。get{}。
CASwitch 方法介绍
void setOnImage(CAImage* onImage)
返回值:void
参数:
类型 | 参数名 | 说明 |
CAImage* | onImage | 开状态时的图像 |
解释:设置开状态时的图像
void setOffImage(CAImge* offImage)
返回值:void
参数:
类型 | 参数名 | 说明 |
CAImge* | offImage | 关状态时的图像 |
解释:设置关状态时的图像
void setThumTintImage(CAImage* thumbTintImage)
返回值:void
参数:
类型 | 参数名 | 说明 |
CAImage* | thumbTintImage | Switch的背景图像 |
解释:设置Switch的背景图像
void setIsOn(bool on, bool animated);
返回值:void
参数:
类型 | 参数名 | 说明 |
bool | on | 是否处于开状态 |
bool | animated | 是否添加动画 |
解释:设置switch处于开状态
static CASwitch* createWithFrame(const DRect& rect);
返回值:static CASwitch*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
解释:创建,并指定其Frame
static CASwitch* createWithCenter(const DRect& rect);
返回值:static CASwitch*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
解释:创建,并指定其Center
void addTarget(CAObject* target, SEL_CAControl selector);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAObject* | target | 当前对象 |
SEL_CAControl | selector | 函数回调器 |
解释:添加回调事件
void removeTarget(CAObject* target, SEL_CAControl selector);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAObject* | target | 当前对象 |
SEL_CAControl | selector | 函数回调器 |
解释:删除回调事件
bool initWithFrame(const DRect& rect);
返回值:bool
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
解释:初始化,并指定其Frame
bool initWithCenter(const DRect& rect);
返回值:
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
解释:初始化,并指定其Center
类说明
CAProgress是进度条控件,主要用于显示任务进度。
CAProgress 属性(点击查看方法介绍)
属性 | 说明 |
ProgressTintColor | 设置进度的颜色 |
ProgressTrackColor | 设置背景的颜色 |
ProgressTintImage | 设置进度的图片 |
ProgressTrackImage | 设置背景的图片 |
CAProgress 方法(点击查看方法介绍)
方法 | 说明 |
init | 初始化 |
create | 创建,默认Frame为(0,0,0,0) |
setColor | 设置进度条颜色 |
setProgress | 设置进度 |
getProgress | 获取进度 |
CAProgress是一个很简单的控件,其使用方式也比较便捷,我们只需要在相应的逻辑里对齐值进行增减便可以了,下面我们的实例中,就演示了在CrossApp的定时器中,每间隔一段时间增减CAProgress的值,当CAProgress值超过最大时设置为0的循环演示。
首先我们在FirstViewController.h添加一个定时器函数
//定时器函数 void updateProgressValue(float dt);
然后在FirstViewController.cpp中添加一下代码:
void FirstViewController::viewDidLoad(){ // Do any additional setup after loading the view from its nib. DSize size = this->getView()->getBounds().size; CAProgress* progress = CAProgress::create(); //设置显示区域 progress->setCenter(DRect(size.width * 0.5, 200, 300, 60)); //设置进度值(0--1)之间的float progress->setProgress(0.5f); //设置进度的颜色 progress->setProgressTintColor(CAColor_orange); //设置进度的图片 //progress->setProgressTintImage(CAImage::create("source_material/btn_rounded_highlighted.png")); //设置背景的颜色 progress->setProgresstrackColor(CAColor_yellow); //设置背景的图片 //progress->setProgressTrackImage(CAImage::create("source_material/btn_rounded3D_selected.png")); //设置tag值 progress->setTag(1); //添加到屏幕 this->getView()->addSubview(progress); //创建Label用于显示progress的值 CALabel* label = CALabel::createWithCenter(DRect(size.width * 0.5, 100, 200, 100)); //水平剧中 label->setTextAlignment(CATextAlignmentCenter); //显示progress的值 label->setText(crossapp_format_string("Progress:%.02f")); //设置tag值 label->setTag(2); //添加到屏幕 this->getView()->addSubview(label); //启动定时器,间隔0.05秒调用 CAScheduler::schedule(schedule_selector(FirstViewController::updateProgressValue), this, 0.05, false);} //定时器函数void FirstViewController::updateProgressValue(float dt){ //根据tag获得progress对象 CAProgress* progress = (CAProgress*) this->getView()->getSubviewByTag(1); //获得progress的值 float value = progress->getProgress(); if (value < 1.0f) { value = value + 0.01; } else { value = 0; } //赋值 progress->setProgress(value); //根据tag获得label CALabel* label = (CALabel*)this->getView()->getSubviewByTag(2); //显示value值 label->setText(crossapp_format_string("Progress:%.02f", value));}
CAProgress 属性说明
类型:CAColor4B
解释:设置进度的颜色。set/get{}。
类型:CAColor4B
解释:设置背景的颜色。set/get{}。
类型:CAImage*
解释:设置进度的图片。set/get{}。
类型:CAImage*
解释:设置背景的图片。set/get{}。
CAProgress 方法说明
返回值:bool
参数:
解释:初始化
返回值:static CAProgress*
参数:
解释:创建,默认Frame为(0,0,0,0)
virtual void setColor(const CAColor4B& color);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
const CAColor4B& | color | 颜色 |
解释:设置进度条颜色
void setProgress(float progress, bool animated = false);
返回值:void
参数:
类型 | 参数名 | 说明 |
float | progress | 进度值 |
bool | animated = false | 是否显示动画 |
解释:设置进度
返回值:float
参数:
解释:获取进度
类说明
CAAlertView是提示框控件,如果提示框内的按钮个数不超过三个,这个横向排列按钮,如果按钮个数超过三个则纵向排列。
CAAlertView 方法 (点击方法名可查看方法介绍)
方法 | 说明 |
addButton | 添加一个按钮到CAAlertView |
setAlertMessage | 提示框的提示信息 |
hide | 隐藏提示框 |
setMessageFontName | 提示信息的字体 |
show | 显示提示框 |
setTarget | 添加监听 |
setTitle | 提示框的标题 |
hideWithDisplayed | 隐藏提示框 |
create | 创建 |
createWithText | 创建,并指定其Text |
initWithText | 初始化,并指定化文本 |
addButton | 添加按钮到CAAlertView |
CAAlertView是提示框控件,如果提示框内的按钮个数不超过三个,这个横向排列按钮,如果按钮个数超过三个则纵向排列。
我们来看一下实例代码:
首先在.h文件中声明一下函数:
//按钮的回调函数 void respondTouch(CAControl* btn, DPoint point); //提示框的回调函数 void alertViewCallback(int btnIndex);
然后在.cpp文件中添加以下代码:
void FirstViewController::viewDidLoad(){ //获取屏幕宽度 DSize size = this->getView()->getBounds().size; //设置背景颜色为黑色 this->getView()->setColor(CAColor_black); //创建Button CAButton* imageBtn = CAButton::createWithCenter(DRect(size.width*0.5, 500, 200, 50), CAButtonTypeSquareRect); //设置Buttion文本 imageBtn->setTitleForState(CAControlStateAll, "Click"); //设置tag值 imageBtn->setTag(1); //设置按钮监听 imageBtn->addTarget(this, CAControl_selector(FirstViewController::respondTouch), CAControlEventTouchUpInSide); //添加到屏幕 this->getView()->addSubview(imageBtn);} void FirstViewController::respondTouch(CAControl* btn, DPoint point){ //获得屏幕大小 DSize size = this->getView()->getBounds().size; //创建CAAlerView 并设置显示文本和 green按钮和yellow按钮 CAAlertView* alertView = CAAlertView::createWithText("ButtonImage", UTF8("点击替换按钮颜色"), "green", "yellow", NULL); //获得0-1之间的随机数 float randNum = CCRANDOM_0_1(); if (randNum > 0.333f) { //添加按钮设置文本为orange alertView->addButton("orange"); } if (randNum> 0.666f) { //添加按钮并设置文本为blue alertView->addButton("blue"); } //显示弹窗(如果不调用,弹窗不显示) alertView->show(); //设置弹窗按钮的回调 alertView->setTarget(this, CAAlertView_selector(FirstViewController::alertViewCallback));} void FirstViewController::alertViewCallback(int btnIndex){ //根据tag获得imageBtn对象 CAButton* imageBtn =(CAButton*) this->getView()->getSubviewByTag(1); //根据CAAlertView上按钮的index判断响应的逻辑 if (btnIndex == 0) { //设置imageBtn背景色为green imageBtn->setBackGroundViewForState(CAControlStateNormal, CAView::createWithColor(CAColor_green)); } else if (btnIndex == 1) { //设置imageBtn背景色为yellow imageBtn->setBackGroundViewForState(CAControlStateNormal, CAView::createWithColor(CAColor_yellow)); } else if (btnIndex == 2) { //设置imageBtn背景色为orange imageBtn->setBackGroundViewForState(CAControlStateNormal, CAView::createWithColor(CAColor_orange)); } else { //设置imageBtn背景色为blue imageBtn->setBackGroundViewForState(CAControlStateNormal, CAView::createWithColor(CAColor_blue)); }}
void setMessageFontName(std::string &var);
返回值:void
参数:
类型 | 参数名 | 说明 |
std::string | var | 信息文字 |
解释:设置提示信息的字体
void setTitle(std::string var, CAColor4B col);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAColor4B | col | 标题颜色 |
std::string | var | 信息文字 |
解释:设置提示框的标题
void setAlertMessage(std::string var, CAColor4B col);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAColor4B | col | 提示信息颜色 |
std::string | var | 提示信息字体 |
解释:设置提示框的提示信息
void addButton(const std::string& btnText, CAColor4B col = ccc4(3, 100, 255, 255), CAImage* pNormalImage = NULL,AImage* pHighlightedImage = NULL);
返回值:void
参数:
类型 | 参数名 | 说明 |
std::string& | btnText | 按钮文字 |
CAColor4B | col | 按钮颜色 |
CAImage* | pNormalImage | 按钮图像 |
AImage* | pHighlightedImage | 高亮度图像 |
解释:添加一个按钮到CAAlertView
void setTarget(CAObject* target, SEL_CAAlertBtnEvent selector);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAObject* | target | 监听目标 |
SEL_CAAlertBtnEvent | selector | 监听选择器 |
解释:设置 CAAlertView 的监听
返回值:void
参数:
解释:设置显示提示框
返回值:void
参数:
解释:设置隐藏提示框void
static bool hideWithDisplayed();
返回值:static bool
参数:
解释:隐藏提示框
返回值:static CAAlertView*
参数:
解释:创建
static CAAlertView* createWithText(const char* pszTitle, const char* pszAlertMsg, const char* pszBtnText, ...);
返回值:CAAlertView*
参数:
类型 | 参数名 | 说明 |
const char* | pszTitle | 标题 |
const char* | pszAlertMsg | 提示框内容 |
const char* | pszBtnText | 按钮文本 |
解释:创建,并指定其Text
bool initWithText(const char* szTitle, const char* szAlertMsg, const char* pszBtnText, ...);
返回值:bool
参数:
类型 | 参数名 | 说明 |
const char* | szTitle | 标题 |
const char* | szAlertMsg | 提示框内容 |
const char* | pszBtnText | 按钮文本 |
解释:初始化,并指定化文本
void addButton(CAButton* pBtn);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAButton* | pBtn | 按钮 |
解释:添加按钮到CAAlertView
类说明
CAScrollView即滚动视图,负责CrossApp的所有滚动操作。可支持裁剪其矩形区域以外的渲染,并让其子数图支持滑动操作与缩放功能。我们在使用CAScrollView时,有时需要对CAScrollView的一个事件进行监听,那么我要就要去实现CAScrollViewDelegate,并重写其函数。
CAScrollView 属性 (点击属性名可查看属性介绍)
属性 | 说明 |
TouchEnabledAtSubviews | 触摸事件启用在子视图 |
ViewSize | 设置容器的内部大小 |
Bounces | 设置是否滚动回弹 |
BounceHorizontal | 水平方向回弹 |
BounceVertical | 竖直方向回弹 |
ShowsHorizontalScrollIndicator | 设置是否显示水平滚动条 |
ShowsVerticalScrollIndicator | 设置是否显示竖直滚动条 |
MaximumZoomScale | 最大缩放比例,默认值为1 |
MinimumZoomScale | 最小缩放比例,默认值为1 |
ZoomScale | 滑动层缩放比例, 默认值为1 |
ScrollViewDelegate | 滚动视图代表 |
ShowsScrollIndicators | 显示滚动指示器 |
HeaderRefreshView | 头部刷新试图 |
FooterRefreshView | 尾部刷新试图 |
Tracking | 是否正在滚动 |
Decelerating | 是否在惯性运动中 |
MultitouchGesture | 多点触控手势 |
Zooming | 是否正在进行缩放控制 |
CAScrollView 方法 (点击方法名可查看方法介绍)
方法 | 说明 |
setContentOffset | 设置相对于视图顶部的偏移量 |
setBackGroundImage | 设置背景图片 |
setBackGroundColor | 设置背景颜色 |
addSubview | 添加子视图 |
insertSubview | 插入子视图 |
removeAllSubviews | 删除所有子视图 |
removeSubview | 删除子视图 |
removeSubviewByTag | 通过标签删除视图 |
getSubviewByTag | 通过标签获取视图 |
setContentOffset | 获得内容偏移 |
setZoomScale | 设置缩放比例 |
isReachBoundaryLeft | 是否到达左边界 |
isReachBoundaryRight | 是否到达右边界 |
isReachBoundaryUp | 是否到达上边界 |
isReachBoundaryDown | 是否到达下边界 |
endHeaderRefresh | 端头刷新 |
endFooterRefresh | 端尾刷新 |
getContentOffset | 获取相对于视图顶部的偏移量 |
ccTouchBegan | 触摸事件开始时的回调函数 |
ccTouchMoved | 触摸事件中触点移动时的回调函数 |
ccTouchEnded | 触摸事件结束时的回调函数 |
ccTouchCancelled | 触摸非正常结束时的回调函数。(例如:电话或锁屏) |
mouseScrollWheel | 鼠标滚轮 |
createWithFrame | 创建,并指定其Frame,默认Frame为(0,0,0,0) |
createWithCenter | 创建,并设置其Center,默认Center为(0,0,0,0) |
init | 初始化 |
startPullToHeaderRefreshView | 开始顶端刷新视图 |
switchPCMode | 开关PC模式 |
CAScrollView即滚动视图,负责CrossApp的所有滚动操作。可支持裁剪其矩形区域以外的渲染,并让其子数图支持滑动操作与缩放功能。我们在使用CAScrollView时,有时需要对CAScrollView的一个事件进行监听,那么我要就要去实现CAScrollViewDelegate,并重写其函数。
CAScrollView相对于前面的控件来说,使用比较复杂。但我们清楚了每个函数的意义之后,便可以很清晰的构建出我们所需要的CAScrollView。这里我们就举一个展示文本的一个CAScrollView。
首先,我们希望能够监听到CAScrollView的变化,那么我则需要去实现CAScrollViewDelegate,我们修该FirstViewController.h,添加要实现的函数如下:
#include <iostream>#include "CrossApp.h" USING_NS_CC; class FirstViewController: public CAViewController ,public CAScrollViewDelegate{ public: FirstViewController(); virtual ~FirstViewController(); //触摸滚动时调用 virtual void scrollViewDidMoved(CAScrollView* view); //触摸滚动停止时调用 virtual void scrollViewStopMoved(CAScrollView* view); //滚动时调用(包括惯性滚动时) virtual void scrollViewDidScroll(CAScrollView* view); //开始滚动时调用 virtual void scrollViewWillBeginDragging(CAScrollView* view); //结束滚动时调用 virtual void scrollViewDidEndDragging(CAScrollView* view); //缩放时调用 virtual void scrollViewDidZoom(CAScrollView* view); //头部开始刷新时调用 virtual void scrollViewHeaderBeginRefreshing(CAScrollView* view); //尾巴开始刷新时调用 virtual void scrollViewFooterBeginRefreshing(CAScrollView* view); protected: void viewDidLoad(); void viewDidUnload(); }
void FirstViewController::viewDidLoad(){ // 获得屏幕大小 DSize size = this->getView()->getBounds().size; //设置背景颜色为黑色 this->getView()->setColor(CAColor_black); //创建scrollView CAScrollView* scrollView = CAScrollView::createWithCenter(DRect(size.width*0.5,size.height*0.5 - 270,size.width * 0.5, 100)); //CACScrollView容器的大小 scrollView->setViewSize(DSize(size.width, 200)); //设置背景颜色 scrollView->setBackGroundColor(CAColor_orange); //设置背景图片 //scrollView->setBackGroundImage(CAImage::create("r/HelloWorld.png")); //水平方向是否回弹 scrollView->setBounceHorizontal(false); //竖直方向是否回弹 scrollView->setBounceVertical(true); //是否滚动回弹,控制竖直和水平方向,默认为ture //scrollView->setBounces(false); scrollView->setScrollViewDelegate(this); this->getView()->addSubview(scrollView); //创建label CALabel* label = CALabel::createWithFrame(DRect(0, 0, size.width * 0.5, 200)); //设置水平剧中 label->setTextAlignment(CATextAlignmentCenter); //设置竖直剧中 label->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter); //设置字体大小 label->setFontSize(18 * CROSSAPP_ADPTATION_RATIO); //设置文本内容 label->setText(UTF8("CrossApp具有强大的跨平台性能,并且具有离线能力,可以进行离线操作。对开发者和用户入门要求较低,且功能强大。综合效率高,开发者可以根据实际情况,考虑各方面因素来选择合适的开发解决方案。")); //设置文本颜色 label->setColor(CAColor_blue); //将label添加到scrollView scrollView->addSubview(label);} //触摸滚动时调用void FirstViewController::scrollViewDidMoved(CAScrollView* view){ CCLog("DidMoved-->");} //触摸滚动停止时调用void FirstViewController::scrollViewStopMoved(CAScrollView* view){ CCLog("StopMoved-->");} //滚动时调用(包括惯性滚动时)void FirstViewController::scrollViewDidScroll(CAScrollView* view){ CCLog("DidMScroll-->");} //开始滚动时调用void FirstViewController::scrollViewWillBeginDragging(CAScrollView* view){ CCLog("BeginDragging-->");} //结束滚动时调用void FirstViewController::scrollViewDidEndDragging(CAScrollView* view){ CCLog("DidEndDragging-->");} //缩放时调用void FirstViewController::scrollViewDidZoom(CAScrollView* view){ CCLog("DidZoom-->");} //头部开始刷新时调用void FirstViewController::scrollViewHeaderBeginRefreshing(CAScrollView* view){ CCLog("HeaderBeginRefreshing-->");} //尾巴开始刷新时调用void FirstViewController::scrollViewFooterBeginRefreshing(CAScrollView* view){ CCLog("FooterBeginRefeshing-->");}
CAScrollView 属性介绍
类型:bool
解释:触摸事件启用在子视图。is/set{}。
类型:DSize
解释:设置容器的内部大小。set/get{}。
类型:bool
解释:设置是否滚动回弹。is/set{}。
类型:bool
解释:水平方向回弹。is/set{}。
类型:bool
解释:竖直方向回弹。is/set{}。
ShowsHorizontalScrollIndicator
类型:bool
解释:设置是否显示水平滚动条。is/set{}。
类型:bool
解释:设置是否显示竖直滚动条。is/set{}。
类型:float
解释:最大缩放比例,默认值为1。set/get{}。
类型:float
解释:最小缩放比例,默认值为1。set/get{}。
类型:float
解释: 滑动层缩放比例, 默认值为1。get{}。
类型:CAScrollViewDelegate*
解释:滚动视图代表。set/get{}。
类型:bool
解释:显示滚动指示器。is/set{}。
类型:CAPullToRefreshView*
解释:头部刷新试图。set/get{}。
类型:CAPullToRefreshView*
解释:尾部刷新试图。set/get{}。
类型:bool
解释:查看 ScrollView 是否正在滚动。is{}。
类型:bool
解释:查看 ScrollView 是否正在进行缩放控制。is{}。
类型:bool
解释:查看 ScrollView 是否在惯性运动中。is{}。
类型:MultitouchGesture
解释:多点触控手势,set/get{}。
CAScrollView 方法介绍
void setContentOffset(const DPoint& offset, bool animated);
返回值:void
参数:
类型 | 参数名 | 说明 |
const DPoint& | offset | 偏移量 |
bool | animated | 是否播放动画 |
解释:设置内容偏移量
void setBackGroundImage(CAImage* image);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAImage* | image | 背景图像 |
解释:设置背景图像
void setBackGroundColor(const CAColor4B &color);
返回值:void
参数:
类型 | 参数名 | 说明 |
const CAColor4B& | color | 背景颜色 |
解释:设置背景颜色
virtual void addSubview(CAView* subview);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAView* | subview | 子视图 |
解释:添加子视图
virtual void insertSubview(CAView* subview, int z);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAView* | subview | 子视图 |
int | z | 数量 |
解释:插入子视图
返回值:void
参数:
解释:删除所有子视图
void removeSubview(CAView* subview);
返回值:void
参数:
类型 | 参数名 | 说明 |
CAView* | subview | 子视图 |
解释:删除子视图
CAView* getSubviewByTag(int aTag);
返回值:CAView*
参数:
类型 | 参数名 | 说明 |
int | aTag | 子视图标签 |
解释:通过标签获取子视图
void removeSubviewByTag(int tag);
返回值:void
参数:
类型 | 参数名 | 说明 |
int | tag | 子视图标签 |
解释:通过标签删除子视图
CAView* getSubviewByTag(int aTag);
返回值:CAView*
参数:
类型 | 参数名 | 说明 |
int | aTag | 子视图标签 |
解释:过标签获取子视图
返回值:DPoint
参数:
解释:获得内容偏移量
void setZoomScale(float zoom);
返回值:void
参数:
类型 | 参数名 | 说明 |
float | zoom | 缩放比例 |
解释:设置缩放比例
virtual bool isReachBoundaryLeft();
返回值:bool
参数:
解释:是否到达左边界
virtual bool isReachBoundaryRight();
返回值:bool
参数:
解释:是否到达右边界
virtual bool isReachBoundaryUp();
返回值:bool
参数:
解释:是否到达上边界
virtual bool isReachBoundaryDown();
返回值:bool
参数:
解释:是否到达下边界
返回值:void
参数:
解释:端头刷新
返回值:void
参数:
解释:端尾刷新
返回值:DPoint
参数:
解释:获取相对于视图顶部的偏移量
virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual bool
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEven | 此参数待定 |
解释:触摸事件开始时的回调函数
virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEven | 此参数待定 |
解释:触摸事件中触点移动时的回调函数
virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEven | 此参数待定 |
解释:触摸事件结束时的回调函数
virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEven | 此参数待定 |
解释:触摸非正常结束时的回调函数。(例如:电话或锁屏)
virtual void mouseScrollWheel(CATouch* pTouch, float off_x, float off_y, CAEvent* pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸 |
float | off_x | x坐标偏移量 |
float | off_y | y坐标偏移量 |
CAEvent* | pEvent | 事件 |
解释:鼠标滚轮
static CAScrollView* createWithFrame(const DRect& rect);
返回值:static CAScrollView*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 区域大小 |
解释:创建,并指定其Frame,默认Frame为(0,0,0,0)
static CAScrollView* createWithCenter(const DRect& rect);
返回值:static CAScrollView*
参数:
类型 | 参数名 | 说明 |
const DRect& | rect | 中心点的位置及大小 |
解释:创建,并设置其Center,默认Center为(0,0,0,0)
返回值:virtual bool
参数:
解释:初始化
void startPullToHeaderRefreshView();
返回值:void
参数:
解释:开始顶端刷新视图
virtual void switchPCMode(bool var);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
bool | var | 开关 |
解释:开关PC模式
类说明
CAScrollView的代理类,定义了四个响应scrollView相关操作的接口,以及声明了一个用于移除代理的接口。
CAScrollViewDelegate 方法(点击查看方法介绍)
方法 | 说明 |
scrollViewDidMoved | 触摸滚动时调用 |
scrollViewStopMoved | 停止移动时调用 |
scrollViewWillBeginDragging | 开始滚动时调用 |
scrollViewDragging | 拖动时调用 |
scrollViewDidEndDragging | 结束滚动时调用 |
scrollViewDidZoom | 缩放时调用 |
scrollViewHeaderBeginRefreshing | 头部开始刷新时调用 |
scrollViewFooterBeginRefreshing | 尾部开始刷新时调用 |
scrollViewTouchUpWithoutMoved | 触摸选中时调用 |
scrollViewDidScroll | 滚动时调用,包括惯性 |
CAScrollViewDelegate 方法说明
virtual void scrollViewDidMoved(CAScrollView* view){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
解释:触摸滚动时调用
virtual void scrollViewStopMoved(CAScrollView* view){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
解释:停止移动时调用
virtual void scrollViewWillBeginDragging(CAScrollView* view){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
解释:开始滚动时调用
virtual void scrollViewDragging(CAScrollView* view){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
解释:拖动时调用
virtual void scrollViewDidEndDragging(CAScrollView* view){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
解释:结束滚动时调用
virtual void scrollViewDidZoom(CAScrollView* view){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
解释:缩放时调用
virtual void scrollViewHeaderBeginRefreshing(CAScrollView* view){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
解释:头部开始刷新时调用
virtual void scrollViewFooterBeginRefreshing(CAScrollView* view){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
解释:尾部开始刷新时调用
virtual void scrollViewTouchUpWithoutMoved(CAScrollView* view, const DPoint& point){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
const DPoint& | point | 触摸点 |
解释:触摸选中时调用
virtual void scrollViewDidScroll(CAScrollView* view){};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAScrollView* | view | 当前view |
解释:滚动时调用,包括惯性
类说明
CAListView和CAScrollView非常相似,只是其内部成列表状,支持水平方案和竖直方向的滑动。常用于一些列表信息的展示,如:通讯录、新闻列表、目录索引等。
CAListView使用起来相对比较复杂,一般我们要同时使用CAListView、CAListViewCell、CAListViewDelegate、CAListViewDataSource来同时构建我们的列表界面,这么我们先分别了解一下它们的作用:
CAListView就是列表控件,是显示列表的载体,它是由多个CAListViewCell列组成的。
CAListViewCell是组成列表的每一个单元,下面我们都简称为cell
CAListViewDelegate是CAListView的交互代理,主要代理选择cell和取消选择cell的事件
CAListViewDataSource是CAListView的数据代理,主要代理cell的数量、cell的高度和将cell添加到CAListView显示。
CAListView 属性(点击查看方法介绍)
属性 | 说明 |
ListViewOrientation | listView的滚动方向 |
ListViewDataSource | 添加数据代理 |
ListViewDelegate | 添加交互代理 |
ListHeaderView | 添加头部视图 |
ListFooterView | 添加尾部视图 |
SeparatorColor | 设置cell分割线的颜色 |
ListHeaderHeight | 设置头部视图的高度 |
ListFooterHeight | 设置尾部视图的高度 |
SeparatorViewHeight | 设置cell分割线的高度 |
AllowsHeadAndFootHover | 允许头和尾的悬停 |
AllowsSelection | 是否开启cell选择 |
AllowsMultipleSelection | 是否可以多选cell |
CAListView 方法(点击查看方法介绍)
方法 | 说明 |
setAllowsSelection | 是否开启cell选择 |
setAllowsMultipleSelection | 是否可以多选cell |
setSelectAtIndex | 根据索引设置cell为选中状态 |
setUnSelectAtIndex | 根据索引设置cell为未选中状态 |
setShowsScrollIndicators | 设置显示滚动条 |
dequeueReusableCellWithIdentifier | 可以重用单元标示符 |
cellForRowAtIndex | 通过cell索引获取Index |
switchPCMode | 开关PC模式 |
ccTouchBegan | 触摸事件开始时的回调函数 |
ccTouchMoved | 触摸事件中触点移动时的回调函数 |
ccTouchEnded | 触摸事件结束时的回调函数 |
ccTouchCancelled | 触摸非正常结束时的回调函数。(例如:电话或锁屏) |
mouseMoved | 鼠标移动 |
mouseMovedOutSide | 鼠标移出 |
CAListViewDelegate 方法(点击查看方法介绍)
方法 | 说明 |
listViewDidSelectCellAtIndex | 选中cell时调用 |
listViewDidDeselectCellAtIndex | 取消选择cell时调用 |
CAListViewDataSource 方法(点击查看方法介绍)
方法 | 说明 |
numberOfIndex | cell的总数量 |
listViewHeightForIndex | cell的高度 |
listViewCellAtIndex | 添加生成cell |
listViewWillDisplayCellAtIndex | 回调当前将要显示的CAListView |
CAListViewCell 属性(点击查看方法介绍)
属性 | 说明 |
ContentView | 获得内容视图 |
BackgroundView | 设置背景视图 |
ReuseIdentifier | 设置重用标识符 |
Index | 获得重用标识符 |
ControlStateEffect | 设置控制状态效应 |
AllowsSelected | CAListViewCell是否可以选择 |
CAListViewCell 方法(点击查看方法介绍)
方法 | 说明 |
create | 创建,默认Frame为(0,0,0,0) |
initWithReuseIdentifier | 重用标识符初始化 |
了解CAListView的主要函数,我们来实现一个CAListView的列表视图。
第一步:创建我们自己的cell
我们需要创建一个先的class,我这里创建一个MyCell,并继承CAListViewCell。用于每个列表单元的布局显示,下面看一下MyCell.h和MyCell.cpp的代码实现。
#pragma once#include "CrossApp.h"class MyCell : public CAListViewCell{public: MyCell(); ~MyCell(); //创建MyCell static MyCell* create(const std::string& identifier, const DRect& _rect = DRectZero); public: //初始化Cell void initWithCell(); //设置回调 void cellBtnCallback(CAControl* btn, DPoint point); protected: //正常状态 virtual void normalListViewCell(); //高亮状态 virtual void highlightedListViewCell(); //选中状态 virtual void selectedListViewCell(); //禁用状态 virtual void disabledListViewCell(); };
MyCell.cpp代码如下:
#include "MyCell.h" MyCell::MyCell(){} MyCell::~MyCell(){} MyCell* MyCell::create(const std::string& identifier, const DRect& _rect){ MyCell* listViewCell = new MyCell(); //设置重用标示符 if (listViewCell&&listViewCell->initWithReuseIdentifier(identifier)) { //设置Frame范围 listViewCell->setFrame(_rect); //设置为内存自动释放 listViewCell->autorelease(); return listViewCell; } //如果创建失败安全释放内存 CC_SAFE_DELETE(listViewCell); return NULL;} void MyCell::initWithCell(){ //获得当前的宽度 DSize _size = this->getFrame().size; //创建CALabel CALabel* test = CALabel::createWithCenter(DRect(_size.width*0.5, _size.height*0.5, _size.width*0.8, _size.height)); test->setTextAlignment(CATextAlignmentCenter); test->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter); test->setFontSize(_px(40)); test->setTag(100); this->addSubview(test);} void MyCell::cellBtnCallback(CAControl* btn, DPoint point){ CCLog("MyCell::cellBtnCallback-->");} void MyCell::normalListViewCell(){ this->setBackgroundView(CAView::createWithColor(CAColor_white));} void MyCell::highlightedListViewCell(){ this->setBackgroundView(CAView::createWithColor(CAColor_yellow));} void MyCell::selectedListViewCell(){ this->setBackgroundView(CAView::createWithColor(CAColor_orange));} void MyCell::disabledListViewCell(){ this->setBackgroundView(CAView::createWithColor(CAColor_black));}
CAListView 属性介绍
类型:CAListViewOrientation*
解释:listView的滚动方向。set/get{}。
类型:CAListViewDataSource*
解释:添加数据代理。set/get{}。
类型:CAListViewDelegate*
解释:添加交互代理。set/get{}。
类型:CAView*
解释:添加头部视图。set/get{}。
类型:CAView*
解释:添加尾部视图。set/get{}。
类型:CAColor4B
解释:设置cell分割线的颜色。set/get{}。
类型:unsigned int
解释:设置头部视图的高度。set/get{}。
类型:unsigned int
解释:设置尾部视图的高度。set/get{}。
类型:unsigned int
解释:设置fell分割线的高度。set/get{}。
类型:bool
解释:允许头和尾的悬停。set/get{}。
类型:bool
解释:是否开启cell选择。is{}。
类型:bool
解释:是否可以多选cell。is{}。
CAListView 方法介绍
virtual void setAllowsSelection(bool var);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
bool | var |
解释:是否可以多选cell
void setSelectAtIndex(unsigned int index);
返回值:void
参数:
类型 | 参数名 | 说明 |
unsigned int | index | cell的索引值 |
解释:根据索引设置cell为选中状态
void setUnSelectAtIndex(unsigned int index);
返回值:void
参数:
类型 | 参数名 | 说明 |
unsigned int | index | cell的索引值 |
解释:根据索引设置cell为未选中状态
virtual void setShowsScrollIndicators(bool var);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
bool | var | 是否显示滚动条 |
解释:设置显示滚动条
CAListViewCell* dequeueReusableCellWithIdentifier(const char* reuseIdentifier);
返回值:CAListViewCell*
参数:
类型 | 参数名 | 说明 |
const char* | reuseIdentifier | 标识符 |
解释:可以重用单元标示符
CAListViewCell* cellForRowAtIndex(unsigned int index);
返回值:CAListViewCell*
参数:
类型 | 参数名 | 说明 |
unsigned int | index | cell的索引值 |
解释:通过cell索引获取Index
virtual void switchPCMode(bool var)
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
bool | var | 开关 |
解释:开关PC模式
virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual bool
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEvent | 此参数待定 |
解释:触摸事件开始时的回调函数
virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEvent | 此参数待定 |
解释:触摸事件中触点移动时的回调函数
virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEvent | 此参数待定 |
解释:触摸事件结束时的回调函数
virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 触摸传递对象 |
CAEvent* | pEvent | 此参数待定 |
解释:触摸非正常结束时的回调函数。(例如:电话或锁屏)
virtual void mouseMoved(CATouch* pTouch, CAEvent* pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 传递对象 |
CAEvent* | pEvent | 此参数待定 |
解释:鼠标移动
virtual void mouseMovedOutSide(CATouch* pTouch, CAEvent* pEvent);
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CATouch* | pTouch | 传递对象 |
CAEvent* | pEvent | 此参数待定 |
解释:鼠标移出
CAListViewDelegate 方法介绍
virtual void listViewDidSelectCellAtIndex(CAListView *listView, unsigned int index)
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CAListView | listView | 当前的listView |
unsigned int | index | cell的索引值 |
解释:选中cell时调用
virtual void listViewDidDeselectCellAtIndex(CAListView *listView, unsigned int index)
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CAListView | listView | 当前的listView |
unsigned int | index | cell的索引值 |
解释:取消选择cell时调用
CAListViewDataSource方法介绍
virtual unsigned int numberOfIndex(CAListView *listView)
返回值:virtual unsigned int
参数:
类型 | 参数名 | 说明 |
CAListView | listView | 当前的listView |
解释:cell的总数量
virtual unsigned int listViewHeightForIndex(CAListView *listView, unsigned int index)
返回值:virtual unsigned int
参数:
类型 | 参数名 | 说明 |
CAListView | listView | 当前的listView |
unsigned int | index | cell的索引值 |
解释:cell的高度
virtual CAListViewCell* listViewCellAtIndex(CAListView *listView, const DSize& cellSize, unsigned int index)
返回值:virtual CAListViewCell*
参数:
类型 | 参数名 | 说明 |
CAListView | listView | 当前的listView |
DSize | cellSize | cell的size |
unsigned int | index | cell的索引值 |
解释:添加生成cell
virtual void listViewWillDisplayCellAtIndex(CAListView* table, CAListViewCell* cell, unsigned int index) ;
返回值:virtual void
参数:
类型 | 参数名 | 说明 |
CAListView | listView | 当前的listView |
CAListViewCell | cell | 显示添加的cell |
unsigned int | index | cell的索引值 |
解释:回调当前将要显示的CAListView
CAListViewCell 属性介绍
类型:CAView*
解释:获得内容视图。get{}。
类型:CAView*
解释:设置背景视图。set/get{}。
类型:std::string
解释:设置重用标识符。set/get{}。
类型:unsigned int
解释:获得重用标识符。set/get{}。
类型:bool
解释:设置控制状态效应。is/set{}。
类型:bool
解释:CAListViewCell是否可以选择。is/set{}。
CAListViewCell 方法介绍
static CAListViewCell* create(const std::string& reuseIdentifier);
返回值:static CAListViewCell*
参数:
类型 | 参数名 | 说明 |
std::string& | reuseIdentifier | 重用标识符 |
解释:创建,默认Frame为(0,0,0,0)
virtual bool initWithReuseIdentifier(const std::string& reuseIdentifier);
返回值:virtual bool
参数:
类型 | 参数名 | 说明 |
std::string& | reuseIdentifier | 重用标识符 |
解释:创建一个空CAListViewCell,默认Frame为(0,0,0,0)
类说明
CAListView的数据代理
CAListView 方法(点击查看方法介绍)
方法 | 说明 |
numberOfIndex | cell的数量 |
listViewHeightForIndex | cell的高度 |
listViewCellAtIndex | 生成cell |
listViewWillDisplayCellAtIndex | 回调当前将要显示的list |
CAListView 方法说明
virtual unsigned int numberOfIndex(CAListView *listView) = 0;
返回值:unsigned int
参数:
类型 | 参数名 | 说明 |
CAListView* | listView | 当前的listView |
解释:cell的数量
virtual unsigned int listViewHeightForIndex(CAListView *listView, unsigned int index) = 0;
返回值:unsigned int
参数:
类型 | 参数名 | 说明 |
CAListView* | listView | 当前的listView |
unsigned int | index | cell的索引值 |
解释:cell的高度
virtual CAListViewCell* listViewCellAtIndex(CAListView *listView, const DSize& cellSize, unsigned int index) = 0;
返回值:CAListViewCell*
参数:
类型 | 参数名 | 说明 |
CAListView* | listView | 当前的listView |
const DSize& | cellSize | cell的size |
unsigned int | index | cell的索引值 |
解释:生成cell
virtual void listViewWillDisplayCellAtIndex(CAListView* table, CAListViewCell* cell, unsigned int index) {};
返回值:void
参数:
类型 | 参数名 | 说明 |
CAListView* | table | ListView的table |
CAListView* | listView | 当前的listView |
unsigned int | index | cell的索引值 |
解释:回调当前将要显示的list
类说明
CAListView的数据代理
CAListViewDelegate 方法(点击查看方法介绍)
方法 | 说明 |
listViewDidSelectCellAtIndex | 选中cell时调用 |
listViewDidDeselectCellAtIndex | 取消选中时调用 |
CAListViewDelegate 方法说明
virtual void listViewDidSelectCellAtIndex(CAListView *listView, unsigned int index)
返回值:void
参数:
类型 | 参数名 | 说明 |
CAListView* | listView | 当前的listView |
unsigned int | index | cell的索引值 |
解释:选中cell时调用
virtual void listViewDidDeselectCellAtIndex(CAListView *listView, unsigned int index)
返回值:void
参数:
类型 | 参数名 | 说明 |
CAListView* | listView | 当前的listView |
unsigned int | index | cell的索引值 |
解释:取消选中时调用
类说明
CATableView 主要用于生成列表,在table中展示数据,是一个一维的表,可以让用户能通过分层的数据进行导航,表可以是静态的或者动态的,可通过 dataSource 协议和 delegate 协议可以实现很多的个性化定制,即便拥有大量数据也非常有效率。CATableView只能有一列数据(cell),且只支持纵向滑动。
我们先了解一下CATableView的界面构成,CATableView主要是由两级目录构成Selection级和Cell级。如图所示,一个CATableView包含一个或多个Selection,一个Selection包含一个或多个Cell,这样就构成了CATableVIew的层级表示图。
CATableView的使用方法和CAListView比较类似,我们也要分别使用:CATableView、CATableViewCell、CATableViewDelegate、CATableViewDataSource来构建。
CATableView是表格视图的容器,是容器的载体。
CATableViewCell是表格视图的一个单元(本节后面简称cell)。
CATableViewDelegate是交互代理,响应cell选中和取消状态。
CATableViewDataSource是数据代理,设置Selection个数及Selection包含cell个数。
CATableView 属性(点击查看方法介绍)
属性 | 说明 |
TableViewDataSource | 添加数据代理 |
TableViewDelegate | 添加交互代理 |
TableHeaderView | 添加头部视图 |
TableFooterView | 添加尾部视图 |
SeparatorColor | 设置cell分割线的颜色 |
TableHeaderHeight | 设置头部的高度 |
TableFooterHeight | 设置尾部的高度 |
SeparatorViewHeight | 设置cell分割线的高度 |
AllowsSelection | 是否开启cell选择 |
AllowsMultipleSelection | 是否可以多选cell |
AlwaysTopSectionHeader | 设置cell顶部的标题 |
AlwaysBottomSectionFooter | 设置cell底部的标题 |
CATableView 方法(点击查看方法介绍)
方法 | 说明 |
setAllowsSelection | 是否开启cell选择 |
setAllowsMultipleSelection | 是否可以多选cell |
setSelectRowAtIndexPath | 设置选中cell时调用 |
setUnSelectRowAtIndexPath | 设置取消选中cell时调用 |
setShowsScrollIndicators | 设置显示滚动条 |
getNumberOfSections | 获取tableview包含的section个数 |
getNumberOfRowsInSection | 获取对应的section所包含的cell个数 |
getSectionHeightInSection | 通过索引获取section高度 |
getSectionHeaderHeightInSection | 通过索引获取section顶部的高度 |
getSectionFooterHeightInSection | 通过索引获取section底部的高度 |
getRowHeightInSectionInRow | 通过索引cell高度获取section和cell |
createWithFrame | 创建,并指定其Frame,默认Frame为(0,0,0,0) |
createWithCenter | 创建,并指定其Center,默认Center为(0,0,0,0) |
dequeueReusableCellWithIdentifier | 可以重用单元标示符 |
cellForRowAtIndexPath | 通过索引cell获取Index路径 |
switchPCMode | 开关PC模式 |
ccTouchBegan | 触摸事件开始时的回调函数 |
ccTouchMoved | 触摸事件中触点移动时的回调函数 |
ccTouchEnded | 触摸事件结束时的回调函数 |
ccTouchCancelled | 触摸非正常结束时的回调函数。(例如:电话或锁屏) |
mouseMoved | 鼠标移动 |
mouseMovedOutSide | 鼠标移出 |
init | 初始化 |
reloadData | 重载数据 |
CATableViewCell 属性(点击查看方法介绍)
属性 | 说明 |
ContentView | 内容视图 |
BackgroundView | 背景视图 |
ReuseIdentifier | 重用标识符 |
Section | section |
Row | cell |
ControlStateEffect | 控制状态 |
AllowsSelected | 允许选择 |
CATableViewCell 方法(点击查看方法介绍)
方法 | 说明 |
create | 创建,默认Frame为(0,0,0,0) |
initWithReuseIdentifier | 重用标识符初始化 |
CATableViewDelegate 方法(点击查看方法介绍)
方法 | 说明 |
tableViewDidSelectRowAtIndexPath | 选中cell时调用 |
tableViewDidDeselectRowAtIndexPath | 取消选择cell时调用 |
CATableViewDataSource 方法(点击查看方法介绍)
方法 | 说明 |
tableCellAtIndex | 获取指定cell |
tableViewHeightForRowAtIndexPath | 获取指定的cell高度 |
numberOfRowsInSection | 获取对应的section所包含的cell个数 |
numberOfSections | 获取section个数 |
tableViewSectionViewForHeaderInSection | 在tableView中通过索引获取头部Section |
tableViewHeightForHeaderInSection | 在tableView中通过索引获取头部Section高度 |
tableViewSectionViewForFooterInSection | 在tableView中通过索引获取尾部Section |
tableViewHeightForFooterInSection | 在tableView中通过索引获取尾部Section高度 |
tableViewWillDisplayCellAtIndex | 回调当前将要显示的tableView |
我们本节也使用CATableView来实现一个简单的表单视图,首先我们需要新建一个Class,命名为:MyTableViewCell并继承CATableViewCell。代码示例如下:
文件CATableViewCell.h
#ifndef _My_TableViewCell_h_#define _My_TableViewCell_h_#include <iostream>#include "CrossApp.h"USING_NS_CC;class MyTableViewCell:public CATableViewCell{public: MyTableViewCell(); virtual ~MyTableViewCell(); //创建MyTableViewCell static MyTableViewCell* create(const std::string& identifier, const DRect& _rect = DRectZero); public: //初始化 void initWithCell(); //按钮的回调函数 void cellBtnCallback(CAControl* btn, DPoint point);protected: //正常状态下调用 virtual void normalTableViewCell(); //高亮状态下调用 virtual void highlightedTableViewCell(); //选择状态下调用 virtual void selectedTableViewCell(); //禁用状态下调用 virtual void disabledTableViewCell(); //恢复状态下调用 virtual void recoveryTableViewCell();};#endif
文件CATableViewCell.cpp
#include "MyTableViewCell.h"MyTableViewCell::MyTableViewCell(){}MyTableViewCell::~MyTableViewCell(){}MyTableViewCell* MyTableViewCell::create(const std::string& identifier, const DRect& _rect){ //创建 MyTableViewCell* tableViewCell = new MyTableViewCell(); if(tableViewCell&&tableViewCell->initWithReuseIdentifier(identifier)) { tableViewCell->setFrame(_rect); tableViewCell->autorelease(); return tableViewCell; } CC_SAFE_DELETE(tableViewCell); return NULL;}void MyTableViewCell::initWithCell(){ //Cell的大小 DSize m_size = this->getFrame().size; //创建CALabel CALabel* cellText = CALabel::createWithCenter(DRect(m_size.width*0.1, m_size.height*0.5, m_size.width*0.3, m_size.height*0.8)); //设置tag cellText->setTag(100); //设置字体大小 cellText->setFontSize(_px(30)); //设置中心对齐 cellText->setTextAlignment(CATextAlignmentCenter); cellText->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter); //添加到当前cell this->addSubview(cellText); //创建CAButton CAButton* btnOnCell = CAButton::createWithCenter(DRect(m_size.width*0.85, m_size.height*0.5, m_size.width*0.2, m_size.height*0.7), CAButtonTypeRoundedRect); //设置tag btnOnCell->setTag(102); //设置显示文本 btnOnCell->setTitleForState(CAControlStateAll, "Touch"); //添加回调监听 btnOnCell->addTarget(this, CAControl_selector(MyTableViewCell::cellBtnCallback), CAControlEventTouchUpInSide); //添加到cell this->addSubview(btnOnCell);}void MyTableViewCell::cellBtnCallback(CAControl* btn, DPoint point){ //按钮被点击时打印log CCLog("MyTableViewCell::cellBtnCallback-->");}void MyTableViewCell::normalTableViewCell(){ //改变背景颜色 this->setBackgroundView(CAView::createWithColor(CAColor_white));}void MyTableViewCell::highlightedTableViewCell(){ //改变背景颜色 this->setBackgroundView(CAView::createWithColor(CAColor_gray));}void MyTableViewCell::selectedTableViewCell(){ //改变背景颜色 this->setBackgroundView(CAView::createWithColor(CAColor_orange));}void MyTableViewCell::disabledTableViewCell(){ //改变背景颜色 this->setBackgroundView(CAView::createWithColor(CAColor_black));}void MyTableViewCell::recoveryTableViewCell(){ //改变背景颜色 this->setBackgroundView(CAView::createWithColor(CAColor_blue));}
我们创建了cell之后,就在FirstViewController实现CATableViewDelegate和CATableViewDataSource这两个代理,那么FirstViewController.h的内容如下:
#ifndef __HelloCpp__ViewController__#define __HelloCpp__ViewController__#include <iostream>#include "CrossApp.h"#include "MyTableViewCell.h"USING_NS_CC;class FirstViewController: public CAViewController , public CATableViewDataSource ,public CATableViewDelegate{ public: FirstViewController(); virtual ~FirstViewController(); public: //选中cell时触发 virtual void tableViewDidSelectRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row); //取消选中cell时触发 virtual void tableViewDidDeselectRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row); //获取对应的section所包含的cell个数 virtual unsigned int numberOfRowsInSection(CATableView *table, unsigned int section); //获取tableview包含的section个数 virtual unsigned int numberOfSections(CATableView *table); //获得指定cell virtual CATableViewCell* tableCellAtIndex(CATableView* table, const DSize& cellSize, unsigned int section, unsigned int row); //设置section的头部 virtual CAView* tableViewSectionViewForHeaderInSection(CATableView* table, const DSize& viewSize, unsigned int section); //设置section的尾部 virtual CAView* tableViewSectionViewForFooterInSection(CATableView* table, const DSize& viewSize, unsigned int section); //获取指定的cell高度 virtual unsigned int tableViewHeightForRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row); //获得指定的section的header vier的高度 virtual unsigned int tableViewHeightForHeaderInSection(CATableView* table, unsigned int section); //获得指定的section的footer view的高度 virtual unsigned int tableViewHeightForFooterInSection(CATableView* table, unsigned int section); protected: void viewDidLoad(); void viewDidUnload(); };#endif /* defined(__HelloCpp__ViewController__) */
然后我们在FirstViewController.cpp中实现表格视图如下:
#include "FirstViewController.h"FirstViewController::FirstViewController(){}FirstViewController::~FirstViewController(){}void FirstViewController::viewDidLoad(){ DSize size = this->getView()->getBounds().size; CATableView* p_TableView = CATableView::createWithCenter(DRect(size.width*0.5, size.height*0.5, size.width, size.height)); p_TableView->setTableViewDataSource(this); p_TableView->setTableViewDelegate(this); p_TableView->setAllowsSelection(true); p_TableView->setAllowsMultipleSelection(true); p_TableView->setSeparatorColor(CAColor_clear); this->getView()->addSubview(p_TableView);}void FirstViewController::viewDidUnload(){ // Release any retained subviews of the main view. // e.g. self.myOutlet = nil;}void FirstViewController::tableViewDidSelectRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row){}void FirstViewController::tableViewDidDeselectRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row){}CATableViewCell* FirstViewController::tableCellAtIndex(CATableView* table, const DSize& cellSize, unsigned int section, unsigned int row){ DSize _size = cellSize; //根据标识获得cell MyTableViewCell* cell = dynamic_cast<MyTableViewCell*>(table->dequeueReusableCellWithIdentifier("CrossApp")); //如果没有找到cell if (cell == NULL) { //创建一个 cell = MyTableViewCell::create("CrossApp", DRect(0, 0, _size.width, _size.height)); //调用cell的初始化 cell->initWithCell(); } //如果是section为1的情况 if (section == 1) { //根据tag获得CAButton CAButton* cellBtn = (CAButton*)cell->getSubviewByTag(102); //隐藏按钮 cellBtn->setVisible(false); } else { //根据tag获得CAButton CAButton* cellBtn = (CAButton*)cell->getSubviewByTag(102); //显示按钮 cellBtn->setVisible(true); } string order = crossapp_format_string("cell-%d",row); //根据tag获得CALabel CALabel* cellText = (CALabel*)cell->getSubviewByTag(100); //设置文本显示 cellText->setText(order); return cell;}CAView* FirstViewController::tableViewSectionViewForHeaderInSection(CATableView* table, const DSize& viewSize, unsigned int section){ CCLog("Header-->"); string head = crossapp_format_string("Selection-%d", section); //创建Section头部视图 CAView* view = CAView::createWithColor(CAColor_gray); DSize _size = viewSize; CALabel* header = CALabel::createWithCenter(DRect(_size.width*0.5, _size.height*0.5, _size.width*0.8, _size.height)); header->setText(head); header->setFontSize(_px(30)); header->setColor(CAColor_white); header->setTextAlignment(CATextAlignmentCenter); header->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter); view->addSubview(header); return view;}CAView* FirstViewController::tableViewSectionViewForFooterInSection(CATableView* table, const DSize& viewSize, unsigned int section){ CCLog("Footer-->"); CAView* view = CAView::createWithColor(CAColor_white); return view;}unsigned int FirstViewController::numberOfRowsInSection(CATableView *table, unsigned int section){ //cell数,从0计算。10表示0-9 return 10;}unsigned int FirstViewController::numberOfSections(CATableView *table){ //表格数,从0开始计算。4则表示0-3 return 4;}unsigned int FirstViewController::tableViewHeightForRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row){ //高度 return _px(130);}unsigned int FirstViewController::tableViewHeightForHeaderInSection(CATableView* table, unsigned int section){ //高度 return _px(50);}unsigned int FirstViewController::tableViewHeightForFooterInSection(CATableView* table, unsigned int section){ return 1;}
这样我们就构建了一个表格视图,大家可以自己尝试这用CATableVIew去实现一个微信的通信录列表。
CATableView 属性说明
类型:CATableViewDataSource*
解释:添加数据代理。set/get{}。
类型:CATableViewDelegate*
解释:添加交互代理。set/get{}。
类型:CAView*
解释:添加头部视图。set/get{}。
类型:CAView*
解释:添加尾部视图。set/get{}。
类型:CAColor4B
解释:设置cell分割线的颜色。set/get{}。
类型:unsigned int
解释:设置头部视图的高度。set/get{}。
类型:unsigned int
解释:设置尾部视图的高度。set/get{}。
类型:unsigned int
解释:设置cell分割线的高度。set/get{}。
类型:bool
解释:是否开启cell选择。is{}。
类型:bool
解释:是否可以多选cell。is{}。
类型:bool
解释:设置cell顶部的标题。is/set{}。
类型:bool
解释:设置cell底部的标题。is/set{}。
CATableView 方法说明
virtual void setAllowsSelection(bool var);
返回值:virtual void
参数:
类型 | 参数名 | 说明 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
类说明 CATableView的数据代理类,用于定义tableView的数据接口。 CATableViewDataSource 方法(点击查看方法介绍)
CATableViewDataSource 方法说明 virtual CATableViewCell* tableCellAtIndex(CATableView* table, const DSize& cellSize, unsigned int section, unsigned int row) = 0; 返回值:CATableViewCell* 参数:
解释:获取指定cell virtual unsigned int tableViewHeightForRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row) = 0; 返回值:unsigned int 参数:
解释:获取指定的cell高度 virtual unsigned int numberOfRowsInSection(CATableView* table, unsigned int section) = 0; 返回值:unsigned int 参数:
解释:获取对应的section所包含的cell个数 virtual unsigned int numberOfSections(CATableView* table); 返回值:unsigned int 参数:
解释:获取tableview包含的section个数 virtual CAView* tableViewSectionViewForHeaderInSection(CATableView* table, const DSize& viewSize, unsigned int section); 返回值:CAView* 参数:
解释:在tableView中通过索引获取头部Section virtual unsigned int tableViewHeightForHeaderInSection(CATableView* table, unsigned int section); 返回值:unsigned int 参数:
解释:在tableView中通过索引获取头部Section高度 virtual CAView* tableViewSectionViewForFooterInSection(CATableView* table, const DSize& viewSize, unsigned int section); 返回值:CAView* 参数:
解释:在tableView中通过索引获取尾部Section virtual unsigned int tableViewHeightForFooterInSection(CATableView* table, unsigned int section); 返回值:unsigned int 参数:
解释:在tableView中通过索引获取尾部Section高度 virtual void tableViewWillDisplayCellAtIndex(CATableView* table, CATableViewCell* cell, unsigned int section, unsigned int row) {}; 返回值:void 参数:
解释:回调当前将要显示的tableView 类说明 CATableView的代理类,用于响应拖动和点击事件。 CATableViewDelegate 方法(点击查看方法介绍)
CATableViewDelegate 方法说明 virtual void tableViewDidSelectRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row) 返回值:void 参数:
解释:选中cell时触发 virtual void tableViewDidDeselectRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row) 返回值:void 参数:
解释:取消选择时触发 类说明 作为CATableView的cell添加进tableView,具备CAControl的功能。 基类 CAControl CATableViewCell 属性(点击查看方法介绍)
CATableViewCell 方法(点击查看方法介绍)
CATableViewCell 属性说明 类型:CAView 解释:内容视图,get{}。 类型:CAView* 解释:设置cell的背景视图,set/get{}。 类型:std::string 解释:复用标示符,set/get{}。 类型:unsigned int 解释:Section,get{}。 类型:unsigned int 解释:行,get{}。 类型:bool 解释:控制状态,is/set{}。 类型:bool 解释:允许选择,is/set{}。 CATableViewCell 方法说明 static CATableViewCell* create(const std::string& reuseIdentifier); 返回值:CATableViewCell* 类型:
解释:创建,并指定cell的复用标示符 virtual bool initWithReuseIdentifier(const std::string& reuseIdentifier); 返回值:bool 类型:
解释:初始化,并指定复用标示符 类说明 CACollectionView同CATableView类似,主要用于数据的展示,实现了tableView的基本功能,同时对tableView拓展,更完美的进行展示数据。 CACollectionView的使用方法和CATableView比较类似,我们也要分别使用:CACollectionView、CACollectionViewCell、CACollectionViewDelegate、CACollectionViewDataSource来构建。 CACollectionView是表格视图的容器,是容器的载体。 CACollectionViewCell是表格视图的一个单元(本节后面简称cell)。 CACollectionViewDelegate是交互代理,响应cell选中和取消状态。 CACollectionViewDataSource是数据代理,设置Selection个数及Selection包含cell个数。 CACollectionView 属性(点击查看方法介绍)
CACollectionView 方法(点击查看方法介绍)
CACollectionViewDelegate 方法(点击查看方法介绍)
CACollectionViewDataSource 方法(点击查看方法介绍)
我们本机的示例,不再使用自定义的CACollectionViewCell的方法来实现,我们来看看本节的示例代码: FirstViewController.h内容:
FirstViewController.cpp内容:
CACollectionView 属性说明 类型:CACollectionViewDataSource* 解释:添加数据代理。set/get{}。
类型:CACollectionViewDelegate* 解释:添加交互代理。set/get{}。 类型:CAView* 解释:添加头部视图。set/get{}。 类型:CAView** 解释:添加尾部视图。set/get{}。 类型:unsigned int 解释:设置头部的高度。set/get{}。 类型:unsigned int 解释:设置尾部的高度。set/get{}。 类型:unsigned int 解释:水平间隔。set/get{}。 类型:unsigned int 解释:垂直间隔。set/get{}。 类型:bool 解释:允许选择。is{}。 类型:bool 解释:允许多个选择。is{}。 类型:bool 解释:总是顶部的标题。is/set{}。 类型:bool 解释:总是底部的节尾。is/set{}。 CACollectionView 方法说明 static CACollectionView* createWithFrame(const DRect& rect); 返回值:static CACollectionView* 参数:
解释:创建,并指定其Frame,默认Frame为(0,0,0,0) static CACollectionView* createWithCenter(const DRect& rect); 返回值:static CACollectionView* 参数:
解释:创建,并指定其Center,默认Center为(0,0,0,0) CACollectionViewCell* dequeueReusableCellWithIdentifier(const char* reuseIdentifier); 返回值:CACollectionViewCell* 参数:
解释:从复用队列中寻找指定标识符的cell virtual void setAllowsSelection(bool var); 返回值:virtual void 参数:
解释:设置是否开启cell选择 virtual void setAllowsMultipleSelection(bool var); 返回值:virtual void 参数:
解释:设置是否可以多选cell void setSelectRowAtIndexPath(unsigned int section, unsigned int row, unsigned int item); 返回值:void 参数:
解释:设置索引路径选择行 void setUnSelectRowAtIndexPath(unsigned int section, unsigned int row, unsigned int item); 返回值:void 参数:
解释:设置索引路径不允许选择行 virtual void setShowsScrollIndicators(bool var); 返回值:virtual void 参数:
解释:设置显示滚动指示器 CACollectionViewCell* cellForRowAtIndexPath(unsigned int section, unsigned int row, unsigned int item); 返回值:CACollectionViewCell* 参数:
解释:根据索引获取显示的cell CACollectionViewCell* getHighlightCollectionCell(); 返回值:CACollectionViewCell* 参数: 解释:获取高亮显示的collectioncell virtual void switchPCMode(bool var); 返回值:virtual void 参数:
解释:开关PC模式 返回值:virtual bool 参数: 解释:初始化 返回值:void 参数: 解释:清除数据 返回值:void 参数: 解释:重载数据 CACollectionViewDelegate 方法说明 virtual void collectionViewDidSelectCellAtIndexPath(CACollectionView *collectionView, unsigned int section, unsigned int row, unsigned int item){}; 返回值:virtual void 参数:
解释:选中cell时调用 virtual void collectionViewDidDeselectCellAtIndexPath(CACollectionView *collectionView, unsigned int section, unsigned int row, unsigned int item){}; 返回值:virtual void 参数:
解释:取消选择cell时调用 CACollectionViewDataSource 方法说明 virtual CACollectionViewCell* collectionCellAtIndex(CACollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int row, unsigned int item) 返回值:virtual CACollectionViewCell* 参数:
解释:获取指定cell virtual unsigned int collectionViewHeightForRowAtIndexPath(CACollectionView* collectionView, unsigned int section, unsigned int row) 返回值:virtual unsigned int 参数:
解释:cell的高度 virtual unsigned int numberOfItemsInRowsInSection(CACollectionView *collectionView, unsigned int section, unsigned int row) 返回值:virtual unsigned int 参数:
解释:每个cell里的item数量 virtual unsigned int numberOfRowsInSection(CACollectionView *collectionView, unsigned int section) 返回值:virtual unsigned int 参数:
解释:获取对应的section所包含的cell个数 virtual unsigned int numberOfSections(CACollectionView *collectionView) 返回值:virtual unsigned int 参数:
解释:获取tableview包含的section个数 virtual CAView* collectionViewSectionViewForHeaderInSection(CACollectionView *collectionView, const DSize& viewSize, unsigned int section) 返回值:virtual CAView* 参数:
解释:headerView的内容 virtual unsigned int collectionViewHeightForHeaderInSection(CACollectionView *collectionView, unsigned int section) 返回值:virtual unsigned int 参数:
解释:每个section的headerView virtual CAView* collectionViewSectionViewForFooterInSection(CACollectionView *collectionView, const DSize& viewSize, unsigned int section) 返回值:virtual CAView* 参数:
解释:footerView的内容 virtual unsigned int collectionViewHeightForFooterInSection(CACollectionView *collectionView, unsigned int section) 返回值:virtual unsigned int 参数:
解释:每个section的footerView virtual void collectionViewWillDisplayCellAtIndex(CACollectionView* table, CACollectionViewCell* cell, unsigned int section, unsigned int row, unsigned int item) {}; 返回值:virtual void 参数:
解释:回调当前将要显示的collectionView 类说明 CACollectionView的数据代理 CACollectionViewDataSource 方法(点击查看方法介绍)
CACollectionViewDataSource 方法说明 virtual CACollectionViewCell* collectionCellAtIndex(CACollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int row, unsigned int item) 返回值:virtual CACollectionViewCell* 参数:
解释:获取指定cell 示例:
virtual unsigned int collectionViewHeightForRowAtIndexPath(CACollectionView* collectionView, unsigned int section, unsigned int row) 返回值:virtual unsigned int 参数:
解释:cell的高度 virtual unsigned int numberOfItemsInRowsInSection(CACollectionView *collectionView, unsigned int section, unsigned int row) 返回值:virtual unsigned int 参数:
解释:每个cell里的item数量 virtual unsigned int numberOfRowsInSection(CACollectionView *collectionView, unsigned int section) 返回值:virtual unsigned int 参数:
解释:获取对应的section所包含的cell个数 virtual unsigned int numberOfSections(CACollectionView *collectionView) 返回值:virtual unsigned int 参数:
解释:获取tableview包含的section个数 virtual CAView* collectionViewSectionViewForHeaderInSection(CACollectionView *collectionView, const DSize& viewSize, unsigned int section) 返回值:virtual CAView* 参数:
解释:headerView的内容 virtual unsigned int collectionViewHeightForHeaderInSection(CACollectionView *collectionView, unsigned int section) 返回值:virtual unsigned int 参数:
解释:每个section的headerView virtual CAView* collectionViewSectionViewForFooterInSection(CACollectionView *collectionView, const DSize& viewSize, unsigned int section) 返回值:virtual CAView* 参数:
解释:footerView的内容 virtual unsigned int collectionViewHeightForFooterInSection(CACollectionView *collectionView, unsigned int section) 返回值:virtual unsigned int 参数:
解释:每个section的footerView virtual void collectionViewWillDisplayCellAtIndex(CACollectionView* table, CACollectionViewCell* cell, unsigned int section, unsigned int row, unsigned int item) {}; 返回值:virtual void 参数:
解释:回调当前将要显示的Collection 类说明 CASlider是滚动条控件,主要作用是方便数值调节,如音量大小控制、缩放视图等操作。 CASlider 属性(点击查看方法介绍)
CASlider 方法(点击查看方法介绍)
然后我们在FirstViewController.cpp中去实现CASlider来控制CAImageView的缩放变化。
我们通过addTarget来为CASlider绑定一个监听,我们又在监听函数中,根据CASlider的变化来改变CAImageView的缩放值,同样的原理我们也可以进行其它数值的改变,大家举一反三可以自己去尝试一下。 CASlider 属性说明 类型:bool 解释:触摸点击。is{}。
类型:float 解释:值。get{}。 类型:float 解释:最小值。get{}。 类型:float 解释:最大值。get{}。 类型:float 解释:滚动条高度。get{}。 类型:CAImage* 解释:设置前景图片(已经划过的部分) 。get{}。 类型:CAImage* 解释:设置后景图片(未划过的部分) 。get{}。 类型:CAImage* 解释:滚动块的图片 。get{}。 CASlider 方法说明 static CASlider* createWithFrame(const DRect& rect); 返回值:static CASlider 参数:
解释:创建,并指定其Frame,默认Frame为(0,0,0,0) static CASlider* createWithCenter(const DRect& rect); 返回值:static CASlider 参数:
解释:创建,并指定其Center,默认Center为(0,0,0,0) void addTarget(CAObject* target, SEL_CAControl selector); 返回值:void 参数:
解释:添加回调事件 void addTargetForTouchUpSide(CAObject* target, SEL_CAControl selector); 返回值:void 参数:
解释:添加回调事件的触摸 void removeTarget(CAObject* target, SEL_CAControl selector); 返回值:void 参数:
解释:删除回调事件 virtual void setValue(float value); 返回值:virtual void 参数:
解释:设定值 virtual void setMinValue(float minValue); 返回值:virtual void 参数:
解释:设定最小值 virtual void setMaxValue(float maxValue); 返回值:virtual void 参数:
解释:设定最大值 virtual void setTrackHeight(float trackHeight); 返回值:virtual void 参数:
解释:设置滚动条高度 virtual void setMinTrackTintImage(CAImage* minTrackTintImage); 返回值:virtual void 参数:
解释:设置前景图片(已经划过的部分) virtual void setMaxTrackTintImage(CAImage* maxTrackTintImage); 返回值:virtual void 参数:
解释:设置后景图片(未划过的部分) virtual void setThumbTintImage(CAImage* thumbTintImage); 返回值:virtual void 参数:
解释:设置滚动块的图片 void setContentSize(const CCSize & var); 返回值:void 参数:
解释:设置内容大小 bool initWithFrame(const DRect& rect); 返回值:bool 参数:
解释:初始化,并指定其Frame bool initWithCenter(const DRect& rect); 返回值:bool 参数:
解释:初始化,并指定其Center virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent); 返回值:virtual bool 参数:
解释:触摸事件开始时的回调函数 virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent); 返回值:virtual void 参数:
解释:触摸事件中触点移动时的回调函数 virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent); 返回值:virtual void 参数:
解释:触摸事件结束时的回调函数 virtual void layoutSubViews(); 返回值:virtual void 参数: 解释:子视图布局 类说明 CAStepper是步进控件,它的作用和CASlider非常类似,只是CAStepper的改变的固定值,它包括左右两部分,左部为减少,右部为增加。 CAStepper 属性(点击查看方法介绍)
CAStepper 方法(点击查看方法介绍)
我们尝试这用CAStepper去控制一张图片的旋转,每次旋转30度。
然后我们在FirstViewController.cpp添加CAStepper控件并为其绑定监听。
这样我们就可以通过增减CAStepper的值来控制CAImageView的旋转角度了。 CAStepper 属性说明 类型:bool 解释:设置连续,set/get{}。 类型:bool 解释:设置自动重复,set/get{}。 类型:bool 解释:设置是否可在最大值和最小值循环,set/get{}。 类型:double 解释:设定值,set/get{}。 类型:double 解释:设定最小值,set/get{}。 类型:double 解释:设定最大值。set/get{}。 类型:double 解释:设置步进值。set/get{}。 类型:bool 解释:设置接触效应,set/get{}。 CAStepper 方法说明 返回值:static CAStepper 参数: 解释:创建,默认Frame为(0,0,0,0) static CAStepper* createWithFrame(const CCRect& rect); 返回值:static CAStepper 参数:
解释:创建,并指定其Frame,默认Frame为(0,0,0,0) static CAStepper* createWithCenter(const CCRect& rect); 返回值:static CAStepper 参数:
解释:创建,并指定其Center,默认Center为(0,0,0,0) void setBackgroundImage(CAImage* image, CAControlState state); 返回值:void 参数:
解释:设置背景图像 CAImage* getBackgroundImageForState(CAControlState state); 返回值:CAImage* 参数:
解释:获取背景图像 void setIncrementImage(CAImage* image, CAControlState state); 返回值:void 参数:
解释:设置右部增加部分的背景 CAImage* getIncrementImageForState(CAControlState state); 返回值:CAImage* 参数:
解释:获取右部增加部分的背景 void setDecrementImage(CAImage* image, CAControlState state); 返回值:void 参数:
解释:设置左部减少部分的背景 CAImage* getDecrementImageForState(CAControlState state); 返回值:CAImage* 参数:
解释:获取左部减少部分的背景 virtual void addTarget(CAObject* target, SEL_CAControl selector); 返回值:virtual void 参数:
解释:添加回调事件 virtual void removeTarget(CAObject* target, SEL_CAControl selector); 返回值:virtual void 参数:
解释:删除回调事件 virtual void removeAllTargets(); 返回值:virtual void 参数: 解释:删除所有回调事件 返回值:virtual bool 参数: 解释:初始化 virtual bool initWithFrame(const DRect& rect); 返回值:virtual bool 参数:
解释:初始化,并指定其Frame virtual bool initWithCenter(const DRect& rect); 返回值:virtual bool 参数:
解释:初始化,并指定其Center 返回值:virtual void 参数: 解释:输入 返回值:virtual void 参数: 解释:退出 返回值:virtual void 参数: 解释:访问 void setDividerColor(CAColor4B color); 返回值:void 参数:
解释:设置分频器颜色 返回值:CAColor4B 参数: 解释:获取分频器颜色 void setTailorImageAtIndex(int index); 返回值:void 参数:
解释:设置索引裁剪图像 CAView* getTailorImageAtIndex(int index); 返回值:CAView* 参数:
解释:获取索引截取图像
类说明 CAPageView用于实现分页、翻页效果。CAPageView为我们提供了横向和竖直两个方向的样式。我也可以通过继承CAPageViewDelegate来实现对CAPageView的监听。 CAPageView 属性(点击查看方法介绍)
CAPageView 方法(点击查看方法介绍)
我来看一下代码实例:
然后在.cpp中实现逻辑:
我们创建了一个含有三个CAView的CAPageView,横向滑动可以切换到不同的CAView,在我们切换时候会调用pageViewDidBeginTurning函数和pageViewDidEndTurning函数,当我们点击某个页面的时候pageViewDidSelectPageAtIndex会被调用。 CAPageView 属性说明 类型:CAPageViewDirection 解释:页面浏览方向。get{}。
类型:CAPageViewDelegate* 解释:页面视图代表。set/get{}。 类型:int 解释:当前页。get{}。 类型:int 解释:间距。set/get{}。 CAPageView 方法说明 static CAPageView* createWithFrame(const CCRect& rect, const CAPageViewDirection& type); 返回值:CAPageView* 参数:
解释:创建,并指定其Frame,默认Frame为(0,0,0,0)
static CAPageView* createWithCenter(const CCRect& rect, const CAPageViewDirection& type); 返回值:CAPageView* 参数:
解释:创建,并指定其Center,默认Center为(0,0,0,0) void setCurrPage(int var, bool animated, bool listener = false); 返回值:void 参数:
解释:设置显示指定页
返回值:unsigned int 参数: 解释:获取页面总数 void setViews(const CADeque<CAView*>& vec); 返回值:void 参数:
解释:添加存放View的CADeque容器 void setViews(const CAVector<CAView*>& vec); 返回值:void 参数:
解释:添加存放View的CAVector容器 CAView* getSubViewAtIndex(int index); 返回值:CAView* 参数:
解释:通过索引获取子视图 virtual void setShowsScrollIndicators(bool var); 返回值:void 参数:
解释:设置显示滚动条 返回值:bool 参数: 解释:初始化 类说明 CAPageView的滚动事件的代理 CAPageViewDelegate 方法(点击查看方法介绍)
CAPageViewDelegate 方法说明 virtual void pageViewDidBeginTurning(CAPageView* pageView) 返回值:void 参数:
解释:开始滚动时触发
virtual void pageViewDidEndTurning(CAPageView* pageView) 返回值:void 参数:
解释:滚动结束时触发
virtual void pageViewDidSelectPageAtIndex(CAPageView* pageView, unsigned int index) 返回值:void 参数:
解释:点击pageView时触发 类说明 CAWaterfallView 由很多的格子组成,但是每个格子的宽度和高速都是不确定的,是在动态改变的,就像瀑布一样,是一条线一条线的。 CAWaterfallView 属性(点击查看方法介绍)
CAWaterfallView 方法(点击查看方法介绍)
CAWaterfallView 属性说明 类型:CAWaterfallViewDataSource* 解释:添加数据代理,set/get{}。 类型:CAWaterfallViewDelegate* 解释:添加交互代理,set/get{}。 类型:CAView* 解释:添加头部视图,set/get{}。 类型:CAView* 解释:添加尾部视图,set/get{}。 类型:unsigned int 解释:设置头部的高度,set/get{}。 类型:unsigned int 解释:设置尾部的高度,set/get{}。 类型:unsigned int 解释:列计数,set/get{}。 类型:unsigned int 解释:项目边缘,set/get{}。 类型:unsigned int 解释:列边缘,set/get{}。 类型:bool 解释:允许选择,is{}。 类型:bool 解释:允许多个选择,is{}。 类型:bool 解释:总是显示顶部,is/set{}。 类型:bool 解释:总是显示底部,is/set{}。 CAWaterfallView 方法说明 static CAWaterfallView* createWithFrame(const DRect& rect); 返回值:CAWaterfallView* 参数:
解释:创建,并指定其Frame static CAWaterfallView* createWithCenter(const DRect& rect); 返回值:CAWaterfallView* 参数:
解释: 创建,并设置其Center 返回值:bool 参数: 解释:初始化 返回值:void 参数: 解释:重载数据 CAWaterfallViewCell* dequeueReusableCellWithIdentifier(const char* reuseIdentifier); 返回值:CAWaterfallViewCell* 参数:
解释:从复用队列中寻找指定标识符的cell virtual void setAllowsSelection(bool var); 返回值:void 参数:
解释:是否开启cell选择 virtual void setAllowsMultipleSelection(bool var); 返回值:void 参数:
解释:是否可以多选cell void setSelectRowAtIndexPath(unsigned int itemIndex); 返回值:void 参数:
解释:通过索引选择一行 void setUnSelectRowAtIndexPath(unsigned int itemIndex); 返回值:void 参数:
解释:通过索引取消选择一行 virtual void setShowsScrollIndicators(bool var); 返回值:void 参数:
解释:显示滚动指示器 CAWaterfallViewCell* cellForRowAtIndexPath(unsigned int itemIndex); 返回值:CAWaterfallViewCell* 参数:
解释:根据索引获取显示的cell const CAVector<CAWaterfallViewCell*>& displayingWaterfallCell(); 返回值:CAVector<CAWaterfallViewCell*>& 参数: 解释:显示Waterfall的Cell CAWaterfallViewCell* getHighlightWaterfallCell(); 返回值:CAWaterfallViewCell* 参数: 解释:突出Waterfall的Cell virtual void switchPCMode(bool var); 返回值:void 参数:
解释:开关PC模式 类说明: 数据代理方法 CAWaterfallViewDataSource 方法
CAWaterfallViewDataSource 方法说明 virtual CAWaterfallViewCell* waterfallCellAtIndex(CAWaterfallView *waterfallView, const DSize& cellSize, unsigned int itemIndex); 返回值:CAWaterfallViewCell* 参数:
解释:获取指定cell virtual unsigned int waterfallViewHeightForItemAtIndex(CAWaterfallView *waterfallView, unsigned int itemIndex); 返回值:unsigned int 参数:
解释:Item高度 virtual unsigned int numberOfItems(CAWaterfallView *waterfallView); 返回值:unsigned int 参数:
解释:item数量 virtual CAView* waterfallViewSectionViewForHeader(CAWaterfallView *waterfallView, const DSize& viewSize); 返回值:CAView* 参数:
解释:waterfallView的标题图像 virtual unsigned int waterfallViewHeightForHeader(CAWaterfallView *waterfallView); 返回值:unsigned int 参数:
解释:waterfallView的头部高度 virtual CAView* waterfallViewSectionViewForFooter(CAWaterfallView *waterfallView, const DSize& viewSize); 返回值:CAView* 参数:
解释:waterfallView的底部图像 virtual unsigned int waterfallViewHeightForFooter(CAWaterfallView *waterfallView); 返回值:unsigned int 参数:
解释:waterfallView的底部高度 virtual void waterfallViewWillDisplayCellAtIndex(CAWaterfallView* waterfallView, CAWaterfallViewCell* cell, unsigned int itemIndex) {}; 返回值:void 参数:
解释:回调当前将要显示的waterfallView 类说明 瀑布流控件代理方法 CAWaterfallViewDelegate 方法(点击查看方法介绍)
CAWaterfallViewDelegate 方法说明 virtual void waterfallViewDidSelectCellAtIndexPath(CAWaterfallView *waterfallView, unsigned int itemIndex){}; 返回值:void 参数:
解释:选中cell时调用 virtual void waterfallViewDidDeselectCellAtIndexPath(CAWaterfallView *waterfallView, unsigned int itemIndex){}; 返回值:void 参数:
解释:取消选择cell时调用 类说明 作为CAWaterfallViewCell添加进WaterfallView。 CAWaterfallViewCell 属性(点击查看方法介绍)
CAWaterfallViewCell 方法(点击查看方法介绍)
CAWaterfallViewCell 属性说明 类型:CAView* 解释:显示图像,get{}。 类型:CAView* 解释:背景图像,set/get{}。 类型:std::string 解释:重用标识符,set/get{}。 类型:unsigned int 解释:项目Index,get{}。 类型:bool 解释:控制状态,is/set{}。 类型:bool 解释:允许选择,is/set{}。 CAWaterfallViewCell 方法说明 static CAWaterfallViewCell* create(const std::string& reuseIdentifier); 返回值:CAWaterfallViewCell* 参数:
解释:创建 virtual bool initWithReuseIdentifier(const std::string& reuseIdentifier); 返回值:bool 参数:
解释:重用标识符初始化 类说明 CATextField是单行输入框控件。主要接收用户的文本输入,多用于用户名、密码、聊天输入等。 CATextField 属性(点击查看方法介绍)
CATextField 方法(点击查看方法介绍)
CATextField 属性说明 类型:CATextFieldDelegate* 解释:数据代理,set/get{}。 类型:ClearButtonMode 解释:添加按钮模式,set/get{}。
类型:int 解释:左边缘(如果选择默认:左16,右16),set/get{}。 类型:int 解释:右边缘(如果选择默认:左16,右16),set/get{}。 类型:int 解释:字体大小,set/get{}。 类型:std::string 解释:PlaceHolder文本内容,set/get{}。 类型:CAColor4B 解释:PlaceHolder文本内容颜色,set/get{}。 类型:std::string 解释:文本内容,set/get{}。 类型:CAColor4B 解释:文本内容颜色,set/get{}。 类型:KeyboardType 解释:键盘类型,set/get{}。(默认为KeyboardTypeDefault类型)
类型:ReturnType 解释:Return键类型,set/get{}。(默认ReturnTypeDone类型)
类型:TextFieldAlign 解释:TextField的对齐方式,set/get{}。(默认:中心)
类型:bool 解释:设置TextField为密码输入框,is/set{}。(密码输入框,默认为假) 类型:bool 解释:返回键恢复键盘,is/set{}。(返回键恢复键盘,默认为真) 类型:int 解释:最大长度,set/get{}。 CATextField 方法说明 virtual bool resignFirstResponder(); 返回值:bool 参数: 解释:隐藏键盘第一响应者状态 virtual bool becomeFirstResponder(); 返回值:bool 参数: 解释:弹出键盘第一响应者状态 static CATextField* createWithFrame(const DRect& frame); 返回值:CATextField* 参数:
解释:创建,并指定其Frame static CATextField* createWithCenter(const DRect& rect); 返回值:CATextField* 参数:
解释:创建,并设置其Center 返回值:bool 参数: 解释:初始化 void setMarginImageLeft(const DSize& imgSize,const std::string& filePath); 返回值:void 参数:
解释:设置左边缘图像 void setMarginImageRight(const DSize& imgSize,const std::string& filePath); 返回值:void 参数:
解释:设置右边缘图像 void setBackgroundImage(CAImage* image); 返回值:void 参数:
解释:设置背景图像 类说明 CATextField的数据代理 CATextFieldDelegate 方法(点击查看方法介绍)
CATextFieldDelegate 方法说明 virtual bool textFieldShouldBeginEditing(CATextField * sender) 返回值:bool 参数:
解释:开始编辑时触发 virtual bool textFieldShouldEndEditing(CATextField * sender) 返回值:bool 参数:
解释:结束编辑时触发(如果发件人不想从时间中分离,返回true) virtual void textFieldShouldReturn(CATextField *sender){} 返回值:void 参数:
解释:返回时触发 virtual void keyBoardHeight(CATextField *sender, int height){} 返回值:void 参数:
解释:键盘高度 virtual bool textFieldShouldChangeCharacters(CATextField* sender, unsigned int location, unsigned int lenght, const std::string& changedText); 返回值:bool 参数:
解释:textField文字更改后触发(返回true表示修改生效,返回false表示不做修改,textField的内容不变) 类说明: CAAutoCollectionView同CATableView类似,主要用于数据的展示,实现了tableView的基本功能,同时对tableView拓展,更完美的进行展示数据。 CAAutoCollectionView的使用方法和CATableView比较类似,我们也要分别使用:CAAutoCollectionView、CACollectionViewCell、CAAutoCollectionViewDelegate、CAAutoCollectionViewDataSource来构建。 CAAutoCollectionView是表格视图的容器,是容器的载体。 CACollectionViewCell是表格视图的一个单元(本节后面简称cell)。 CAAutoCollectionViewDelegate是交互代理,响应cell选中和取消状态。 CAAutoCollectionViewDataSource是数据代理,设置Selection个数及Selection包含Item个数。 CAAutoCollectionView 属性(点击查看方法介绍)
CAAutoCollectionView 方法(点击查看方法介绍)
我们本机的示例,不再使用自定义的CACollectionViewCell的方法来实现,我们来看看本节的示例代码: FirstViewController.h内容:
FirstViewController.cpp内容:
CAAutoCollectionView 属性说明 类型:CAAutoCollectionViewDataSource* 解释:添加数据代理,set/get{}。 类型:CAAutoCollectionViewDelegate* 解释:添加交互代理,set/get{}。 类型:CAView* 解释:添加头部视图,set/get{}。 类型:CAView* 解释:添加尾部视图,set/get{}。 类型:unsigned int 解释:设置头部的高度,set/get{}。 类型:unsigned int 解释:设置尾部的高度,set/get{}。 类型:CACollectionViewOrientation 解释:CollectionView方向取向,set/get{}。 类型:CACollectionViewCellHoriAlign 解释:CollectionView的Cell水平对齐,set/get{}。 类型:CACollectionViewCellVertAlign 解释:CollectionView的Cell垂直对齐,set/get{}。 类型:unsigned int 解释:cell水平间隔,set/get{}。 类型:unsigned int 解释:cell垂直间隔,set/get{}。 类型:unsigned int 解释:水平边距,set/get{}。 类型:unsigned int 解释:垂直边距,set/get{}。 类型:bool 解释:允许选择,is{}。 类型:bool 解释:允许多个选择,is{}。 类型:bool 解释:总是顶部的标题,is/set{}。 类型:bool 解释:总是底部的节尾,is/set{}。 CAAutoCollectionView 方法说明 static CAAutoCollectionView* createWithFrame(const DRect& rect); 返回值:CAAutoCollectionView* 参数:
解释:创建,并指定其Frame static CAAutoCollectionView* createWithCenter(const DRect& rect); 返回值:CAAutoCollectionView* 参数:
解释:创建,并指定Color 返回值:bool 参数: 解释:初始化 返回值:void 参数: 解释:重载数据 CACollectionViewCell* dequeueReusableCellWithIdentifier(const char* reuseIdentifier); 返回值:CACollectionViewCell* 参数:
解释:从复用队列中寻找指定标识符的cell virtual void setAllowsSelection(bool var); 返回值:void 参数:
解释:是否开启cell选择 virtual void setAllowsMultipleSelection(bool var); 返回值:void 参数:
解释:是否可以多选cell void setSelectRowAtIndexPath(unsigned int section, unsigned int item); 返回值:void 参数:
解释:通过索引选择一行 void setUnSelectRowAtIndexPath(unsigned int section, unsigned int item); 返回值:void 参数:
解释:通过索引取消选择一行 virtual void setShowsScrollIndicators(bool var); 返回值:void 参数:
解释:设置显示滚动指示器 CACollectionViewCell* cellForRowAtIndexPath(unsigned int section, unsigned int row, unsigned int item); 返回值:CACollectionViewCell* 参数:
解释:根据索引获取显示的cell const CAVector<CACollectionViewCell*>& displayingCollectionCell(); 返回值:CAVector<CACollectionViewCell*>& 参数: 解释:显示CollectionCell CACollectionViewCell* getHighlightCollectionCell(); 返回值:CACollectionViewCell* 参数: 解释:获取高亮显示的collectioncell virtual void switchPCMode(bool var); 返回值:void 参数:
解释:开关PC模式 类说明: CAAutoCollectionViewDataSource是数据代理,设置Selection个数及Selection包含Item个数。 CAAutoCollectionViewDataSource 方法(点击查看方法介绍)
CAAutoCollectionViewDataSource 方法说明 virtual CACollectionViewCell* collectionCellAtIndex(CAAutoCollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int item); 返回值:CACollectionViewCell* 参数:
解释:获取指定cell virtual DSize collectionViewSizeForItemAtIndexPath(CAAutoCollectionView* collectionView, unsigned int section, unsigned int item); 返回值:DSize 参数:
解释: 获取对应的collectionView的Item大小 virtual unsigned int numberOfItemsInSection(CAAutoCollectionView *collectionView, unsigned int section); 返回值:unsigned int 参数:
解释:每个Section里的item数量 virtual unsigned int numberOfSections(CAAutoCollectionView *collectionView); 返回值:unsigned int 参数:
解释:获取collectionView包含的section个数 virtual CAView* collectionViewSectionViewForHeaderInSection(CAAutoCollectionView *collectionView, const DSize& viewSize, unsigned int section); 返回值:CAView* 参数:
解释:headerView的内容 virtual unsigned int collectionViewHeightForHeaderInSection(CAAutoCollectionView *collectionView, unsigned int section); 返回值:unsigned int 参数:
解释:每个section的headerView virtual CAView* collectionViewSectionViewForFooterInSection(CAAutoCollectionView *collectionView, const DSize& viewSize, unsigned int section); 返回值:CAView* 参数:
解释:footerView的内容 virtual unsigned int collectionViewHeightForFooterInSection(CAAutoCollectionView *collectionView, unsigned int section); 返回值:unsigned int 参数:
解释:每个section的footerView virtual void collectionViewWillDisplayCellAtIndex(CAAutoCollectionView* table, CACollectionViewCell* cell, unsigned int section, unsigned int item) {}; 返回值:void 参数:
解释:回调当前将要显示的collectionView 类说明 CAAutoCollectionViewDelegate是交互代理,响应cell选中和取消状态。 CAAutoCollectionViewDelegate 方法(点击查看方法介绍)
CAAutoCollectionViewDelegate 方法说明 virtual void collectionViewDidSelectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item){}; 返回值:void 参数:
解释:选中cell时调用 virtual void collectionViewDidDeselectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item){}; 返回值:void 参数:
解释:取消选择cell时调用 类说明 视频播放器控制。 CAVideoPlayerControlView 属性(点击查看方法介绍)
CAVideoPlayerControlView 方法(点击查看方法介绍)
CAVideoPlayerControlView 属性说明 类型:std::string 解释:标题,set/get{}。 类型:bool 解释:显示后退按钮,set/get{}。 类型:CAVideoPlayerControlViewDelegate* 解释:PlayerControlView代理类,set/get{}。 CAVideoPlayerControlView 方法说明 static CAVideoPlayerControlView* createWithFrame(const DRect& rect); 返回值:CAVideoPlayerControlView* 参数:
解释:创建,并指定其Frame static CAVideoPlayerControlView* createWithCenter(const DRect& rect); 返回值:CAVideoPlayerControlView* 参数:
解释:创建,并设置其Center void initWithPath(const std::string& szPath); 返回值:void 参数:
解释:初始化并制定文件路径 void initWithUrl(const std::string& szUrl); 返回值:void 参数:
解释:初始化并制定Url 类说明 CAVideoPlayerControlView的代理类 CAVideoPlayerControlViewDelegate 方法(点击查看方法介绍)
CAVideoPlayerControlViewDelegate 方法说明 virtual void onBackButtonClicked(CAVideoPlayerControlView *playerControlView) {}; 返回值:void 参数:
解释:点击后退按钮调用 类说明 Web视图控件 CAWebView 属性(点击查看方法介绍)
CAWebView 方法(点击查看方法介绍)
CAWebView 属性说明 类型:CAWebViewDelegate* 解释:WebView代理类,set/get{}。 CAWebView 方法说明 返回值:bool 参数: 解释:初始化
static CAWebView* createWithFrame(const DRect& rect); 返回值:CAWebView* 参数:
解释:创建,并指定其Frame static CAWebView* createWithCenter(const DRect& rect); 返回值:CAWebView* 参数:
解释:创建,并设置其Center void setJavascriptInterfaceScheme(const std::string &scheme); 返回值:void 参数:
解释:JavaScript接口方法 void loadHTMLString(const std::string &string, const std::string &baseURL); 返回值:void 参数:
解释:加载HTML字符串 void loadURL(const std::string &url); 返回值:void 参数:
解释:加载URL void loadFile(const std::string &fileName); 返回值:void 参数:
解释:加载File 返回值:void 参数: 解释:停止加载 返回值:void 参数: 解释:重载 返回值:bool 参数: 解释:可以后退 返回值:bool 参数: 解释:可以前进 返回值:void 参数: 解释:返回 返回值:void 参数: 解释:前进 std::string evaluateJS(const std::string &js); 返回值:std::string 参数:
解释:evaluateJS 返回值:std::string 参数: 解释:获取HTMLSource void setScalesPageToFit(const bool scalesPageToFit); 返回值:void 参数:
解释:设置页面适度大小 void hideNativeWebAndShowImage(); 返回值:void 参数: 解释:隐藏本地网络和显示图像 返回值:void 参数: 解释:显示本地网络 virtual void update(float dt); 返回值:void 参数:
解释:更新 返回值:void 参数: 解释:显示 virtual void setVisible(bool visible); 返回值:void 参数:
解释:设置可见 void setActivityView(CAActivityIndicatorView* loadingView); 返回值:void 参数:
解释:设置活动视图 void showLoadingActivity(bool show); 返回值:void 参数:
解释:显示加载活动 类说明 CAWebView代理类 CAWebViewDelegate 方法
CAWebViewDelegate 方法说明 virtual bool onShouldStartLoading(CAWebView* pWebView, const std::string &url); 返回值: 参数:
解释:在应开始加载时触发 virtual void onDidFinishLoading(CAWebView* pWebView, const std::string &url); 返回值:void 参数:
解释:在完成加载时触发 virtual void onDidFailLoading(CAWebView* pWebView, const std::string &url); 返回值:void 参数:
解释:在未加载时触发 virtual void onJSCallback(CAWebView* pWebView, const std::string &message); 返回值: 参数:
解释:在JS调用返回时触发 类说明 显示一张Gif图片 CAGifView 方法
CAGifView 方法说明 static CAGifView* createWithFrame(const DRect& rect); 返回值:CAGifView* 参数:
解释:创建,并指定其Frame static CAGifView* createWithCenter(const DRect& rect); 返回值:CAGifView* 参数:
解释: 创建,并设置其Center static CAGifView* createWithGif(CAGif* gif); 返回值: 参数:
解释:创建,并指定Gif 返回值:bool 参数: 解释:初始化 virtual bool initWithGif(CAGif* gif); 返回值:bool 参数:
解释:初始化指定Gif virtual void setFrame(DRect rect); 返回值:void 参数:
解释:设置Frame virtual void setCenter(DRect rect); 返回值:void 参数:
解释:设置Center 返回值: 参数:
解释:设置Gif 返回值:void 参数:
解释:设置Times void setRepeatForever(bool repeatForever); 返回值:void 参数:
解释:设置Gif永远重复 返回值:bool 参数: 解释:查看Gif是否永远重复 类说明 图像渲染 CARenderImage 方法
CARenderImage 方法说明 返回值:void 参数: 解释:访问 返回值:void 参数: 解释:显示 static CARenderImage* create(int w ,int h, CAImage::PixelFormat eFormat, GLuint uDepthStencilFormat); 返回值:CARenderImage* 参数:
解释:创建,指定Format和DepthStencilFormat static CARenderImage* create(int w, int h, CAImage::PixelFormat eFormat); 返回值:CARenderImage* 参数:
解释:创建,指定Format static CARenderImage* create(int w, int h); 返回值:CARenderImage* 参数:
解释:创建 bool initWithWidthAndHeight(int w, int h, CAImage::PixelFormat eFormat); 返回值:bool 参数:
解释:初始化指定格Format bool initWithWidthAndHeight(int w, int h, CAImage::PixelFormat eFormat, GLuint uDepthStencilFormat); 返回值:bool 参数:
解释:初始化指定格Format和DepthStencilFormat void printscreenWithView(CAView* view); 返回值:void 参数:
解释:截图并指定view void printscreenWithView(CAView* view, DPoint offset); 返回值:void 参数:
解释:截图并指定view和offset void printscreenWithView(CAView* view, const CAColor4B& backgroundColor); 返回值:void 参数:
解释:截图并指定view和backgroundColor void printscreenWithView(CAView* view, DPoint offset, const CAColor4B& backgroundColor); 返回值:void 参数:
解释:截图并指定view、offset和backgroundColor void clear(const CAColor4B& backgroundColor); 返回值:void 参数:
解释:清除背景颜色 void clearDepth(float depthValue); 返回值:void 参数:
解释:清除depthValue void clearStencil(int stencilValue); 返回值:void 参数:
解释:清除Stencil bool saveToFile(const char* szFilePath); 返回值:bool 参数:
解释:保存到文件 void listenToBackground(CAObject *obj); 返回值:void 参数:
解释:监听背景 void listenToForeground(CAObject *obj); 返回值:void 参数:
解释:监听前景 unsigned int getClearFlags() const; 返回值:unsigned int 参数: 解释:获取清除的标志 void setClearFlags(unsigned int uClearFlags); 返回值:void 参数:
解释:设置清除的标志 const CAColor4F& getClearColor() const; 返回值:const CAColor4F& 参数: 解释:获取清除的颜色 void setClearColor(const CAColor4F &clearColor); 返回值:void 参数:
解释:设置清除的颜色 返回值:float 参数: 解释:获取清除的深度 void setClearDepth(float fClearDepth); 返回值:void 参数:
解释:设置清除的深度 返回值:int 参数: 解释:获取清除的模板 void setClearStencil(float fClearStencil); 返回值:void 参数:
解释:设置清除的模板 返回值:bool 参数: 解释:查看是否自动显示 void setAutoDraw(bool bAutoDraw); 返回值:void 参数:
解释:设置自动显示 类说明 分段按钮,segmentedControl由一个或多个segment组成,点击不同段得到不同的信息,每次只能选择一段。 基类 CAControl CASegmentedControl 属性(点击查看方法介绍)
CASegmentedControl 方法(点击查看方法介绍) CASegmentedControl 属性说明 类型:CAView* 解释:背景视图,get{}。 CASegmentedControl 方法说明 static CASegmentedControl* create(unsigned int itemsCount); 返回值:CASegmentedControl* 参数:
解释:创建,并指定itemsCount,默认Frame为(0,0,0,0) static CASegmentedControl* createWithFrame(const DRect& rect, unsigned int itemsCount); 返回值:CASegmentedControl* 参数:
解释:创建,并指定其Frame和itemsCount,默认Frame为(0,0,0,0) static CASegmentedControl* createWithCenter(const DRect& rect, unsigned int itemsCount); 返回值:CASegmentedControl* 参数:
解释:创建,并指定其Create和itemsCount,默认Create为(0,0,0,0) 返回值:bool 参数: 解释:初始化 void setBackgroundImage(CAImage* image); 返回值:void 参数:
解释:设置背景图像 void setTitleColor(const CAColor4B& color); 返回值:void 参数:
解释:设置标题颜色 const CAColor4B& getTitleColor(); 返回值:CAColor4B& 参数: 解释:获取标题颜色 void setImageColor(const CAColor4B& color); 返回值:void 参数:
解释:设置图像颜色 const CAColor4B& getImageColor(); 返回值:CAColor4B& 参数: 解释:获取图像颜色 void insertSegmentWithTitleAtIndex(const std::string& title, int index); 返回值:void 参数:
解释:根据传递的参数,插入segment并设置标题,标题默认为空。 void insertSegmentWithImageAtIndex(CAImage* image, int index, CAControlState controlState); 返回值:void 参数:
解释:根据传递的参数,插入segment并设置前景图片,标题默认为空。 void removeSegmentAtIndex(int index); 返回值:void 参数:
解释:移除segment的某一段 void setTitleFontName(std::string titleName); 返回值:void 参数:
解释:设置标题字体 void setTitleFontSize(float titleSize); 返回值:void 参数:
解释:设置标题大小 void setSegmentItemBackgroundImage(CAImage* image); 返回值:void 参数:
解释:设置Segment背景图像 void addTarget(CAObject* target, SEL_CASegmentedControl selector); 返回值:void 参数:
解释:添加点击事件 void setSelectedAtIndex(int index); 返回值:void 参数:
解释:设置Selected的index 返回值:int 参数: 解释:获取Selected的index 返回值:int 参数: 解释:获取segment的数量 void setTitleForSegmentAtIndex(const std::string& title, int index); 返回值:void 参数:
解释:设置segment标题,通过index std::string getTitleForSegmentAtIndex(int index); 返回值:std::string 参数:
解释:获取segment标题,通过index void setImageForSegmentAtIndex(CAImage* image, int index, CAControlState controlState); 返回值:void 参数:
解释:设置segment图像和状态,通过index CAImage* getImageForSegmentAtIndex(int index); 返回值:CAImage* 参数:
解释:获取segment图像,通过index void setWidthForSegmentAtIndex(float width, int index); 返回值:void 参数:
解释:设置segment的宽度,通过index float getWidthForSegmentAtIndex(int index); 返回值:float 参数:
解释:获取segment的宽度,通过index void setContentOffsetForSegmentAtIndex(DSize offset, int index); 返回值:void 参数:
解释:设置segment偏移量,通过index DSize getContentOffsetForSegmentAtIndex(int index); 返回值:DSize 参数:
解释:获取segment偏移量,通过index void setEnabledForSegmentAtIndex(bool isEnable, int index); 返回值:void 参数:
解释:设置segment的段是否启用,通过index bool isEnabledForSegmentAtIndex(int index); 返回值:bool 参数:
解释:通过index 查看segment的段是否启用 void setImageSizeAtIndex(DSize size, int index); 返回值:void 参数:
解释: 设置图像大小和index void setImageSelectedColor(const CAColor4B& color); 返回值:void 参数:
解释:设置图像Selected颜色 const CAColor4B& getImageSelectedColor(); 返回值:CAColor4B& 参数: 解释:获取图像Selected颜色 void setTintColor(const CAColor4B& color); 返回值:void 参数:
解释:设置标题颜色 void setTitleSelectedColor(const CAColor4B& color); 返回值:void 参数:
解释:设置标题Selected颜色 const CAColor4B& getTitleSelectedColor(); 返回值:CAColor4B& 参数: 解释:获取标题Selected颜色 类说明 选择器控件,pickerView至少包括一个组件(component),每个组件包括供选择的子项(row)。 基类 CAView,CATableViewDataSource CAPickerView 属性(点击查看方法介绍)
CAPickerView 方法(点击查看方法介绍)
CAPickerView 属性说明 类型:CAPickerViewDelegate* 解释:pickerView的选中事件代理,包含一个选中时触发的接口,public get/set{}。 类型:CAPickerViewDataSource* 解释:pickerView的数据代理,详细接口请参考CAPickerViewDataSource代理类,public get/set{}。 类型:float 解释:备选项的字体大小,public get/set{}。 类型:float 解释:选中项的字体大小,public get/set{}。 类型:CAColor4B 解释:备选项的字体颜色,public get/set{}。 类型:CAColor4B 解释:选中项的字体颜色,public get/set{}。 类型:CAColor4B 解释:选框的边框颜色,public get/set{}。 CAPickerView 方法说明 static CAPickerView* create(); 返回值:CAPickerView* 参数: 解释:创建,默认Frame为(0,0,0,0) static CAPickerView* createWithFrame(const DRect& rect); 返回值:CAPickerView* 参数:
解释:创建,并指定其Frame,默认Frame为(0,0,0,0) static CAPickerView* createWithCenter(const DRect& rect); 返回值:CAPickerView* 参数:
解释:创建,并设置其Center,默认Center为(0,0,0,0) 返回值:bool 参数: 解释:初始化 返回值:void 参数: 解释:进入 返回值:void 参数: 解释:退出 返回值:void 参数: 解释:访问 virtual bool initWithFrame(const DRect& rect); 返回值:bool 参数:
解释:初始化,并指定其Frame virtual bool initWithCenter(const DRect& rect); 返回值:bool 参数:
解释:初始化,并指定其Center virtual int numberOfComponents(); 返回值:int 参数: 解释:获取组件的数量 virtual int numberOfComponents() 返回值:int 参数: 解释:返回pickerView中component的数量 virtual int numberOfRowsInComponent(unsigned int component) 返回值:int 参数:
解释:返回pickerView中component的数量 virtual CCSize rowSizeForComponent(unsigned int component) 返回值:CCSize 参数:
解释:获取指定组件的size virtual CAView* viewForRow(unsigned int row, unsigned int component) 返回值:CAView* 参数:
解释:获取row virtual void reloadAllComponents() 返回值:void 参数: 解释:刷新所有的组件,创建pickerView时必须手动刷新一次pickerView。 示例:
virtual void reloadComponent(unsigned int component, bool bReload = true) 返回值:void 参数:
解释:刷新指定组件 virtual void selectRow(unsigned int row, unsigned int component, bool animated = false) 返回值:void 参数:
解释:指定选中的row virtual int selectedRowInComponent(unsigned int component) 返回值:int 参数:
解释:获取当前被选中的row virtual void setBackgroundColor(const CAColor4B& color); 返回值:void 参数:
解释:设置背景颜色 类说明 CAPickerView的数据代理 CAPickerViewDataSource 方法(点击查看方法介绍)
CAPickerViewDataSource 方法说明 virtual unsigned int numberOfComponentsInPickerView(CAPickerView* pickerView) = 0 返回值:unsigned int 参数:
类型 参数名 说明 CAPickerView* pickerView 当前pickerView 解释:设定component的数量 virtual unsigned int numberOfRowsInComponent(CAPickerView* pickerView, unsigned int component) = 0 返回值:unsigned int 参数:
解释:设定component中row的数量 virtual float widthForComponent(CAPickerView* pickerView, unsigned int component) {return 0;} 返回值:float 参数:
解释:设定component的宽
virtual float rowHeightForComponent(CAPickerView* pickerView, unsigned int component) {return 0;} 返回值:float 参数:
解释:设定row的高
virtual CCString* titleForRow(CAPickerView* pickerView, unsigned int row, unsigned int component) {return NULL;} 返回值:CCString* 参数:
解释:设定row的显示内容
virtual CAView* viewForRow(CAPickerView* pickerView, unsigned int row, unsigned int component) {return NULL;} 返回值:CAView* 参数:
解释:设定row的显示内容
virtual CAView* viewForSelect(CAPickerView* pickerView, unsigned int component, const CCSize& size) {return NULL;} 返回值:CAView* 参数:
解释:设定选中row的view 类说明 CAPickerView的滚动事件的代理 CAPickerViewDelegate 方法(点击查看方法介绍)
CAPickerViewDelegate 方法说明 virtual unsigned int numberOfComponentsInPickerView(CAPickerView* pickerView) = 0; 返回值:unsigned int 参数:
解释:获取PickerView的Component数量 virtual unsigned int numberOfRowsInComponent(CAPickerView* pickerView, unsigned int component) = 0; 返回值:unsigned int 参数:
解释:获取PickerView的Component行数 virtual float widthForComponent(CAPickerView* pickerView, unsigned int component) {return 0;} 返回值:float 参数:
解释:PickerView的Component宽度 virtual float rowHeightForComponent(CAPickerView* pickerView, unsigned int component) {return 0;} 返回值:float 参数:
解释:PickerView的Component高度 virtual const char* titleForRow(CAPickerView* pickerView, unsigned int row, unsigned int component) {return NULL;} 返回值:const char* 参数:
解释:PickerView的Row标题 virtual CAView* viewForRow(CAPickerView* pickerView, unsigned int row, unsigned int component) {return NULL;} 返回值:CAView* 参数:
解释:PickerView的背景图像 virtual CAView* viewForSelect(CAPickerView* pickerView, unsigned int component, const DSize& size) {return NULL;} 返回值:CAView* 参数:
解释:PickerView的选中时图像 类说明 活动指示器,即加载动画。 基类 CAView CAActivityIndicatorView 属性(点击查看方法介绍)
CAActivityIndicatorView 方法(点击查看方法介绍)
CAActivityIndicatorView 属性介绍 类型:CAView* 解释:活动指示器的动画视图,动作为重复旋转动画,get/set{}。
类型:CAView* 解释:活动指示器动画的背景视图,get/set{}。
类型:float 解释:最小加载时间,默认为0,如果加载时间小于最小加载时间,则在这期间加载动画不能被停止,get/set{}。 CAActivityIndicatorView 方法说明 返回值:void 参数: 解释:开始运行活动指示器 返回值:void 参数: 解释:停止活动指示器 返回值:bool 参数: 解释:判断活动指示器是否正在运行,即是否有任务等待。 void setTargetOnCancel(CAObject* target, SEL_CallFunc callBack) 返回值:void 参数:
解释:取消活动指示器后的操作,通过回调函数定义操作。 static CAActivityIndicatorView* create(); 返回值:CAActivityIndicatorView* 参数: 解释:创建,默认Frame为(0,0,0,0) static CAActivityIndicatorView* createWithFrame(const DRect& rect); 返回值:CAActivityIndicatorView* 参数:
解释:创建,并指定其Frame,默认Frame为(0,0,0,0) static CAActivityIndicatorView* createWithCenter(const DRect& rect); 返回值:CAActivityIndicatorView* 参数:
解释:创建,并设置其Center,默认Center为(0,0,0,0) 返回值:bool 参数: 解释:初始化 返回值:void 参数: 解释:进入 返回值:void 参数: 解释:退出 返回值:void 参数: 解释:访问 返回值:void 参数: 解释:显示 virtual void setStyle(CAActivityIndicatorViewStyle style); 返回值:void 参数:
解释: 设置活动指示器的类型,枚举值,默认包括四种类型
void setTimesOneCycle(float times); 返回值:void 参数:
解释:设置一个循环周期时间 void setCycleTime(float time); 返回值:void 参数:
解释:设置周期时间 UI编辑器说明: 新添加CACell的布局编辑。 CATableViewCell、CACollectionViewCell和CAWaterfallViewCell都继承CACell。 CACell可单独使用,也可以运用到CATableViewCell、CACollectionViewCell和CAWaterfallViewCell。 UI编辑器CACell布局使用简单介绍: FirstViewController.h文件:
FirstViewController.cpp文件:
UI编辑器Controller布局使用简单介绍: FirstViewController.h文件:
FirstViewController.cpp文件:
类说明 CAViewController是CrossApp中MVC中的C(控制器),它的作用是用于CAView的管理、控制视图及CAViewController之间的通信与协调。CAViewController是所有CrossApp中Controller的基类。 基类 CAContentContainer, CAKeypadDelegate CAViewController 属性(点击查看方法介绍)
CAViewController 方法(点击查看方法介绍)
生命周期 viewDidLoad() //第一次被加载时调用(仅有一次会被调用) viewDidAppear() //显示时被调用(例如TableController切换到显示) viewDidDisappear() //隐藏时被调用(例如TableController切换到其他Controller viewDidUnload() //移除时被调用(仅有一次会被调用) 注意: Window直接加载的CAViewController显示时不会调用viewDidAppear()函数 CAViewController之间的管理 切换 如果CAViewController是直接被CAWindow所加载的,那么它就可以直接使用presentModalViewController(CAViewController* controller, bool animated);来跳转到新的CAViewController,或通过dismissModalViewController(bool animated);对当前的CAViewController关闭。 嵌套 CAViewController是可以相互嵌套管理的,例如CATableController可以管理多个其他的CAViewController. 例如:
CAView的管理 一般我们会把逻辑代码写到viewDidLoad()方法中,我回把所要显示的CAView通过this->getView()->addSubview(CrossApp::CAView *child);添加到m_pView的子节点上。 例如:
CAViewController 属性 类型:std::string 解释:标题。set/get{}。
类型:CANavigationController* 解释:获取NavigationController属性。get{}。 类型:CANavigationBarItem* 解释:获取NavigationBarItem属性。get{}。 类型:CATabBarController* 解释:获取TabBarController。get{}。 类型:CATabBarItem* 解释:获取TabBarItem。get{}。 CAViewController 方法 返回值:bool 参数: 解释:初始化,默认返回true,如果返回false则初始化失败 返回值:const char* 参数: 解释:返回类型的名称 返回值:bool 参数: 解释:当前View是否再运行 void setNavigationBarItem(CANavigationBarItem* item); 返回值:void 参数:
解释:设置CANavigationBarItem属性(只有被CANavigationController管理才会显示) void setTabBarItem(CATabBarItem* item); 返回值:void 参数:
解释:设置CATabBarItem属性(只有被CATableController管理才会显示) void presentModalViewController(CAViewController* controller, bool animated); 返回值:void 参数:
解释:弹出一个CAViewController void dismissModalViewController(bool animated); 返回值:void 参数:
解释:移除CAViewController virtual bool isKeypadEnabled(); 返回值:virtual bool 参数: 解释:是否监听物理返回键(android的Back键或pc的Esc键) virtual void setKeypadEnabled(bool value); 返回值:virtual void 参数:
解释:设置是否监听物理返回键,默认为false
返回值:CAView* 参数: 解释:当前CAViewController的View根节点 virtual CAResponder* nextResponder(); 返回值:CAResponder* 参数: 解释:获得下个监听者 virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent); 返回值:bool 参数:
解释:触摸事件开始时的回调函数
virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent); 返回值:void 参数:
解释:触摸事件中触点移动时的回调函数 virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent); 返回值:void 参数:
解释:触摸事件结束时的回调函数 virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent); 返回值:void 参数:
解释:触摸非正常结束时的回调函数。(例如:电话或锁屏) virtual void viewDidLoad() {}; 返回值:void 参数: 解释:当前控制器的view被加载完毕后调用 virtual void viewDidUnload() {}; 返回值:void 参数: 解释:当前控制器的view被移除掉时调用 virtual void viewDidAppear() {}; 返回值:void 参数: 解释:显示时被调用
virtual void viewDidDisappear() {}; 返回值:void 参数: 解释:隐藏时被调用
virtual void reshapeViewRectDidFinish() {}; 返回值:void 参数: 解释:当前view被修改大小时被自动调用 virtual void keyBackClicked() {}; 返回值:void 参数: 解释:back键响应函数(android平台) virtual void keyMenuClicked() {}; 返回值:void 参数: 解释:menu键响应函数(android平台) virtual void addViewFromSuperview(CAView* node); 返回值:void 参数:
解释:将自己添加到根节点View(例如window,也可是其他View) virtual void removeViewFromSuperview(); 返回值:void 参数: 解释:将自己从根节View点移除 类说明 CADrawerController是易用的侧边抽屉式导航控制器。 基类 CAViewController CADrawerController 方法(点击查看方法介绍)
创建与初始
显示与隐藏
CADrawerController 方法 virtual bool initWithController(CAViewController* leftViewController,CAViewController* rightViewController,float division); 返回值:bool 参数:
解释:初始化 CAViewController* getLeftViewController(); 返回值:CAViewController* 参数: 解释:获得左边的ViewController CAViewController* getRightViewController(); 返回值:CAViewController* 参数: 解释:获得右边的ViewController void showLeftViewController(bool animated); 返回值:void 参数:
解释:显示左边的viewController
void hideLeftViewController(bool animated); 返回值:void 参数:
解释:隐藏左边的viewController bool isShowLeftViewController(); 返回值:bool 参数: 解释:左边是否在显示 类说明 CANavigationController是CAViewController的子类,它的作用是管理多个CAViewController,我们要明白的是CANavigationController是使用堆栈的方式管理的,即我们每往CANavigationController添加一个CAViewController,则进行一次堆栈的操作,每次移除则进行一次出栈操作。 基类 CAViewController, CANavigationBarDelegate CANavigationController 属性(点击查看方法介绍)
CANavigationController 方法(点击查看方法介绍)
创建与初始化
样式属性 可控制样式:barItem位置、标题、左按钮、右按钮
主要了解:CABarButtonItem这个类的样式
管理 初始化
替换
增加
移除
CANavigationController 属性 类型:bool 解释:导航栏隐藏。is{}。 类型:bool 解释:触摸移动。is/set{}。 类型:CAImage*, 解释:导航栏背面图像。set/get{}。 类型:CAColor4B 解释:导航栏背面颜色。set/get{}。 类型:CAColor4B 解释:导航栏标题颜色。set/get{}。 类型:CAColor4B 解释:导航栏按钮颜色。set/get{}。 CANavigationController 方法 virtual bool initWithRootViewController(CAViewController* viewController,CABarVerticalAlignment var = CABarVerticalAlignmentTop); 返回值:bool 参数:
解释:使用CAViewController来初始化,这个是必须的 virtual void replaceViewController(CAViewController* viewController, bool animated); 返回值:void 参数:
解释:替换栈顶的viewController
virtual void pushViewController(CAViewController* viewController, bool animated); 返回值:void 参数:
解释:将新的viewController压入栈顶 CAViewController* popViewControllerAnimated(bool animated); 返回值:CAViewController* 参数:
解释:移除栈顶的viewController void popToRootViewControllerAnimated(bool animated); 返回值:void 参数:
解释:移除根的viewController CAViewController* popFirstViewController(); 返回值:CAViewController* 参数: 解释:移除第一个viewController CAViewController* popViewControllerAtIndex(int index); 返回值:CAViewController* 参数:
解释:根据索引值移除viewController CAViewController* getViewControllerAtIndex(int index); 返回值:CAViewController* 参数:
解释:根据索引值获取viewController CAViewController* getBackViewController(); 返回值:CAViewController* 参数: 解释:返回最后一个ViewController inline unsigned long getViewControllerCount() ; 返回值:unsigned long 参数: 解释:当前栈内viewController总数 virtual void setNavigationBarHidden(bool hidden, bool animated); 返回值:void 参数:
解释:是否隐藏navigationBar void updateItem(CAViewController* viewController); 返回值:void 参数:
解释:更新navigationBarItem virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent); 返回值:bool 参数:
解释:触摸事件开始时的回调函数
virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent); 返回值:void 参数:
解释:触摸事件中触点移动时的回调函数
virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent); 返回值:void 参数:
解释:触摸事件结束时的回调函数 virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent); 返回值:void 参数:
解释:触摸非正常结束时的回调函数。(例如:电话或锁屏) virtual bool isReachBoundaryLeft(); 返回值:virtual bool 参数: 解释:到左边界 virtual bool isReachBoundaryRight(); 返回值:virtual bool 参数: 解释:到右边界 virtual bool isReachBoundaryUp(); 返回值:virtual bool 参数: 解释:到上边界 virtual bool isReachBoundaryDown(); 返回值:virtual bool 参数: 解释:到下边界 类说明 CANavigationBar的代理类,在navigationController中移除栈顶的viewController。 CANavigationBarDelegate 方法(点击查看方法介绍)
CANavigationBarDelegate 方法说明 virtual void navigationPopViewController(CANavigationBar* navigationBar, bool animated) = 0 返回值:void 参数:
解释:将viewControlller从栈顶移除 类说明 每个viewController都具有一个navigationBarItem,在navigationBar中用于标识当前的viewController。 基类 CABarItem CANavigationBarItem 属性(点击查看方法介绍)
CANavigationBarItem 方法(点击查看方法介绍)
CANavigationBarItem 属性介绍 类型:bool 解释:初始化,is/set{}。 类型:CAView* 解释:使用view设置标题,get/set{}。 类型:CAImage* 解释:使用图片设置标题,get/set{}。 类型:CCArray* 解释:navigationBar上,左边添加的按钮的记录数组,只读属性。,get{}。 类型:CCArray* 解释:navigationBar上,右边添加的按钮的记录数组,只读属性。get{}。 类型:bool 解释:是否隐藏navigationBar左边自动生成的返回按钮,is/set{}。 CANavigationBarItem 方法介绍 static CANavigationBarItem* create(const std::string& title); 返回值:CANavigationBarItem* 参数:
解释:创建,并指定标题 bool init(const std::string& title); 返回值:bool 参数:
解释:初始化 void addLeftButtonItem(CABarButtonItem* item) 返回值:void 参数:
解释:通过传递的item参数,自定义导航栏左边按钮 。 void addRightButtonItem(CABarButtonItem* item) 返回值:void 参数:
解释:通过传递的item参数,自定义导航栏右边按钮 。 类说明 导航栏控件,对应于CANavigationController,一般不单独使用,交由navigationController管理,实现App的层次结构。 基类 CAView CANavigationBar 属性(点击查看方法介绍)
CANavigationBar 方法(点击查看方法介绍)
效果图 CANavigationBar 属性说明 类型:CAView 解释:背景图片,get{}。 类型:CAColor4B 解释:标题颜色,get{}。 类型:CAColor4B 解释:按钮颜色,get{}。 类型:CANavigationBarDelegate* 解释:代理,set/get{}。 类型:CANavigationBarItem* 解释:子项数组,get{}。 CANavigationBar 方法说明 virtual bool init(const DSize& size = DSizeZero); 返回值:bool 参数:
解释:初始化,并指定size static CANavigationBar* create(const DSize& size = DSizeZero); 返回值:CANavigationBar* 参数:
解释:创建,并指定Dsize virtual void setBackGroundView(CAView* var); 返回值:void 参数:
解释:设置背景图片 virtual void setTitleColor(const CAColor4B& color); 返回值:void 参数:
解释:设置标题颜色 virtual void setButtonColor(const CAColor4B& color); 返回值:void 参数:
解释:设置按钮颜色 virtual void setItem(CANavigationBarItem* item); 返回值:void 参数:
解释:设置子项数组 类说明 视图管理器的派生类,CATabBarController作为一个特殊的视图管理器,负责协调多个视图管理器之间的工作,是对视图管理器的一种特殊封装。通常当你的程序需要使用一些平行的界面,这里说的平行界面就是程序中的某些功能界面是处于平级的,这些功能界面可以相互切换,tabBarController就很适合这种情况。 基类 CAViewController,CATabBarDelegate,CAPageViewDelegate,CAScrollViewDelegate CATabBarController 属性(点击查看方法介绍)
CATabBarController 方法(点击查看方法介绍)
创建与初始化
样式 可设置样式:文本、位置(上、下)、背景颜色、图片 CATabBarItem控制:文本、默认图片、选中图片
管理 主要是切换:
CATabBarController 属性 类型:bool 解释:TabBar可以滑动切换。is/set{}。
类型:bool 解释:查看TabBar是否隐藏。is{}。 类型:CABarVerticalAlignment 解释:TabBar对齐方式。get{}。 类型:CAImage* 解释:TabBar的背景图像。set/get{}。 类型:CAColor4B 解释:TabBar的背景颜色。set/get{}。 类型:CAImage* 解释:TabBar选择状态下背景的图像。set/get{}。 类型:CAColor4B 解释:TabBar选择状态下背景的颜色。set/get{}。 类型:CAImage* 解释:TabBar选择状态下指标的图像。set/get{}。 类型:CAColor4B 解释:TabBar选择状态下指标的颜色。set/get{}。 类型:CAColor4B 解释:TabBar标题为正常的颜色。set/get{}。 类型:CAColor4B 解释:TabBar标题为选定的颜色。set/get{}。 CATabBarController 方法 virtual bool initWithViewControllers(const CAVector<CAViewController*>& viewControllers,CABarVerticalAlignment var = CABarVerticalAlignmentBottom); 返回值:bool 参数:
解释:初始化CATabBar
bool showSelectedViewController(CAViewController* viewController); 返回值:bool 参数:
解释:设置当前被选中的viewController CAViewController* getViewControllerAtIndex(unsigned int index); 返回值:CAViewController* 参数:
解释:获取当前显示view的viewController的索引值 CAViewController* getSelectedViewController(); 返回值:CAViewController* 参数: 解释:获取当前选中的viewController virtual bool showSelectedViewControllerAtIndex(unsigned int index); 返回值:bool 参数:
解释:根据索引值显示当前选中的viewController virtual unsigned int getSelectedViewControllerAtIndex(); 返回值:unsigned int 参数: 解释:获取当前的被选中的viewController的索引值 virtual void setTabBarHidden(bool hidden, bool animated); 返回值:void 参数:
解释:TabBar的显示与隐藏 void updateItem(CAViewController* viewController); 返回值:void 参数:
解释:更新视图 void showTabBarSelectedIndicator(); 返回值:void 参数: 解释:显示刷新TabBar 类说明 作为CATabBar的代理类,抽象类。 CATabBarDelegate 方法(点击查看方法介绍)
CATabBarDelegate 方法说明 void tabBarSelectedItem(CATabBar* tabBar, CATabBarItem* item, unsigned int index) 返回值:void 参数:
解释:声明一个接口,供子类实现,用于显示和管理tabBar的每个子项所包含的内容。 virtual void tabBarClickToForbidSelectedItem(CATabBar* tabBar, CATabBarItem* item, unsigned int index){}; 返回值:void 参数:
解释:通过索引禁止单击选择子项 类说明 每个viewController都具有一个tabBarItem,在tabBar中标识当前的viewController。 基类 CABarItem CATabBarItem 属性(点击查看方法介绍)
CATabBarItem 方法 (点击查看方法介绍)
CATabBarItem 属性说明 类型:CAImage* 解释:tabBarItem被选中时的图片,get/set{}。 类型:std::string 解释:标签,get/set{}。 CATabBarItem 方法说明 static CATabBarItem* create(std::string title, CAImage* image, CAImage* selectedImage=NULL) 返回值:static CATabBarItem* 参数:
解释:创建一个tabBarItem,并指定它的标题,图片。 bool init(const std::string& title, CAImage* image, CAImage* selectedImage = NULL); 返回值:bool 参数:
解释:初始化 类说明 在移动开发过程中,常常要遇到调用移动设备的需求,如调用摄像头、通信录、wifi列表、蓝牙等等。CrossApp也为我们提供了调用Android和IOS平台设备的统一接口,我们只需要在CrossApp写统一的调用,然后在Android和IOS平台设置相对的权限,这样引擎会根据不同的平台去调用相应的执行,达到一样的效果。 CrossApp引擎中为我们提供设置调用的为CADevice,它在引擎的extensionsdevice目录下。我们想要使用CADevice时,需要引入:#include "CrossAppExt.h"并声明命名空间:USING_NS_CC_EXT; 基类 CAObject CADevice 方法(点击查看方法介绍)
通过上面的函数列表我们可以清楚的知道,CrossApp为我们提供的设备调用函数,但我还有时还需要实现相应的代理,才能获得想要的信息,比如调用摄像机拍照后,我们想要获得照片,那么我们必须要实现CAMediaDelegate代理,这我们才能获得这张照片的问题。 我们这里查看一这些代理函数: 摄像头代理:
蓝牙代理:
WIFI代理:
CADevice 方法介绍 CC_DLL const char* getSystemVersionWithIOS(); 返回值:const char* 参数: 解释:获取IOS系统版本 CC_DLL const char* getAppVersion(); 返回值:const char* 参数: 解释:获取app版本 CC_DLL void openCamera(CAMediaDelegate* target); 返回值:void 参数:
解释:打开相机 CC_DLL void openAlbum(CAMediaDelegate* target); 返回值:void 参数:
解释:打开相册 CC_DLL float getScreenBrightness(); 返回值:float 参数: 解释:获取屏幕亮度 CC_DLL void setScreenBrightness(float brightness); 返回值:void 参数:
解释:设置屏幕亮度 CC_DLL void writeToSavedPhotosAlbum(const std::string &s); 返回值:void 参数:
解释:保存到相册 CC_DLL std::vector<CAAddressBookRecord> getAddressBook(); 返回值:std::vector<CAAddressBookRecord> 参数: 解释:获取通信录 CC_DLL void updateVersion(const std::string &url ,unsigned int versionNumber ,const std::string &appId); 返回值:void 参数:
解释:更新版本 CC_DLL CANetWorkType getNetWorkType(); 返回值:CANetWorkType 参数: 解释:获取网络类型 CC_DLL void getWifiListWithAndroid(CAWifiDelegate *target); 返回值:void 参数:
解释:获取WiFi列表(Android) CC_DLL void setVolume(float sender, int type); 返回值:void 参数:
解释:设置音量 CC_DLL float getVolume(int type); 返回值:float 参数:
解释:获取音量 CC_DLL void OpenURL(const std::string &url); 返回值:void 参数:
解释:打开网址(调用浏览器打开网址) CC_DLL float getBatteryLevel(); 返回值:float 参数: 解释:获取电池电量 CC_DLL bool isNetWorkAvailble(); 返回值:bool 参数: 解释:查看是否连接到网络 CC_DLL void sendLocalNotification(const char* title, const char* content, unsigned long time); 返回值:void 参数:
解释:发送本地通知 CC_DLL CAWifiInfo getWifiConnectionInfo(); 返回值:CAWifiInfo 参数: 解释:获取WiFi连接信息 CC_DLL void initBlueTooth(CABlueToothDelegate *target); 返回值:void 参数:
解释:初始化蓝牙 CC_DLL void setBlueToothType(CABlueToothType type); 返回值:void 参数:
解释:设置蓝牙类型
CC_DLL void startGyroscope(CAGyroDelegate* delegate); 返回值:void 参数:
解释:开始陀螺仪 CC_DLL void setGyroInterval(float interval); 返回值:void 参数:
解释:陀螺间隔 返回值:void 参数: 解释:停止陀螺仪 类说明 在CrossApp中提供了自带的存储类:CAUserDefault,适合存储数据量比较小,结构比较简单的数据。如果你需要存储大量的复杂数据,建议使用SQlite3比较合适。 CAUserDefault 方法 (点击查看方法介绍)
存储代码如下:
读取示例代码:
CAUserDefault 方法 void setBoolForKey(const char* pkey,bool valuer) 返回值:void 参数:
解释:根据pkey存储一个bool类型 void setIntegerForKey(const char* pkey,int valuer) 返回值:void 参数:
解释:根据pkey存储一个int类型 void setFloatForKey(const char* pkey,float valuer) 返回值:void 参数:
解释: 根据pkey存储一个float类型 void setDoubleForKey(const char* pkey,double valuer) 返回值:void 参数:
解释: 根据pkey存储一个double类型 void setStringForKey(const char* pkey, const std::string & value) 返回值:void 参数:
解释: 根据pkey存储一个string类型 bool getBoolForKey(const char* pKey) 返回值:bool 参数:
解释: 根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回false bool getBoolForKey(const char* pKey,bool defaultValue) 返回值:bool 参数:
解释: 根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue int getIntegerForKey(const char* pKey) 返回值:int 参数:
解释:根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回0 int getIntegerForKey(const char* pKey, int defaultValue) 返回值:int 参数:
解释: 根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue float getFloatForKey(const char* pKey) 返回值:float 参数:
解释: 根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回0.0f float getFloatForKey(const char* pKey,float defaultValue) 返回值:float 参数:
解释:根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue double getDoubleForKey(const char* pKey) 返回值:double 参数:
解释: 根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回0.0 double getDoubleForKey(const cha * pKey,double defaultValue) 返回值:double 参数:
解释: 根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue 返回值:void 参数: 解释: 存储到UserDefault.xml,不写的话不会存入 const string& getXMLFilePath(); 返回值:const string& 参数: 解释: 获得UserDefault.xml的存储路径 std::string getStringForKey(const char* pKey); 返回值: 参数:
解释:根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回"" std::string getStringForKey(const char* pKey, const std::string & defaultValue); 返回值: 参数:
解释:根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue 在CrossApp中,简单数据存储,可以使用CAUserDefault。那么如何存储大量,不规则的数据?我们可以使用SQLite数据库存储数据。SQLite是使用非常广泛的嵌入式数据库,它有小巧 、高效、跨平台、开源免费和易操作的特点。 SQLite数据库是使用C语言来编写的,在CrossApp中使用也是非常容易的。
//创建数据库表的sql语句
查询
删除
注意 使用sqlite一定要注意的内存管理问题,那就是打开数据库之后,数据操作完成之后,一定要关闭数据库,否侧会造成内存泄漏。
SQlite保存路径 Android:
IOS: 位于程序沙盒的文档目录下
CrossApp使用lib_json来解析json文件。lib_json已经加入了libExtensions下,我们在CrossApp中使用非常的便捷。 首先引入头文件
通过上面的注释,我们可以很清楚的了解函数的意义。下面我们开始生成Json数据和解析Json数据。 Json数据生成
上面的打印结果:
Json数据解析 有时候我们需要解析Resources目录下的json文件,首先我们就需要将json文件拷贝到Resources目录下。我们将下面的Json格式文件拷贝到Resources目录下命名为info.json.
我们在程序中添加以下代码对其解析:
CrossAppy已经加入了tinyxml2库用于xml解析。#include "CrossApp.h"时候已经包含tinyxml2.h无须再引入头文件,这样我们就能在开发时方便的生成和解析xml文件。 xml文档生成 命名空间
生成xml代码
生成XML如下:
下面我们就来解析一下上面生成的XML文档 解析代码:
打印结果:
注意: tinyxml在android上解析assert文件夹下会有问题,解决方式如下:
CrossApp为我们封装了http的网络框架,其文件在CrossApp引擎包的extensions etwork文件下的 HttpClient、HttpRequest 、HttpResponse。 进行一次http交互,需要涉及的有三个类: HttpRequest 用来描述一个请求。 HttpResponse 用来描述对应请求的响应。 HttpClient是一个单例模式的类,它的职责就是负责将收到的HttpRequest对象push到发送队列中,并发送一个信号量驱动工作线程工作,工作线程再将收到的数据封装成一个HttpResponse对象push接收队列,并启用调度来派送数据。 引用头文件:
请求
接收
本节贴出如何通过http请求网络图片,并绘制到屏幕上 发送请求
接受图片
如果成功,将会看到9秒社团的logo。 类说明 CAViewAnimation 方法(点击查看方法介绍)
基本用法 这是CAViewAnimation最基本的用法,beginAnimations和commitAnimations函数都是成对出现的,上一段代码就能够实现让CAView放大5倍的动画效果,虽然我们没有设置它的时间,但默认时间为0.2秒
我们可以根据自己的需求,定制更多的属性来实现我们想要的动画效果。这是CAViewAnimation最基本的用法,beginAnimations和commitAnimations函数都是成对出现的,上一段代码就能够实现让CAView放大5倍的动画效果,虽然我们没有设置它的时间,但默认时间为0.2秒 动画的嵌套
多个CAViewAnimation之间可以嵌套使用,可以设置不同的时间、延时、反函数及回调等。当一定要注意View属性改变的位置,要写在对应的嵌套层级。 监听与回调 开始回调函数如下
注意:回调的第二个参数“void* context”就是CAViewAnimation::beginAnimations("animation1", NULL);传入的第二个参数(我们这里传的是NULL),它本身是一个void指针类型,使用时候需要类型转换。开始回调函数如下 例如:
这个样我们就可以获得Label并改变其属性,当然我们可以传入其他类型的参数。
方法二:回调 CAViewAnimation::beginAnimations( "animation1" , NULL); //开始 /* *CAView属性的改变:缩放、位置、旋转、透明度等等. *例如:label->setScale(5); */ //结束回调,在Animation结束时调用 CAViewAnimation::setAnimationDidStopSelector( this , CAViewAnimation0_selector(FirstViewController::callbackStopAnimation0)); CAViewAnimation::commitAnimations(); //结束 在回调函数里实现另一个Animation void FirstViewController::callbackStopAnimation0() { CAViewAnimation::beginAnimations( "NextAnimation" , NULL); //开始 /* *CAView属性的改变:缩放、位置、旋转、透明度等等. *例如:label->setRotation(180); */
类说明 视图类CAView是整个CrossApp引擎最基本的类,负责将各式各样的界面呈现出来,我们在App中所能看见的的一切界面其实就是一个个CAView的组合。CAView负责在屏幕上定义矩形区域,在展示用户界面及响应用户界面交互方面发挥关键作用。每个视图对象要负责渲染试图矩形区域中的内容,并响应该区域内发生的操作事件,视图是应用程序用户交互的重要机制。 除了显示内容和处理事件之外,试图还可以管理一个或多个子视图。我们可以在一个view上面添加多个子view,而作为父view,即父节点,负责管理其直接子视图,并根据需要调整他们的位置和尺寸,以及响应他们没有处理的事件。 基类 CAResponder CAView 方法(点击查看方法介绍) CAView 方法说明 返回值:CAView* 参数: 解释:创建 static CAView* createWithFrame(const DRect& rect); 返回值:CAView* 参数:
解释:创建,并指定其Frame static CAView* createWithFrame(const DRect& rect, const CAColor4B& color4B); 返回值:CAView* 参数:
解释:创建,并指定Frame和Color static CAView* createWithCenter(const DRect& rect); 返回值:CAView* 参数:
解释:创建,并设置其Center static CAView* createWithCenter(const DRect& rect, const CAColor4B& color4B); 返回值:CAView* 参数:
解释:创建,并设置其Center和Color static CAView* createWithLayout(const DLayout& layout); 返回值:CAView* 参数:
解释:创建,并设置其Layout static CAView* createWithLayout(const DLayout& layout, const CAColor4B& color4B); 返回值:CAView* 参数:
解释:创建,并设置其Layout和Color static CAView* createWithColor(const CAColor4B& color4B); 返回值:CAView* 参数:
解释:创建,并指定Color 返回值:bool 参数: 解释:初始化 virtual bool initWithFrame(const DRect& rect); 返回值:bool 参数:
解释:初始化,并指定其Frame virtual bool initWithCenter(const DRect& rect); 返回值:bool 参数:
解释:初始化,并指定其Center virtual bool initWithLayout(const DLayout& layout); 返回值:bool 参数:
解释:初始化,并指定其Layout virtual bool initWithColor(const CAColor4B& color4B); 返回值:bool 参数:
解释:初始化,并指定其Color const char* description(void); 返回值:char* 参数: 解释:描述 virtual void setZOrder(int zOrder); 返回值:void 参数:
解释:zOrder轴值 virtual void _setZOrder(int z); 返回值:void 参数:
解释:z轴值 返回值:int 参数: 解释:获取z轴值 virtual void setVertexZ(float vertexZ); 返回值:void 参数:
解释:顶点z轴值 返回值:float 参数: 解释:获取顶点z轴值 virtual void setScaleX(float fScaleX); 返回值:void 参数:
解释:设置X轴缩放 返回值:float 参数: 解释:获取X轴缩放 virtual void setScaleY(float fScaleY); 返回值:void 参数:
解释:设置Y轴缩放 返回值:float 参数: 解释:获取Y轴缩放 virtual void setScale(float scale); 返回值:void 参数:
解释:设置缩放 返回值:float 参数: 解释:获取缩放 virtual void setScale(float fScaleX,float fScaleY); 返回值:void 参数:
解释:设置缩放,并指定其X轴Y轴 virtual void setSkewX(float fSkewX); 返回值:void 参数:
解释:设置X倾斜 返回值:float 参数: 解释:获取X倾斜 virtual void setSkewY(float fSkewY); 返回值:void 参数:
解释:设置Y倾斜 返回值:float 参数: 解释:获取Y倾斜 void setAnchorPoint(const DPoint& anchorPoint); 返回值:void 参数:
解释:设置锚点 const DPoint& getAnchorPoint(); 返回值:DPoint& 参数: 解释:获取锚点 void setAnchorPointInPoints(const DPoint& anchorPointInPoints); 返回值:void 参数:
解释:设置锚点的点 const DPoint& getAnchorPointInPoints(); 返回值:DPoint& 参数: 解释:获取锚点的点 virtual void setFrame(const DRect& rect); 返回值:void 参数:
解释:设置Frame virtual const DRect& getFrame() const; 返回值:DRect& 参数: 解释:获取Frame virtual void setFrameOrigin(const DPoint& point); 返回值:void 参数:
解释:设置Frame轴值 virtual const DPoint& getFrameOrigin(); 返回值:DPoint& 参数: 解释:获取Frame轴值 virtual void setCenter(const DRect& rect); 返回值:void 参数:
解释:设置Center 返回值:DRect 参数: 解释:获取Center virtual void setBounds(const DRect& rect); 返回值:void 参数:
解释:设置边界 virtual DRect getBounds() const; 返回值:DRect 参数: 解释:获取边界 virtual void setCenterOrigin(const DPoint& point); 返回值:void 参数:
解释:设置Center轴值 virtual DPoint getCenterOrigin(); 返回值:DPoint 参数: 解释:获取Center轴值 virtual void setVisible(bool visible); 返回值:void 参数:
解释:设置是否可见 返回值:bool 参数: 解释:查看是否可见 virtual void setRotation(float fRotation); 返回值:void 参数:
解释:设置旋转,并指定角度 返回值:float 参数: 解释:获取旋转角度 virtual void setRotationX(float fRotaionX); 返回值:void 参数:
解释:设置X轴旋转,并指定角度 返回值:float 参数: 解释:获取X周旋转角度 virtual void setRotationY(float fRotationY); 返回值:void 参数:
解释:设置Y轴旋转,并指定角度 返回值:float 参数: 解释:获取Y轴旋转角度 virtual void addSubview(CAView * child); 返回值:void 参数:
解释:将子视图添加进当前视图 virtual void insertSubview(CAView* subview, int z); 返回值:void 参数:
解释:将子视图添加进当前视图,并指定一个Z轴值 virtual CAView * getSubviewByTag(int tag); 返回值:CAView* 参数:
解释:通过 tag 获取子视图 virtual CAView * getSubviewByTextTag(const std::string& textTag); 返回值:CAView* 参数:
解释:通过 TextTag 获取子视图 virtual const CAVector<CAView*>& getSubviews(); 返回值:CAVector<CAView*>& 参数: 解释:获取子视图的集合 virtual unsigned int getSubviewsCount(void) const; 返回值:unsigned int 参数: 解释:获取子视图数量 virtual void setSuperview(CAView* superview); 返回值:void 参数:
解释:设置视图 virtual CAView* getSuperview(); 返回值:CAView* 参数: 解释:获取视图 virtual void removeFromSuperview(); 返回值:void 参数: 解释:从父视图移除 virtual void removeSubview(CAView* subview); 返回值:void 参数:
解释:删除子视图 virtual void removeSubviewByTag(int tag); 返回值:void 参数:
解释:删除子视图,根据tag virtual void removeSubviewByTextTag(const std::string& textTag); 返回值:void 参数:
解释:删除子视图,根据TextTag virtual void removeAllSubviews(); 返回值:void 参数: 解释:移除当前视图的所有子视图 virtual void reorderSubview(CAView * child, int zOrder); 返回值:void 参数:
|