什么是CrossApp?


CrossApp是一款完全开源、免费、跨平台的移动应用开发引擎,基于最宽松的MIT开源协议,开发者根据自身情况使用CrossApp开发任何商业项目。CrossApp以C++作为开发语言,图形渲染基于OpenGL ES 2.0,采用MVC框架模式。使用CrossApp开发的应用程序支持导出到各大主流移动平台,真正实现"一次编码,多处运行"的跨平台开发技术。

CrossApp主要由9秒社团自研,官方制定了CrossApp的基本架构,确立了CrossApp的基本雏形,而其后的版本也将由来自各方的开发精英自愿组成的9秒社团常务贡献委员会共同进行更新和维护。

为什么选用CrossApp?

  1. 跨平台性:CrossApp暂时主要支持目前最主流的移动平台IOS和Android,CrossApp的平台无关性,使得相对传统的iOS和Android原生应用开发,CrossApp更能节省开发的周期和成本,App开发完成后只需要经过较为简单的移植工作,就能轻松实现在不同平台上应用。
  2. 丰富的UI控件:CrossApp的设计宗旨在于为移动应用开发者提供快速、高效的开发解决方案。在此基础上,CrossApp封装了大量的UI控件,各类控件的功能十分丰富,开发者可以直接使用这些控件进行应用的开发。这些控件基本满足应用开发需求中的大部分功能,也免去了自己封装UI控件花费的大量时间,进一步提升开发的效率、节省开发的成本。同时CrossApp也会整合部分由第三方开发者提供的优秀控件资源,更大的丰富CrossApp的UI控件。
  3. 技术支持:官方会提供每天8小时的在线页面问答式服务,每个问题的反馈速度大概在30分钟左右,回复率90%。

CrossApp耗电优化

由于之前CrossApp抽取了cocos2d-x的渲染驱动模式,程序生命周期中,在不断重绘,渲染驱动模式的缺点就是CPU占用高因此耗电。显而易见,这种不断的重绘方式对于游戏可能影响不大,但对于APP来说太浪费了。因此,我们针对应用程序的特性,将渲染机制改为事件驱动模式。这种模式的渲染要有外界触发才会重绘,在没有外界触发的时候画面静止,渲染停止,以达到节能的效果。 


如何使用学学习CrossApp?


版本下载:

github地址:https://github.com/9miao/CrossApp
oschina地址:http://git.oschina.net/9miao/CrossApp

在学习CrossApp之前必须要了解CrossApp的一些概要


1.CrossApp的功能?

CrossApp是一个开源、免费、跨平台的应用开发引擎,使用C++作为开发语言,目前主要支持导出iOS和Android平台的应用程序。有关CrossApp的详细介绍,请参阅CrossApp介绍。


下载地址:

        CrossApp工作Git :http://git.oschina.net/9miao/CrossApp

        CrossApp GitHub :https://github.com/9miao/CrossApp


2. CrossApp的基本框架

CrossApp是基于MVC模式设计的,关于CrossApp的MVC模式的详细说明,请参阅CrossApp的MVC模式


3.CrossApp要求的开发工具

在不进行移植导出应用程序安装包的情况下,开发不需要特殊的工具, IDE仅仅VS或Xcode就能满足开发、调试需求。在windows下CrossApp推荐使用Visual Studio 2012或更高版本作为开发的IDE,在Mac下推荐使用Xcode 5.0或更高版本作为开发的IDE。对于移植iOS,不需要特别的环境配置,如果需要移植Android,请分别参阅Windows和Mac下配置Android开发环境。


4. 创建CrossApp工程的方式

在Windows下,有两种创建CrossApp工程的方式:使用命令行方式和使用工程创建工具。在Mac下,使用命令行的方式创建。具体创建CrossApp工程的方式请参阅创建CrossApp跨平台工程。


CrossApp会为我们创建各个平台对应的工程入口,创建的工程默认放在引擎的projects目录下,在不同平台下分别运行不同的工程就能运行起来。例如,在Windows下我们可以直接运行proj.win32里的.sln文件直接在vs中运行工程,当需要移植到Android时需要在eclipse中导入proj.android。

大家学习CrossApp的时候,搞清楚基础概念性的东西,能够大大提高我们学习CrossApp的效率。今天就和大家简单谈谈CrossApp的坐标系统。

基础坐标系

CrossApp采用的坐标系是屏幕坐标系,即左上角为原点,向右为X轴增长方向、向下对应Y轴增长方向。如图:

CrossApp坐标系
        

节点的概念

谈到CrossApp的坐标系,不得不谈到视图类CAView。我们来看看API中CAView的类说明 : 
视图类CAView是整个CrossApp引擎最基本的类,负责将各式各样的界面呈现出来,我们在App中所能看见的的一切界面其实就是一个个CAView的组合。CAView负责在屏幕上定义矩形区域,在展示用户界面及响应用户界面交互方面发挥关键作用。每个视图对象要负责渲染试图矩形区域中的内容,并响应该区域内发生的操作事件,视图是应用程序用户交互的重要机制。

除了显示内容和处理事件之外,试图还可以管理一个或多个子视图。我们可以在一个view上面添加多个子view,而作为父view,即父节点,负责管理其直接子视图,并根据需要调整他们的位置和尺寸,以及响应他们没有处理的事件。

根据类说明我们可以得出以下结论:

  1. 所有能看到的都是CAView的派生类。
  2. CAView上面可以添加子CAView。
  3. 父节点管理子视图


新手朋友可能不看明白父节点和子视图的概念 并且B是添加在A上的,假如这时候,我们调整A的坐标位置,那么B也将随A的坐标改变而改变。这样我们就说:B是A的子节点(也称子视图),A是B的父节点。 由于B是A的子节点(子视图),那么B则可以使用A的节点坐标系        
,我画图来说明:

CrossApp坐标系2

如图所示,屏幕上显示了两个CAView分别是A和B,


上下左右边距、中心点、宽高

CAView在坐标系中定义了属性:DLayout。API定义如下:

示意图.jpg

Layout

类型:DLayout
解释:确定view在屏幕上显示的自适应方式。


起始点、中心点、宽高(旧版本)

那么CAView在坐标系中分别定义了三个属性:Frame、Bounds、Center。API定义如下:
E715A5A28490D0516B11CAEC7F3F488.jpg
Frame
类型:DRect
解释:确定view在屏幕上显示的位置和大小,参考的是父视图的坐标系统,frame属性是view及其子类共有属性。DRect包括两个成员,一个是起点坐标origin,另一个是宽高size,创建一个view必须指定Frame,否则看不见任何效果。对于CAView及其子类的frame操作,在createWithFrame、setFrame等操作时,如果DRect的size成员设置为(0,0),则不改变view的大小;如果只想改变view的坐标,不需要改变view的大小,则可采用setFrameOrigin方法来进行设置,get/set{}。

Bounds
类型:DRect
解释:view在自身坐标系统中的位置和大小,参考的是自身的坐标系统,DRect的origin值永远都是(0,0),bounds属性是view及其子类共有属性。在设置frame时,bounds也确定,其值等于frame的值。bounds和frame是有区别的,frame的值会随着view的缩放操作改变,bounds的值则不会改变,get/set{}。

Center
类型:DRect
解释:view的中心点在屏幕上的位置,CrossApp采用的坐标系是屏幕坐标系,即左上角为原点,向右和向下分别对应X和Y轴。在CrossApp中我们确定一个view的位置,是通过origin和size来设定的,为了方便,这里可以直接使用Center将view的中心点设置在我们想要的位置。如果只想改变view的坐标,不需要改变view的大小,则可采用setFrameOrigin方法来进行设置,get/set{}。

测试代码:

//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更多应用于打印输出设备,但都表示每英寸所包含的像素点

PPI

iphone4iPhone5 PPI

CrossApp为我们提供的解决方案:

CrossApp辅助适配方案适配的原则是尽量保持UI的物理尺寸相近,但仍旧可能会有细微变化,具体的变化值由系统决定。在不同设备下,ppi值会有所不同,在保持UI的物理尺寸不变的情况下,在不同设备上的显示效果会有所差别。屏幕尺寸大的设备,显示的内容会相对较多,ppi值越高,则画面越精细。

CrossApp提供的Dip类型数据

DPoint:点
DSize:面积
DRect:区域(包含一个点位点和面积)

推荐适配方案

尽量避免固定值
使用比例值
使用基准值
为了防止拉伸变形,多用CAScale9ImageView控件
字体大小推荐使用 (10)
例如:
DSize(100,200);//不推荐这样写
DSIze(屏幕宽度/2,屏幕高度/2);//使用比例值
DPoint(父节点的宽度 -100,父节点的宽度-200);//使用基准值


CrossApp 横屏竖屏切换方法

ios方法:

打开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 如图:

更改Device Orientation 属性为Landscape Right

Android 方法:


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音频库
extensionsjson、http、sqlite3库等
licenses本引擎依赖了很多的开源工程,他们的所有许可声明都在这里了。
scripting支持的脚本
template包含在不同IDE和平台下来创建CrossApp工程的模板
projects工程目录
tools
各种脚本处理文件、包含工程创建等

MVC模式简介 
关于MVC模式,并没有一个非常明确的概念,在不同的开发环境中,设计可能有所区别。

面向对象的目标就是设计出低耦合、高聚合的程序,MVC模式提供了一种很好的解决方案。CrossApp是基于MVC模式的,这里的MVC即模型层(Model)、视图层(View)、控制层(Controller),三者各司其职,共同维持一个完整的应用程序。

blob.png

在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开发应用程序

使用CrossApp开发移动应用程序必要的准备工作可参考以下步骤:

blob.png

1. CrossApp官网http://crossapp.9miao.com/Home/List/index/cid/3.html下载CrossApp的源码,解压至本地计算机。以下是CrossApp解压的目录结构

blob.png

2. 开发前的环境配置,在CrossApp的官网有环境配置的详细说明,参考说明进行开发前的环境配置,以便开发完成导出各个平台的安装包。

3. 以上两步完成后,现在就可以开始我们的App开发,首先需要新建一个自己的CrossApp工程,同样在环境配置文档中也说明了如何使用命令行新建一个CrossApp工程,运行proj.win32下的.sln文件就可以运行我们新建的工程, 

4. 参考CrossAppAPI文档就可以进行我们跨平台应用程序的开发了,以后我们自己的编码通常就是从AppDelegate类开始,具体的使用范例可以参考CrossApp官网的Demo示例。

我创建一个名为HelloCrossApp的工程,那么在引擎的根目录的projects文件夹下,将会出现一个名为HelloCrossApp的工程目录。我们打开这个目录可见下图的的结构:

CrossApp项目结构

HelloCrossApp的工程目录结构
Classes存放我们编写的C++代码
proj.android android平台工程配置
proj.ios  ios平台工程配置(需要在MacOS下使用xode)
proj.mac  mac平台工程配置(需要在MacOS下使用xode)
proj.win32 win32平台工程配置(用于在win下开发,推荐vs2013)
Resources项目的资源目录(存放:图片、音效、字体等)


大家打开各自平台使用的工程配置,我以win下vs2013为例子截图

win下vs2013

工程配置结构
HelloCrossApp我们自己的项目
libCocosDenshion声音库
libCrossAppCrossApp引擎库
libExtensions使用的第三方的库(json、sqlit3、network、websockets等)


打开HelloCrossApp下的Classes目录,看到如下结构:

HelloCrossApp下的Classes目录

Classes目录结构
AppDelegate 目入口
FirstViewController项目的CAViewController
RootWindow项目启动的CAWindow


我在这里引用API给出的CAWindow和CAViewController解释

什么是CAWindow?

CAWindow主要的作用是作为所有view的载体、容器,分发触摸消息,协同viewController完成对应用程序的管理。应用程序通常只有一个window,即使存在多个window,也只能有一个window能够接收屏幕事件。应用程序启动时创建这个窗口,并往窗口中加入一或多个视图并显示出来,之后我们很少需要再次引用它。CAWindow是所有CAView的根,管理和协调应用程序的显示。

什么是CAViewController?

CAViewController作为CAView的管理器,其最基本的功能就是控制视图的切换。视图控制器在MVC设计模式中扮演控制层(C)的角色, CAViewController的作用就是管理与之关联的view,同时与其他CAViewController相互通信和协调。

我们在这里详细讲一下AppDelegate 的代码,打开Application.h文件,我在代码上标注了中文的注释,帮助大家理解。

#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的主要类结构图。

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脚本创建工程。


命令行创建工程示例:

Mac下创建CrossApp工程

CAVector、CAList、CADeque、CAMap 对应C++中的STL提供的vector、list、deque、map使用方式一致,但是CAVector、CAList、CADeque、CAMap添加和移除元素时,遵循CrossApp的内存管理原则,分别在添加元素的时候Object的引用计数+1,移除的时候Object的引用计数-1.


我们看看C++中他们的描述与不同。
c++标准库中,容器vector和list都可以用来存放一组类型相同的数据。而且二者不同于数组的一点是,支持动态增长。但它们还是有有几点不同

(1)  vector是顺序表,表示的是一块连续的内存,元素被顺序存储;list是双向连接表,在内存中不一定连续。

(2)当数值内存不够时,vector会重新申请一块足够大的连续内存,把原来的数据拷贝到新的内存里面;list因为不用考虑内存的连续,因此新增开销比vector小。

(3)list只能通过指针访问元素,随机访问元素的效率特别低,在需要频繁随机存取元素时,使用vector更加合适。

(4)当向vector插入或者删除一个元素时,需要复制移动待插入元素右边的所有元素;因此在有频繁插入删除操作时,使用list更加合适。

我再来看看对deque对描述

  deque是双向开口的连续性存储空间。虽说是连续性存储空间,但这种连续性只是表面上的,实际上它的内存是动态分配的,它在堆上分配了一块一块的动态储存区,每一块动态存储去本身是连续的,deque自身的机制把这一块一块的存储区虚拟地连在一起。

    它首次插入一个元素,默认会动态分配512字节空间,当这512字节空间用完后,它会再动态分配自己另外的512字节空间,然后虚拟地连在一起。deque的这种设计使得它具有比vector复杂得多的架构、算法和迭代器设计。它的性能损失比之vector,是几个数量级的差别。所以说,deque要慎用。

C++中map容器提供一个键值对容器,map只允许一个键对一个值。

CrossApp设计它们时也遵循类似的设计原则,所以我们使用起来也是类似的用法。

我们对数据容器的操作一般为:增、删、查、遍历

我们这里分别对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());

《一》工欲善其事,必先利其器。

我们想要在win环境下搭建开发环境需要以下工具,请在必须下载完成后再开始学习:
首先下载CROSSAPP引擎:crossapp越新越好啦
                github地址:https://github.com/9miao/CrossApp
                oschina地址:http://git.oschina.net/9miao/CrossApp  (国内较快) 


环境需求如下:
        ①操作系统: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环境)
        CrossApp的引擎目录下 双击project-creator.exe
        弹出一下窗口:
         project-creator.exe
        上面填写你的工程名,下面填写你的Android包名-->点击Create Project Now-->(完成)

        创建工程会再引擎的根目录多一个名为:projects的文件夹,大家创建的工程,也就在这个目录下了。


方法二: Python脚本创建

           1.双击安装Python
           2.配置环境path
            右键计算器(我的电脑)-->属性-->高级系统设置-->环境变量-->系统变量-->双击Path-->在变量值结尾添加:“;C:/Python27”(引号改成你的Python安装路径,注意前面有一个分号";")

                Python脚本创建
           3.测试python环境:python --version
python --version
        看到版本提示Python环境配置成功
            4.创建工程
                打开CMD-->引擎根目录 oolsproject-creator  
     
                输入:python create_project.py -project HelloCrossApp -package com.9miao.crossapp -language cpp
创建工程

       看到提示成功的信息,工程就创建成功了!


《三》通过vs2013启动一个项目:

        打开项目目录下:proj.win32HelloCrossApp.sln(你的创建的工程名)
        1.启动vs2013后,右键HelloCrossApp-->设置为启动项目
        2.右键HelloCrossApp-->调试-->启动新实例
        3.第一次启动会等待时间较长,如果没有什么错误信息,将会弹出CrossApp项目窗口
CrossApp项目窗口
通过vs2013启动一个项目

1.以下移植android的环境配置所需的工具:

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以上版本,配置的方法基本一样,请根据操作系统型号选择配置环境所需的工具包。


2.安装java环境

配置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等命令就能看见相关的信息。


3.移植Android

将工程导入eclipse,File->New->Other->Android Project from Existing Code,点击 Browse 找到我们引擎目录下 CrossApp 里的 proj.android

如图:

移植Android


将工程导入eclipse,File->New->Other->Android Project from Existing Code,点击 Browse 找到我们新创建的工程目录下的 proj.android

如图:

将工程导入eclipse


4.导入完成后需要确认以下配置:

1)确认Android 版本和引擎版本一致

确认Android 版本和引擎版本一致

如图中 Android 版本都为 4.4.2,如果不一样右键引擎选择 Properties->Android 选择和新建项目版本一样的 Android版本。

2)更改新建项目的ndk路径为ndk的根目录。例如:D:androidandorid-ndk-r9

更改新建项目的ndk路径为ndk的根目录

例如: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


创建新项目:

方法一:python脚本创建项目
                一、打开“终端”,并找到CrossApp引擎根目录下的 tools/project-creator/目录下    

                tools/project-creator/
                二、执行命令: python create_project.py 效果如下    

                python create_project.py

               三、根据提示 输入创建c++代码项目命令:
                ./create_project.py -project MyGame -package com.MyCompany.AwesomeGame -language cpp
                看到下面的提示就创建成功了

                创建c++代码项目命令
       

方法二:project-creator.app创建项目
                双击CrossApp引擎根目录下的project-creator.app

project-creator.app创建项目
                输入项目名和android报名

                blob.png


这样我们点CrossApp引擎点根目录就会多一个名为projects的文件夹,这里面存放着我们创建的CrossApp项目。

运行新项目

一、打开        projects文件夹并选择我们的项目

二、选择proj.ios文件下的"xxx.xcodeproj"(xxx为你创建的文件名)
                proj.ios
三、将启动项目设置为你的项目名  打上对勾
        启动项目

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

如图:

移植Android

将工程导入eclipse,File->New->Other->Android Project from Existing Code 点击 Browse 找到我们新创建的工程目录下的 proj.android

如图:

proj.android


4.导入完成后需要确认以下配置:

1)确认 Android 版本和引擎版本一致

Properties-Android

如图中 Android 版本都为 4.4.2,如果不一样右键引擎选择 Properties->Android 选择和新建项目版本一样的 Android版本。

2)更改新建项目的 ndk 路径为ndk的根目录。例如:D:androidandorid-ndk-r9

更改新建项目的 ndk 路径


5.以上步骤完成后,我们直接右键工程->Run As Android Application,开始编译我们的工程。


6.工程导入eclipse后,编译运行过程中所出现的异常和错误以及对应的解决办法如下表所示。


7.环境配置参考视屏


类说明

DLayout自适应布局。


DLayout 属性(点击属性名可查看属性介绍)

属性
说明
horizontal水平方向
vertical垂直方向
DHorizontalLayoutZero水平方向清零
DVerticalLayoutZero垂直方向清零
DLayoutZeroLayout 清零
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中心点


使用介绍

示意图.jpg


//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 属性说明

horizontal

类型:DHorizontalLayout

解释:水平方向


vertical

类型:DVerticalLayout

解释:垂直方向


DHorizontalLayoutZero

类型:DHorizontalLayout

解释:水平方向L、R、W、C清零


DVerticalLayoutZero

类型:DVerticalLayout

解释:垂直方向T、B、H、C清零


DLayoutZero

类型:DLayoutZ

解释:Layout L、R、W、T、B、H、C清零


DHorizontalLayoutFill

类型:DHorizontalLayout

解释:水平方向塞满


DVerticalLayoutFill

类型:DVerticalLayout

解释:垂直方向塞满


DLayoutFill

类型:DLayout

解释:塞满


CALayout 方法说明

static inline DHorizontalLayout DHorizontalLayout_L_R(float left, float right);

返回值: DHorizontalLayout

参数:

类型参数名说明
floatleft左侧边距
floatright右侧边距

解释:设置水平方向 左侧边距和右侧边距


static inline DHorizontalLayout DHorizontalLayout_L_W(float left, float width);

返回值: DHorizontalLayout

参数:

类型参数名说明
floatleft左侧边距
floatwidth宽度

解释:设置水平方向 左侧边距和宽度


static inline DHorizontalLayout DHorizontalLayout_L_C(float left, float center);

返回值: DHorizontalLayout

参数:

类型参数名说明
floatleft左侧边距
floatcenter中心点

解释:设置水平方向 左侧边距和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)


static inline DHorizontalLayout DHorizontalLayout_R_W(float right, float width);

返回值: DHorizontalLayout

参数:

类型参数名说明
floatright左侧边距
floatwidth宽度

解释:设置水平方向 右侧边距和宽度


static inline DHorizontalLayout DHorizontalLayout_R_C(float right, float center);

返回值: DHorizontalLayout

参数:

类型参数名说明
floatright左侧边距
floatcenter中心点

解释:设置水平方向 右侧边距和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)


static inline DHorizontalLayout DHorizontalLayout_W_C(float width, float center);

返回值: DHorizontalLayout

参数:

类型参数名说明
floatwidth宽度
floatcenter中心点

解释:设置水平方向 宽度和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)


static inline DVerticalLayout DVerticalLayout_T_B(float top, float bottom);

返回值: DVerticalLayout

参数:

类型参数名说明
floattop上边距
floatbottom下边距

解释:设置垂直方向 上边距和下边距


static inline DVerticalLayout DVerticalLayout_T_H(float top, float height);

返回值: DVerticalLayout

参数:

类型参数名说明
floattop上边距
floatheight宽度

解释:设置垂直方向 上边距和宽度


static inline DVerticalLayout DVerticalLayout_T_C(float top, float center);

返回值: DVerticalLayout

参数:

类型参数名说明
floattop上边距
floatcenter中心点

解释:设置垂直方向 上边距和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)


static inline DVerticalLayout DVerticalLayout_B_H(float bottom, float height);

返回值: DVerticalLayout

参数:

类型参数名说明
floatbottom下边距
floatheight宽度

解释:设置垂直方向 下边距和宽度


static inline DVerticalLayout DVerticalLayout_B_C(float bottom, float center);

返回值: DVerticalLayout

参数:

类型参数名说明
floatbottom下边距
floatcenter中心点

解释:设置垂直方向 下边距和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)


static inline DVerticalLayout DVerticalLayout_H_C(float height, float center);

返回值: DVerticalLayout

参数:

类型参数名说明
floatheight高度
floatcenter中心点

解释:设置垂直方向 高度和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)


DHorizontalLayout 属性说明

left

类型:float

解释:Layout 水平方向左侧边距(单位DP)


right

类型:float

解释:Layout 水平方向右侧边距(单位DP)


width

类型:float

解释:Layout 水平方向宽度(单位DP)


center

类型:float

解释:Layout 水平方向中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)


DVerticalLayout 属性说明

top

类型:float

解释:Layout 垂直方向上边距(单位DP)


bottom

类型:float

解释:Layout 垂直方向下边距(单位DP)


height

类型:float

解释:Layout 垂直方向高度(单位DP)


center

类型:float

解释:Layout 垂直方向中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)

类说明

标签文字类,用于显示文本。


CALabel 属性 (点击属性名可查看属性介绍)

属性说明
Textlabel的文本内容
FontNamelabel的字体
FontSizelabel的字体大小
Dimensionslabel的尺寸大小
VerticalTextAlignmet文本的竖直对齐方式
TextAlignment文本的水平对齐方式
NumberOfLinelabel的行数
UnderLinelabel的字体下划线
Boldlabel的字体加粗
Italicslabel的字体斜体
EnableCopylabel的字体启用复制
LineSpacinglabel的字体的行间距
WordWraplabel的字体自动换行
LabelSize获取label的大小


CALabel 方法 (点击方法名可查看方法介绍)

方法说明
sizeToFit设置自适应label宽度
unsizeToFi取消设置自适应label宽度
applyStylelabel的样式风格
applyStylelabel的应用风格
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 属性说明

Text

类型:string

解释:设置文本显示的字符串。 set/get{}。


 FontName

类型:string

解释:设置文本显示的字体。FontName


FontSize

类型:unsigned int

解释:设置文本小时的字体大小。set/get{}。


Dimensions

类型:DSize

解释:设置文本显示的尺寸大小。set/get{}。


VerticalTextAlignmet 

类型:CAVerticalTextAlignment

解释:设置文本显示的竖直对齐方式,枚举类型。set/get{}。

typedef enum    {    CAVerticalTextAlignmentTop,        //顶部对齐方式    CAVerticalTextAlignmentCenter,     //中心对齐方式    CAVerticalTextAlignmentBottom,     //底部对齐方式} CAVerticalTextAlignment;


TextAlignment
 

类型:CATextAlignment

解释:设置文本显示的水平对齐方式,枚举类型。set/get{}。

typedef enum{    CATextAlignmentLeft,        //左对齐方式    CATextAlignmentCenter,      //中心对齐方式    CATextAlignmentRight,       //右对齐方式} CATextAlignment;

NumberOfLine

类型:unsigned int

解释:设置文本显示的行数。set/get{}。set/get{}。


UnderLine

类型:bool

解释:设置文本显示的字体下划线。set/get{}。


Bold

类型:bool

解释:设置文本显示的字体加粗。set/get{}。


Italics 

类型:bool

解释:设置文本显示的字体斜体。set/get{}。


EnableCopy

类型:bool

解释:设置文本显示的字体启用复制set/get{}。


LineSpacing 

类型:int

解释:设置文本显示的字体行间距。set/get{}。


WordWrap

类型: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 sizeToFit();

返回值: void

参数:

解释:设置自适应label宽度,即label的宽度随文本变化而变换


void unsizeToFit();

返回值: void

参数:

解释:取消设置自适应label宽度


void applyStyle(const string& sStyleName);

返回值: void

参数:

类型参数名说明
const string&sStyleNamelabel的样式名称

解释:label的样式风格


void applyStyle(const CALabelStyle* pLabelStyle);

返回值: void

参数:

类型参数名说明
const CALabelStyle*pLabelStylelabel的应用风格

解释: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&varCAColor4B的类型颜色

解释:设置label的颜色

    

const CAColor4B& getColor();

返回值: 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 属性说明

PixelFormat

类型:CAImage::PixelFormat

解释:像素格式。get{}。


PixelsWide

类型:unsigned int

解释:像素宽。get{}。


PixelsHigh

类型:unsigned int

解释:像素高。get{}。


ContentSize

类型:DSize

解释:内容大小。get{}。


ShaderProgram

类型:CAGLProgram*

解释:着色程序。set/get{}。


Monochrome

类型:bool

解释:单色。is{}。


Data

类型:unsigned char*

解释:数据。get{}。


DataLenght

类型: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 longlenght长度

解释:创建,默认没有缓存


static CAImage* createWithImageData(const unsigned char * data, unsigned long lenght, const std::string& key);

返回值:static CAImage*

参数:

类型参数名说明
const unsigned char *data数据
unsigned longlenght长度
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字体名称
floatfontSize字体大小
const DSize&dimensions图像大小
CATextAlignmenthAlignment文本对齐
CAVerticalTextAlignmentvAlignment垂直文本对齐
boolisForTextField = false是否显示文本框(默认不显示)
intiLineSpacing = 0文本间距(默认0)
boolbBold = false是否显示加粗(默认不加粗)
boolbItalics = false是否显示斜体(默认不斜体)
boolbUnderLine = false是否显示下划线(默认不显示)

解释:创建,并指定文本内容


static int getFontHeight(const char* pFontName, unsigned long nSize);

返回值:static int

参数:

类型参数名说明
const char*pFontName字体名字
unsigned longnSize字体大小

解释:获得字体高度


static int getStringWidth(const char* pFontName, unsigned long nSize, const std::string& pText); 

返回值:static int

参数:

类型参数名说明
const char*pFontName字体名字
unsigned longnSize字体大小
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 longnSize字体大小
const std::string&pText文本内容
intiLimitWidth最大宽度
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 longnSize字体大小
const std::string&pText文本内容
intiLimitWidth最大宽度
intiLineSpace = 0间距
boolbWordWrap = 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图像
floatscaleX缩放X轴
floatscaleY缩放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 intpixelsWide像素宽
unsigned intpixelsHigh像素高

解释:创建,并指定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 intpixelsWide像素宽
unsigned intpixelsHigh像素高
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 longdataLen数据长度

解释:初始化,并指定其图像缓存


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 intpixelsWide像素宽
unsigned int pixelsHigh像素高

解释:初始化,并指定其原数据


const char* description(void);

返回值:const char*

参数:

解释:获取图像描述


void releaseData();

返回值: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完全路径
boolbIsToRGB = false是否用RGB格式保存(默认否)

解释:是否保存成RGB格式


const char* getImageFileType();

返回值:const char*

参数:

解释:获取图像文件类型


float getAspectRatio();

返回值:float

参数:

解释:得到长宽比


CAImage::Format detectFormat(const unsigned char * data, unsigned long dataLen);

返回值: CAImage::Format

参数:

类型参数名说明
const unsigned char *data数据
unsigned longdataLen数据长度

解释:检测格式


void premultipliedImageData();

返回值:void

参数:

解释:进行图像数据


void repremultipliedImageData();

返回值:void

参数:

解释:再进行图像数据


void updateGifImageWithIndex(unsigned int index);

返回值:void

参数:

类型参数名说明
unsigned intindexindex

解释:通过index更新GIF图像


unsigned int getGifImageIndex();

返回值:unsigned int

参数:

解释:获取GIF图像的index


unsigned int getGifImageCounts();

返回值:unsigned int

参数:

解释:获取GIF图像的参数


static void reloadAllImages();

返回值:static void

参数:

解释:重新加载所有图像


CAImageView 属性说明

ImageViewScaleType

类型:CAImageViewScaleType

解释:图像缩放类型。set/get{}。


AnimationImages

类型:CAVector<CAImage*>

解释:动画图像。set/get{}。


AnimationDuration

类型:float

解释:动画间隔的时间。set/get{}。


AnimationRepeatCount

类型:unsigned int

解释:动画重复次数。set/get{}。


CAImageView 方法说明

static CAImageView* create();

返回值: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 init(void);

返回值: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 startAnimating();

返回值:void

参数:

解释:开始动画


void stopAnimating();

返回值:void

参数:

解释:结束动画


bool isAnimating();

返回值: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重新绘制图像


CAScale9ImageView
CAScale9ImageView的实现非常巧妙,通过将原纹理资源切割成9部分(PS: 这也是叫九宫图的原因),根据想要的尺寸,完成以下的三个步骤:
    (1)保持4个角部分不变形
    (2)单向拉伸4条边(即在4个角两两之间的边,比如上边,只做横向拉伸)
    (3)双向拉伸中间部分(即九宫图的中间部分,横向,纵向同时拉伸,PS:拉伸比例不一定相同)

CAScale9ImageView

实例代码:
CAScale9ImageView
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 属性说明

OriginalSize

类型:DSize

解释:原始尺寸,get{}。


CapInsets

类型:DSize

解释:拉伸区域,get{}。


InsetLeft

类型:float

解释:左侧拉伸距离。get{}。


InsetTop

类型:float

解释:上侧拉伸距离。get{}。


InsetRight

类型:float

解释:右侧拉伸距离。get{}。


InsetBottom

类型: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 init();

返回值: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

参数:

类型参数名说明
floatinsetLeft左侧拉伸区域

解释设置左侧拉伸区域


virtual void setInsetTop(float insetTop);

返回值:virtual void

参数:

类型参数名说明
floatinsetTop上侧拉伸区域

解释设置上侧拉伸区域


virtual void setInsetRight(float insetRight);

返回值:virtual void

参数:

类型参数名说明
floatinsetRight右侧拉伸区域

解释设置右侧拉伸区域


virtual void setInsetBottom(float insetBottom);

返回值:virtual void

参数:

类型参数名说明
floatinsetBottom下侧拉伸区域

解释设置下侧拉伸区域


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

参数:

类型参数名说明
floatalpha透明度

解释设置透明度


virtual CAView* copy();

返回值:virtual CAView*

参数:

解释复制


virtual void setImage(CAImage* image);

返回值:virtual void

参数:

类型参数名说明
CAImage*image图像

解释设置图像


using CAView::getImage;

返回值:using

参数:

解释获取图像


virtual void draw(void);

返回值:virtual void

参数:

类型参数名说明
voidvoid

解释重新绘制图像

类说明

在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 属性说明

AllowsSelected

类型:bool

解释:是否可以选择。is/set{}。


Selected

类型:bool

解释:是否被选择。is{}。


TouchClick

类型: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 init();

返回值:virtual bool

参数:

解释:初始化


void setBackGroundViewForState(const CAControlState& controlState, CAView *var);

返回值:void

参数:

类型
参数名说明
const CAControlState&controlStateButton的状态
CAView*var图像

解释:设置Button的状态的背景View

typedef enum{    CAControlStateNormal:       缺省状态    CAControlStateHighlighted:  高亮状态    CAControlStateDisabled:     禁用状态    CAControlStateSelected:     选中状态    CAControlStateAll:          全部状态}CAControlState;


CAView* getBackGroundViewForState(const CAControlState& controlState);

返回值:CAView*

参数:

类型
参数名说明
const CAControlState&controlStateButton的状态

解释:获取Button的状态的背景View

typedef enum{    CAControlStateNormal:       缺省状态    CAControlStateHighlighted:  高亮状态    CAControlStateDisabled:     禁用状态    CAControlStateSelected:     选中状态    CAControlStateAll:          全部状态}CAControlState;

void setImageForState(const CAControlState& controlState, CAImage* var);

返回值:void

参数:

类型
参数名说明
const CAControlState&controlStateButton的状态
CAImage*var图像

解释:设置Button的状态和图像(不支持九宫格)

typedef enum{    CAControlStateNormal:       缺省状态    CAControlStateHighlighted:  高亮状态    CAControlStateDisabled:     禁用状态    CAControlStateSelected:     选中状态    CAControlStateAll:          全部状态}CAControlState;

CAImage* getImageForState(const CAControlState& controlState);

返回值:CAImage*

参数:

类型
参数名说明
const CAControlState&controlStateButton的状态

解释:获取Button的状态和图像(不支持九宫格)

typedef enum{    CAControlStateNormal:       缺省状态    CAControlStateHighlighted:  高亮状态    CAControlStateDisabled:     禁用状态    CAControlStateSelected:     选中状态    CAControlStateAll:          全部状态}CAControlState;

void setTitleForState(const CAControlState& controlState, const std::string& var);

返回值:void

参数:

类型
参数名说明
const CAControlState&controlStateButton的状态
const std::string&var文本

解释:设置Button标题的显示文本

typedef enum{    CAControlStateNormal:       缺省状态    CAControlStateHighlighted:  高亮状态    CAControlStateDisabled:     禁用状态    CAControlStateSelected:     选中状态    CAControlStateAll:          全部状态}CAControlState;

const std::string& getTitleForState(const CAControlState& controlState);

返回值:const std::string&

参数:

类型
参数名说明
const CAControlState&controlStateButton的状态

解释:获取Button标题的显示文本

typedef enum{    CAControlStateNormal:       缺省状态    CAControlStateHighlighted:  高亮状态    CAControlStateDisabled:     禁用状态    CAControlStateSelected:     选中状态    CAControlStateAll:          全部状态}CAControlState;

void setImageColorForState(const CAControlState& controlState, const CAColor4B& var);

返回值:void

参数:

类型
参数名说明
const CAControlState&controlStateButton的状态
const CAColor4B&var颜色

解释:设置Button的图像颜色和状态

typedef enum{    CAControlStateNormal:       缺省状态    CAControlStateHighlighted:  高亮状态    CAControlStateDisabled:     禁用状态    CAControlStateSelected:     选中状态    CAControlStateAll:          全部状态}CAControlState;

void setTitleColorForState(const CAControlState& controlState, const CAColor4B& var);

返回值:void

参数:

类型
参数名说明
const CAControlState&controlStateButton的状态
const CAColor4B&var颜色

解释:设置Button的标题颜色和状态

typedef enum{    CAControlStateNormal:       缺省状态    CAControlStateHighlighted:  高亮状态    CAControlStateDisabled:     禁用状态    CAControlStateSelected:     选中状态    CAControlStateAll:          全部状态}CAControlState;

void setTitleFontName(const std::string& var);

返回值: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

参数:

类型
参数名说明
floatfontSize字体大小

解释:设置标题字体大小


virtual void setControlState(const CAControlState& var);

返回值:virtual void

参数:

类型
参数名说明
const CAControlState&var状态

解释:设置状态

typedef enum{    CAControlStateNormal:       缺省状态    CAControlStateHighlighted:  高亮状态    CAControlStateDisabled:     禁用状态    CAControlStateSelected:     选中状态    CAControlStateAll:          全部状态}CAControlState;

void interruptTouchState();

返回值: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 CAControl::addTarget;

返回值:using

参数:

解释:添加回调事件


using CAControl::removeTarget;

返回值:using

参数:

解释:删除回调事件


using CAControl::removeAllTargets;

返回值:using

参数:

解释:删除所有回调事件


类说明

CATextView是多行输入框,其主要用法和CATextField相似。


CATextView 属性 (点击属性名可查看属性介绍)

属性说明
TextFontSizeTextView的字体大小
TextTextView的文本内容
TextColorTextView的文字颜色
DelegateTextView绑定Delegate
TextViewAlignTextView的文本对齐方式
ReturnTypeTextView的确认键类型


CATextView 方法 (点击方法名可查看方法介绍)

方法说明
setBackGroundImage背景图像
resignFirstResponder隐藏键盘第一响应者状态
becomeFirstResponder弹出键盘第一响应者状态
createWithFrame创建一个CATextView,并指定其Frame
createWithCenter创建一个CATextView,并指定其Center


CATextView 属性介绍            

TextFontSize

类型:int

解释:设置TextView的字体大小。set/get{}。


Text

类型:std::string

解释:设置TextView的文本内容。set/get{}。


TextColor

类型:CAColor4B

解释:设置TextView的文字颜色。set/get{}。


Delegate

类型:CATextViewDelegate*

解释:TextView绑定Delegate。set/get{}。


TextViewAlign

类型:TextViewAlign

解释:TextView的文本对齐方式。set/get{}。


ReturnType

类型: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
intheight高度

解释:键盘高度


virtual bool textViewShouldChangeCharacters(CATextView* sender, unsigned int location, unsigned int lenght, const std::string& changedText);

返回值:bool

参数:

类型参数名说明
CATextView*sender当前textField
unsigned int location光标选中的字符串,即被替换的字符串
unsigned intlenghtlength为0时,表示删除
const std::string&changedText更改文本时Text内容

解释:TextView文字更改后触发(返回true表示修改生效,返回false表示不做修改,textField的内容不变)

类说明

CASwitch控件,它是开关控件,可以实现类型开关。


CASwitch 属性 (点击属性名可查看属性介绍)

属性说明
Onswitch是否处于开状态 
TouchClickswitch是否处于触摸点击事件
OnImage获取开状态的图像
OffImage获取关状态的图像
ThumbTintImage获取Switch的图像


CASwitch 方法 (点击方法名可查看方法介绍)

方法说明 
setOnImageswitch开状态时的图像
setOffImageswitch关状态时的图像
setThumbTintImageswitch的图像
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 属性介绍

On();

类型:bool

解释:查看是否处于开状态 。is{}。


TouchClick();

类型:bool

解释:查看是否处于触摸点击事件。is{}。


OnImage

类型:CAImage*

解释:获取开状态的图像。get{}。


OffImage

类型:CAImage*

解释:获取关状态的图像。get{}。


ThumbTintImage

类型:CAImage*

解释:获取Switch的图像。get{}。


CASwitch 方法介绍

void setOnImage(CAImage* onImage) 

返回值:void

参数:

类型参数名说明
CAImage*onImage开状态时的图像

解释:设置开状态时的图像


void setOffImage(CAImge* offImage)

返回值:void

参数:

类型参数名说明
CAImge*offImage关状态时的图像

解释:设置关状态时的图像


void setThumTintImage(CAImage* thumbTintImage)      

返回值:void

参数:

类型参数名说明
CAImage*thumbTintImageSwitch的背景图像

解释:设置Switch的背景图像


void setIsOn(bool on, bool animated);

返回值:void

参数:

类型参数名说明
boolon是否处于开状态
boolanimated是否添加动画

解释:设置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_CAControlselector函数回调器

解释:添加回调事件


void removeTarget(CAObject* target, SEL_CAControl selector);

返回值:void

参数:

类型参数名说明
CAObject*target当前对象 
SEL_CAControlselector函数回调器

解释:删除回调事件


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 属性说明

ProgressTintColor

类型:CAColor4B

解释:设置进度的颜色。set/get{}。


ProgressTrackColor

类型:CAColor4B

解释:设置背景的颜色。set/get{}。


ProgressTintImage

类型:CAImage*

解释:设置进度的图片。set/get{}。


ProgressTrackImage

类型:CAImage*

解释:设置背景的图片。set/get{}。


CAProgress 方法说明

bool init();

返回值:bool

参数:

解释:初始化


static CAProgress* create();

返回值: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

参数:

类型
参数名
说明
floatprogress进度值
boolanimated = false是否显示动画

解释:设置进度


float getProgress();

返回值: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));    }}

CAAlertView 方法说明

void setMessageFontName(std::string &var);

返回值:void

参数:

类型参数名说明
std::stringvar信息文字

解释:设置提示信息的字体


void setTitle(std::string var, CAColor4B col);

返回值:void

参数:

类型参数名说明
CAColor4Bcol标题颜色
std::stringvar信息文字

解释:设置提示框的标题


void setAlertMessage(std::string var, CAColor4B col);

返回值:void

参数:

类型参数名说明
CAColor4Bcol提示信息颜色
std::stringvar提示信息字体

解释:设置提示框的提示信息


void addButton(const std::string& btnText, CAColor4B col = ccc4(3, 100, 255, 255), CAImage* pNormalImage = NULL,AImage* pHighlightedImage = NULL);

返回值:void

参数:

类型参数名说明
std::string&btnText按钮文字
CAColor4Bcol按钮颜色
CAImage*pNormalImage按钮图像
AImage*pHighlightedImage高亮度图像

解释:添加一个按钮到CAAlertView


void setTarget(CAObject* target, SEL_CAAlertBtnEvent selector);

返回值:void

参数:

类型参数名说明
CAObject*target监听目标
SEL_CAAlertBtnEventselector监听选择器

解释:设置 CAAlertView 的监听


void show();

返回值:void

参数:

解释:设置显示提示框


void hide();

返回值:void

参数:

解释:设置隐藏提示框void


static bool hideWithDisplayed();

返回值:static bool

参数:

解释:隐藏提示框


static CAAlertView* create();

返回值: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();     }

然后我们就要在FirstViewController.cpp中去实现这写代理函数:
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 属性介绍        

TouchEnabledAtSubviews

类型:bool

解释:触摸事件启用在子视图。is/set{}。


ViewSize

类型:DSize

解释:设置容器的内部大小。set/get{}。


Bounces

类型:bool

解释:设置是否滚动回弹。is/set{}。


BounceHorizontal

类型:bool

解释:水平方向回弹。is/set{}。


BounceVertical

类型:bool

解释:竖直方向回弹。is/set{}。


ShowsHorizontalScrollIndicator

类型:bool

解释:设置是否显示水平滚动条。is/set{}。


ShowsVerticalScrollIndicator

类型:bool

解释:设置是否显示竖直滚动条。is/set{}。


MaximumZoomScale

类型:float

解释:最大缩放比例,默认值为1。set/get{}。


MinimumZoomScale

类型:float

解释:最小缩放比例,默认值为1。set/get{}。


ZoomScale

类型:float

解释: 滑动层缩放比例, 默认值为1。get{}。


ScrollViewDelegate

类型:CAScrollViewDelegate*

解释:滚动视图代表。set/get{}。


ShowsScrollIndicators

类型:bool

解释:显示滚动指示器。is/set{}。


HeaderRefreshView

类型:CAPullToRefreshView*

解释:头部刷新试图。set/get{}。


FooterRefreshView

类型:CAPullToRefreshView*

解释:尾部刷新试图。set/get{}。


Tracking

类型:bool

解释:查看 ScrollView 是否正在滚动。is{}。

        

Zooming

类型:bool

解释:查看 ScrollView 是否正在进行缩放控制。is{}。


Decelerating

类型:bool

解释:查看 ScrollView 是否在惯性运动中。is{}。


MultitouchGesture

类型:MultitouchGesture

解释:多点触控手势,set/get{}。


CAScrollView 方法介绍

void setContentOffset(const DPoint& offset, bool animated);

返回值:void

参数:

类型参数名说明
const DPoint&offset偏移量
boolanimated是否播放动画

解释:设置内容偏移量


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子视图
intz数量

解释:插入子视图


void removeAllSubviews();

返回值:void

参数:

解释:删除所有子视图


void removeSubview(CAView* subview);  

返回值:void

参数:

类型参数名说明
CAView*subview子视图

解释:删除子视图


CAView* getSubviewByTag(int aTag); 

返回值:CAView*

参数:

类型参数名说明
intaTag子视图标签

解释:通过标签获取子视图


void removeSubviewByTag(int tag);

返回值:void

参数:

类型参数名说明
inttag子视图标签

解释:通过标签删除子视图


CAView* getSubviewByTag(int aTag);

返回值:CAView* 

参数:

类型参数名说明
intaTag子视图标签

解释:过标签获取子视图


DPoint getContentOffset();

返回值:DPoint

参数:

解释:获得内容偏移量


void setZoomScale(float zoom);

返回值:void

参数:

类型参数名说明
floatzoom缩放比例

解释:设置缩放比例


virtual bool isReachBoundaryLeft();

返回值:bool

参数:

解释:是否到达左边界


virtual bool isReachBoundaryRight();

返回值:bool

参数:

解释:是否到达右边界


virtual bool isReachBoundaryUp();

返回值:bool

参数:

解释:是否到达上边界


virtual bool isReachBoundaryDown();

返回值:bool

参数:

解释:是否到达下边界


void endHeaderRefresh();

返回值:void

参数:

解释:端头刷新


void endFooterRefresh();

返回值:void

参数:

解释:端尾刷新


DPoint getContentOffset();

返回值: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触摸
floatoff_xx坐标偏移量
floatoff_yy坐标偏移量
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 init();

返回值:virtual bool

参数:

解释:初始化


void startPullToHeaderRefreshView();

返回值:void

参数:

解释:开始顶端刷新视图


virtual void switchPCMode(bool var);

返回值:virtual void

参数:

类型参数名说明
boolvar开关

解释:开关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 属性(点击查看方法介绍)

属性说明
ListViewOrientationlistView的滚动方向
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 方法(点击查看方法介绍)

方法说明
numberOfIndexcell的总数量
listViewHeightForIndexcell的高度
listViewCellAtIndex添加生成cell
listViewWillDisplayCellAtIndex回调当前将要显示的CAListView


CAListViewCell 属性(点击查看方法介绍)

属性说明
ContentView获得内容视图
BackgroundView设置背景视图
ReuseIdentifier设置重用标识符
Index获得重用标识符
ControlStateEffect设置控制状态效应
AllowsSelectedCAListViewCell是否可以选择


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 属性介绍

ListViewOrientation 

类型:CAListViewOrientation*

解释:listView的滚动方向。set/get{}。


ListViewDataSource

类型:CAListViewDataSource*

解释:添加数据代理。set/get{}。


ListViewDelegate    

类型:CAListViewDelegate*

解释:添加交互代理。set/get{}。


ListHeaderView      

类型:CAView*

解释:添加头部视图。set/get{}。


ListFooterView      

类型:CAView*

解释:添加尾部视图。set/get{}。


SeparatorColor     

类型:CAColor4B

解释:设置cell分割线的颜色。set/get{}。


ListHeaderHeight

类型:unsigned int

解释:设置头部视图的高度。set/get{}。


ListFooterHeight

类型:unsigned int

解释:设置尾部视图的高度。set/get{}。


SeparatorViewHeight

类型:unsigned int

解释:设置fell分割线的高度。set/get{}。


AllowsHeadAndFootHover  

类型:bool

解释:允许头和尾的悬停。set/get{}。


AllowsSelection   

类型:bool

解释:是否开启cell选择。is{}。


AllowsMultipleSelection    

类型:bool

解释:是否可以多选cell。is{}。


CAListView 方法介绍

virtual void setAllowsSelection(bool var);  

返回值:virtual void

参数:

类型
参数名
说明
boolvar 

解释:是否可以多选cell


void setSelectAtIndex(unsigned int index);  

返回值:void

参数:

类型
参数名
说明
unsigned intindexcell的索引值

解释:根据索引设置cell为选中状态


void setUnSelectAtIndex(unsigned int index);  

返回值:void

参数:

类型
参数名
说明
unsigned intindexcell的索引值

解释:根据索引设置cell为未选中状态


virtual void setShowsScrollIndicators(bool var); 

返回值:virtual void

参数:

类型
参数名
说明
boolvar是否显示滚动条

解释:设置显示滚动条


CAListViewCell* dequeueReusableCellWithIdentifier(const char* reuseIdentifier);

返回值:CAListViewCell*

参数:

类型参数名说明
const char*reuseIdentifier标识符

解释:可以重用单元标示符


CAListViewCell* cellForRowAtIndex(unsigned int index);

返回值:CAListViewCell*

参数:

类型参数名说明
unsigned intindexcell的索引值

解释:通过cell索引获取Index


virtual void switchPCMode(bool var)

返回值:virtual void

参数:

类型参数名说明
boolvar开关

解释:开关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

参数:

类型参数名说明
CAListViewlistView当前的listView
unsigned intindexcell的索引值

解释:选中cell时调用

        

virtual void listViewDidDeselectCellAtIndex(CAListView *listView, unsigned int index)        

返回值:virtual void

参数:

类型参数名说明
CAListViewlistView当前的listView
unsigned intindexcell的索引值

解释:取消选择cell时调用


CAListViewDataSource方法介绍

virtual unsigned int numberOfIndex(CAListView *listView)        

返回值:virtual unsigned int

参数:

类型参数名说明
CAListViewlistView当前的listView

解释:cell的总数量


virtual unsigned int listViewHeightForIndex(CAListView *listView, unsigned int index)        

返回值:virtual unsigned int

参数:

类型参数名说明
CAListViewlistView当前的listView
unsigned intindexcell的索引值

解释:cell的高度


virtual CAListViewCell* listViewCellAtIndex(CAListView *listView, const DSize& cellSize, unsigned int index)       

返回值:virtual CAListViewCell*

参数:

类型参数名说明
CAListViewlistView当前的listView
DSizecellSizecell的size
unsigned intindexcell的索引值

解释:添加生成cell


virtual void listViewWillDisplayCellAtIndex(CAListView* table, CAListViewCell* cell, unsigned int index) ;

返回值:virtual void

参数:

类型参数名说明
CAListViewlistView当前的listView
CAListViewCellcell显示添加的cell
unsigned intindexcell的索引值

解释:回调当前将要显示的CAListView


CAListViewCell 属性介绍

ContentView

类型:CAView*

解释:获得内容视图。get{}。


BackgroundView

类型:CAView*

解释:设置背景视图。set/get{}。


ReuseIdentifier

类型:std::string

解释:设置重用标识符。set/get{}。


Index

类型:unsigned int

解释:获得重用标识符。set/get{}。


ControlStateEffect

类型:bool

解释:设置控制状态效应。is/set{}。


AllowsSelected

类型: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 方法(点击查看方法介绍)

方法说明
numberOfIndexcell的数量
listViewHeightForIndexcell的高度
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 indexcell的索引值

解释:cell的高度


virtual CAListViewCell* listViewCellAtIndex(CAListView *listView, const DSize& cellSize, unsigned int index) = 0;

返回值:CAListViewCell*

参数:

类型参数名说明
CAListView*listView当前的listView
const DSize&cellSizecell的size
unsigned int indexcell的索引值

解释:生成cell 


virtual void listViewWillDisplayCellAtIndex(CAListView* table, CAListViewCell* cell, unsigned int index) {};

返回值:void

参数:

类型参数名说明
CAListView*tableListView的table
CAListView*listView当前的listView
unsigned int indexcell的索引值

解释:回调当前将要显示的list

类说明

CAListView的数据代理


CAListViewDelegate 方法(点击查看方法介绍)

方法说明
listViewDidSelectCellAtIndex选中cell时调用
listViewDidDeselectCellAtIndex取消选中时调用 


CAListViewDelegate 方法说明

virtual void listViewDidSelectCellAtIndex(CAListView *listView, unsigned int index)

返回值:void

参数:

类型参数名说明
CAListView*listView当前的listView
unsigned int indexcell的索引值

解释:选中cell时调用

 

virtual void listViewDidDeselectCellAtIndex(CAListView *listView, unsigned int index)

返回值:void

参数:

类型参数名说明
CAListView*listView当前的listView
unsigned int indexcell的索引值

解释:取消选中时调用 

类说明 

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重用标识符
Sectionsection
Rowcell
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 属性说明

TableViewDataSource

类型:CATableViewDataSource*

解释:添加数据代理。set/get{}。


TableViewDelegate

类型:CATableViewDelegate*

解释:添加交互代理。set/get{}。


TableHeaderView

类型:CAView*

解释:添加头部视图。set/get{}。


TableFooterView

类型:CAView*

解释:添加尾部视图。set/get{}。


SeparatorColor

类型:CAColor4B

解释:设置cell分割线的颜色。set/get{}。


TableHeaderHeight

类型:unsigned int

解释:设置头部视图的高度。set/get{}。


TableFooterHeight

类型:unsigned int

解释:设置尾部视图的高度。set/get{}。


SeparatorViewHeight

类型:unsigned int

解释:设置cell分割线的高度。set/get{}。


AllowsSelection

类型:bool

解释:是否开启cell选择。is{}。


AllowsMultipleSelection

类型:bool

解释:是否可以多选cell。is{}。


AlwaysTopSectionHeader

类型:bool

解释:设置cell顶部的标题。is/set{}。


AlwaysBottomSectionFooter

类型:bool

解释:设置cell底部的标题。is/set{}。


CATableView 方法说明

virtual void setAllowsSelection(bool var);

返回值:virtual void

参数:

类型
参数名说明

类说明

CATableView的数据代理类,用于定义tableView的数据接口。


CATableViewDataSource 方法(点击查看方法介绍)

方法说明
tableCellAtIndex获取指定cell
tableViewHeightForRowAtIndexPath获取指定的cell高度
numberOfRowsInSection获取对应的section所包含的cell个数
numberOfSections获取tableview包含的section个数
tableViewSectionViewForHeaderInSection在tableView中通过索引获取头部Section
tableViewHeightForHeaderInSection在tableView中通过索引获取头部Section高度
tableViewSectionViewForFooterInSection在tableView中通过索引获取尾部Section
tableViewHeightForFooterInSection在tableView中通过索引获取尾部Section高度
tableViewWillDisplayCellAtIndex回调当前将要显示的tableView


CATableViewDataSource 方法说明

virtual CATableViewCell* tableCellAtIndex(CATableView* table, const DSize& cellSize, unsigned int section, unsigned int row) = 0;

返回值:CATableViewCell* 

参数:

类型参数名说明
CATableView*table当前tableView
const DSize&cellSizecell的size
unsigned intsectioncell所属的区域
unsigned introwcell所在行数

解释:获取指定cell


virtual unsigned int tableViewHeightForRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row) = 0;

返回值:unsigned int

参数:

类型参数名说明
CATableView*table当前tableView
unsigned intsectioncell所属的区域
unsigned introwcell所在行数

解释:获取指定的cell高度


virtual unsigned int numberOfRowsInSection(CATableView* table, unsigned int section) = 0;

返回值:unsigned int

参数:

类型参数名说明
CATableView*table当前tableView
unsigned intsectioncell所属的区域

解释:获取对应的section所包含的cell个数


virtual unsigned int numberOfSections(CATableView* table);

返回值:unsigned int

参数:

类型参数名说明
CATableView*table当前tableView

解释:获取tableview包含的section个数


virtual CAView* tableViewSectionViewForHeaderInSection(CATableView* table, const DSize& viewSize, unsigned int section);

返回值:CAView*

参数:

类型参数名说明
CATableView*table当前tableView
const DSize&viewSizeview的size
unsigned intsectioncell所属的区域

解释:在tableView中通过索引获取头部Section


virtual unsigned int tableViewHeightForHeaderInSection(CATableView* table, unsigned int section);

返回值:unsigned int

参数:

类型参数名说明
CATableView*table当前tableView
const DSize&cellSizecell的size

解释:在tableView中通过索引获取头部Section高度


virtual CAView* tableViewSectionViewForFooterInSection(CATableView* table, const DSize& viewSize, unsigned int section);

返回值:CAView*

参数:

类型参数名说明
CATableView*table当前tableView
const DSize&viewSizeview的size
unsigned intsectioncell所属的区域

解释:在tableView中通过索引获取尾部Section


virtual unsigned int tableViewHeightForFooterInSection(CATableView* table, unsigned int section);

返回值:unsigned int

参数:

类型参数名说明
CATableView*table当前tableView
unsigned intsectioncell所属的区域

解释:在tableView中通过索引获取尾部Section高度


virtual void tableViewWillDisplayCellAtIndex(CATableView* table, CATableViewCell* cell, unsigned int section, unsigned int row) {};

返回值:void

参数:

类型参数名说明
CATableView*table当前tableView
CATableViewCell*cellcell
unsigned intsectioncell所属的区域
unsigned introwcell所在行数

解释:回调当前将要显示的tableView


类说明

CATableView的代理类,用于响应拖动和点击事件。


CATableViewDelegate 方法(点击查看方法介绍)

方法说明
tableViewDidSelectRowAtIndexPath选中cell时触发
tableViewDidDeselectRowAtIndexPath取消选择时触发


CATableViewDelegate 方法说明

virtual void tableViewDidSelectRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row)

返回值:void

参数:

类型参数名说明
CATableView* table当前tableView
unsigned int sectioncell所属的区域
unsigned introwcell所在行数

解释:选中cell时触发


virtual void tableViewDidDeselectRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row)

返回值:void

参数:

类型参数名说明
CATableView* table当前tableView
unsigned int sectioncell所属的区域
unsigned introwcell所在行数

解释:取消选择时触发

类说明

作为CATableView的cell添加进tableView,具备CAControl的功能。


基类

CAControl


CATableViewCell 属性(点击查看方法介绍)

属性说明
ContentView内容视图
BackgroundView设置cell的背景视图
ReuseIdentifier复用标示符
SectionSection
Row
ControlStateEffect控制状态
AllowsSelected允许选择


CATableViewCell 方法(点击查看方法介绍)

方法说明
create创建,并指定cell的复用标示符
initWithReuseIdentifier初始化,并指定复用标示符


CATableViewCell 属性说明

ContentView

类型:CAView

解释:内容视图,get{}。


BackgroundView

类型:CAView*

解释:设置cell的背景视图,set/get{}。


ReuseIdentifier

类型:std::string

解释:复用标示符,set/get{}。


Section

类型:unsigned int

解释:Section,get{}。


Row

类型:unsigned int

解释:行,get{}。


ControlStateEffect

类型:bool

解释:控制状态,is/set{}。


AllowsSelected

类型:bool

解释:允许选择,is/set{}。


CATableViewCell 方法说明

static CATableViewCell* create(const std::string& reuseIdentifier);

返回值:CATableViewCell*

类型:

类型参数名说明
const std::string&reuseIdentifier复用标示符

解释:创建,并指定cell的复用标示符


virtual bool initWithReuseIdentifier(const std::string& reuseIdentifier);

返回值:bool

类型:

类型参数名说明
const std::string&reuseIdentifier复用标示符

解释:初始化,并指定复用标示符

类说明

CACollectionView同CATableView类似,主要用于数据的展示,实现了tableView的基本功能,同时对tableView拓展,更完美的进行展示数据。


CACollectionView的使用方法和CATableView比较类似,我们也要分别使用:CACollectionView、CACollectionViewCell、CACollectionViewDelegate、CACollectionViewDataSource来构建。

CACollectionView是表格视图的容器,是容器的载体。

CACollectionViewCell是表格视图的一个单元(本节后面简称cell)。

CACollectionViewDelegate是交互代理,响应cell选中和取消状态。

CACollectionViewDataSource是数据代理,设置Selection个数及Selection包含cell个数。


CACollectionView 属性(点击查看方法介绍)

属性说明
CollectionViewDataSource添加数据代理
CollectionViewDelegate添加交互代理
CollectionHeaderView添加头部视图
CollectionFooterView添加尾部视图
CollectionHeaderHeight设置头部的高度
CollectionFooterHeight设置尾部的高度
HoriInterval水平间隔
VertInterval垂直间隔
AllowsSelection允许选择
AllowsMultipleSelection允许多个选择
AlwaysTopSectionHeader总是顶部的标题
AlwaysBottomSectionFooter总是底部的节尾


CACollectionView 方法(点击查看方法介绍)

方法说明
createWithFrame创建,并指定其Frame,默认Frame为(0,0,0,0)
createWithCenter创建,并指定其Center,默认Center为(0,0,0,0)
dequeueReusableCellWithIdentifier从复用队列中寻找指定标识符的cell
setAllowsSelection是否开启cell选择
setAllowsMultipleSelection是否可以多选cell
setSelectRowAtIndexPath通过索引选择一行
setUnSelectRowAtIndexPath通过索引取消选择一行
setShowsScrollIndicators设置显示滚动指示器
cellForRowAtIndexPath根据索引获取显示的cell
getHighlightCollectionCell获取高亮显示的collectioncell
switchPCMode开关PC模式
init初始化
clearData清除数据
reloadData重载数据


CACollectionViewDelegate 方法(点击查看方法介绍)

方法说明
collectionViewDidSelectCellAtIndexPath选中cell时调用
collectionViewDidDeselectCellAtIndexPath取消选择cell时调用


CACollectionViewDataSource 方法(点击查看方法介绍)

方法说明
collectionCellAtIndex获取指定cell
collectionViewHeightForRowAtIndexPathcell的高度
numberOfItemsInRowsInSection每个cell里的item数量
numberOfRowsInSection获取对应的section所包含的cell个数
numberOfSections获取tableview包含的section个数
collectionViewSectionViewForHeaderInSectionheaderView的内容
collectionViewHeightForHeaderInSection每个section的headerView
collectionViewSectionViewForFooterInSectionfooterView的内容
collectionViewHeightForFooterInSection每个section的footerView
collectionViewWillDisplayCellAtIndex回调当前将要显示的collectionView


我们本机的示例,不再使用自定义的CACollectionViewCell的方法来实现,我们来看看本节的示例代码:

FirstViewController.h内容:

#ifndef __HelloCpp__ViewController__#define __HelloCpp__ViewController__ #include <iostream>#include "CrossApp.h" USING_NS_CC; class FirstViewController : public CAViewController, CACollectionViewDelegate, CACollectionViewDataSource{     public:    FirstViewController();    virtual ~FirstViewController();     protected:        void viewDidLoad();         void viewDidUnload();     public:    //选中item时调用    virtual void collectionViewDidSelectCellAtIndexPath(CACollectionView *collectionView, unsigned int section, unsigned int row, unsigned int item);         //取消item是调用    virtual void collectionViewDidDeselectCellAtIndexPath(CACollectionView *collectionView, unsigned int section, unsigned int row, unsigned int item);         //获取指定cell    virtual CACollectionViewCell* collectionCellAtIndex(CACollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int row, unsigned int item);         //section的个数    virtual unsigned int numberOfSections(CACollectionView *collectionView);         //section中的cell个数    virtual unsigned int numberOfRowsInSection(CACollectionView *collectionView, unsigned int section);        //每个cell中Item的个数    virtual unsigned int numberOfItemsInRowsInSection(CACollectionView *collectionView, unsigned int section, unsigned int row);         //cell的高度    virtual unsigned int collectionViewHeightForRowAtIndexPath(CACollectionView* collectionView, unsigned int section, unsigned int row);     private:    //用于获得屏幕的size    CADipSize size;         //CACollectionView    CACollectionView* p_Conllection;         //颜色容器    std::vector<CAColor4B> colorArr;}; #endif /* defined(__HelloCpp__ViewController__) */

FirstViewController.cpp内容:

#include "FirstViewController.h" FirstViewController::FirstViewController(){} FirstViewController::~FirstViewController(){} void FirstViewController::viewDidLoad(){    //获得屏幕大小    size = this->getView()->getBounds().size;         //随机出颜色    for (int i = 0; i < 40; i++)    {        char r = CCRANDOM_0_1() * 255;        char g = CCRANDOM_0_1() * 255;        char b = CCRANDOM_0_1() * 255;                 //将随机的ccc4对象放入到容器里        colorArr.push_back(ccc4(r, g, b, 255));    }         //生成CACollectionView    p_Conllection = CACollectionView::createWithFrame(this->getView()->getBounds());         //开启选中    p_Conllection->setAllowsSelection(true);         //开启多选    p_Conllection->setAllowsMultipleSelection(true);         //绑定交互代理    p_Conllection->setCollectionViewDelegate(this);         //绑定数据代理    p_Conllection->setCollectionViewDataSource(this);         //item水平间的距离    p_Conllection->setHoriInterval(40);         //itme竖直间的距离    p_Conllection->setVertInterval(40);         //添加到屏幕渲染    this->getView()->addSubview(p_Conllection);} void FirstViewController::viewDidUnload(){    // Release any retained subviews of the main view.    // e.g. self.myOutlet = nil;} void FirstViewController::collectionViewDidSelectCellAtIndexPath(CACollectionView *collectionView, unsigned int section, unsigned int row, unsigned int item){    //选中    CCLog("选中");} void FirstViewController::collectionViewDidDeselectCellAtIndexPath(CACollectionView *collectionView, unsigned int section, unsigned int row, unsigned int item){    //取消选中    CCLog("取消选中");} CACollectionViewCell* FirstViewController::collectionCellAtIndex(CACollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int row, unsigned int item){    //计算 如果cell个数大于颜色数组,则返回空    if (row * 3 + item >= colorArr.size())    {        return NULL;    }         //获得    DSize _size = cellSize;         //根据标识获得CACollectionViewCell    CACollectionViewCell* p_Cell = collectionView->dequeueReusableCellWithIdentifier("CrossApp");         //如果没有找到相应的CACollectionViewCell则新建一个    if (p_Cell == NULL)    {        p_Cell = CACollectionViewCell::create("CrossApp");                 //生成Item背景        CAView* itemImage = CAView::createWithFrame(DRect(0, 0, _size.width, _size.height));        itemImage->setTag(99);        p_Cell->addSubview(itemImage);        DSize itemSize = itemImage->getBounds().size;                 //生成itemCALabel        CALabel* itemText = CALabel::createWithCenter(DRect(itemSize.width*0.5, itemSize.height*0.5, 150, 40));        itemText->setTag(100);        itemText->setFontSize(29);        itemText->setTextAlignment(CATextAlignmentCenter);        itemText->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);        itemImage->addSubview(itemText);    }         //设置Item背景颜色    CAView* itemImageView = p_Cell->getSubviewByTag(99);    itemImageView->setColor(colorArr.at(row * 3 + item));    CCLog("%d", row * 3 + item);         //设置itme文本显示    char pos[20] = "";    sprintf(pos, "(%d,%d,%d)", section, row, item);    CALabel* itemText = (CALabel*)p_Cell->getSubviewByTag(99)->getSubviewByTag(100);    itemText->setText(pos);    return p_Cell;} unsigned int FirstViewController::numberOfSections(CACollectionView *collectionView){    return 1;} unsigned int FirstViewController::numberOfRowsInSection(CACollectionView *collectionView, unsigned int section){    return colorArr.size() % 3 == 0 ? colorArr.size() / 3 : colorArr.size() / 3 + 1;} unsigned int FirstViewController::numberOfItemsInRowsInSection(CACollectionView *collectionView, unsigned int section, unsigned int row){    return 3;} unsigned int FirstViewController::collectionViewHeightForRowAtIndexPath(CACollectionView* collectionView, unsigned int section, unsigned int row){    return (this->getView()->getBounds().size.width - 40 * 4) / 3;}

CACollectionView 属性说明

CollectionViewDataSource

类型:CACollectionViewDataSource*

解释:添加数据代理。set/get{}。

    

CollectionViewDelegate

类型:CACollectionViewDelegate*

解释:添加交互代理。set/get{}。


CollectionHeaderView

类型:CAView*

解释:添加头部视图。set/get{}。


CollectionFooterView

类型:CAView**

解释:添加尾部视图。set/get{}。


CollectionHeaderHeight

类型:unsigned int

解释:设置头部的高度set/get{}。


CollectionFooterHeight

类型:unsigned int

解释:设置尾部的高度set/get{}。

    

HoriIntervalsetHoriInterval

类型:unsigned int

解释:水平间隔。set/get{}。


VertInterval

类型:unsigned int

解释:垂直间隔。set/get{}。


AllowsSelection

类型:bool

解释:允许选择。is{}。


AllowsMultipleSelection

类型:bool

解释:允许多个选择。is{}。


AlwaysTopSectionHeader

类型:bool

解释:总是顶部的标题。is/set{}。


AlwaysBottomSectionFooter

类型:bool

解释:总是底部的节尾。is/set{}。


CACollectionView 方法说明

static CACollectionView* createWithFrame(const DRect& rect);

返回值:static CACollectionView*

参数:

类型参数名说明
DRectrect区域大小

解释:创建,并指定其Frame,默认Frame为(0,0,0,0)


static CACollectionView* createWithCenter(const DRect& rect);

返回值:static CACollectionView*

参数:

类型参数名说明
DRectrect中心点的位置及大小

解释:创建,并指定其Center,默认Center为(0,0,0,0)


CACollectionViewCell* dequeueReusableCellWithIdentifier(const char* reuseIdentifier);

返回值:CACollectionViewCell*

参数:

类型参数名说明
charreuseIdentifier重用标识符

解释:从复用队列中寻找指定标识符的cell


virtual void setAllowsSelection(bool var);

返回值:virtual void

参数:

类型参数名说明
boolvar是否开启cell选择

解释:设置是否开启cell选择


virtual void setAllowsMultipleSelection(bool var);

返回值:virtual void

参数:

类型参数名说明
boolvar是否可以多选cell

解释:设置是否可以多选cell


void setSelectRowAtIndexPath(unsigned int section, unsigned int row, unsigned int item);

返回值:void

参数:

类型参数名说明
unsigned intsectionSection
unsigned int row
unsigned intitem项目

解释:设置索引路径选择行


void setUnSelectRowAtIndexPath(unsigned int section, unsigned int row, unsigned int item);

返回值:void

参数:

类型参数名说明
unsigned intsectionSection
unsigned int row
unsigned intitem项目

解释:设置索引路径不允许选择行


virtual void setShowsScrollIndicators(bool var);

返回值:virtual void

参数:

类型参数名说明
boolvar是否显示滚动指示器

解释:设置显示滚动指示器


CACollectionViewCell* cellForRowAtIndexPath(unsigned int section, unsigned int row, unsigned int item);

返回值:CACollectionViewCell*

参数:

类型参数名说明
unsigned intsectionSection
unsigned int row
unsigned intitem项目

解释:根据索引获取显示的cell


CACollectionViewCell* getHighlightCollectionCell();

返回值:CACollectionViewCell*

参数:

解释:获取高亮显示的collectioncell


virtual void switchPCMode(bool var);

返回值:virtual void

参数:

类型参数名说明
boolvar开关

解释:开关PC模式


virtual bool init();

返回值:virtual bool

参数:

解释:初始化


void clearData();

返回值:void

参数:

解释:清除数据


void reloadData();

返回值:void

参数:

解释:重载数据


CACollectionViewDelegate 方法说明

virtual void collectionViewDidSelectCellAtIndexPath(CACollectionView *collectionView, unsigned int section, unsigned int row, unsigned int item){};

返回值:virtual void

参数:

类型参数名说明
CACollectionViewcollectionViewcell
unsigned intsectionSection
unsigned int row
unsigned intitem项目

解释:选中cell时调用


virtual void collectionViewDidDeselectCellAtIndexPath(CACollectionView *collectionView, unsigned int section, unsigned int row, unsigned int item){};

返回值:virtual void

参数:

类型参数名说明
CACollectionViewcollectionViewcell
unsigned intsectionSection
unsigned int row
unsigned intitem项目

解释:取消选择cell时调用


CACollectionViewDataSource 方法说明

virtual CACollectionViewCell* collectionCellAtIndex(CACollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int row, unsigned int item)

返回值:virtual CACollectionViewCell*

参数:

类型参数名说明
CACollectionViewcollectionViewcell
DSizecellSizecell大小
unsigned intsectionSection
unsigned int row
unsigned intitem项目

解释:获取指定cell


virtual unsigned int collectionViewHeightForRowAtIndexPath(CACollectionView* collectionView, unsigned int section, unsigned int row)

返回值:virtual unsigned int

参数:

类型参数名说明
CACollectionViewcollectionViewcell
unsigned intsectionSection
unsigned int row
unsigned intitem项目

解释:cell的高度


virtual unsigned int numberOfItemsInRowsInSection(CACollectionView *collectionView, unsigned int section, unsigned int row)

返回值:virtual unsigned int

参数:

类型参数名说明
CACollectionViewcollectionViewcell
unsigned intsectionSection
unsigned int row
unsigned intitem项目

解释:每个cell里的item数量


virtual unsigned int numberOfRowsInSection(CACollectionView *collectionView, unsigned int section)

返回值:virtual unsigned int

参数:

类型参数名说明
CACollectionViewcollectionViewcell
unsigned intsectionSection

解释:获取对应的section所包含的cell个数


virtual unsigned int numberOfSections(CACollectionView *collectionView)

返回值:virtual unsigned int

参数:

类型参数名说明
CACollectionViewcollectionViewcell

解释:获取tableview包含的section个数


virtual CAView* collectionViewSectionViewForHeaderInSection(CACollectionView *collectionView, const DSize& viewSize, unsigned int section)

返回值:virtual CAView*

参数:

类型参数名说明
CACollectionViewcollectionViewcell
DSizecellSizecell大小
unsigned intsectionSection

解释:headerView的内容


virtual unsigned int collectionViewHeightForHeaderInSection(CACollectionView *collectionView, unsigned int section)

返回值:virtual unsigned int 

参数:

类型参数名说明
CACollectionViewcollectionViewcell
unsigned intsectionSection

解释:每个section的headerView


virtual CAView* collectionViewSectionViewForFooterInSection(CACollectionView *collectionView, const DSize& viewSize, unsigned int section)

返回值:virtual CAView*

参数:

类型参数名说明
CACollectionViewcollectionViewcell
const DSize&viewSize视图大小
unsigned intsectionSection

解释:footerView的内容


virtual unsigned int collectionViewHeightForFooterInSection(CACollectionView *collectionView, unsigned int section)

返回值:virtual unsigned int

参数:

类型参数名说明
CACollectionViewcollectionViewcell
CCSizecellSizecell大小
unsigned intsectionSection

解释:每个section的footerView


virtual void collectionViewWillDisplayCellAtIndex(CACollectionView* table, CACollectionViewCell* cell, unsigned int section, unsigned int row, unsigned int item) {};

返回值:virtual void

参数:

类型参数名说明
CACollectionView*table
CACollectionViewcollectionViewcell
unsigned intsectionSection
unsigned int row
unsigned intitem项目

解释:回调当前将要显示的collectionView




类说明

CACollectionView的数据代理


CACollectionViewDataSource 方法(点击查看方法介绍)

方法说明
collectionCellAtIndex获取指定cell
collectionViewHeightForRowAtIndexPathcell的高度
numberOfItemsInRowsInSection每个cell里的item数量
numberOfRowsInSection获取对应的section所包含的cell个数
numberOfSections获取tableview包含的section个数
collectionViewSectionViewForHeaderInSectionheaderView的内容
collectionViewHeightForHeaderInSection每个section的headerView
collectionViewSectionViewForFooterInSectionfooterView的内容
collectionViewHeightForFooterInSection每个section的footerView
collectionViewWillDisplayCellAtIndex回调当前将要显示的Collection


CACollectionViewDataSource 方法说明

virtual CACollectionViewCell* collectionCellAtIndex(CACollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int row, unsigned int item)

返回值:virtual CACollectionViewCell*

参数:

类型参数名说明
CACollectionViewcollectionViewcell
DSizecellSizecell大小
unsigned intsectionSection
unsigned int row
unsigned intitem项目

解释:获取指定cell

示例:

CACollectionViewCell* CollectionViewTest::collectionCellAtIndex(CACollectionView *collectionView, const CCSize& cellSize, unsigned int section, unsigned int row, unsigned int item){    CACollectionViewCell* p_Cell = collectionView->dequeueReusableCellWithIdentifier("CrossApp");    if (p_Cell == NULL)    {        p_Cell = CACollectionViewCell::create("CrossApp");        CAImageView* itemView = CAImageView::createWithImage(CAImage::create("logo.png"));        itemView->setCenter(CCRect(cellSize.width*0.5,cellSize.height*0.5,cellSize.height * 0.90,cellSize.height * 0.90));        itemView->setTag(99);        p_Cell->addSubview(itemView);          CALabel* itemText = CALabel::createWithCenter(CCRect(itemView->getBounds().size.width*0.5,                                                             itemView->getBounds().size.height*0.5,                                                             itemView->getBounds().size.width*0.6,                                                             itemView->getBounds().size.width*0.5));        itemText->setTag(100);        itemText->setFontSize(29 * CROSSAPP_ADPTATION_RATIO);        itemText->setTextAlignment(CATextAlignmentCenter);        itemText->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);        itemView->addSubview(itemText);      }    char pos[20] = "";    sprintf(pos, "(%d,%d,%d)",section, row, item);    CALabel* itemText = (CALabel*)p_Cell->getSubviewByTag(99)->getSubviewByTag(100);    itemText->setText(pos);      return p_Cell;}


virtual unsigned int collectionViewHeightForRowAtIndexPath(CACollectionView* collectionView, unsigned int section, unsigned int row)

返回值:virtual unsigned int

参数:

类型参数名说明
CACollectionViewcollectionViewcell
unsigned intsectionSection
unsigned int row
unsigned intitem项目

解释:cell的高度


virtual unsigned int numberOfItemsInRowsInSection(CACollectionView *collectionView, unsigned int section, unsigned int row)

返回值:virtual unsigned int

参数:

类型参数名说明
CACollectionViewcollectionViewcell
unsigned intsectionSection
unsigned int row
unsigned intitem项目

解释:每个cell里的item数量


virtual unsigned int numberOfRowsInSection(CACollectionView *collectionView, unsigned int section)

返回值:virtual unsigned int

参数:

类型参数名说明
CACollectionViewcollectionViewcell
unsigned intsectionSection

解释:获取对应的section所包含的cell个数


virtual unsigned int numberOfSections(CACollectionView *collectionView)

返回值:virtual unsigned int

参数:

类型参数名说明
CACollectionViewcollectionViewcell

解释:获取tableview包含的section个数


virtual CAView* collectionViewSectionViewForHeaderInSection(CACollectionView *collectionView, const DSize& viewSize, unsigned int section)

返回值:virtual CAView*

参数:

类型参数名说明
CACollectionViewcollectionViewcell
DSizecellSizecell大小
unsigned intsectionSection

解释:headerView的内容


virtual unsigned int collectionViewHeightForHeaderInSection(CACollectionView *collectionView, unsigned int section)

返回值:virtual unsigned int 

参数:

类型参数名说明
CACollectionViewcollectionViewcell
unsigned intsectionSection

解释:每个section的headerView


virtual CAView* collectionViewSectionViewForFooterInSection(CACollectionView *collectionView, const DSize& viewSize, unsigned int section)

返回值:virtual CAView*

参数:

类型参数名说明
CACollectionViewcollectionViewcell
const DSize&viewSize视图大小
unsigned intsectionSection

解释:footerView的内容


virtual unsigned int collectionViewHeightForFooterInSection(CACollectionView *collectionView, unsigned int section)

返回值:virtual unsigned int

参数:

类型参数名说明
CACollectionViewcollectionViewcell
CCSizecellSizecell大小
unsigned intsectionSection

解释:每个section的footerView


virtual void collectionViewWillDisplayCellAtIndex(CACollectionView* table, CACollectionViewCell* cell, unsigned int section, unsigned int row, unsigned int item) {};

返回值:virtual void

参数:

类型参数名说明
CACollectionView*table
CACollectionViewcollectionViewcell
unsigned intsectionSection
unsigned int row
unsigned intitem项目

解释:回调当前将要显示的Collection


类说明

CASlider是滚动条控件,主要作用是方便数值调节,如音量大小控制、缩放视图等操作。


CASlider 属性(点击查看方法介绍)

属性说明
TouchClick触摸点击
Value
MinValue最小值
MaxValue最大值
TrackHeight滚动条高度
MinTrackTintImage设置前景图片(已经划过的部分) 
MaxTrackTintImage设置后景图片(未划过的部分) 
ThumbTintImage滚动块的图片


CASlider 方法(点击查看方法介绍)

方法说明
createWithFrame创建,并指定其Frame,默认Frame为(0,0,0,0)
createWithCenter创建,并指定其Center,默认Center为(0,0,0,0)
addTarget添加回调事件
addTargetForTouchUpSide添加回调事件的触摸
removeTarget删除回调事件
setValue设定值
setMinValue设定最小值
setMaxValue设定最大值
setTrackHeight设置滚动条高度
setMinTrackTintImage设置前景图片(已经划过的部分) 
setMaxTrackTintImage设置后景图片(未划过的部分) 
setThumbTintImage设置滚动块的图片
initWithFrame初始化r,并指定其Frame
initWithCenter初始化,并指定其Center
ccTouchBegan触摸事件开始时的回调函数
ccTouchMoved触摸事件中触点移动时的回调函数
ccTouchEnded触摸事件结束时的回调函数
layoutSubViews子视图布局


我们可以通过设置CASlider的最大值和最小值来确定其值的范围,可以通过设置图片改变滚动条的样子,我们这里就利用CASlider来控制一张图片的缩放大小,来演示一下CASlider的使用方法:
首先我们在FirstViewController.h中添加一个监听函数,用于监听CASlider的值的变化。

//监听函数    void zoomViewBySliderValue(CAControl* control, DPoint point)

然后我们在FirstViewController.cpp中去实现CASlider来控制CAImageView的缩放变化。


void FirstViewController::viewDidLoad(){    //获得屏幕大小    CCSize size = this->getView()->getBounds().size;         //创建CAImageView    CAImageView* imageView = CAImageView::createWithImage(CAImage::create("HelloWorld.png"));    imageView->setCenter(DRect(size.width*0.5, size.height*0.5, 800, 1200));         //设置tag    imageView->setTag(1);        //添加    this->getView()->addSubview(imageView);         //创建CASlider    CASlider* slider = CASlider::createWithCenter(DRect(size.width*0.5, size.height*0.2, size.width*0.8, 20));         //绑定监听    slider->addTarget(this, CAControl_selector(FirstViewController::zoomViewBySliderValue));        //添加    this->getView()->insertSubview(slider, 1);         //创建CALabel    CALabel* label = CALabel::createWithCenter(DRect(size.width*0.5, size.height*0.1, size.width*0.8, 40));        //设置文本    char temptext[40];    sprintf(temptext, "ScaleValue:%0.2f", slider->getValue());    label->setText(temptext);         //设置居中    label->setTextAlignment(CATextAlignmentCenter);    label->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);        //设置Tag    label->setTag(3);    this->getView()->addSubview(label);} void FirstViewController::zoomViewBySliderValue(CAControl* control, DPoint point){    //获得silder对象    CASlider* slider = (CASlider*)control;         //获得silder的当前值    float zoomValue = slider->getValue();         //根据tag值获得image    CAImageView* image = (CAImageView*)this->getView()->getSubviewByTag(1);         //设置image的缩放比    image->setScale(zoomValue);         //根据tag获得CALabel    CALabel* label = (CALabel*)this->getView()->getSubviewByTag(3);         //设置文本    char temptext[40];    sprintf(temptext, "ScaleValue:%0.2f", slider->getValue());    label->setText(temptext);}

我们通过addTarget来为CASlider绑定一个监听,我们又在监听函数中,根据CASlider的变化来改变CAImageView的缩放值,同样的原理我们也可以进行其它数值的改变,大家举一反三可以自己去尝试一下。


CASlider 属性说明

TouchClick

类型:bool

解释:触摸点击。is{}。

    

Value     

类型:float

解释:值。get{}。


MinValue 

类型:float

解释:最小值。get{}。


MaxValue  

类型:float

解释:最大值。get{}。


TrackHeight 

类型:float

解释:滚动条高度。get{}。


MinTrackTintImage

类型:CAImage*

解释:设置前景图片(已经划过的部分) 。get{}。


MaxTrackTintImage

类型:CAImage*

解释:设置后景图片(未划过的部分) 。get{}。


ThumbTintImage

类型:CAImage*

解释:滚动块的图片 。get{}。


CASlider 方法说明

static CASlider* createWithFrame(const DRect& rect);

返回值:static CASlider

参数:

类型
参数名说明
DRectrect区域大小

解释:创建,并指定其Frame,默认Frame为(0,0,0,0)


static CASlider* createWithCenter(const DRect& rect);

返回值:static CASlider

参数:

类型
参数名说明
DRectrect中心点的位置及大小

解释:创建,并指定其Center,默认Center为(0,0,0,0)


void addTarget(CAObject* target, SEL_CAControl selector);

返回值:void

参数:

类型
参数名说明
CAObject*target目标
SEL_CAControlselector选择器

解释:添加回调事件


void addTargetForTouchUpSide(CAObject* target, SEL_CAControl selector);

返回值:void

参数:

类型
参数名说明
CAObject*target目标
SEL_CAControlselector选择器

解释:添加回调事件的触摸


void removeTarget(CAObject* target, SEL_CAControl selector);

返回值:void

参数:

类型
参数名说明
CAObject*target目标
SEL_CAControlselector选择器

解释:删除回调事件


virtual void setValue(float value);

返回值:virtual void

参数:

类型
参数名说明
floatvalue

解释:设定值


virtual void setMinValue(float minValue);

返回值:virtual void

参数:

类型
参数名说明
floatminValue最小值

解释:设定最小值


virtual void setMaxValue(float maxValue);

返回值:virtual void

参数:

类型
参数名说明
floatmaxValue最大值

解释:设定最大值


virtual void setTrackHeight(float trackHeight);

返回值:virtual void

参数:

类型
参数名说明
floattrackHeight滚动条高度

解释:设置滚动条高度


virtual void setMinTrackTintImage(CAImage* minTrackTintImage);

返回值:virtual void

参数:

类型
参数名说明
CAImage*minTrackTintImage前景图片(已经划过的部分)  

解释:设置前景图片(已经划过的部分)  


virtual void setMaxTrackTintImage(CAImage* maxTrackTintImage);

返回值:virtual void

参数:

类型
参数名说明
CAImage*maxTrackTintImage后景图片(未划过的部分) 

解释:设置后景图片(未划过的部分) 


virtual void setThumbTintImage(CAImage* thumbTintImage);

返回值:virtual void

参数:

类型
参数名说明
CAImage*thumbTintImage滚动块的图片 

解释:设置滚动块的图片 

      

void setContentSize(const CCSize & var);

返回值:void

参数:

类型
参数名说明
CCSizevar内容大小

解释:设置内容大小


bool initWithFrame(const DRect& rect);

返回值:bool

参数:

类型参数名说明
const DRect&rect区域大小

解释:初始化,并指定其Frame


bool initWithCenter(const DRect& rect);

返回值:bool

参数:

类型参数名说明
const DRect&rect中心点的位置及大小

解释:初始化,并指定其Center


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 layoutSubViews();

返回值:virtual void

参数:

解释:子视图布局



类说明

CAStepper是步进控件,它的作用和CASlider非常类似,只是CAStepper的改变的固定值,它包括左右两部分,左部为减少,右部为增加。


CAStepper 属性(点击查看方法介绍)

属性说明
Continuous设置连续
AutoRepeat设置自动重复
Wraps设置是否可在最大值和最小值循环
Value设定值
MinValue设定最小值
MaxValue设定最大值
StepValue设置步进值
TouchEffect设置接触效应


CAStepper 方法(点击查看方法介绍)

方法说明
create创建,默认Frame为(0,0,0,0)
createWithFrame创建,并指定其Frame,默认Frame为(0,0,0,0)
createWithCenter创建,并指定其Center,默认Center为(0,0,0,0)
setBackgroundImage设置背景图像
getBackgroundImageForState获取背景图像
setIncrementImage设置右部增加部分的背景
getIncrementImageForState获取右部增加部分的背景
setDecrementImage设置左部减少部分的背景
getDecrementImageForState获取左部减少部分的背景
addTarget添加回调事件
removeTarget删除回调事件
removeAllTargets删除所有回调事件
init初始化
initWithFrame初始化,并指定其Frame
initWithCenter初始化,并指定其Center
onEnter输入
onExit退出
visit访问
setDividerColor设置分频器颜色
getDividerColor获取分频器颜色
setTailorImageAtIndex设置索引裁剪图像
getTailorImageAtIndex获取索引截取图像


我们尝试这用CAStepper去控制一张图片的旋转,每次旋转30度。
同样我们首先要在FirstViewController.h中添加一个监听函数,来监听CAStepper的值的变化。

//监听函数    void stepperValueChange(CAControl* control, DPoint point);

然后我们在FirstViewController.cpp添加CAStepper控件并为其绑定监听。

void FirstViewController::viewDidLoad(){    // Do any additional setup after loading the view from its nib.    DRect winRect = this->getView()->getBounds();    DSize size = winRect.size;         //创建CAImageView用于选择    CAImageView* imageView = CAImageView::createWithImage(CAImage::create("HelloWorld.png"));    imageView->setFrame(winRect);    imageView->setTag(1);    this->getView()->addSubview(imageView);    CAStepper* stepper = CAStepper::createWithCenter(DRect(size.width * 0.5, size.height * 0.6, 200, 200));         //最大值    stepper->setMaxValue(360);         //最小值    stepper->setMinValue(0);         //每此变化值(步进值)    stepper->setStepValue(30);         //设置监听    stepper->addTarget(this, CAControl_selector(FirstViewController::stepperValueChange));         //是否开启触摸特效    stepper->setTouchEffect(true);         //释放开车长按效果(flase必须一次一次按,true可以按着不懂变化。默认为true)测试无效    stepper->setAutoRepeat(true);         //设置是否可在最大值和最小值循环(当增长到最大值时,再点增大则变成最小值。最小值再减少变成最大值)    stepper->setWraps(true);         //添加到屏幕    this->getView()->addSubview(stepper);}

void FirstViewController::stepperValueChange(CAControl* control, DPoint point){    //获得stepper对象    CAStepper* stepper = (CAStepper*)control;         //根据tag获得imageView    CAImageView* imageView = (CAImageView*)this->getView()->getSubviewByTag(1);         //获得stepper的当前值    float zoomValue = stepper->getValue();         //设置旋转角度    imageView->setRotation(zoomValue);}

这样我们就可以通过增减CAStepper的值来控制CAImageView的旋转角度了。


CAStepper 属性说明

Continuous

类型:bool

解释:设置连续,set/get{}。


AutoRepeat

类型:bool

解释:设置自动重复,set/get{}。


Wraps

类型:bool

解释:设置是否可在最大值和最小值循环set/get{}。


Value

类型:double

解释:设定值,set/get{}。


MinValue

类型:double

解释:设定最小值,set/get{}。


MaxValue

类型:double

解释:设定最大值。set/get{}。


StepValue

类型:double

解释:设置步进值。set/get{}。


TouchEffect

类型:bool

解释:设置接触效应,set/get{}。


CAStepper 方法说明

static CAStepper* create();

返回值:static CAStepper

参数:

解释:创建,默认Frame为(0,0,0,0)


static CAStepper* createWithFrame(const CCRect& rect);

返回值:static CAStepper

参数:

类型
参数名说明
CCRect&rect区域大小

解释:创建,并指定其Frame,默认Frame为(0,0,0,0)


static CAStepper* createWithCenter(const CCRect& rect);

返回值:static CAStepper

参数:

类型
参数名说明
CCRectrect中心点的位置及

解释:创建,并指定其Center,默认Center为(0,0,0,0)


void setBackgroundImage(CAImage* image, CAControlState state);

返回值:void

参数:

类型
参数名说明
CAImage*image图像
CAControlStatestate控制状态

解释:设置背景图像


CAImage* getBackgroundImageForState(CAControlState state);

返回值:CAImage*

参数:

类型
参数名说明
CAControlStatestate控制状态

解释:获取背景图像


void setIncrementImage(CAImage* image, CAControlState state);

返回值:void

参数:

类型
参数名说明
CAImage*image图像
CAControlStatestate控制状态

解释:设置右部增加部分的背景 


CAImage* getIncrementImageForState(CAControlState state);

返回值:CAImage*

参数:

类型
参数名说明
CAControlStatestate控制状态

解释:获取右部增加部分的背景 


void setDecrementImage(CAImage* image, CAControlState state);

返回值:void

参数:

类型
参数名说明
CAImage*image图像
CAControlStatestate控制状态

解释:设置左部减少部分的背景


CAImage* getDecrementImageForState(CAControlState state);

返回值:CAImage*

参数:

类型
参数名说明
CAControlStatestate控制状态

解释:获取左部减少部分的背景


virtual void addTarget(CAObject* target, SEL_CAControl selector);

返回值:virtual void

参数:

类型参数名说明
CAObject*target目标
SEL_CAControlselector选择器

解释:添加回调事件


virtual void removeTarget(CAObject* target, SEL_CAControl selector);

返回值:virtual void

参数:

类型参数名说明
CAObject*target目标
SEL_CAControlselector选择器

解释:删除回调事件


virtual void removeAllTargets();

返回值:virtual void

参数:

解释:删除所有回调事件


virtual bool init();

返回值:virtual bool

参数:

解释:初始化


virtual bool initWithFrame(const DRect& rect);

返回值:virtual bool

参数:

类型参数名说明
const DRect&rect区域大小

解释:初始化,并指定其Frame


virtual bool initWithCenter(const DRect& rect);

返回值:virtual bool

参数:

类型参数名说明
const DRect&rect中心点的位置及大小

解释:初始化,并指定其Center


virtual void onEnter();

返回值:virtual void

参数:

解释:输入


virtual void onExit();

返回值:virtual void

参数:

解释:退出


virtual void visit();

返回值:virtual void

参数:

解释:访问


void setDividerColor(CAColor4B color);

返回值:void

参数:

类型参数名说明
CAColor4Bcolor颜色

解释:设置分频器颜色


CAColor4B getDividerColor();

返回值:CAColor4B

参数:

解释:获取分频器颜色


void setTailorImageAtIndex(int index);

返回值:void

参数:

类型参数名说明
intindex索引

解释:设置索引裁剪图像


CAView* getTailorImageAtIndex(int index);

返回值:CAView*

参数:

类型参数名说明
intindex索引

解释:获取索引截取图像

      



类说明

CAPageView用于实现分页、翻页效果。CAPageView为我们提供了横向和竖直两个方向的样式。我也可以通过继承CAPageViewDelegate来实现对CAPageView的监听。


CAPageView 属性(点击查看方法介绍)

属性说明
PageViewDirection页面浏览方向
PageViewDelegate页面视图代表
CurrPage当前页
Spacing间距


CAPageView 方法(点击查看方法介绍)

方法说明
createWithFrame创建,并指定其Frame,默认Frame为(0,0,0,0)
createWithCenter创建,并指定其Center,默认Center为(0,0,0,0)
setCurrPage设置显示指定页
getPageCount获取页面总数
setViews添加存放View的CADeque容器
setViews添加存放View的CAVector容器
getSubViewAtIndex通过索引获取子视图
setShowsScrollIndicators设置显示滚动条
init
初始化


我来看一下代码实例:
首先我们需要继承CAPageViewDelegate实现监听函数。我们在.h文件中添加如下代码:

#include <iostream>#include "CrossApp.h" USING_NS_CC; class FirstViewController : public CAViewController, public  CAPageViewDelegate{     public:    FirstViewController();         virtual ~FirstViewController();         //切换开始时调用    virtual void pageViewDidBeginTurning(CAPageView* pageView);         //切换结束时调用    virtual void pageViewDidEndTurning(CAPageView* pageView);         //选择当前的切换页时调用    virtual void pageViewDidSelectPageAtIndex(CAPageView* pageView, unsigned int index, const DPoint& point);protected:         void viewDidLoad();         void viewDidUnload();     };

然后在.cpp中实现逻辑:

void FirstViewController::viewDidLoad(){    //生命一个CAVector作为添加到PageView的容器    CAVector<CAView*> viewVector;         //获得屏幕的rect    DRect winRect = this->getView()->getBounds();             //创建CALabel    CALabel* labelView = CALabel::createWithFrame(winRect);         //设置为居中    labelView->setTextAlignment(CATextAlignmentCenter);    labelView->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);    labelView->setFontSize(75);         //设置文本内容    labelView->setText(UTF8("第一个View"));             //创建CAImageView    CAImageView* imageView = CAImageView::createWithImage(CAImage::create("HelloWorld.png"));         //设置显示区域    imageView->setFrame(winRect);         //创建一个蓝色的View    CAView* view = CAView::createWithColor(CAColor_blue);             //设置显示区域    view->setFrame(winRect);         //创建CALabel    CALabel* lastLabel = CALabel::createWithFrame(winRect);             //设置居中    lastLabel->setTextAlignment(CATextAlignmentCenter);                lastLabel->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);    lastLabel->setFontSize(75);         //设置显示文本    lastLabel->setText(UTF8("最后一个View"));             //将lastLabel添加到view    view->addSubview(lastLabel);             //将上面的三个控件放入到CAVector容器内    viewVector.pushBack(labelView);    viewVector.pushBack(imageView);    viewVector.pushBack(view);             /*创建一个CAPageView并设置为水平滚动    CAPageViewDirectionHorizontal:水平    CAPageViewDirectionVertical:竖直    */             CAPageView* pageViewTest = CAPageView::createWithCenter(DRect(winRect.size.width*0.5, winRect.size.height*0.5, winRect.size.width, winRect.size.height), CAPageView::CAPageViewDirectionHorizontal);            //设置监听    pageViewTest->setPageViewDelegate(this);         //将CAVector添加到pageViewTest    pageViewTest->setViews(viewVector);    pageViewTest->getPageCount();             //将pageViewTest添到屏幕显示    this->getView()->addSubview(pageViewTest);     } void FirstViewController::viewDidUnload(){    // Release any retained subviews of the main view.    // e.g. self.myOutlet = nil;} void FirstViewController::pageViewDidBeginTurning(CAPageView* pageView){    CCLog("Begin--->");} void FirstViewController::pageViewDidEndTurning(CAPageView* pageView){    CCLog("End--->");} void FirstViewController::pageViewDidSelectPageAtIndex(CAPageView* pageView, unsigned int index, const DPoint& point){    CCLog("Index:%d",index);}

我们创建了一个含有三个CAView的CAPageView,横向滑动可以切换到不同的CAView,在我们切换时候会调用pageViewDidBeginTurning函数和pageViewDidEndTurning函数,当我们点击某个页面的时候pageViewDidSelectPageAtIndex会被调用。


CAPageView 属性说明

PageViewDirection

类型:CAPageViewDirection

解释:页面浏览方向。get{}。

    

PageViewDelegate

类型:CAPageViewDelegate*

解释:页面视图代表。set/get{}。


CurrPage

类型:int

解释:当前页。get{}。


Spacing

类型:int

解释:间距。set/get{}。


CAPageView 方法说明

static CAPageView* createWithFrame(const CCRect& rect, const CAPageViewDirection& type);

返回值:CAPageView*

参数:

类型参数名说明
CCRect&rect大小
CAPageViewDirection&
type类型

解释:创建,并指定其Frame,默认Frame为(0,0,0,0)

    

static CAPageView* createWithCenter(const CCRect& rect, const CAPageViewDirection& type);

返回值:CAPageView*

参数:

类型参数名说明
CCRect&rect大小
CAPageViewDirection&
type类型

解释:创建,并指定其Center,默认Center为(0,0,0,0)


void setCurrPage(int var, bool animated, bool listener = false);

返回值:void

参数:

类型参数名说明
intvar页面数
boolanimated动画
boollistener监听

解释:设置显示指定页

    

unsigned int getPageCount();

返回值:unsigned int

参数:

解释:获取页面总数


void setViews(const CADeque<CAView*>& vec);

返回值:void

参数:

类型参数名说明
CADeque<CAView*>&vecCADeque容器

解释:添加存放View的CADeque容器


void setViews(const CAVector<CAView*>& vec);

返回值:void

参数:

类型参数名说明
CAVector<CAView*>&vecCAVector容器

解释:添加存放View的CAVector容器


CAView* getSubViewAtIndex(int index);

返回值:CAView*

参数:

类型参数名说明
intindex索引

解释:通过索引获取子视图


virtual void setShowsScrollIndicators(bool var);

返回值:void

参数:

类型参数名说明
boolvar是否显示滚动条

解释:设置显示滚动条


bool init();

返回值:bool

参数:

解释:初始化







类说明

        CAPageView的滚动事件的代理


CAPageViewDelegate 方法(点击查看方法介绍)

方法说明
pageViewDidBeginTurning开始滚动时触发
pageViewDidEndTurning滚动结束时触发
pageViewDidSelectPageAtIndex点击pageView时触发


CAPageViewDelegate 方法说明

virtual void pageViewDidBeginTurning(CAPageView* pageView)

返回值:void

参数:

类型参数名说明
CAPageView*pageView当前pageView

解释:开始滚动时触发

 

virtual void pageViewDidEndTurning(CAPageView* pageView)

返回值:void

参数:

类型参数名说明
CAPageView*pageView当前pageView

解释:滚动结束时触发

 

virtual void pageViewDidSelectPageAtIndex(CAPageView* pageView, unsigned int index)

返回值:void

参数:

类型参数名说明
CAPageView*pageView当前pageView
unsigned intsection所点击的页数

解释:点击pageView时触发



类说明

CAWaterfallView 由很多的格子组成,但是每个格子的宽度和高速都是不确定的,是在动态改变的,就像瀑布一样,是一条线一条线的。


CAWaterfallView 属性(点击查看方法介绍)

属性说明
WaterfallViewDataSource添加数据代理
WaterfallViewDelegate添加交互代理
WaterfallHeaderView添加头部视图
WaterfallFooterView添加尾部视图
WaterfallHeaderHeight设置头部的高度
WaterfallFooterHeight设置尾部的高度
ColumnCount列计数
ItemMargin项目边缘
ColumnMargin列边缘
AllowsSelection允许选择
AllowsMultipleSelection允许多个选择
AlwaysTopSectionHeader总是显示顶部
AlwaysBottomSectionFooter总是显示底部


CAWaterfallView 方法(点击查看方法介绍)

方法说明
createWithFrame创建,并指定其Frame
createWithCenter创建,并设置其Center
init初始化
reloadData重载数据
dequeueReusableCellWithIdentifier从复用队列中寻找指定标识符的cell
setAllowsSelection是否开启cell选择
setAllowsMultipleSelection是否可以多选cell
setSelectRowAtIndexPath通过索引选择一行
setUnSelectRowAtIndexPath通过索引取消选择一行
setShowsScrollIndicators显示滚动指示器
cellForRowAtIndexPath根据索引获取显示的cell
displayingWaterfallCell显示Waterfall的Cell
getHighlightWaterfallCell突出Waterfall的Cell
switchPCMode开关PC模式


CAWaterfallView 属性说明

WaterfallViewDataSource

类型:CAWaterfallViewDataSource*

解释:添加数据代理,set/get{}。


WaterfallViewDelegate

类型:CAWaterfallViewDelegate*

解释:添加交互代理,set/get{}。


WaterfallHeaderView

类型:CAView*

解释:添加头部视图,set/get{}。


WaterfallFooterView

类型:CAView*

解释:添加尾部视图,set/get{}。


WaterfallHeaderHeight

类型:unsigned int

解释:设置头部的高度,set/get{}。


WaterfallFooterHeight

类型:unsigned int

解释:设置尾部的高度,set/get{}。


ColumnCount

类型:unsigned int

解释:列计数,set/get{}。


ItemMargin

类型:unsigned int

解释:项目边缘,set/get{}。


ColumnMargin

类型:unsigned int

解释:列边缘,set/get{}。


AllowsSelection

类型:bool

解释:允许选择,is{}。


AllowsMultipleSelection

类型:bool

解释:允许多个选择,is{}。


AlwaysTopSectionHeader

类型:bool

解释:总是显示顶部,is/set{}。


AlwaysBottomSectionFooter

类型:bool

解释:总是显示底部,is/set{}。


CAWaterfallView 方法说明

static CAWaterfallView* createWithFrame(const DRect& rect);

返回值:CAWaterfallView*

参数:

类型参数名说明
const DRect&rect区域大小 

解释:创建,并指定其Frame


static CAWaterfallView* createWithCenter(const DRect& rect);

返回值:CAWaterfallView*

参数:

类型参数名说明
const DRect&rect中心点的位置及大小

解释:

创建,并设置其Center


virtual bool init();

返回值:bool

参数:

解释:初始化


void reloadData();

返回值:void

参数:

解释:重载数据


CAWaterfallViewCell* dequeueReusableCellWithIdentifier(const char* reuseIdentifier);

返回值:CAWaterfallViewCell*

参数:

类型参数名说明
const char*reuseIdentifier重用标识符

解释:从复用队列中寻找指定标识符的cell


virtual void setAllowsSelection(bool var);

返回值:void

参数:

类型参数名说明
boolvar是否开启

解释:是否开启cell选择


virtual void setAllowsMultipleSelection(bool var);

返回值:void

参数:

类型参数名说明
boolvar是否开启

解释:是否可以多选cell


void setSelectRowAtIndexPath(unsigned int itemIndex);

返回值:void

参数:

类型参数名说明
unsigned intitemIndex项目Index

解释:通过索引选择一行


void setUnSelectRowAtIndexPath(unsigned int itemIndex);

返回值:void

参数:

类型参数名说明
unsigned intitemIndex项目Index

解释:通过索引取消选择一行


virtual void setShowsScrollIndicators(bool var);

返回值:void

参数:

类型参数名说明
boolvar是否开启

解释:显示滚动指示器


CAWaterfallViewCell* cellForRowAtIndexPath(unsigned int itemIndex);

返回值:CAWaterfallViewCell*

参数:

类型参数名说明
unsigned intitemIndex项目Index

解释:根据索引获取显示的cell


const CAVector<CAWaterfallViewCell*>& displayingWaterfallCell();

返回值:CAVector<CAWaterfallViewCell*>&

参数:

解释:显示Waterfall的Cell


CAWaterfallViewCell* getHighlightWaterfallCell();

返回值:CAWaterfallViewCell*

参数:

解释:突出Waterfall的Cell


virtual void switchPCMode(bool var);

返回值:void

参数:

类型参数名说明
boolvar是否开启

解释:开关PC模式







类说明:

        数据代理方法


CAWaterfallViewDataSource 方法

方法说明
waterfallCellAtIndex获取指定cell
waterfallViewHeightForItemAtIndexItem高度
numberOfItemsitem数量
waterfallViewSectionViewForHeaderwaterfallView的标题图像
waterfallViewHeightForHeaderwaterfallView的头部高度
waterfallViewSectionViewForFooterwaterfallView的底部图像
waterfallViewHeightForFooterwaterfallView的底部高度
waterfallViewWillDisplayCellAtIndex回调当前将要显示的waterfallView


CAWaterfallViewDataSource 方法说明

virtual CAWaterfallViewCell* waterfallCellAtIndex(CAWaterfallView *waterfallView, const DSize& cellSize, unsigned int itemIndex);

返回值:CAWaterfallViewCell* 

参数:

类型参数名说明
CAWaterfallView*waterfallView当前waterfallView
const DSize&cellSizecell大小
unsigned int 
itemIndex项目Index

解释:获取指定cell


virtual unsigned int waterfallViewHeightForItemAtIndex(CAWaterfallView *waterfallView, unsigned int itemIndex);

返回值:unsigned int 

参数:

类型参数名说明
CAWaterfallView*waterfallView当前waterfallView
unsigned int 
itemIndex项目Index

解释:Item高度


virtual unsigned int numberOfItems(CAWaterfallView *waterfallView);

返回值:unsigned int 

参数:

类型参数名说明
CAWaterfallView*waterfallView当前waterfallView

解释:item数量


virtual CAView* waterfallViewSectionViewForHeader(CAWaterfallView *waterfallView, const DSize& viewSize);

返回值:CAView*

参数:

类型参数名说明
CAWaterfallView*waterfallView当前waterfallView
const DSize&viewSize 图像大小

解释:waterfallView的标题图像


virtual unsigned int waterfallViewHeightForHeader(CAWaterfallView *waterfallView);

返回值:unsigned int 

参数:

类型参数名说明
CAWaterfallView*waterfallView当前waterfallView

解释:waterfallView的头部高度


virtual CAView* waterfallViewSectionViewForFooter(CAWaterfallView *waterfallView, const DSize& viewSize);

返回值:CAView*

参数:

类型参数名说明
CAWaterfallView*waterfallView当前waterfallView
const DSize&viewSize 图像大小

解释:waterfallView的底部图像


virtual unsigned int waterfallViewHeightForFooter(CAWaterfallView *waterfallView);

返回值:unsigned int

参数:

类型参数名说明
CAWaterfallView*waterfallView当前waterfallView

解释:waterfallView的底部高度


virtual void waterfallViewWillDisplayCellAtIndex(CAWaterfallView* waterfallView, CAWaterfallViewCell* cell, unsigned int itemIndex) {};

返回值:void

参数:

类型参数名说明
CAWaterfallView*waterfallView当前waterfallView
CAWaterfallViewCell*cellcell
unsigned int 
itemIndex项目Index

解释:回调当前将要显示的waterfallView






类说明

瀑布流控件代理方法


CAWaterfallViewDelegate 方法(点击查看方法介绍)

方法说明
waterfallViewDidSelectCellAtIndexPath选中cell时调用
waterfallViewDidDeselectCellAtIndexPath取消选择cell时调用


CAWaterfallViewDelegate 方法说明

virtual void waterfallViewDidSelectCellAtIndexPath(CAWaterfallView *waterfallView, unsigned int itemIndex){};

返回值:void

参数:

类型参数名说明
CAWaterfallView*waterfallView当前WaterfallView
unsigned int itemIndex项目Index

解释:选中cell时调用


virtual void waterfallViewDidDeselectCellAtIndexPath(CAWaterfallView *waterfallView, unsigned int itemIndex){};

返回值:void

参数:

类型参数名说明
CAWaterfallView*waterfallView当前WaterfallView
unsigned int itemIndex项目Index

解释:取消选择cell时调用




类说明

作为CAWaterfallViewCell添加进WaterfallView。


CAWaterfallViewCell 属性(点击查看方法介绍)

属性说明
ContentView显示图像
BackgroundView背景图像
ReuseIdentifier重用标识符
ItemIndex项目Index
ControlStateEffect控制状态
AllowsSelected允许选择


CAWaterfallViewCell 方法(点击查看方法介绍)

方法说明
create创建
initWithReuseIdentifier重用标识符初始化


CAWaterfallViewCell 属性说明

ContentView

类型:CAView*

解释:显示图像,get{}。


BackgroundView

类型:CAView*

解释:背景图像,set/get{}。


ReuseIdentifier

类型:std::string

解释:重用标识符,set/get{}。


ItemIndex

类型:unsigned int

解释:项目Index,get{}。


ControlStateEffect

类型:bool

解释:控制状态,is/set{}。


AllowsSelected

类型:bool

解释:允许选择,is/set{}。


CAWaterfallViewCell 方法说明

static CAWaterfallViewCell* create(const std::string& reuseIdentifier);

返回值:CAWaterfallViewCell* 

参数:

类型参数名说明
const std::string&reuseIdentifier重用标识符

解释:创建


virtual bool initWithReuseIdentifier(const std::string& reuseIdentifier);

返回值:bool

参数:

类型参数名说明
const std::string&reuseIdentifier重用标识符

解释:重用标识符初始化

类说明

CATextField是单行输入框控件。主要接收用户的文本输入,多用于用户名、密码、聊天输入等。


CATextField 属性(点击查看方法介绍)

属性说明
Delegate数据代理
ClearButtonMode添加按钮模式
MarginLeft左边缘
MarginRight右边缘
FontSize字体大小
PlaceHolderTextPlaceHolder文本内容
PlaceHolderColorPlaceHolder文本内容颜色
Text文本内容
TextColor文本内容颜色
KeyboardType键盘类型
ReturnTypeReturn键类型
TextFieldAlignTextField的对齐方式
SecureTextEntry设置TextField为密码输入框
AllowkeyBoardHide返回键恢复键盘
MaxLenght最大长度


CATextField 方法(点击查看方法介绍)

方法说明
resignFirstResponder隐藏键盘第一响应者状态
becomeFirstResponder弹出键盘第一响应者状态
createWithFrame创建,并指定其Frame
createWithCenter创建,并设置其Center
init初始化
setMarginImageLeft设置左边缘图像
setMarginImageRight设置右边缘图像
setBackgroundImage设置背景图像


CATextField 属性说明

Delegate

类型:CATextFieldDelegate*

解释:数据代理,set/get{}。


ClearButtonMode

类型:ClearButtonMode

解释:添加按钮模式,set/get{}。

typedef enum{    None = 0,     //正常模式,不添加按钮    WhileEditing  //添加清除按钮}ClearButtonMode;

MarginLeft

类型:int

解释:左边缘(如果选择默认:左16,右16),set/get{}。


MarginRight

类型:int

解释:右边缘(如果选择默认:左16,右16),set/get{}。


FontSize

类型:int

解释:字体大小,set/get{}。


PlaceHolderText

类型:std::string

解释:PlaceHolder文本内容,set/get{}。


PlaceHolderColor

类型:CAColor4B

解释:PlaceHolder文本内容颜色,set/get{}。


Text

类型:std::string

解释:文本内容,set/get{}。


TextColor

类型:CAColor4B

解释:文本内容颜色,set/get{}。


KeyboardType

类型:KeyboardType

解释:键盘类型,set/get{}。(默认为KeyboardTypeDefault类型)

typedef enum{    Default = 0,    NumbersAndPunctuation,    URL,    NumberPad,    PhonePad,    NamePhonePad,    EmailAddress,}KeyboardType;


ReturnType

类型:ReturnType

解释:Return键类型,set/get{}。(默认ReturnTypeDone类型)

typedef enum{    Done=0,    Go,    Next,    Search,    Send}ReturnType;


TextFieldAlign

类型:TextFieldAlign

解释:TextField的对齐方式,set/get{}。(默认:中心)

typedef enum {    Left,    Center,    Right}TextFieldAlign;

SecureTextEntry

类型:bool

解释:设置TextField为密码输入框,is/set{}。(密码输入框,默认为假)


AllowkeyBoardHide

类型:bool

解释:返回键恢复键盘,is/set{}。(返回键恢复键盘,默认为真)


MaxLenght

类型:int

解释:最大长度,set/get{}。


CATextField 方法说明

virtual bool resignFirstResponder();

返回值:bool

参数:

解释:隐藏键盘第一响应者状态


virtual bool becomeFirstResponder();

返回值:bool

参数:

解释:弹出键盘第一响应者状态


static CATextField* createWithFrame(const DRect& frame);

返回值:CATextField*

参数:

类型参数名说明
const DRect&frame区域大小

解释:创建,并指定其Frame


static CATextField* createWithCenter(const DRect& rect);

返回值:CATextField*

参数:

类型参数名说明
const DRect&rect中心点的位置及大小

解释:创建,并设置其Center


bool init();

返回值:bool

参数:

解释:初始化


void setMarginImageLeft(const DSize& imgSize,const std::string& filePath);

返回值:void

参数:

类型参数名说明
const DSize&imgSize图像大小
const std::string& filePath图像路径

解释:设置左边缘图像


void setMarginImageRight(const DSize& imgSize,const std::string& filePath);

返回值:void

参数:

类型参数名说明
const DSize&imgSize图像大小
const std::string& filePath图像路径

解释:设置右边缘图像


void setBackgroundImage(CAImage* image);

返回值:void

参数:

类型参数名说明
CAImage*image图像

解释:设置背景图像


类说明

CATextField的数据代理


CATextFieldDelegate 方法(点击查看方法介绍)

方法说明
textFieldShouldBeginEditing开始编辑时触发
textFieldShouldEndEditing结束编辑时触发
textFieldShouldReturn返回时触发
keyBoardHeight键盘高度
textFieldShouldChangeCharacters文字更改后触发


CATextFieldDelegate 方法说明

virtual bool textFieldShouldBeginEditing(CATextField * sender)

返回值:bool

参数:

类型参数名说明
CATextField*sender当前textField

解释:开始编辑时触发


virtual bool textFieldShouldEndEditing(CATextField * sender)

返回值:bool

参数:

类型参数名说明
CATextField*sender当前textField

解释:结束编辑时触发(如果发件人不想从时间中分离,返回true)


virtual void textFieldShouldReturn(CATextField *sender){}

返回值:void

参数:

类型参数名说明
CATextField*sender当前textField

解释:返回时触发


virtual void keyBoardHeight(CATextField *sender, int height){}

返回值:void

参数:

类型参数名说明
CATextField*sender当前textField
intheight高度

解释:键盘高度


virtual bool textFieldShouldChangeCharacters(CATextField* sender, unsigned int location, unsigned int lenght, const std::string& changedText);

返回值:bool

参数:

类型参数名说明
CATextField*sender当前textField
unsigned int location光标选中的字符串,即被替换的字符串
unsigned intlenghtlength为0时,表示删除
const std::string&changedText更改文本时Text内容

解释:textField文字更改后触发(返回true表示修改生效,返回false表示不做修改,textField的内容不变)

类说明:

CAAutoCollectionView同CATableView类似,主要用于数据的展示,实现了tableView的基本功能,同时对tableView拓展,更完美的进行展示数据。


CAAutoCollectionView的使用方法和CATableView比较类似,我们也要分别使用:CAAutoCollectionView、CACollectionViewCell、CAAutoCollectionViewDelegate、CAAutoCollectionViewDataSource来构建。

CAAutoCollectionView是表格视图的容器,是容器的载体。

CACollectionViewCell是表格视图的一个单元(本节后面简称cell)。

CAAutoCollectionViewDelegate是交互代理,响应cell选中和取消状态。

CAAutoCollectionViewDataSource是数据代理,设置Selection个数及Selection包含Item个数。


CAAutoCollectionView 属性(点击查看方法介绍)

属性说明
CollectionViewDataSource添加数据代理
CollectionViewDelegate添加交互代理
CollectionHeaderView添加头部视图
CollectionFooterView添加尾部视图
CollectionHeaderHeight设置头部的高度
CollectionFooterHeight设置尾部的高度
CollectionViewOrientationCollectionView方向取向
CollectionViewCellHoriAlignCollectionView的Cell水平对齐
CollectionViewCellVertAlignCollectionView的Cell垂直对齐
HoriCellIntervalcell水平间隔
VertCellIntervalcell垂直间隔
HoriMargins水平边距
VertMargins垂直边距
AllowsSelection允许选择
AllowsMultipleSelection允许多个选择
AlwaysTopSectionHeader总是顶部的标题
AlwaysBottomSectionFooter总是底部的节尾


CAAutoCollectionView 方法(点击查看方法介绍)

说明说明
createWithFrame创建,并指定其Frame
createWithCenter创建,并指定Color
init初始化
reloadData重载数据
dequeueReusableCellWithIdentifier从复用队列中寻找指定标识符的cell
setAllowsSelection是否开启cell选择
setAllowsMultipleSelection是否可以多选cell
setSelectRowAtIndexPath通过索引选择一行
setUnSelectRowAtIndexPath通过索引取消选择一行
setShowsScrollIndicators设置显示滚动指示器
cellForRowAtIndexPath根据索引获取显示的cell
displayingCollectionCell显示CollectionCell
getHighlightCollectionCell获取高亮显示的collectioncell
switchPCMode开关PC模式


我们本机的示例,不再使用自定义的CACollectionViewCell的方法来实现,我们来看看本节的示例代码:

FirstViewController.h内容:

#ifndef __HelloCpp__ViewController__#define __HelloCpp__ViewController__#include <iostream>#include "CrossApp.h"USING_NS_CC;class FirstViewController : public CAViewController, CAAutoCollectionViewDataSource, CAAutoCollectionViewDelegate{     protected:    void viewDidLoad();         void viewDidUnload();     public:FirstViewController();     virtual ~FirstViewController();         //选中    virtual void collectionViewDidSelectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item);         //取消选中    virtual void collectionViewDidDeselectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item);         //获取指定cell    virtual CACollectionViewCell* collectionCellAtIndex(CAAutoCollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int item);         //项目大小    virtual DSize collectionViewSizeForItemAtIndexPath(CAAutoCollectionView* collectionView, unsigned int section, unsigned int item);         //每个Section中Item的个数    virtual unsigned int numberOfItemsInSection(CAAutoCollectionView *collectionView, unsigned int section);         //section的个数    virtual unsigned int numberOfSections(CAAutoCollectionView *collectionView);     private:    DSize size;         CAAutoCollectionView* p_AutoCollection;         std::vector<CAColor4B> colorArr;         };  #endif /* defined(__HelloCpp__ViewController__) */


FirstViewController.cpp内容:

#include "FirstViewController.h"FirstViewController::FirstViewController(){}FirstViewController::~FirstViewController(){}void FirstViewController::viewDidLoad(){    //获得屏幕大小    size = this->getView()->getBounds().size;         //随机出颜色    for (int i = 0; i < 40; i++)    {        char r = CCRANDOM_0_1() * 255;        char g = CCRANDOM_0_1() * 255;        char b = CCRANDOM_0_1() * 255;                 //将随机的ccc4对象放入到容器里        colorArr.push_back(ccc4(r, g, b, 255));    }         //生成CACollectionView    p_AutoCollection = CAAutoCollectionView::createWithFrame(this->getView()->getBounds());    DRect rect = this->getView()->getBounds();    CCLog("MaxX = %f", rect.getMaxX());    CCLog("MaxX = %f", rect.getMaxY());         //开启选中    p_AutoCollection->setAllowsSelection(true);         //开启多选    p_AutoCollection->setAllowsMultipleSelection(true);         //绑定交互代理    p_AutoCollection->setCollectionViewDelegate(this);         //绑定数据代理    p_AutoCollection->setCollectionViewDataSource(this);              //item水平间的距离    p_AutoCollection->setHoriMargins(40);    p_AutoCollection->setHoriCellInterval(40);         //p_AutoCollection->setCollectionHeaderHeight(40);         //itme竖直间的距离    p_AutoCollection->setVertMargins(40);    p_AutoCollection->setVertCellInterval(40);         //p_AutoCollection->setCollectionFooterHeight(40);         //添加到屏幕渲染    this->getView()->addSubview(p_AutoCollection);     }void FirstViewController::viewDidUnload(){    // Release any retained subviews of the main view.    // e.g. self.myOutlet = nil;}//选中void FirstViewController::collectionViewDidSelectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item){    //选中    CCLog("选中");}//取消选中void FirstViewController::collectionViewDidDeselectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item){    //取消选中    CCLog("取消选中");}//获取指定cellCACollectionViewCell* FirstViewController::collectionCellAtIndex(CAAutoCollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int item){    //根据标识获得CACollectionViewCell    CACollectionViewCell* p_Cell = collectionView->dequeueReusableCellWithIdentifier("CrossApp");    //如果没有找到相应的CACollectionViewCell则新建一个    if (p_Cell == NULL)    {        p_Cell = CACollectionViewCell::create("CrossApp");                 //生成Item背景        CAView* itemImage = CAView::createWithFrame(DRect(0, 0, cellSize.width, cellSize.height));        itemImage->setTag(99);        p_Cell->addSubview(itemImage);        DSize itemSize = itemImage->getBounds().size;                 //生成itemCALabel        CALabel* itemText = CALabel::createWithCenter(DRect(itemSize.width*0.5, itemSize.height*0.5, 150, 40));        itemText->setTag(100);        itemText->setFontSize(29);        itemText->setTextAlignment(CATextAlignmentCenter);        itemText->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);        itemImage->addSubview(itemText);    }         //设置Item背景颜色    CAView* itemImageView = p_Cell->getSubviewByTag(99);    itemImageView->setColor(colorArr.at(item));    CCLog("row = %d", item);         //设置itme文本显示    char pos[20] = "";    sprintf(pos, "(%d,%d)", section, item);    CALabel* itemText = (CALabel*)p_Cell->getSubviewByTag(99)->getSubviewByTag(100);    itemText->setText(pos);    return  p_Cell;}//项目大小DSize FirstViewController::collectionViewSizeForItemAtIndexPath(CAAutoCollectionView* collectionView, unsigned int section, unsigned int item){    DSize size;    size.width = (this->getView()->getBounds().size.width - 40 * 4) / 3;    size.height = (this->getView()->getBounds().size.width - 40 * 4) / 3;    return size;}//每个Section中Item的个数unsigned int FirstViewController::numberOfItemsInSection(CAAutoCollectionView *collectionView, unsigned int section){    return 15;}//section的个数unsigned int FirstViewController::numberOfSections(CAAutoCollectionView *collectionView){    return 10;}

CAAutoCollectionView 属性说明

CollectionViewDataSource

类型:CAAutoCollectionViewDataSource*

解释:添加数据代理,set/get{}。


CollectionViewDelegate

类型:CAAutoCollectionViewDelegate*

解释:添加交互代理,set/get{}。


CollectionHeaderView

类型:CAView*

解释:添加头部视图,set/get{}。


CollectionFooterView

类型:CAView*

解释:添加尾部视图,set/get{}。


CollectionHeaderHeight

类型:unsigned int

解释:设置头部的高度,set/get{}。


CollectionFooterHeight

类型:unsigned int

解释:设置尾部的高度,set/get{}。


CollectionViewOrientation

类型:CACollectionViewOrientation

解释:CollectionView方向取向,set/get{}。


CollectionViewCellHoriAlign

类型:CACollectionViewCellHoriAlign

解释:CollectionView的Cell水平对齐,set/get{}。


CollectionViewCellVertAlign

类型:CACollectionViewCellVertAlign

解释:CollectionView的Cell垂直对齐,set/get{}。


HoriCellInterval

类型:unsigned int

解释:cell水平间隔,set/get{}。


VertCellInterval

类型:unsigned int

解释:cell垂直间隔,set/get{}。


HoriMargins

类型:unsigned int

解释:水平边距,set/get{}。


VertMargins

类型:unsigned int

解释:垂直边距,set/get{}。


AllowsSelection

类型:bool

解释:允许选择,is{}。


AllowsMultipleSelection

类型:bool

解释:允许多个选择,is{}。


AlwaysTopSectionHeader

类型:bool

解释:总是顶部的标题,is/set{}。


AlwaysBottomSectionFooter

类型:bool

解释:总是底部的节尾,is/set{}。


CAAutoCollectionView 方法说明

static CAAutoCollectionView* createWithFrame(const DRect& rect);

返回值:CAAutoCollectionView* 

参数:

类型参数名说明
const DRect&rect区域大小

解释:创建,并指定其Frame


static CAAutoCollectionView* createWithCenter(const DRect& rect);

返回值:CAAutoCollectionView* 

参数:

类型参数名说明
const DRect& rect中心点的位置及大小

解释:创建,并指定Color


virtual bool init();

返回值:bool

参数:

解释:初始化


void reloadData();

返回值:void

参数:

解释:重载数据


CACollectionViewCell* dequeueReusableCellWithIdentifier(const char* reuseIdentifier);

返回值:CACollectionViewCell*

参数:

类型参数名说明
const char* reuseIdentifier重载标识符

解释:从复用队列中寻找指定标识符的cell


virtual void setAllowsSelection(bool var);

返回值:void

参数:

类型参数名说明
boolvar是否开启

解释:是否开启cell选择


virtual void setAllowsMultipleSelection(bool var);

返回值:void

参数:

类型参数名说明
boolvar是否开启

解释:是否可以多选cell


void setSelectRowAtIndexPath(unsigned int section, unsigned int item);

返回值:void

参数:

类型参数名说明
unsigned int sectionsection
unsigned intitem项目数量

解释:通过索引选择一行


void setUnSelectRowAtIndexPath(unsigned int section, unsigned int item);

返回值:void

参数:

类型参数名说明
unsigned int sectionsection
unsigned intitem项目数量

解释:通过索引取消选择一行


virtual void setShowsScrollIndicators(bool var);

返回值:void

参数:

类型参数名说明
boolvar是否开启

解释:设置显示滚动指示器


CACollectionViewCell* cellForRowAtIndexPath(unsigned int section, unsigned int row, unsigned int item);

返回值:CACollectionViewCell* 

参数:

类型参数名说明
unsigned int sectionsection
unsigned introw
unsigned intitem项目数量

解释:根据索引获取显示的cell


const CAVector<CACollectionViewCell*>& displayingCollectionCell();

返回值:CAVector<CACollectionViewCell*>& 

参数:

解释:显示CollectionCell


CACollectionViewCell* getHighlightCollectionCell();

返回值:CACollectionViewCell*

参数:

解释:获取高亮显示的collectioncell


virtual void switchPCMode(bool var);

返回值:void

参数:

类型参数名说明
boolvar是否开启

解释:开关PC模式






类说明:

        CAAutoCollectionViewDataSource是数据代理,设置Selection个数及Selection包含Item个数。


CAAutoCollectionViewDataSource 方法(点击查看方法介绍)

方法说明
collectionCellAtIndex获取指定cell
collectionViewSizeForItemAtIndexPath获取对应的collectionView的Item大小
numberOfItemsInSection每个Section里的item数量
numberOfSections获取collectionView包含的section个数
collectionViewSectionViewForHeaderInSectionheaderView的内容
collectionViewHeightForHeaderInSection每个section的headerView
collectionViewSectionViewForFooterInSectionfooterView的内容
collectionViewHeightForFooterInSection每个section的footerView
collectionViewWillDisplayCellAtIndex回调当前将要显示的collectionView


CAAutoCollectionViewDataSource 方法说明    

virtual CACollectionViewCell* collectionCellAtIndex(CAAutoCollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int item);

返回值:CACollectionViewCell* 

参数:

类型

参数名说明
CAAutoCollectionView*collectionView当前collectionView
const DSize& cellSizecell大小
unsigned intsectionsection
unsigned intitem项目

解释:获取指定cell


virtual DSize collectionViewSizeForItemAtIndexPath(CAAutoCollectionView* collectionView, unsigned int section, unsigned int item);

返回值:DSize

参数:

类型

参数名说明
CAAutoCollectionView*collectionView当前collectionView
unsigned intsectionsection
unsigned intitem项目

解释:

获取对应的collectionView的Item大小


virtual unsigned int numberOfItemsInSection(CAAutoCollectionView *collectionView, unsigned int section);

返回值:unsigned int 

参数:

类型

参数名说明
CAAutoCollectionView*collectionView当前collectionView
unsigned intsectionsection

解释:每个Section里的item数量


virtual unsigned int numberOfSections(CAAutoCollectionView *collectionView);

返回值:unsigned int

参数:

类型

参数名说明
CAAutoCollectionView*collectionView当前collectionView

解释:获取collectionView包含的section个数


virtual CAView* collectionViewSectionViewForHeaderInSection(CAAutoCollectionView *collectionView, const DSize& viewSize, unsigned int section);

返回值:CAView* 

参数:

类型

参数名说明
CAAutoCollectionView*collectionView当前collectionView
const DSize&viewSizeview大小
unsigned intsectionsection

解释:headerView的内容


virtual unsigned int collectionViewHeightForHeaderInSection(CAAutoCollectionView *collectionView, unsigned int section);

返回值:unsigned int

参数:

类型

参数名说明
CAAutoCollectionView*collectionView当前collectionView
unsigned intsectionsection

解释:每个section的headerView


virtual CAView* collectionViewSectionViewForFooterInSection(CAAutoCollectionView *collectionView, const DSize& viewSize, unsigned int section);

返回值:CAView*

参数:

类型

参数名说明
CAAutoCollectionView*collectionView当前collectionView
const DSize&viewSizeview大小
unsigned intsectionsection

解释:footerView的内容


virtual unsigned int collectionViewHeightForFooterInSection(CAAutoCollectionView *collectionView, unsigned int section);

返回值:unsigned int 

参数:

类型

参数名说明
CAAutoCollectionView*collectionView当前collectionView
unsigned intsectionsection

解释:每个section的footerView


virtual void collectionViewWillDisplayCellAtIndex(CAAutoCollectionView* table, CACollectionViewCell* cell, unsigned int section, unsigned int item) {};

返回值:void

参数:

类型

参数名说明
CAAutoCollectionView*collectionView当前collectionView
CACollectionViewCell* cellcell
unsigned intsectionsection
unsigned intitem项目

解释:回调当前将要显示的collectionView

类说明

        CAAutoCollectionViewDelegate是交互代理,响应cell选中和取消状态。


CAAutoCollectionViewDelegate 方法(点击查看方法介绍)

方法说明
collectionViewDidSelectCellAtIndexPath选中cell时调用
collectionViewDidDeselectCellAtIndexPath取消选择cell时调用


CAAutoCollectionViewDelegate 方法说明

virtual void collectionViewDidSelectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item){};

返回值:void

参数:

类型参数名说明
CAAutoCollectionView*collectionView当前collectionView
unsigned int sectionsection
unsigned int item项目

解释:选中cell时调用


virtual void collectionViewDidDeselectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item){};

返回值:void

参数:

类型参数名说明
CAAutoCollectionView*collectionView当前collectionView
unsigned int sectionsection
unsigned int item项目

解释:取消选择cell时调用

类说明

视频播放器控制。


CAVideoPlayerControlView 属性(点击查看方法介绍)

属性说明
Title标题
ShowBackButton显示后退按钮
PlayerControlViewDelegatePlayerControlView代理类


CAVideoPlayerControlView 方法(点击查看方法介绍)

属性说明
createWithFrame创建,并指定其Frame。
createWithCenter创建,并指定其Center。
initWithPath初始化Path。
initWithUrl初始化Url。


CAVideoPlayerControlView 属性说明

Title

类型:std::string

解释:标题,set/get{}。


ShowBackButton

类型:bool

解释:显示后退按钮,set/get{}。


PlayerControlViewDelegate

类型:CAVideoPlayerControlViewDelegate*

解释:PlayerControlView代理类,set/get{}。


CAVideoPlayerControlView 方法说明

static CAVideoPlayerControlView* createWithFrame(const DRect& rect);

返回值:CAVideoPlayerControlView*

参数:

类型参数名说明
const DRect&rect区域大小

解释:创建,并指定其Frame


static CAVideoPlayerControlView* createWithCenter(const DRect& rect);

返回值:CAVideoPlayerControlView*

参数:

类型参数名说明
const DRect&rect中心点的位置及大小

解释:创建,并设置其Center


void initWithPath(const std::string& szPath);

返回值:void

参数:

类型参数名说明
const std::string& szPath路径

解释:初始化并制定文件路径


void initWithUrl(const std::string& szUrl);

返回值:void

参数:

类型参数名说明
const std::string&szUrlUrl

解释:初始化并制定Url

类说明

CAVideoPlayerControlView的代理类


CAVideoPlayerControlViewDelegate 方法(点击查看方法介绍)

方法说明
onBackButtonClicked点击后退按钮调用


CAVideoPlayerControlViewDelegate 方法说明

virtual void onBackButtonClicked(CAVideoPlayerControlView *playerControlView) {};

返回值:void

参数:

类型参数名说明
CAVideoPlayerControlView*playerControlViewplayerControlView

解释:点击后退按钮调用





类说明

Web视图控件


CAWebView 属性(点击查看方法介绍)

属性说明
WebViewDelegateWebView代理类


CAWebView 方法(点击查看方法介绍)

方法说明
init初始化
createWithFrame创建,并指定其Frame
createWithCenter创建,并设置其Center
setJavascriptInterfaceSchemeJavaScript接口方法
loadHTMLString加载HTML字符串
loadURL加载URL
loadFile加载File
stopLoading停止加载
reload重载
canGoBack可以后退
canGoForward可以前进
goBack返回
goForward前进
evaluateJSevaluateJS
getHTMLSource获取HTMLSource
setScalesPageToFit设置页面适度大小
hideNativeWebAndShowImage隐藏本地网络和显示图像
showNativeWeb显示本地网络
update更新
draw显示
setVisible设置可见
setActivityView设置活动视图
showLoadingActivity显示加载活动


CAWebView 属性说明

WebViewDelegate

类型:CAWebViewDelegate*

解释:WebView代理类,set/get{}。


CAWebView 方法说明

virtual bool init();

返回值:bool

参数:

解释:初始化

    

static CAWebView* createWithFrame(const DRect& rect);

返回值:CAWebView*

参数:

类型参数名说明
const DRect&rect区域大小

解释:创建,并指定其Frame


static CAWebView* createWithCenter(const DRect& rect);

返回值:CAWebView*

参数:

类型参数名说明
const DRect& rect中心点的位置及大小

解释:创建,并设置其Center


void setJavascriptInterfaceScheme(const std::string &scheme);

返回值:void

参数:

类型参数名说明
const std::string schemescheme

解释:JavaScript接口方法


void loadHTMLString(const std::string &string, const std::string &baseURL);

返回值:void

参数:

类型参数名说明
const std::string&stringstring
const std::string&baseURLURL地址

解释:加载HTML字符串


void loadURL(const std::string &url);

返回值:void

参数:

类型参数名说明
const std::string&urlURL地址

解释:加载URL


void loadFile(const std::string &fileName);

返回值:void

参数:

类型参数名说明
const std::string&fileNameFile

解释:加载File


void stopLoading();

返回值:void

参数:

解释:停止加载


void reload();

返回值:void

参数:

解释:重载


bool canGoBack();

返回值:bool

参数:

解释:可以后退


bool canGoForward();

返回值:bool

参数:

解释:可以前进



void goBack();

返回值:void

参数:

解释:返回


void goForward();

返回值:void

参数:

解释:前进


std::string evaluateJS(const std::string &js);

返回值:std::string 

参数:

类型参数名说明
const std::string&jsJS

解释:evaluateJS


std::string getHTMLSource();

返回值:std::string 

参数:

解释:获取HTMLSource


void setScalesPageToFit(const bool scalesPageToFit);

返回值:void

参数:

类型参数名说明
boolscalesPageToFitscalesPageToFit

解释:设置页面适度大小


void hideNativeWebAndShowImage();

返回值:void

参数:

解释:隐藏本地网络和显示图像


void showNativeWeb();

返回值:void

参数:

解释:显示本地网络


virtual void update(float dt);

返回值:void

参数:

类型参数名说明
floatdtdt

解释:更新


virtual void draw();

返回值:void

参数:

解释:显示


virtual void setVisible(bool visible);

返回值:void

参数:

类型参数名说明
boolvisiblevisible

解释:设置可见


void setActivityView(CAActivityIndicatorView* loadingView);

返回值:void

参数:

类型参数名说明
CAActivityIndicatorView*loadingView加载视图

解释:设置活动视图


void showLoadingActivity(bool show);

返回值:void

参数:

类型参数名说明
boolshow显示

解释:显示加载活动


类说明

CAWebView代理类


CAWebViewDelegate 方法

方法说明
onShouldStartLoading在应开始加载时触发
onDidFinishLoading在完成加载时触发
onDidFailLoading在未加载时触发
onJSCallback在JS调用返回时触发


CAWebViewDelegate 方法说明

virtual bool onShouldStartLoading(CAWebView* pWebView, const std::string &url);

返回值:

参数:

类型参数名说明
CAWebView* pWebView当前WebView
const std::string&urlURL地址

解释:在应开始加载时触发


virtual void onDidFinishLoading(CAWebView* pWebView, const std::string &url);

返回值:void

参数:

类型参数名说明
CAWebView* pWebView当前WebView
const std::string&urlURL地址

解释:在完成加载时触发


virtual void onDidFailLoading(CAWebView* pWebView, const std::string &url);

返回值:void

参数:

类型参数名说明
CAWebView* pWebView当前WebView
const std::string&urlURL地址

解释:在未加载时触发


virtual void onJSCallback(CAWebView* pWebView, const std::string &message);

返回值:

参数:

类型参数名说明
CAWebView* pWebView当前WebView
const std::string&messagemessage

解释:在JS调用返回时触发

类说明

显示一张Gif图片


CAGifView 方法

方法说明
createWithFrame创建,并指定其Frame
createWithCenter创建,并设置其Center
createWithGif创建,并指定Gif
init初始化
initWithGif初始化指定Gif
setFrame设置Frame
setCenter设置Center
setGif设置Gif
setTimes设置Times
setRepeatForever设置Gif永远重复
isRepeatForever查看Gif是否永远重复


CAGifView 方法说明

static CAGifView* createWithFrame(const DRect& rect);

返回值:CAGifView*

参数:

类型参数名说明
const DRect&rect区域大小

解释:创建,并指定其Frame


static CAGifView* createWithCenter(const DRect& rect);

返回值:CAGifView*

参数:

类型参数名说明
const DRect&rect中心点的位置及大小

解释:

创建,并设置其Center


static CAGifView* createWithGif(CAGif* gif);

返回值:

参数:

类型参数名说明
CAGif*gifGif

解释:创建,并指定Gif


virtual bool init();

返回值:bool

参数:

解释:初始化


virtual bool initWithGif(CAGif* gif);

返回值:bool

参数:

类型参数名说明
CAGif*gifGif

解释:初始化指定Gif


virtual void setFrame(DRect rect);

返回值:void

参数:

类型参数名说明
DRectrect区域大小

解释:设置Frame


virtual void setCenter(DRect rect);

返回值:void

参数:

类型参数名说明
DRectrect中心点的位置及大小

解释:设置Center


void setGif(CAGif* gif);

返回值:

参数:

类型参数名说明
CAGif*gifGif

解释:设置Gif


void setTimes(float times);

返回值:void

参数:

类型参数名说明
floattimesTimes

解释:设置Times


void setRepeatForever(bool repeatForever);

返回值:void

参数:

类型参数名说明
boolrepeatForever永远重复

解释:设置Gif永远重复


bool isRepeatForever();

返回值:bool

参数:

解释:查看Gif是否永远重复

类说明

图像渲染


CARenderImage 方法

方法说明
visit访问
draw显示
create创建,指定Format和DepthStencilFormat
create创建,指定Format
create创建
initWithWidthAndHeight初始化指定格Format
initWithWidthAndHeight初始化指定格Format和DepthStencilFormat
printscreenWithView截图并指定view
printscreenWithView截图并指定view和offset
printscreenWithView截图并指定view和backgroundColor
printscreenWithView截图并指定view、offset和backgroundColor
clear清除背景颜色
clearDepth清除depthValue
clearStencil清除Stencil
saveToFile保存到文件
listenToBackground监听背景
listenToForeground监听前景
getClearFlags获取清除的标志
setClearFlags设置清除的标志
getClearColor获取清除的颜色
setClearColor设置清除的颜色
getClearDepth获取清除的深度
setClearDepth设置清除的深度
getClearStencil获取清除的模板
setClearStencil设置清除的模板
isAutoDraw查看是否自动显示
setAutoDraw设置自动显示


CARenderImage 方法说明

virtual void visit();

返回值:void

参数:

解释:访问


virtual void draw();

返回值:void

参数:

解释:显示


static CARenderImage* create(int w ,int h, CAImage::PixelFormat eFormat, GLuint uDepthStencilFormat);

返回值:CARenderImage*

参数:

类型参数名说明
intwWidth
inthheight
CAImage::PixelFormat eFormat格式
GLuintuDepthStencilFormatDepthStencilFormat

解释:创建,指定Format和DepthStencilFormat


static CARenderImage* create(int w, int h, CAImage::PixelFormat eFormat);

返回值:CARenderImage*

参数:

类型参数名说明
intwWidth
inthheight
CAImage::PixelFormat eFormat格式

解释:创建,指定Format


static CARenderImage* create(int w, int h);

返回值:CARenderImage*

参数:

类型参数名说明
intwWidth
inthheight

解释:创建


bool initWithWidthAndHeight(int w, int h, CAImage::PixelFormat eFormat);

返回值:bool

参数:

类型参数名说明
intwWidth
inthheight
CAImage::PixelFormat eFormat格式

解释:初始化指定格Format


bool initWithWidthAndHeight(int w, int h, CAImage::PixelFormat eFormat, GLuint uDepthStencilFormat);

返回值:bool

参数:

类型参数名说明
intwWidth
inthheight
CAImage::PixelFormat eFormat格式
GLuintuDepthStencilFormatDepthStencilFormat

解释:初始化指定格Format和DepthStencilFormat


void printscreenWithView(CAView* view);

返回值:void

参数:

类型参数名说明
CAView*view图像

解释:截图并指定view


void printscreenWithView(CAView* view, DPoint offset);

返回值:void

参数:

类型参数名说明
CAView*view图像
DPointoffsetoffset

解释:截图并指定view和offset


void printscreenWithView(CAView* view, const CAColor4B& backgroundColor);

返回值:void

参数:

类型参数名说明
CAView*view图像
const CAColor4B&backgroundColor背景颜色

解释:截图并指定view和backgroundColor


void printscreenWithView(CAView* view, DPoint offset, const CAColor4B& backgroundColor);

返回值:void

参数:

类型参数名说明
CAView*view图像
DPointoffsetoffset
const CAColor4B&backgroundColor背景颜色

解释:截图并指定view、offset和backgroundColor


void clear(const CAColor4B& backgroundColor);

返回值:void

参数:

类型参数名说明
const CAColor4B&backgroundColor背景颜色

解释:清除背景颜色


void clearDepth(float depthValue);

返回值:void

参数:

类型参数名说明
floatdepthValuedepthValue

解释:清除depthValue


void clearStencil(int stencilValue);

返回值:void

参数:

类型参数名说明
intstencilValuestencilValue

解释:清除Stencil


bool saveToFile(const char* szFilePath);

返回值:bool

参数:

类型参数名说明
const char *szFilePath文件

解释:保存到文件


void listenToBackground(CAObject *obj);

返回值:void

参数:

类型参数名说明
CAObject* objobj

解释:监听背景


void listenToForeground(CAObject *obj);

返回值:void

参数:

类型参数名说明
CAObject* objobj

解释:监听前景


unsigned int getClearFlags() const;

返回值:unsigned int 

参数:

解释:获取清除的标志


void setClearFlags(unsigned int uClearFlags);

返回值:void

参数:

类型参数名说明
unsigned int uClearFlags标志

解释:设置清除的标志


const CAColor4F& getClearColor() const;

返回值:const CAColor4F&

参数:

解释:获取清除的颜色


void setClearColor(const CAColor4F &clearColor);

返回值:void

参数:

类型参数名说明
const CAColor4F&clearColor颜色

解释:设置清除的颜色


float getClearDepth() const;

返回值:float

参数:

解释:获取清除的深度


void setClearDepth(float fClearDepth);

返回值:void

参数:

类型参数名说明
floatfClearDepthDepth

解释:设置清除的深度


int getClearStencil() const;

返回值:int

参数:

解释:获取清除的模板


void setClearStencil(float fClearStencil);

返回值:void

参数:

类型参数名说明
floatfClearStencilStencil

解释:设置清除的模板


bool isAutoDraw() const;

返回值:bool

参数:

解释:查看是否自动显示


void setAutoDraw(bool bAutoDraw);

返回值:void

参数:

类型参数名说明
boolbAutoDraw自动显示

解释:设置自动显示

类说明

分段按钮,segmentedControl由一个或多个segment组成,点击不同段得到不同的信息,每次只能选择一段。


基类

CAControl


CASegmentedControl 属性(点击查看方法介绍)

属性
说明
BackgroundView背景视图


CASegmentedControl 方法(点击查看方法介绍)

方法说明
create创建,并指定itemsCount,默认Frame为(0,0,0,0)
createWithFrame创建,并指定其Frame和itemsCount,默认Frame为(0,0,0,0)
createWithCenter创建,并指定其Create和itemsCount,默认Create为(0,0,0,0)
init初始化
setBackgroundImage设置背景图像
setTitleColor设置标题颜色
getTitleColor获取标题颜色
setImageColor设置图像颜色
getImageColor获取图像颜色
insertSegmentWithTitleAtIndex根据传递的参数,插入segment并设置标题,标题默认为空。
insertSegmentWithImageAtIndex根据传递的参数,插入segment并设置前景图片,标题默认为空。
removeSegmentAtIndex移除segment的某一段
setTitleFontName设置标题字体
setTitleFontSize设置标题大小
setSegmentItemBackgroundImage设置Segment背景图像
addTarget添加点击事件
setSelectedAtIndex设置Selected的index
getSelectedAtIndex获取Selected的index
getNumberOfSegments获取segment的数量
setTitleForSegmentAtIndex设置segment标题,通过index
getTitleForSegmentAtIndex获取segment标题,通过index
setImageForSegmentAtIndex设置segment图像和状态,通过index
getImageForSegmentAtIndex获取segment图像,通过index
setWidthForSegmentAtIndex设置segment的宽度,通过index
getWidthForSegmentAtIndex获取segment的宽度,通过index
setContentOffsetForSegmentAtIndex设置segment偏移量,通过index
getContentOffsetForSegmentAtIndex获取segment偏移量,通过index
setEnabledForSegmentAtIndex设置segment的段是否启用,通过index
isEnabledForSegmentAtIndex通过index 查看segment的段是否启用
setImageSizeAtIndex设置图像大小和index
setImageSelectedColor设置图像Selected颜色
getImageSelectedColor获取图像Selected颜色
setTintColor设置标题颜色
setTitleSelectedColor设置标题Selected颜色
getTitleSelectedColor获取标题Selected颜色


CASegmentedControl 属性说明

BackgroundView

类型:CAView*

解释:背景视图,get{}。


CASegmentedControl 方法说明

static CASegmentedControl* create(unsigned int itemsCount);

返回值:CASegmentedControl*

参数:

类型参数名说明
unsigned int itemsCountitemsCount

解释:创建,并指定itemsCount,默认Frame为(0,0,0,0)


static CASegmentedControl* createWithFrame(const DRect& rect, unsigned int itemsCount);

返回值:CASegmentedControl*

参数:

类型参数名说明
DRect&rect区域大小
unsigned int itemsCountitemsCount

解释:创建,并指定其Frame和itemsCount,默认Frame为(0,0,0,0)


static CASegmentedControl* createWithCenter(const DRect& rect, unsigned int itemsCount);

返回值:CASegmentedControl*

参数:

类型参数名说明
DRect&rect中心点的位置及大小
unsigned int itemsCountitemsCount

解释:创建,并指定其Create和itemsCount,默认Create为(0,0,0,0)


virtual bool init();

返回值:bool

参数:

解释:初始化


void setBackgroundImage(CAImage* image);

返回值:void

参数:

类型参数名说明
CAImage*image图像

解释:设置背景图像


void setTitleColor(const CAColor4B& color);

返回值:void

参数:

类型参数名说明
CAColor4B&color标题颜色

解释:设置标题颜色


const CAColor4B& getTitleColor();

返回值:CAColor4B& 

参数:

解释:获取标题颜色


void setImageColor(const CAColor4B& color);

返回值:void

参数:

类型参数名说明
CAColor4B&color

图像颜色

解释:设置图像颜色


const CAColor4B& getImageColor();

返回值:CAColor4B& 

参数:

解释:获取图像颜色


void insertSegmentWithTitleAtIndex(const std::string& title, int index);

返回值:void

参数:

类型参数名说明
std::string&titlesegment显示的标题
intindex插入segment的位置

解释:根据传递的参数,插入segment并设置标题,标题默认为空。


void insertSegmentWithImageAtIndex(CAImage* image, int index, CAControlState controlState);

返回值:void

参数:

类型参数名说明
CAImage*imagesegment背景图片
intindexsegment的插入位置
CAControlStatecontrolStatesegment的状态

解释:根据传递的参数,插入segment并设置前景图片,标题默认为空。


void removeSegmentAtIndex(int index);

返回值:void

参数:

类型参数名说明
intindexsegment的插入位置

解释:移除segment的某一段


void setTitleFontName(std::string titleName);

返回值:void

参数:

类型参数名说明
std::stringtitleNamesegment的标题字体

解释:设置标题字体


void setTitleFontSize(float titleSize);

返回值:void

参数:

类型参数名说明
float titleSizesegment的标题大小

解释:设置标题大小


void setSegmentItemBackgroundImage(CAImage* image);

返回值:void

参数:

类型参数名说明
CAImage*imageSegment的背景图像

解释:设置Segment背景图像


void addTarget(CAObject* target, SEL_CASegmentedControl selector);

返回值:void

参数:

类型参数名说明
CAObject*target当前对象
SEL_CASegmentedControl selector函数回调器

解释:添加点击事件


void setSelectedAtIndex(int index);

返回值:void

参数:

类型参数名说明
intindexSelected的index

解释:设置Selected的index


int  getSelectedAtIndex();

返回值:int

参数:

解释:获取Selected的index


int  getNumberOfSegments();

返回值:int

参数:

解释:获取segment的数量


void setTitleForSegmentAtIndex(const std::string& title, int index);

返回值:void

参数:

类型参数名说明
std::string&titlesegment标题
intindex插入segment的位置

解释:设置segment标题,通过index


std::string getTitleForSegmentAtIndex(int index);

返回值:std::string 

参数:

类型参数名说明
intindexsegment的位置

解释:获取segment标题,通过index


void setImageForSegmentAtIndex(CAImage* image, int index, CAControlState controlState);

返回值:void

参数:

类型参数名说明
CAImage*imagesegment图像
intindexsegment的位置
CAControlStatecontrolStatesegment的状态

解释:设置segment图像和状态,通过index


CAImage* getImageForSegmentAtIndex(int index);

返回值:CAImage*

参数:

类型参数名说明
intindexsegment的位置

解释:获取segment图像,通过index


void setWidthForSegmentAtIndex(float width, int index);

返回值:void

参数:

类型参数名说明
floatwidthsegment的宽度
intindexsegment的位置

解释:设置segment的宽度,通过index


float getWidthForSegmentAtIndex(int index);

返回值:float

参数:

类型参数名说明
intindexsegment的位置

解释:获取segment的宽度,通过index


void setContentOffsetForSegmentAtIndex(DSize offset, int index);

返回值:void

参数:

类型参数名说明
DSizeoffsetsegment偏移量
intindexsegment的位置

解释:设置segment偏移量,通过index


DSize getContentOffsetForSegmentAtIndex(int index);

返回值:DSize

参数:

类型参数名说明
intindexsegment的位置

解释:获取segment偏移量,通过index


void setEnabledForSegmentAtIndex(bool isEnable, int index);

返回值:void

参数:

类型参数名说明
boolisEnable是否启用

解释:设置segment的段是否启用,通过index


bool isEnabledForSegmentAtIndex(int index);

返回值:bool

参数:

类型参数名说明
intindexsegment的位置

解释:通过index 查看segment的段是否启用


void setImageSizeAtIndex(DSize size, int index);

返回值:void

参数:

类型参数名说明
DSizesize图像大小
intindexsegment的位置

解释:

设置图像大小和index


void setImageSelectedColor(const CAColor4B& color);

返回值:void

参数:

类型参数名说明
CAColor4B&color图像Selected颜色

解释:设置图像Selected颜色


const CAColor4B& getImageSelectedColor();

返回值:CAColor4B& 

参数:

解释:获取图像Selected颜色


void setTintColor(const CAColor4B& color);

返回值:void

参数:

类型参数名说明
CAColor4B&color标题颜色

解释:设置标题颜色


void setTitleSelectedColor(const CAColor4B& color);

返回值:void

参数:

类型参数名说明
CAColor4B&color标题Selected颜色

解释:设置标题Selected颜色


const CAColor4B& getTitleSelectedColor();

返回值:CAColor4B&

参数:

解释:获取标题Selected颜色

类说明

选择器控件,pickerView至少包括一个组件(component),每个组件包括供选择的子项(row)。


基类

CAView,CATableViewDataSource


CAPickerView 属性(点击查看方法介绍)

属性
说明
PickerViewDelegate滑动事件代理
PickerViewDataSource数据代理
FontSizeNormal正常状态下的字体大小
FontSizeSelected选中时的字体大小
FontColorNormal正常状态下的字体颜色
FontColorSelected选中时的字体颜色
SeparateColor选中框的边框颜色


CAPickerView 方法(点击查看方法介绍)

方法说明
create创建,默认Frame为(0,0,0,0)
createWithFrame创建,并指定其Frame,默认Frame为(0,0,0,0)
createWithCenter创建,并设置其Center,默认Center为(0,0,0,0)
init初始化
onEnter进入
onExit退出
visit访问
initWithFrame初始化,并指定其Frame
initWithCenter初始化,并指定其Center
numberOfComponents获取组件的数量
numberOfRowsInComponent获取指定组件的row的数量
rowSizeForComponent获取指定组件的size
viewForRow获取row
reloadAllComponents刷新所有组件
reloadComponent刷新指定组件
selectRow指定选中的row
selectedRowInComponent获取当前被选中的row
setBackgroundColor设置背景颜色


CAPickerView 属性说明

PickerViewDelegate

类型:CAPickerViewDelegate*

解释:pickerView的选中事件代理,包含一个选中时触发的接口,public get/set{}。


PickerViewDataSource

类型:CAPickerViewDataSource*

解释:pickerView的数据代理,详细接口请参考CAPickerViewDataSource代理类,public get/set{}。


FontSizeNormal

类型:float

解释:备选项的字体大小,public get/set{}。


FontSizeSelected

类型:float

解释:选中项的字体大小,public get/set{}。


FontColorNormal

类型:CAColor4B

解释:备选项的字体颜色,public get/set{}。


FontColorSelected

类型:CAColor4B

解释:选中项的字体颜色,public get/set{}。


SeparateColor

类型:CAColor4B

解释:选框的边框颜色,public get/set{}。


CAPickerView 方法说明

static CAPickerView* create();

返回值:CAPickerView*

参数:

解释:创建,默认Frame为(0,0,0,0)


static CAPickerView* createWithFrame(const DRect& rect);

返回值:CAPickerView*

参数:

类型
参数名说明
DRect&rect区域大小

解释:创建,并指定其Frame,默认Frame为(0,0,0,0)


static CAPickerView* createWithCenter(const DRect& rect);

返回值:CAPickerView*

参数:

类型
参数名说明
DRect&rect中心点的位置及大小

解释:创建,并设置其Center,默认Center为(0,0,0,0)


virtual bool init();

返回值:bool

参数:

解释:初始化


virtual void onEnter();

返回值:void

参数:

解释:进入


virtual void onExit();

返回值:void

参数:

解释:退出


virtual void visit();

返回值:void

参数:

解释:访问


virtual bool initWithFrame(const DRect& rect);

返回值:bool

参数:

类型
参数名说明
DRect&rect区域大小

解释:初始化,并指定其Frame


virtual bool initWithCenter(const DRect& rect);

返回值:bool

参数:

类型
参数名说明
DRect&rect中心点的位置及大小

解释:初始化,并指定其Center


virtual int numberOfComponents();

返回值:int

参数:

解释:获取组件的数量


virtual int numberOfComponents()

返回值:int

参数:

解释:返回pickerView中component的数量


virtual int numberOfRowsInComponent(unsigned int component)

返回值:int

参数:

类型
参数说明
unsigned intcomponent指定的component

解释:返回pickerView中component的数量


virtual CCSize rowSizeForComponent(unsigned int component)

返回值:CCSize

参数:

类型
参数说明
unsigned intcomponent指定的component

解释:获取指定组件的size


virtual CAView* viewForRow(unsigned int row, unsigned int component)

返回值:CAView*

参数:

类型
参数说明
unsigned introw指定的row
unsigned int component指定的component

解释:获取row


virtual void reloadAllComponents()

返回值:void

参数:

解释:刷新所有的组件,创建pickerView时必须手动刷新一次pickerView。

示例:

pickerView = CAPickerView::createWithCenter(CCRect(size.width*0.5, size.height*0.5, size.width*0.6, size.height*0.5));pickerView->setDelegate(this);pickerView->setDataSource(this);pickerView->setFontSizeNormal(30 * CROSSAPP_ADPTATION_RATIO);pickerView->setFontSizeSelected(30 * CROSSAPP_ADPTATION_RATIO);pickerView->setFontColorNormal(CAColor_blueStyle);pickerView->setFontColorSelected(CAColor_blueStyle);pickerView->setSeparateColor(CAColor_blueStyle);pickerView->reloadAllComponents();this->getView()->addSubview(pickerView);

virtual void reloadComponent(unsigned int component, bool bReload = true)

返回值:void

参数:

类型
参数说明
unsigned intcomponent指定的component
boolbReload可选参数

解释:刷新指定组件


virtual void selectRow(unsigned int row, unsigned int component, bool animated = false)

返回值:void

参数:

类型
参数说明
unsigned introw指定的row
unsigned intcomponent指定的component
boolanimated可选参数

解释:指定选中的row


virtual int selectedRowInComponent(unsigned int component)

返回值:int

参数:

类型
参数说明
unsigned intcomponent指定的component

解释:获取当前被选中的row


virtual void setBackgroundColor(const CAColor4B& color);    

返回值:void

参数:

类型
参数名说明
CAColor4B&color颜色

解释:设置背景颜色

类说明

        CAPickerView的数据代理


CAPickerViewDataSource 方法(点击查看方法介绍)

方法说明
numberOfComponentsInPickerView设定component的数量
numberOfRowsInComponent设定component中row的数量
widthForComponent设定component的宽
rowHeightForComponent设定row的高
titleForRow设定row的显示内容
viewForRow设定备选row的view
viewForSelect设定选中row的view


CAPickerViewDataSource 方法说明

virtual unsigned int numberOfComponentsInPickerView(CAPickerView* pickerView) = 0

返回值:unsigned int

参数:

类型参数名说明
CAPickerView*pickerView当前pickerView

类型 参数名 说明

CAPickerView* pickerView 当前pickerView

解释:设定component的数量


virtual unsigned int numberOfRowsInComponent(CAPickerView* pickerView, unsigned int component) = 0

返回值:unsigned int

参数:

类型参数名说明
CAPickerView*pickerView当前pickerView
unsigned intcomponent当前的component

解释:设定component中row的数量


virtual float widthForComponent(CAPickerView* pickerView, unsigned int component) {return 0;}

返回值:float

参数:

类型参数名说明
CAPickerView*pickerView当前pickerView
unsigned intcomponent当前的component

解释:设定component的宽

 

virtual float rowHeightForComponent(CAPickerView* pickerView, unsigned int component) {return 0;}

返回值:float

参数:

类型参数名说明
CAPickerView*pickerView当前pickerView
unsigned intcomponent当前的component

解释:设定row的高

 

virtual CCString* titleForRow(CAPickerView* pickerView, unsigned int row, unsigned int component) {return NULL;}

返回值:CCString*

参数:

类型参数名说明
CAPickerView*pickerView当前pickerView
unsigned introw当前的row
unsigned intcomponent当前的component

解释:设定row的显示内容

 

virtual CAView* viewForRow(CAPickerView* pickerView, unsigned int row, unsigned int component) {return NULL;}

返回值:CAView*

参数:

类型参数名说明
CAPickerView*pickerView当前pickerView
unsigned introw当前的row
unsigned intcomponent当前的component

解释:设定row的显示内容

 

virtual CAView* viewForSelect(CAPickerView* pickerView, unsigned int component, const CCSize& size) {return NULL;}

返回值:CAView*

参数:

类型参数名说明
CAPickerView*pickerView当前pickerView
unsigned intcomponent当前的component
const CCSize&size被选中row的size

解释:设定选中row的view

类说明

CAPickerView的滚动事件的代理


CAPickerViewDelegate 方法(点击查看方法介绍)

方法说明
numberOfComponentsInPickerView获取PickerView的Component数量
numberOfRowsInComponent获取PickerView的Component行数
widthForComponentPickerView的Component宽度
rowHeightForComponentPickerView的Component高度
titleForRowPickerView的Row标题
viewForRowPickerView的背景图像
viewForSelectPickerView的选中时图像


CAPickerViewDelegate 方法说明

virtual unsigned int numberOfComponentsInPickerView(CAPickerView* pickerView) = 0; 

返回值:unsigned int

参数:

类型参数名说明
CAPickerView* pickerView当前pickerView

解释:获取PickerView的Component数量


virtual unsigned int numberOfRowsInComponent(CAPickerView* pickerView, unsigned int component) = 0;

返回值:unsigned int

参数:

类型参数名说明
CAPickerView* pickerView当前pickerView
unsigned intcomponent当前选中的component

解释:获取PickerView的Component行数


virtual float widthForComponent(CAPickerView* pickerView, unsigned int component) {return 0;}

返回值:float

参数:

类型参数名说明
CAPickerView* pickerView当前pickerView
unsigned intcomponent当前选中的component

解释:PickerView的Component宽度


virtual float rowHeightForComponent(CAPickerView* pickerView, unsigned int component) {return 0;}

返回值:float

参数:

类型参数名说明
CAPickerView* pickerView当前pickerView
unsigned intcomponent当前选中的component

解释:PickerView的Component高度


virtual const char* titleForRow(CAPickerView* pickerView, unsigned int row, unsigned int component) {return NULL;}

返回值:const char*

参数:

类型参数名说明
CAPickerView* pickerView当前pickerView
unsigned introw当前选中的row
unsigned intcomponent当前选中的component

解释:PickerView的Row标题


virtual CAView* viewForRow(CAPickerView* pickerView, unsigned int row, unsigned int component) {return NULL;}

返回值:CAView* 

参数:

类型参数名说明
CAPickerView* pickerView当前pickerView
unsigned introw当前选中的row
unsigned intcomponent当前选中的component

解释:PickerView的背景图像


virtual CAView* viewForSelect(CAPickerView* pickerView, unsigned int component, const DSize& size) {return NULL;}

返回值:CAView* 

参数:

类型参数名说明
CAPickerView* pickerView当前pickerView
unsigned intcomponent当前选中的component
const DSize&size图像大小

解释:PickerView的选中时图像

类说明

活动指示器,即加载动画。


基类

CAView


CAActivityIndicatorView 属性(点击查看方法介绍)

属性说明
ActivityIndicatorView活动指示器的动画视图
ActivityBackView活动指示器的背景视图
LoadingMinTime最小加载时间


CAActivityIndicatorView 方法(点击查看方法介绍)

方法说明
startAnimating启动活动指示器
stopAnimating停止活动指示器
isAnimating活动指示器是否正在运行
setTargetOnCancel取消活动指示器时的回调
create创建,默认Frame为(0,0,0,0)
createWithFrame创建,并指定其Frame,默认Frame为(0,0,0,0)
createWithCenter创建,并设置其Center,默认Center为(0,0,0,0)
init初始化
onEnter进入
onExit退出
visit访问
draw显示
setStyle设置活动指示器的类型,枚举值,默认包括四种类型
setTimesOneCycle设置一个循环周期时间
setCycleTime设置周期时间


CAActivityIndicatorView 属性介绍

ActivityIndicatorView

类型:CAView*

解释:活动指示器的动画视图,动作为重复旋转动画,get/set{}。

 

ActivityBackView

类型:CAView*

解释:活动指示器动画的背景视图,get/set{}。

 

LoadingMinTime

类型:float

解释:最小加载时间,默认为0,如果加载时间小于最小加载时间,则在这期间加载动画不能被停止,get/set{}。


CAActivityIndicatorView 方法说明

void startAnimating()

返回值:void

参数:

解释:开始运行活动指示器


void stopAnimating()

返回值:void 

参数:

解释:停止活动指示器


bool isAnimating()

返回值:bool

参数:

解释:判断活动指示器是否正在运行,即是否有任务等待。


void setTargetOnCancel(CAObject* target, SEL_CallFunc callBack)

返回值:void

参数:

类型参数名说明
CAObject* target当前对象
SEL_CallFunccallBack回调器

解释:取消活动指示器后的操作,通过回调函数定义操作。


static CAActivityIndicatorView* create();

返回值:CAActivityIndicatorView*

参数:

解释:创建,默认Frame为(0,0,0,0)


static CAActivityIndicatorView* createWithFrame(const DRect& rect);

返回值:CAActivityIndicatorView*

参数:

类型参数名说明
const DRect&rect区域大小

解释:创建,并指定其Frame,默认Frame为(0,0,0,0)


static CAActivityIndicatorView* createWithCenter(const DRect& rect);

返回值:CAActivityIndicatorView*

参数:

类型参数名说明
const DRect&rect中心点的位置及大小

解释:创建,并设置其Center,默认Center为(0,0,0,0)


virtual bool init();

返回值:bool

参数:

解释:初始化


virtual void onEnter();

返回值:void

参数:

解释:进入


virtual void onExit();

返回值:void

参数:

解释:退出


virtual void visit();

返回值:void

参数:

解释:访问


virtual void draw();

返回值:void

参数:

解释:显示


virtual void setStyle(CAActivityIndicatorViewStyle style);   

返回值:void

参数:

类型参数名说明
CAActivityIndicatorViewStylestyle设置活动指示器的类型

解释:

设置活动指示器的类型,枚举值,默认包括四种类型

typedef enum{    CAActivityIndicatorViewStyleWhiteLarge,     CAActivityIndicatorViewStyleWhite,    CAActivityIndicatorViewStyleGray,    CAActivityIndicatorViewStyleImage,}CAActivityIndicatorViewStyle;


void setTimesOneCycle(float times);

返回值:void

参数:

类型参数名说明
floattimes时间

解释:设置一个循环周期时间


void setCycleTime(float time);

返回值:void

参数:

类型参数名说明
floattimes时间

解释:设置周期时间

UI编辑器说明:

新添加CACell的布局编辑。

CATableViewCell、CACollectionViewCell和CAWaterfallViewCell都继承CACell。

CACell可单独使用,也可以运用到CATableViewCell、CACollectionViewCell和CAWaterfallViewCell。


UI编辑器CACell布局使用简单介绍:

FirstViewController.h文件:

#ifndef __HelloCpp__ViewController__#define __HelloCpp__ViewController__#include <iostream>#include "CrossApp.h"USING_NS_CC;class FirstViewController: public CAViewController{     public:FirstViewController();     virtual ~FirstViewController();     protected:         void viewDidLoad();         void viewDidUnload();         void onButton(CAButton* btn, DPoint point);     };#endif /* defined(__HelloCpp__ViewController__) */

 FirstViewController.cpp文件:

#include "FirstViewController.h" FirstViewController::FirstViewController(){ } FirstViewController::~FirstViewController(){ } void FirstViewController::viewDidLoad(){//    必须把新建项目的代码注释或者删除//    Do any additional setup after loading the view from its nib.//    DRect winRect = this->getView()->getBounds();//    CAImageView* imageView = CAImageView::createWithImage(CAImage::create("r/HelloWorld.png"));//    imageView->setImageViewScaleType(CAImageViewScaleTypeFitImageCrop);//    imageView->setFrame(winRect);//    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);//    label->setFontSize(_px(72));//    label->setText("Hello World!");//    label->setColor(CAColor_white);//    this->getView()->insertSubview(label, 1);//    //    CCLog("%f", CAApplication::getApplication()->getWinSize().width);         CACell* cell = CACell::create("cell1");    cell->setLayout(DLayout(DHorizontalLayout_W_C(600, 0.5), DVerticalLayout_H_C(800, 0.5)));    this->getView()->addSubview(cell);    //以上代码以上代码CACell可替换成CATableViewCell、CACollectionViewCell和CAWaterfallViewCel等其中任何一种类型         if(CAButton* btn = dynamic_cast<CAButton*>(cell->getViewWithID("Button_1")))    {        btn->addTarget(this, CAControl_selector(FirstViewController::onButton),                       CAControlEventTouchUpInSide);    }} void FirstViewController::viewDidUnload(){    // Release any retained subviews of the main view.    // e.g. self.myOutlet = nil;} void FirstViewController::onButton(CAButton* btn, DPoint point){    CACell* cell = CACollectionViewCell::create("cell1");    cell->setLayout(DLayout(DHorizontalLayout_W_C(600, 0.5), DVerticalLayout_H_C(800, 0.5)));    this->getView()->addSubview(cell);         if (CAView* view = dynamic_cast<CAView*>(cell->getViewWithID("View_4")))    {        view->setColor(CAColor_red);    }}

UI编辑器Controller布局使用简单介绍:

FirstViewController.h文件:

#ifndef __HelloCpp__ViewController__#define __HelloCpp__ViewController__#include <iostream>#include "CrossApp.h"USING_NS_CC;class FirstViewController: public CAViewController{     public:FirstViewController();     virtual ~FirstViewController();     protected:         void viewDidLoad();         void viewDidUnload();         void onButton(CAButton* btn, DPoint point);     };#endif /* defined(__HelloCpp__ViewController__) */

FirstViewController.cpp文件:

#include "FirstViewController.h" FirstViewController::FirstViewController(){ } FirstViewController::~FirstViewController(){ } void FirstViewController::viewDidLoad(){//    必须把新建项目的代码注释或者删除//    Do any additional setup after loading the view from its nib.//    DRect winRect = this->getView()->getBounds();//    CAImageView* imageView = CAImageView::createWithImage(CAImage::create("r/HelloWorld.png"));//    imageView->setImageViewScaleType(CAImageViewScaleTypeFitImageCrop);//    imageView->setFrame(winRect);//    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);//    label->setFontSize(_px(72));//    label->setText("Hello World!");//    label->setColor(CAColor_white);//    this->getView()->insertSubview(label, 1);//    //    CCLog("%f", CAApplication::getApplication()->getWinSize().width);         //需要强制转换一下类型    if(CAButton* btn = dynamic_cast<CAButton*>(this->getViewWithID("MyButton")))    {        btn->addTarget(this, CAControl_selector(FirstViewController::onButton),                       CAControlEventTouchUpInSide);    }} void FirstViewController::viewDidUnload(){    // Release any retained subviews of the main view.    // e.g. self.myOutlet = nil;} void FirstViewController::onButton(CAButton* btn, DPoint point){    if (CAView* view = getViewWithID("View_4"))    {        view->setColor(CAColor_magenta);    }}

类说明

CAViewController是CrossApp中MVC中的C(控制器),它的作用是用于CAView的管理、控制视图及CAViewController之间的通信与协调。CAViewController是所有CrossApp中Controller的基类。


基类

CAContentContainer, CAKeypadDelegate


CAViewController 属性(点击查看方法介绍)

属性方法
Title标题
NavigationController获取NavigationController
NavigationBarItem获取NavigationBarItem
TabBarController获取TabBarController
TabBarItem获取TabBarItem


CAViewController 方法(点击查看方法介绍)

方法说明
init初始化
getNibName返回类型的名称
isViewRunning当前View是否再运行
setNavigationBarItem设置CANavigationBarItem属性
setTabBarItem设置CATabBarItem属性
presentModalViewController弹出一个CAViewController
dismissModalViewController移除CAViewController
isKeypadEnabled设置监听物理返回键
setKeypadEnabled设置监听物理返回键
getView获取当前CAViewController的View根节点
nextResponder获得下个监听者
ccTouchBegan触摸事件开始时的回调函数
ccTouchMoved触摸事件中触点移动时的回调函数
ccTouchEnded触摸事件结束时的回调函数
ccTouchCancelled触摸非正常结束时的回调函数。(例如:电话或锁屏)
viewDidLoad当前控制器的view被加载完毕后调用
viewDidUnload当前控制器的view被移除掉时调用
viewDidAppear显示时被调用
viewDidDisappear隐藏时被调用
reshapeViewRectDidFinish当前view被修改大小时被自动调用
keyBackClickedback键响应函数(android平台)
keyMenuClickedmenu键响应函数(android平台)
addViewFromSuperview将自己添加到根节点View
removeViewFromSuperview将自己从根节View点移除


生命周期

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.


例如:

bool RootWindow::init(){    if (!CAWindow::init())    {        return false;    }         CAViewController* controller1 = new CAViewController();    CAViewController* controller2 = new CAViewController();    CAViewController* controller3 = new CAViewController();    CAViewController* controller4 = new CAViewController();         CAVector<CAViewController*> vec;    vec.pushBack(controller1);    vec.pushBack(controller2);    vec.pushBack(controller3);    vec.pushBack(controller4);         //创建一个CATabBarController    CATabBarController* tabBarController = new CATabBarController();         //将CAVector<CAViewController*>添加到CATabBarController    tabBarController->initWithViewControllers(vec);         //将tabBarController添加到当前的Window    this->setRootViewController(tabBarController);         //释放内存    controller1->release();    controller2->release();    controller3->release();    controller4->release();    tabBarController->release();}


这样就使用CATabBarController来管理CAViewController的显示与隐藏了

CAView的管理

一般我们会把逻辑代码写到viewDidLoad()方法中,我回把所要显示的CAView通过this->getView()->addSubview(CrossApp::CAView *child);添加到m_pView的子节点上。


例如:

void CopybookViewController::viewDidLoad(){    _winRect = this->getView()->getBounds();         CAImageView* imageView = CAImageView::createWithImage(CAImage::create("r/HelloWorld.png"));    imageView->setImageViewScaleType(CAImageViewScaleTypeFitImageCrop);    imageView->setFrame(_winRect);         this->getView()->addSubview(imageView);}

CAViewController 属性

 Title

类型:std::string

解释:标题。set/get{}。

    

NavigationController

类型:CANavigationController*

解释:获取NavigationController属性。get{}。


NavigationBarItem

类型:CANavigationBarItem*

解释:获取NavigationBarItem属性。get{}。


TabBarController

类型:CATabBarController*

解释:获取TabBarController。get{}。


TabBarItem

类型:CATabBarItem*

解释:获取TabBarItem。get{}。


CAViewController 方法

virtual bool init();

返回值:bool

参数:

解释:初始化,默认返回true,如果返回false则初始化失败


const char* getNibName();

返回值:const char*

参数:

解释:返回类型的名称


bool isViewRunning();

返回值:bool

参数:

解释:当前View是否再运行


void setNavigationBarItem(CANavigationBarItem* item); 

返回值:void

参数:

类型
参数名说明
CANavigationBarItem*item项目

解释:设置CANavigationBarItem属性(只有被CANavigationController管理才会显示)


void setTabBarItem(CATabBarItem* item);

返回值:void

参数:

类型
参数名说明
CANavigationBarItem*item项目

解释:设置CATabBarItem属性(只有被CATableController管理才会显示)


void presentModalViewController(CAViewController* controller, bool animated);

返回值:void

参数:

类型
参数名说明
CAViewController*controller要弹出的CAViewController
boolanimated是否需要弹出动画

解释:弹出一个CAViewController



void dismissModalViewController(bool animated);

返回值:void

参数:

类型
参数名说明
boolanimated是否需要动画

解释:移除CAViewController


virtual bool isKeypadEnabled();

返回值:virtual bool

参数:

解释:是否监听物理返回键(android的Back键或pc的Esc键)


virtual void setKeypadEnabled(bool value);

返回值:virtual void 

参数:

类型
参数名说明
boolvaluetrue允许,false禁止

解释:设置是否监听物理返回键,默认为false


 

virtual CAView* getView();

返回值:CAView*

参数:

解释:当前CAViewController的View根节点


virtual CAResponder* nextResponder();

返回值:CAResponder*

参数:

解释:获得下个监听者


virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent);

返回值:bool

参数:

类型
参数名说明
CATouch*pTouch触摸传递对象
CAEvent*pEvent此参数待定

解释:触摸事件开始时的回调函数

  

virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent);

返回值:void

参数:

类型
参数名说明
CATouch*pTouch触摸传递对象
CAEvent*pEvent此参数待定

解释:触摸事件中触点移动时的回调函数


virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent);

返回值:void

参数:

类型
参数名说明
CATouch*pTouch触摸传递对象
CAEvent*pEvent此参数待定

解释:触摸事件结束时的回调函数


virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent);

返回值:void

参数:

类型
参数名说明
CATouch*pTouch触摸传递对象
CAEvent*pEvent此参数待定

解释:触摸非正常结束时的回调函数。(例如:电话或锁屏)


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

参数:

类型
参数名说明
CAView*node节点

解释:将自己添加到根节点View(例如window,也可是其他View)


virtual void removeViewFromSuperview();

返回值:void

参数:

解释:将自己从根节View点移除

类说明

CADrawerController是易用的侧边抽屉式导航控制器。


基类

CAViewController


CADrawerController 方法(点击查看方法介绍)

方法说明
initWithController初始化
getLeftViewController获得左边的ViewController
getRightViewController获得右边的ViewController
showLeftViewController显示左边的viewController
hideLeftViewController隐藏左边的viewController
isShowLeftViewController左边是否在显示


创建与初始

bool RootWindow::init(){    if (!CAWindow::init())    {        return false;    }         //创建左边的ViewController    LeftViewController* left = LeftViewController::create();         //创建右边边的ViewController    RightViewController* right = RightViewController::create();    CADrawerController* drawerController = new CADrawerController();         //最后参数是左边ViewController露出的尺寸    drawerController->initWithController(left, right, _px(500));         //必须加上背景,不然只能滑动一次    drawerController->setBackgroundView(CAView::create());    this->setRootViewController(drawerController);         //释放内存    drawerController->autorelease();    return true;}


管理

显示与隐藏

   /*    *显示左边的viewController    *animated:是否显示动画    */    void showLeftViewController(bool animated);         /*    *隐藏左边的viewController    *animated:是否显示动画    */


CADrawerController 方法

virtual bool initWithController(CAViewController* leftViewController,CAViewController* rightViewController,float division);

返回值:bool

参数:

类型参数名说明
CAViewController*leftViewController左边
CAViewControllerrightViewController右边
floatdivision左边露出的尺寸

解释:初始化


CAViewController* getLeftViewController();

返回值:CAViewController*

参数:

解释:获得左边的ViewController


CAViewController* getRightViewController();

返回值:CAViewController*

参数:

解释:获得右边的ViewController


void showLeftViewController(bool animated);

返回值:void

参数:

类型参数名说明
boolanimated是否显示动画

解释:显示左边的viewController


       

void hideLeftViewController(bool animated);

返回值:void

参数:

类型参数名说明
boolanimated是否显示动画

解释:隐藏左边的viewController


bool isShowLeftViewController();

返回值:bool

参数:

解释:左边是否在显示

类说明

CANavigationController是CAViewController的子类,它的作用是管理多个CAViewController,我们要明白的是CANavigationController是使用堆栈的方式管理的,即我们每往CANavigationController添加一个CAViewController,则进行一次堆栈的操作,每次移除则进行一次出栈操作。


基类

CAViewController, CANavigationBarDelegate


CANavigationController 属性(点击查看方法介绍)

属性说明
NavigationBarHidden导航栏隐藏
TouchMoved触摸移动
NavigationBarBackGroundImage导航栏背面图像
NavigationBarBackGroundColor导航栏背面颜色
NavigationBarTitleColor导航栏标题颜色
NavigationBarButtonColor导航栏按钮颜色


CANavigationController 方法(点击查看方法介绍)

方法
说明
initWithRootViewController使用CAViewController来初始化,这个是必须的
replaceViewController替换栈顶的viewController
pushViewController将新的viewController压入栈顶
popViewControllerAnimated移除栈顶的viewController
popToRootViewControllerAnimated移除根的viewController
popFirstViewController移除第一个viewController
popViewControllerAtIndex根据索引值移除viewController
getViewControllerAtIndex根据索引值获取viewController
getBackViewController返回最后一个ViewController
getViewControllerCount当前栈内viewController总数
setNavigationBarHidden是否隐藏navigationBar
updateItem更新navigationBarItem
ccTouchBegan触摸事件开始时的回调函数
ccTouchMoved触摸事件中触点移动时的回调函数
ccTouchEnded触摸事件结束时的回调函数
ccTouchCancelled触摸非正常结束(例如:电话或锁屏)
isReachBoundaryLeft到左边界
isReachBoundaryRight到右边界
isReachBoundaryUp到上边界
isReachBoundaryDown到下边界



创建与初始化

bool RootWindow::init(){    if (!CAWindow::init())    {        return false;    }         //创建Navigation    CANavigationController* _viewController = new CANavigationController();        //创建Navigation的第一个Controller    FirstViewController* first = new FirstViewController();      first->init();         //使用一个controller初始化Navigation(必须)    _viewController->initWithRootViewController(first);         //RootWindow加载Navigation    this->setRootViewController(_viewController);        //释放内存    first->release();        //释放内存    _viewController->release();    return true;}

样式属性

可控制样式:barItem位置、标题、左按钮、右按钮

bool RootWindow::init(){    if (!CAWindow::init())    {        return false;    }         //创建Navigation    CANavigationController* _viewController = new CANavigationController();         //创建Navigation的第一个Controller    FirstViewController* first = new FirstViewController();      first->init();         //创建CANavigationBarItem并设置显示标题    CANavigationBarItem* nItem = CANavigationBarItem::create("First");         //创建左边按钮(右边按钮同理)    CABarButtonItem* leftBtn = CABarButtonItem::create("", CAImage::create("source_material/btn_left_white.png"), CAImage::create("source_material/btn_left_blue.png"));        //将leftBtn添加到CANavigationBarItem    nItem->addLeftButtonItem(leftBtn);         //将CANavigationBarItem添加到FirstViewController    first->setNavigationBarItem(nItem);         //使用一个controller初始化Navigation(必须)    //CABarVerticalAlignmentBottom显示在底部    _viewController->initWithRootViewController(first,CABarVerticalAlignmentBottom);        //RootWindow加载Navigation    this->setRootViewController(_viewController);        //释放内存    first->release();        //释放内存    _viewController->release();    return true;}



主要了解:CABarButtonItem这个类的样式

//根据title创建CANavigationBarItemstatic CANavigationBarItem* create(const std::string& title); //添加左边按钮void addLeftButtonItem(CABarButtonItem* item); //添加邮编按钮void addRightButtonItem(CABarButtonItem* item);

管理

初始化

virtual bool initWithRootViewController(CAViewController* viewController,CABarVerticalAlignment var = CABarVerticalAlignmentTop);

替换

virtual void replaceViewController(CAViewController* viewController, bool animated);

增加

virtual void pushViewController(CAViewController* viewController, bool animated);

移除
  /*    *移除栈顶的viewController    *animated:是否播放动画    */    CAViewController* popViewControllerAnimated(bool animated);         /*    *移除根的viewController    *animated:是否播放动画    */    void popToRootViewControllerAnimated(bool animated);         /*    *移除第一个viewController    *animated:是否播放动画    */    CAViewController* popFirstViewController();         /*    *根据索引值移除viewController    *animated:是否播放动画    */    CAViewController* popViewControllerAtIndex(int index);


CANavigationController 属性

NavigationBarHidden

类型:bool

解释:导航栏隐藏。is{}。


 TouchMoved

类型:bool

解释:触摸移动。is/set{}。    


NavigationBarBackGroundImage

类型:CAImage*,

解释:导航栏背面图像。set/get{}。


NavigationBarBackGroundColor

类型:CAColor4B

解释:导航栏背面颜色。set/get{}。


NavigationBarTitleColor

类型:CAColor4B

解释:导航栏标题颜色。set/get{}。


NavigationBarButtonColor

类型:CAColor4B

解释:导航栏按钮颜色。set/get{}。


CANavigationController 方法

virtual bool initWithRootViewController(CAViewController* viewController,CABarVerticalAlignment var = CABarVerticalAlignmentTop);

返回值:bool

参数:

类型参数名说明
CAViewController*viewController初始化CAViewController
CABarVerticalAlignmentvar = CABarVerticalAlignmentTopCANavigationBar的现实样式

解释:使用CAViewController来初始化,这个是必须的

                                      

virtual void replaceViewController(CAViewController* viewController, bool animated);

返回值:void

参数:

类型参数名说明
CAViewController*viewController新的viewController
boolanimated是否播放动画

解释:替换栈顶的viewController


      

virtual void pushViewController(CAViewController* viewController, bool animated);

返回值:void

参数:

类型参数名说明
CAViewController*viewController新的viewController
boolanimated是否播放动画

解释:将新的viewController压入栈顶


CAViewController* popViewControllerAnimated(bool animated);

返回值:CAViewController*

参数:

类型参数名说明
boolanimated是否播放动画

解释:移除栈顶的viewController


void popToRootViewControllerAnimated(bool animated);

返回值:void

参数:

类型参数名说明
boolanimated是否播放动画

解释:移除根的viewController


CAViewController* popFirstViewController();

返回值:CAViewController*

参数:

解释:移除第一个viewController


CAViewController* popViewControllerAtIndex(int index);

返回值:CAViewController*

参数:

类型参数名说明
intindex移除第几个viewController

解释:根据索引值移除viewController


CAViewController* getViewControllerAtIndex(int index);

返回值:CAViewController*

参数:

类型参数名说明
intindex获取第几个viewController

解释:根据索引值获取viewController


CAViewController* getBackViewController();

返回值:CAViewController*

参数:

解释:返回最后一个ViewController


inline unsigned long getViewControllerCount() ;

返回值:unsigned long

参数:

解释:当前栈内viewController总数


virtual void setNavigationBarHidden(bool hidden, bool animated);

返回值:void

参数:

类型参数名说明
boolhidden隐藏navigationBar
boolanimated是否播放动画

解释:是否隐藏navigationBar


void updateItem(CAViewController* viewController);

返回值:void

参数:

类型参数名说明
CAViewController*viewController更新navigationBarItem

解释:更新navigationBarItem


virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent);

返回值:bool

参数:

类型参数名说明
CATouch*pTouch触摸传递对象
CAEvent*pEvent此参数待定

解释:触摸事件开始时的回调函数

   

virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent);

返回值:void

参数:

类型参数名说明
CATouch*pTouch触摸传递对象
CAEvent*pEvent此参数待定

解释:触摸事件中触点移动时的回调函数

  

virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent);

返回值:void

参数:

类型参数名说明
CATouch*pTouch触摸传递对象
CAEvent*pEvent此参数待定

解释:触摸事件结束时的回调函数


virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent);

返回值:void

参数:

类型参数名说明
CATouch*pTouch触摸传递对象
CAEvent*pEvent此参数待定

解释:触摸非正常结束时的回调函数。(例如:电话或锁屏)


virtual bool isReachBoundaryLeft();

返回值:virtual bool

参数:

解释:到左边界


virtual bool isReachBoundaryRight();

返回值:virtual bool

参数:

解释:到右边界


virtual bool isReachBoundaryUp();

返回值:virtual bool

参数:

解释:到上边界


virtual bool isReachBoundaryDown();

返回值:virtual bool

参数:

解释:到下边界



类说明

CANavigationBar的代理类,在navigationController中移除栈顶的viewController。


CANavigationBarDelegate 方法(点击查看方法介绍)

方法说明
navigationPopViewController将viewControlller从栈顶移除


CANavigationBarDelegate 方法说明

virtual void navigationPopViewController(CANavigationBar* navigationBar, bool animated) = 0

返回值:void

参数:

类型参数名说明
CANavigationBar*navigationBarCANavigationController管理的navigationBar
boolanimated是否播放切换动画

解释:将viewControlller从栈顶移除

类说明

每个viewController都具有一个navigationBarItem,在navigationBar中用于标识当前的viewController。


基类

CABarItem


CANavigationBarItem 属性(点击查看方法介绍)

属性说明
NagigationBarHidden隐藏标题
TitleView标题视图
TitleViewImage标题图片
LeftButtonItems导航栏上的左边按钮数组
RightButtonItems导航栏上的右边按钮数组
ShowGoBackButton是否显示返回按钮


CANavigationBarItem 方法(点击查看方法介绍)

属性说明
create创建
init初始化
addLeftButtonItem在navigationBar左边添加一个自定义按钮
addRightButtonItem在navigationBar右边添加一个自定义按钮


CANavigationBarItem 属性介绍

NagigationBarHidden

类型:bool

解释:初始化,is/set{}。


TitleView

类型:CAView*

解释:使用view设置标题,get/set{}。


TitleViewImage

类型:CAImage*

解释:使用图片设置标题,get/set{}。


LeftButtonItems

类型:CCArray*

解释:navigationBar上,左边添加的按钮的记录数组,只读属性。,get{}。


RightButtonItems

类型:CCArray*

解释:navigationBar上,右边添加的按钮的记录数组,只读属性。get{}。


ShowGoBackButton

类型:bool

解释:是否隐藏navigationBar左边自动生成的返回按钮,is/set{}。


CANavigationBarItem 方法介绍

static CANavigationBarItem* create(const std::string& title);

返回值:CANavigationBarItem* 

参数:

类型参数名说明
const std::string&title标题

解释:创建,并指定标题


bool init(const std::string& title);

返回值:bool

参数:

类型参数名说明
const std::string&title标题

解释:初始化


void addLeftButtonItem(CABarButtonItem* item)

返回值:void

参数:

类型参数名说明
CABarButtonItem*item自定义按钮

解释:通过传递的item参数,自定义导航栏左边按钮 。


void addRightButtonItem(CABarButtonItem* item)

返回值:void

参数:

类型参数名说明
CABarButtonItem*item自定义按钮

解释:通过传递的item参数,自定义导航栏右边按钮 。

类说明

导航栏控件,对应于CANavigationController,一般不单独使用,交由navigationController管理,实现App的层次结构。


基类

CAView


CANavigationBar 属性(点击查看方法介绍)

属性说明
BackGroundView背景图片
TitleColor标题颜色
ButtonColor按钮颜色
Delegate代理
Item子项数组


CANavigationBar 方法(点击查看方法介绍)

方法说明
init初始化
create创建,并指定Dsize
setBackGroundView设置背景图片
setTitleColor设置标题颜色
setButtonColor设置按钮颜色
setItem设置子项数组


效果图

view1


CANavigationBar 属性说明

BackGroundView

类型:CAView

解释:背景图片,get{}。


TitleColor

类型:CAColor4B

解释:标题颜色,get{}。


ButtonColor

类型:CAColor4B

解释:按钮颜色,get{}。


Delegate

类型:CANavigationBarDelegate*

解释:代理,set/get{}。


Item

类型:CANavigationBarItem*

解释:子项数组,get{}。


CANavigationBar 方法说明

virtual bool init(const DSize& size = DSizeZero);

返回值:bool

参数:

类型参数名说明
DSize& sizesize

解释:初始化,并指定size


static CANavigationBar* create(const DSize& size = DSizeZero);

返回值:CANavigationBar*

参数:

类型参数名说明
DSize&sizesize

解释:创建,并指定Dsize


virtual void setBackGroundView(CAView* var);

返回值:void

参数:

类型参数名说明
CAView*var背景图片

解释:设置背景图片


virtual void setTitleColor(const CAColor4B& color);

返回值:void

参数:

类型参数名说明
CAColor4B&color标题颜色

解释:设置标题颜色


virtual void setButtonColor(const CAColor4B& color);

返回值:void

参数:

类型参数名说明
CAColor4B&color按钮颜色

解释:设置按钮颜色


virtual void setItem(CANavigationBarItem* item);

返回值:void

参数:

类型参数名说明
CANavigationBarItem* item子项数组

解释:设置子项数组

类说明

视图管理器的派生类,CATabBarController作为一个特殊的视图管理器,负责协调多个视图管理器之间的工作,是对视图管理器的一种特殊封装。通常当你的程序需要使用一些平行的界面,这里说的平行界面就是程序中的某些功能界面是处于平级的,这些功能界面可以相互切换,tabBarController就很适合这种情况。


基类

CAViewController,CATabBarDelegate,CAPageViewDelegate,CAScrollViewDelegate


CATabBarController 属性点击查看方法介绍)

属性说明
ScrollEnabledTabBar可以滑动切换
TabBarHidden查看TabBar是否隐藏
TabBarVerticalAlignmentTabBar对齐方式
TabBarBackGroundImageTabBar的背景图像
TabBarBackGroundColorTabBar的背景颜色
TabBarSelectedBackGroundImageTabBar选择状态下背景的图像
TabBarSelectedBackGroundColorTabBar选择状态下背景的颜色
TabBarSelectedIndicatorImageTabBar选择状态下的指标图像
TabBarSelectedIndicatorColorTabBar选择状态下的指标颜色
TabBarTitleColorForNormalTabBar标题为正常状态的颜色
TabBarTitleColorForSelectedTabBar标题为选定状态的颜色


CATabBarController 方法点击查看方法介绍)

方法说明
initWithViewControllers初始化CATabBar
showSelectedViewController设置当前被选中的viewController
getViewControllerAtIndex获取当前显示view的viewController的索引值
getSelectedViewController获取当前选中的viewController
showSelectedViewControllerAtIndex根据索引值显示当前选中的viewController
getSelectedViewControllerAtIndex获取当前的被选中的viewController的索引值
setTabBarHiddenTabBar显示或隐藏
updateItem更新视图
showTabBarSelectedIndicator显示刷新TabBar


创建与初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
FirstViewController* first= new FirstViewController();
first->init();
first->setTabBarItem(CATabBarItem::create(UTF8("第一项"),CAImage::create(""),CAImage::create("")));
SecondViewController* Second = new SecondViewController();
Second->init();
Second->setTabBarItem(CATabBarItem::create(UTF8("第二项"), CAImage::create(""), CAImage::create("")));
ThirdViewController* Third = new ThirdViewController();
Third->init();
Third->setTabBarItem(CATabBarItem::create(UTF8("第三项"), CAImage::create(""), CAImage::create("")));
 
//将多个ViewController放到CAVector进行管理
CAVector<CAViewController*> vector;
vector.pushBack(first);
vector.pushBack(Second);
vector.pushBack(Third);
 
//创建TabBar
CATabBarController* tab = new CATabBarController();
 
//通过含有ViewControler的CAVector进行初始化
tab->initWithViewControllers(vector);
 
//设置可以滑动切换
tab->setScrollEnabled(true);
tab->showTabBarSelectedIndicator();
this->setRootViewController(tab);
 
//是否内存
first->release();
Second->release();
Third->release();
tab->release();


样式

可设置样式:文本、位置(上、下)、背景颜色、图片


CATabBarItem控制:文本、默认图片、选中图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//title:文本,image:默认背景图片,selectedImage:选中时背景图片
static CATabBarItem* create(const std::string& title, CAImage* image, CAImage* selectedImage = NULL);
CATabBarController控制:显示位置(初始时设置)、背景颜色、图片
     
    //初始时设置显示位置在顶部
    tab->initWithViewControllers(vector,CABarVerticalAlignmentTop);
     
    //是否隐藏TabBar
    tab->setTabBarHidden(falsefalse);
     
    //默认背景颜色
    tab->setTabBarBackGroundColor(CAColor_orange);
     
    //默认背景图片
    tab->setTabBarBackGroundImage(CAImage::create("source_material/btn_left_blue.png"));


管理


主要是切换:

1
2
3
4
5
6
7
8
9
10
11
    /*
    *设置当前被选中的viewController
    *viewController:要设置选中的指针
    */
    bool showSelectedViewController(CAViewController* viewController);
     
    /*
    *获取当前显示view的viewController的索引值
    *index:索引位置(从0开始)
    */
    CAViewController* getViewControllerAtIndex(unsigned int index);


CATabBarController 属性

ScrollEnabled

类型:bool

解释:TabBar可以滑动切换。is/set{}。

    

TabBarHidden

类型:bool

解释:查看TabBar是否隐藏。is{}。


TabBarVerticalAlignment

类型:CABarVerticalAlignment

解释:TabBar对齐方式。get{}。


TabBarBackGroundImage

类型:CAImage*

解释:TabBar的背景图像。set/get{}。


TabBarBackGroundColor

类型:CAColor4B

解释:TabBar的背景颜色。set/get{}。


TabBarSelectedBackGroundImage

类型:CAImage*

解释:TabBar选择状态下背景的图像。set/get{}。


TabBarSelectedBackGroundColor

类型:CAColor4B

解释:TabBar选择状态下背景的颜色set/get{}。


TabBarSelectedIndicatorImage

类型:CAImage*

解释:TabBar选择状态下指标的图像。set/get{}。


TabBarSelectedIndicatorColor

类型:CAColor4B

解释:TabBar选择状态下指标的颜色set/get{}。


TabBarTitleColorForNormal

类型:CAColor4B

解释:TabBar标题为正常的颜色。set/get{}。


TabBarTitleColorForSelected

类型:CAColor4B

解释:TabBar标题为选定的颜色。set/get{}。


CATabBarController 方法

virtual bool initWithViewControllers(const CAVector<CAViewController*>& viewControllers,CABarVerticalAlignment var = CABarVerticalAlignmentBottom);

返回值:bool

参数:

类型参数名说明
CAVector<CAViewController*>&viewControllers含有CAViewController的数组
CABarVerticalAlignmentvar = CABarVerticalAlignmentBottom切换条位置(上部,下部)

解释:初始化CATabBar


       

bool showSelectedViewController(CAViewController* viewController);

返回值:bool

参数:

类型参数名说明
CAViewController*viewController要设置选中的指针

解释:设置当前被选中的viewController


CAViewController* getViewControllerAtIndex(unsigned int index);

返回值:CAViewController*

参数:

类型参数名说明
unsigned intindex索引位置(从0开始)

解释:获取当前显示view的viewController的索引值


CAViewController* getSelectedViewController();

返回值:CAViewController*

参数:

解释:获取当前选中的viewController


virtual bool showSelectedViewControllerAtIndex(unsigned int index);

返回值:bool

参数:

类型参数名说明
unsigned intindex索引位置(从0开始)

解释:根据索引值显示当前选中的viewController


virtual unsigned int getSelectedViewControllerAtIndex();

返回值:unsigned int

参数:

解释:获取当前的被选中的viewController的索引值


virtual void setTabBarHidden(bool hidden, bool animated);

返回值:void

参数:

类型参数名说明
boolhidden是否隐藏(默认false)
boolanimated是否开启动画效果

解释:TabBar的显示与隐藏


void updateItem(CAViewController* viewController);

返回值:void

参数:

类型参数名说明
CAViewController*viewController需要更新的视图管理器

解释:更新视图


void showTabBarSelectedIndicator();

返回值:void

参数:

解释:显示刷新TabBar

类说明

作为CATabBar的代理类,抽象类。


CATabBarDelegate 方法(点击查看方法介绍)

方法说明
tabBarSelectedItem通过此接口调用显示tabBar的内容的方法
tabBarClickToForbidSelectedItem通过索引禁止单击选择子项


CATabBarDelegate 方法说明

void tabBarSelectedItem(CATabBar* tabBar, CATabBarItem* item, unsigned int index)

返回值:void

参数:

类型参数名说明
CATabBar*tabBar当前CATabBar对象
CATabBarItem*itemtabBar的子项
unsigned intindex子项的索引值

解释:声明一个接口,供子类实现,用于显示和管理tabBar的每个子项所包含的内容。


virtual void tabBarClickToForbidSelectedItem(CATabBar* tabBar, CATabBarItem* item, unsigned int index){};

返回值:void

参数:

类型参数名说明
CATabBar*tabBar当前CATabBar对象
CATabBarItem*itemtabBar的子项
unsigned intindex子项的索引值

解释:通过索引禁止单击选择子项

类说明

每个viewController都具有一个tabBarItem,在tabBar中标识当前的viewController。


基类

CABarItem


CATabBarItem 属性(点击查看方法介绍)

属性说明
SelectedImage选中时的图片
BadgeValue标签


CATabBarItem 方法 (点击查看方法介绍)

属性说明
create创建
init初始化


CATabBarItem 属性说明

SelectedImage

类型:CAImage*

解释:tabBarItem被选中时的图片,get/set{}。


BadgeValue

类型:std::string

解释:标签,get/set{}。


CATabBarItem 方法说明

static CATabBarItem* create(std::string title, CAImage* image, CAImage* selectedImage=NULL)

返回值:static CATabBarItem*

参数:

类型参数名说明
stringtitle显示标题
CAImage*image显示图片
CAImage*selectedImage被选中时的图片,可选参数。

解释:创建一个tabBarItem,并指定它的标题,图片。

    

bool init(const std::string& title, CAImage* image, CAImage* selectedImage = NULL);

返回值:bool

参数:

类型参数名说明
stringtitle显示标题
CAImage*image显示图片
CAImage*selectedImage被选中时的图片,可选参数。

解释:初始化

类说明

在移动开发过程中,常常要遇到调用移动设备的需求,如调用摄像头、通信录、wifi列表、蓝牙等等。CrossApp也为我们提供了调用Android和IOS平台设备的统一接口,我们只需要在CrossApp写统一的调用,然后在Android和IOS平台设置相对的权限,这样引擎会根据不同的平台去调用相应的执行,达到一样的效果。

CrossApp引擎中为我们提供设置调用的为CADevice,它在引擎的extensionsdevice目录下。我们想要使用CADevice时,需要引入:#include "CrossAppExt.h"并声明命名空间:USING_NS_CC_EXT;


基类

CAObject


CADevice 方法(点击查看方法介绍)

方法说明
getSystemVersionWithIOS获取IOS系统版本
getAppVersion获取app版本
openCamera打开相机
openAlbum打开相册
getScreenBrightness获取屏幕亮度
setScreenBrightness设置屏幕亮度
writeToSavedPhotosAlbum保存到相册
getAddressBook获取通信录
updateVersion更新版本
getNetWorkType获取网络类型
getWifiListWithAndroid获取WiFi列表
setVolume设置音量
getVolume获取音量
OpenURL打开网址(调用浏览器打开网址)
getBatteryLevel获取电池电量
isNetWorkAvailble查看是否连接到网络
sendLocalNotification发送本地通知
getWifiConnectionInfo获取WiFi连接信息
initBlueTooth初始化蓝牙
setBlueToothType设置蓝牙类型
startGyroscope开始陀螺仪
setGyroInterval陀螺间隔
stopGyroscope停止陀螺仪


通过上面的函数列表我们可以清楚的知道,CrossApp为我们提供的设备调用函数,但我还有时还需要实现相应的代理,才能获得想要的信息,比如调用摄像机拍照后,我们想要获得照片,那么我们必须要实现CAMediaDelegate代理,这我们才能获得这张照片的问题。

我们这里查看一这些代理函数:


摄像头代理:

class CC_DLL CATabBarItem : public CABarItem{     public:         static CATabBarItem* create(const std::string& title, CAImage* image, CAImage* selectedImage = NULL);     public:    CATabBarItem();         virtual ~CATabBarItem();         bool init(const std::string& title, CAImage* image, CAImage* selectedImage = NULL);         //获得照片纹理    CC_SYNTHESIZE_RETAIN(CAImage*, m_pSelectedImage, SelectedImage);         //标签    CC_SYNTHESIZE_PASS_BY_REF(std::string, m_pBadgeValue, BadgeValue);     };


蓝牙代理:

class CC_DLL CABlueToothDelegate{public:    virtual ~CABlueToothDelegate(){};         //蓝牙状态    virtual void getBlueToothState(CABlueToothState state) {};         //蓝牙设备信息    virtual void getSearchBlueToothDevice(CABlueToothUnit unit){};         //开始查找蓝牙设备    virtual void startDiscoveryBlueToothDevice(){};         //找到蓝牙设备    virtual void finishedDiscoveryBlueToothDevice(){};};


WIFI代理:

class CC_DLL CAWifiDelegate{public:    virtual ~CAWifiDelegate(){};         //wifi信息    virtual void getWifiListFunc(std::vector<CAWifiInfo> _wifiInfoList) = 0;};


CADevice  方法介绍 

CC_DLL const char* getSystemVersionWithIOS();

返回值:const char* 

参数:

解释:获取IOS系统版本


CC_DLL const char* getAppVersion();

返回值:const char*

参数:

解释:获取app版本


CC_DLL void openCamera(CAMediaDelegate* target);

返回值:void

参数:

类型参数名说明
CAMediaDelegate*target媒体代理

解释:打开相机


CC_DLL void openAlbum(CAMediaDelegate* target);

返回值:void

参数:

类型参数名说明
CAMediaDelegate* target媒体代理

解释:打开相册


CC_DLL float getScreenBrightness();

返回值:float

参数:

解释:获取屏幕亮度


CC_DLL void setScreenBrightness(float brightness);

返回值:void

参数:

类型参数名说明
floatbrightness屏幕亮度

解释:设置屏幕亮度


CC_DLL void writeToSavedPhotosAlbum(const std::string &s);

返回值:void

参数:

类型参数名说明
const std::string&s相册

解释:保存到相册


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

参数:

类型参数名说明
onst std::string&url网址
unsigned int versionNumber版本号
const std::string
&appIdAppID

解释:更新版本


CC_DLL CANetWorkType getNetWorkType();

返回值:CANetWorkType

参数:

解释:获取网络类型


CC_DLL void getWifiListWithAndroid(CAWifiDelegate *target);

返回值:void

参数:

类型参数名说明
CAWifiDelegatetargetWiFi代理

解释:获取WiFi列表(Android)


CC_DLL void setVolume(float sender, int type);

返回值:void

参数:

类型参数名说明
floatsender音量
inttype类型

解释:设置音量


CC_DLL float getVolume(int type);

返回值:float

参数:

类型参数名说明
inttype类型

解释:获取音量


CC_DLL void OpenURL(const std::string &url);

返回值:void

参数:

类型参数名说明
const std::string &url网址

解释:打开网址(调用浏览器打开网址)


CC_DLL float getBatteryLevel();

返回值:float

参数:

解释:获取电池电量


CC_DLL bool isNetWorkAvailble();

返回值:bool

参数:

解释:查看是否连接到网络


CC_DLL void sendLocalNotification(const char* title, const char* content, unsigned long time);

返回值:void

参数:

类型参数名说明
const char* title标题
const char*content内容
unsigned longtime时间

解释:发送本地通知


CC_DLL CAWifiInfo getWifiConnectionInfo();

返回值:CAWifiInfo

参数:

解释:获取WiFi连接信息


CC_DLL void initBlueTooth(CABlueToothDelegate *target);

返回值:void

参数:

类型参数名说明
CABlueToothDelegate*target蓝牙代理

解释:初始化蓝牙


CC_DLL void setBlueToothType(CABlueToothType type);

返回值:void

参数:

类型参数名说明
CABlueToothTypetype蓝牙类型

解释:设置蓝牙类型


typedef enum{    CABLUETOOTHOPEN = 0,            //开蓝牙    CABLUETOOTHCLOSE,               //关蓝牙    CABLUETOOTHDISCOVERY = 3 ,      //寻找蓝牙    CABLUETOOTHCANCELDISCOVERY      //取消寻找蓝牙     }CABlueToothType;     //蓝牙类型

CC_DLL void startGyroscope(CAGyroDelegate* delegate);

返回值:void

参数:

类型参数名说明
CAGyroDelegate*delegate陀螺仪代理

解释:开始陀螺仪


CC_DLL void setGyroInterval(float interval);

返回值:void

参数:

类型参数名说明
floatinterval间隔

解释:陀螺间隔


CC_DLL void stopGyroscope();

返回值:void

参数:

解释:停止陀螺仪

类说明

在CrossApp中提供了自带的存储类:CAUserDefault,适合存储数据量比较小,结构比较简单的数据。如果你需要存储大量的复杂数据,建议使用SQlite3比较合适。


CAUserDefault 方法 (点击查看方法介绍)

方法说明
setBoolForKey根据pkey存储一个bool类型
setIntegerForKey根据pkey存储一个int类型
setFloatForKey根据pkey存储一个float类型
setDoubleForKey根据pkey存储一个double类型
setStringForKey根据pkey存储一个string类型
getBoolForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回false
getBoolForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue
getIntegerForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回0 
getIntegerForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue
getFloatForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回0.0f 
getFloatForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue
getDoubleForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回0.0
getDoubleForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue
flush存储到UserDefault.xml,不写的话不会存入 
getXMLFilePath获得UserDefault.xml的存储路径
getStringForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回""
getStringForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue


存储代码如下:

    //存储名字    CAUserDefault::sharedUserDefault()->setStringForKey("name", "zero");         //存储年龄    CAUserDefault::sharedUserDefault()->setIntegerForKey("age", 25);         //存储身高    CAUserDefault::sharedUserDefault()->setDoubleForKey("height",1.75);         //存储体重    CAUserDefault::sharedUserDefault()->setFloatForKey("wight", 75.0f);         //存储性别 true为男 fasle 女    CAUserDefault::sharedUserDefault()->setBoolForKey("sex", true);         //这里一定要提交写入哦,否则不会记录到xml中,下次启动游戏你就获取不到value了    CAUserDefault::sharedUserDefault()->flush();


读取示例代码:

    //读取name    std::string name =  CAUserDefault::sharedUserDefault()->getStringForKey("name");         //读取Email,如果没有Email则返回"default"    std::string email = CAUserDefault::sharedUserDefault()->getStringForKey("Email","default");         //读取age    int age = CAUserDefault::sharedUserDefault()->getIntegerForKey("age");         //读取id,如果没有id则返回10000    int id = CAUserDefault::sharedUserDefault()->getIntegerForKey("id", 10000);         //读取身高体重,如果没有找到则返回0    double height =CAUserDefault::sharedUserDefault()->getDoubleForKey("height");    float weight =CAUserDefault::sharedUserDefault()->getFloatForKey("weight");         //读取sex,如果没有找到sex则返回true    bool sex = CAUserDefault::sharedUserDefault()->getBoolForKey("false", true);

CAUserDefault 方法 

void setBoolForKey(const char* pkey,bool valuer)

返回值:void

参数:

类型参数名说明
const char*pkeypkey
boolvaluerbool类型的值

解释:根据pkey存储一个bool类型 


void setIntegerForKey(const char* pkey,int valuer)  

返回值:void

参数:

类型参数名说明
const char*pkeypkey
intvaluerint类型的值

解释:根据pkey存储一个int类型 


void setFloatForKey(const char* pkey,float valuer)

返回值:void

参数:

类型参数名说明
const char*pkeypkey
floatvaluerfloat类型的值

解释:  根据pkey存储一个float类型 


void setDoubleForKey(const char* pkey,double valuer)

返回值:void

参数:

类型参数名说明
const char*pkeypkey
doublevaluerdouble类型的值

解释:  根据pkey存储一个double类型 


void setStringForKey(const char* pkey, const std::string & value)

返回值:void

参数:

类型参数名说明
const char*pkeypkey
std::string &valuestring类型的值

解释:  根据pkey存储一个string类型 


bool getBoolForKey(const char* pKey)

返回值:bool

参数:

类型参数名说明
const char*pKeypkey

解释:  根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回false 


bool getBoolForKey(const char* pKey,bool defaultValue)

返回值:bool

参数:

类型参数名说明
const char*pkeypkey
booldefaultValue默认值 

解释:  根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue 


int getIntegerForKey(const char* pKey)

返回值:int

参数:

类型参数名说明
const char*pKeypkey

解释:根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回0 


int getIntegerForKey(const char* pKey, int defaultValue)

返回值:int

参数:

类型参数名说明
const char*pkeypkey
intdefaultValue默认值 

解释:  根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue


float getFloatForKey(const char* pKey)        

返回值:float

参数:

类型参数名说明
const char*pKeypkey

解释:  根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回0.0f 


float getFloatForKey(const char* pKey,float defaultValue)

返回值:float

参数:

类型参数名说明
const char*pkeypkey
floatdefaultValue默认值

解释:根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue 


double getDoubleForKey(const char* pKey)        

返回值:double

参数:

类型参数名说明
const char*pkeypkey

解释:  根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回0.0


double getDoubleForKey(const cha * pKey,double defaultValue)

返回值:double

参数:

类型参数名说明
const char*pkeypkey
doubledefaultValue默认值

解释:  根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue 


void flush();

返回值:void

参数:

解释:  存储到UserDefault.xml,不写的话不会存入 


const string& getXMLFilePath();

返回值:const string&

参数:

解释:  获得UserDefault.xml的存储路径


std::string getStringForKey(const char* pKey);

返回值:

参数:

类型参数名说明
const char*pkeypkey

解释:根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回""


std::string getStringForKey(const char* pKey, const std::string & defaultValue);

返回值:

参数:

类型参数名说明
const char*pkeypkey
doubledefaultValue默认值

解释:根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue

在CrossApp中,简单数据存储,可以使用CAUserDefault。那么如何存储大量,不规则的数据?我们可以使用SQLite数据库存储数据。SQLite是使用非常广泛的嵌入式数据库,它有小巧 、高效、跨平台、开源免费和易操作的特点。

SQLite数据库是使用C语言来编写的,在CrossApp中使用也是非常容易的。

CrossApp已经添加了SQlite的,在CrossAppextensionssqlite3目录,我直接使用就可以了。


引入头文件

#include "CrossAppExt.h"


创建数据库

//数据库指针sqlite3 *pdb=NULL; //保存数据库的路径std::string path= CCFileUtils::sharedFileUtils()->getWritablePath()+"save.db"; std::string sql;int result; //打开一个数据,如果该数据库不存在,则创建一个新的数据库文件result=sqlite3_open(path.c_str(),&pdb); if(result!=SQLITE_OK){    CCLog("open database failed,  number%d",result);}


SQL语句

//创建数据库表的sql语句

sql="create table student(ID integer primary key autoincrement,name text,sex text)";


创建Talbe

//创建表格result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL); if(result!=SQLITE_OK)    CCLog("create table failed");


    插入

    //向表内插入3条数据sql="insert into student  values(1,'student1','male')"; result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL); if(result!=SQLITE_OK)   CCLog("insert data failed!"); sql="insert into student  values(2,'student2','female')"; result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL); if(result!=SQLITE_OK)    CCLog("insert data failed!"); sql="insert into student  values(3,'student3','male')"; result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL); if(result!=SQLITE_OK)    CCLog("insert data failed!");

    查询

    //查询结果char **re; //行、列int r,c;  //查询数据sqlite3_get_table(pdb,"select * from student",&re,&r,&c,NULL); CCLog("row is %d,column is %d",r,c); //将查询出的数据通过log输出for(int i=1;i<=r;i++){    for(int j=0;j<c;j++)    {        CCLog("%s",re[i*c+j]);    }} sqlite3_free_table(re);


    删除

    sql="delete from student where ID=1"; //删除id=1的学生的信息result=sqlite3_exec(pdb,sql.c_str(), NULL,NULL,NULL); if(result!=SQLITE_OK)    CCLog("delete data failed!");

    注意
    使用sqlite一定要注意的内存管理问题,那就是打开数据库之后,数据操作完成之后,一定要关闭数据库,否侧会造成内存泄漏。

    sqlite3_close(pdb);

    SQlite保存路径

    Android:

    /data/data/com.youCompany.Helloworld/files/save.db

    IOS:

    位于程序沙盒的文档目录下


    ../Documents/save.db



    CrossApp使用lib_json来解析json文件。lib_json已经加入了libExtensions下,我们在CrossApp中使用非常的便捷。


    首先引入头文件

    #include "CrossAppExt.h"using namespace CSJson;


    我们先熟悉一下几个类名和函数

       /*    Value:写过脚本、弱语言的童鞋应该很清楚var,其他Value 和var一个道理,都是可以表示很多数据类型的数据类型。     这话可能比较绕,简单说就是Value你可以理解可以是int 也可以是string 也可以是其他数据类型。    当然定义 Value value,只是个定义,还没有决定其数据类型,如果你Value value =10;那么value 就是个整型    在用于JSON时,我们常表示为一个map,其中包括 key-value,键值对    其中Value 中包括一些将其转为基础数据类型的6个方法,如下:        value.asCString();        value.asString();        value.asBool();        value.asDouble();        value.asInt();        value.asUInt();    */             Value map;         /*    FastWriter:起作用是将Value数据编码成JSON格式的数据    常用函数:write(<#const Json::Value &root#>)    */    Json::FastWriter write;             /*    Value:作用与FastWriter相反,是将JSON格式的数据解析成一个Value    常用函数: reader.parse(<#std::istream &is#>, <#Json::Value &root#>)    */    Json::Reader reader;

    通过上面的注释,我们可以很清楚的了解函数的意义。下面我们开始生成Json数据和解析Json数据。


    Json数据生成

    //先定义数据    Value map;    map["name"] = "9miao";    map["password"] = "123456";    map["Email"] = "9miao@longtugame.com";    map["PHONE"] = 10086;         //编码成json数据    FastWriter  write;    string jsonData = write.write(map);         //打印结果    CCLog("jsonData:%s", jsonData.c_str());

    上面的打印结果:

    jsonData:{"Email":"9miao@longtugame.com","PHONE":10086,"name":"9miao","password":"123456"}

    Json数据解析

    有时候我们需要解析Resources目录下的json文件,首先我们就需要将json文件拷贝到Resources目录下。我们将下面的Json格式文件拷贝到Resources目录下命名为info.json.

    {    "info":     [        {"name":"aaa","num":"0001"},        {"name":"bbb","num":"0002"},        {"name":"ccc","num":"0003"},        {"name":"ddd","num":"0004"},        {"name":"eee","num":"0005"},        {"name":"fff","num":"0006"},        {"name":"ggg","num":"0007"},        {"name":"hhh","num":"0008"},        {"name":"iii","num":"0009"},        {"name":"jjj","num":"0010"},        {"name":"kkk","num":"0011"},        {"name":"lll","num":"0012"},        {"name":"mmm","num":"0013"},        {"name":"nnn","num":"0014"},        {"name":"ooo","num":"0015"},        {"name":"ppp","num":"0016"}    ],         "gender": "male",    "occupation": "coder"}

    我们在程序中添加以下代码对其解析:

    Reader reader;    //定义Valuer    Value value;         //json文件路径    string jsonFile = CCFileUtils::sharedFileUtils()->fullPathForFilename("info.json");         //将文件生成CCString对象    CCString* json = CCString::createWithContentsOfFile(jsonFile.c_str());         //将数据解析到value中    if (reader.parse(json->getCString(),value))    {        int length = value["info"].size();                 //循环解析子节点        for (int index = 0; index < length; index++)        {            std::string name = value["info"][index]["name"].asString();            std::string num = value["info"][index]["num"].asString();                         CCLog("name:%s", name.c_str());            CCLog("num:%s", num.c_str());        }                 //获取方式一        Value valueGender;        valueGender = value.get("gender", valueGender);        std::string gender = valueGender.asCString();                 //获取方式二        std::string occupation = value["occupation"].asCString();        CCLog("gender:%s", gender.c_str());        CCLog("occupation:%s", occupation.c_str());    }


    CrossAppy已经加入了tinyxml2库用于xml解析。#include "CrossApp.h"时候已经包含tinyxml2.h无须再引入头文件,这样我们就能在开发时方便的生成和解析xml文件。


    xml文档生成


    命名空间

    using namespace tinyxml2;

    生成xml代码

        //获得xml的保存路径    std::string filePath = CCFileUtils::sharedFileUtils()->getWritablePath() + "test.xml";         //在生成一个XMLDocument对象    tinyxml2::XMLDocument *pDoc = new tinyxml2::XMLDocument();         //xml 声明(参数可选)    XMLDeclaration *pDel = pDoc->NewDeclaration("xml version="1.0" encoding="UTF-8"");         //将pDel添加到XMLDocument对象中    pDoc->LinkEndChild(pDel);         //添加plist节点    XMLElement *plistElement = pDoc->NewElement("plist");         //设置l版本    plistElement->SetAttribute("version", "1.0");         //将pDec添加到XMLDocument对象中    pDoc->LinkEndChild(plistElement);         //添加一行注释    XMLComment *commentElement = pDoc->NewComment("this is xml comment");         //将注释添加到XMLDocument对象中    plistElement->LinkEndChild(commentElement);         //添加dic节点    XMLElement *dicElement = pDoc->NewElement("dic");    plistElement->LinkEndChild(dicElement);         //添加key节点    XMLElement *keyElement = pDoc->NewElement("key");    keyElement->LinkEndChild(pDoc->NewText("Text"));    dicElement->LinkEndChild(keyElement);         XMLElement *arrayElement = pDoc->NewElement("array");    dicElement->LinkEndChild(arrayElement);         for (int i = 0; i<3; i++) {        XMLElement *elm = pDoc->NewElement("name");        elm->LinkEndChild(pDoc->NewText("W3Cschool"));        arrayElement->LinkEndChild(elm);    }         pDoc->SaveFile(filePath.c_str());         CCLog("path:%s", filePath.c_str());         pDoc->Print();         delete pDoc;


    生成XML如下:

    <?xml version="1.0" encoding="UTF-8"?><plist version="1.0"><!--this is xml comment--><dic>    <key>Text</key>    <array>        <name>W3Cschool </name>        <name>W3Cschool </name>        <name>W3Cschool </name>    </array></dic></plist>


    解析XML


    下面我们就来解析一下上面生成的XML文档

    解析代码:

        //解析xml的路径    std::string filePath = CCFileUtils::sharedFileUtils()->getWritablePath() + "test.xml";         //生成一个XMLDocument对象    tinyxml2::XMLDocument *pDoc = new tinyxml2::XMLDocument();         //将xml文件读取到XMLDocument对象中    XMLError errorId = pDoc->LoadFile(filePath.c_str());         if (errorId != 0) {        //xml格式错误        return;    }         XMLElement *rootEle = pDoc->RootElement();         //获取第一个节点属性    const XMLAttribute *attribute = rootEle->FirstAttribute();         //打印节点属性名和值    CCLog("attribute_name = %s,attribute_value = %s", attribute->Name(), attribute->Value());         XMLElement *dicEle = rootEle->FirstChildElement("dic");        XMLElement *keyEle = dicEle->FirstChildElement("key");         if (keyEle) {        CCLog("keyEle Text= %s", keyEle->GetText());    }         XMLElement *arrayEle = keyEle->NextSiblingElement();         XMLElement *childEle = arrayEle->FirstChildElement();        while (childEle) {        CCLog("childEle Text= %s", childEle->GetText());                 childEle = childEle->NextSiblingElement();    }         delete pDoc;

    打印结果:

    attribute_name = version,attribute_value = 1.0 keyEle Text= Text childEle Text= W3Cschool childEle Text= W3Cschool childEle Text= W3Cschool

    注意:

    tinyxml在android上解析assert文件夹下会有问题,解决方式如下:

    unsigned long nSize = 0; std::string fullPath = CCFileUtils::sharedFileUtils()->fullPathForFilename("test.xml"); unsigned char* pBuffer = CCFileUtils::sharedFileUtils()->getFileData(fullPath.c_str(), "rb", &nSize); tinyxml2::XMLDocument xmlDoc; xmlDoc.Parse((const char *)pBuffer);

    CrossApp为我们封装了http的网络框架,其文件在CrossApp引擎包的extensions etwork文件下的 HttpClient、HttpRequest 、HttpResponse。

    进行一次http交互,需要涉及的有三个类:

    HttpRequest 用来描述一个请求。

    HttpResponse 用来描述对应请求的响应。

    HttpClient是一个单例模式的类,它的职责就是负责将收到的HttpRequest对象push到发送队列中,并发送一个信号量驱动工作线程工作,工作线程再将收到的数据封装成一个HttpResponse对象push接收队列,并启用调度来派送数据。


    引用头文件:

    #include "CrossAppExt.h"

    请求

    /**编译到Android平台之后注意添加联网权限**///创建request对象,这里new出来的对象不能使用autorelease(),原因后述  CAHttpRequest* request = new CAHttpRequest(); //设置URLrequest->setUrl("www.9maio.com"); //设置请求类型kHttpGet、kHttpPost、KHttpPostFile、kHttpPut、kHttpDelete、kHttpUnkownrequest->setRequestType(CAHttpRequest::kHttpGet); //这是回调对象和回调函数  request->setResponseCallback(this, httpresponse_selector(FirstViewController::requestresult)); //使用CCHttpClient共享实例来发送requestCAHttpClient::getInstance()->send(request); //调用release() request->release();

    接收

    void FirstViewController::requestresult(CAHttpClient* clinet, CAHttpResponse* response){    if (!response->isSucceed())    {        return;    }    //获取返回代码,比如200、404等    int statusCode = response->getResponseCode();    if (statusCode == 200)    {        std::string responseRes = "";        std::vector<char> *buffer = response->getResponseData();        for (unsigned int i = 0; i < buffer->size(); i++)        {            responseRes += (*buffer)[i];        }        //查找字符“官方特约”        string::size_type idx = responseRes.find(UTF8("官方特约"));        if (idx == -1)        {            //为找到字符            CCLog(" Not Found");            return;        }        string temp = responseRes.substr(idx, 30);        string num = temp.substr(temp.find(UTF8(":")) + 3, temp.find("<") - temp.find(UTF8(":")) - 3);        CCLog("temp:%s",temp.c_str());    }    else    {        //打印返回代码        CCLog("statusCode:%d", statusCode);    }}

    本节贴出如何通过http请求网络图片,并绘制到屏幕上


    发送请求

        /**    编译到Android平台之后注意添加联网权限    **/    CCHttpRequest* request = new CCHttpRequest();         // 请求图片的url    request->setUrl("http://www.9miao.com/template/dean_hotspot_141011/deancss/logo.png");         //请求方式    request->setRequestType(CCHttpRequest::kHttpGet);         //设置回调    request->setResponseCallback(this, httpresponse_selector(FirstViewController::onHttpRequestImageCompleted));         // 设置tag    request->setTag("image");         CCHttpClient::getInstance()->send(request);         request->release();

    接受图片

    void FirstViewController::onHttpRequestImageCompleted(CCHttpClient *sender, CCHttpResponse *response){    if (!response)    {        return;    }         if (!response->isSucceed())    {        CCLog("response failed");        CCLog("error buffer: %s", response->getErrorBuffer());        return;    }         vector<char> *buffer = response->getResponseData();         //创建一个CCImage    CCImage* img = new CCImage();         img->initWithImageData((unsigned char*)buffer->data(), buffer->size());         //创建一个纹理CAImage    CAImage* texture = new CAImage();         bool isImg = texture->initWithImage(img);         img->release();         //通过CAImageView绘制到屏幕    CAImageView* iv = CAImageView::createWithImage(texture);         iv->setFrame(DRect(0, 0, 200, 200));         this->getView()->addSubview(iv);}

    如果成功,将会看到9秒社团的logo。



    类说明
    CAViewAnimation是CrossApp中提供实现动画效果的类,它的对外提供一系列的静态函数供使用者调用,通过对CAViewAnimation的属性设置,及对View属性的改变,来定制你所需要的动画效果。CAViewAnimation的使用方法类似于IOS开发中的Core Animation


    CAViewAnimation 方法(点击查看方法介绍)

    方法说明
    beginAnimations表示动画开始
    commitAnimations表示动画结束
    setAnimationDuration动画所用的时间,默认为0.2秒
    setAnimationDelay动画延时多长时间后开始播放,默认为0秒
    setAnimationCurve设置动画的曲线方式
    setAnimationRepeatCount动画的重复次数,默认1次
    setAnimationRepeatAutoreverses画结束后,是否执行反向动作,默认为false
    setAnimationWillStartSelector动画开始时,调用SEL_CAViewAnimation0函数,SEL_CAViewAnimation0函数是一个无参数的函数
    setAnimationWillStartSelector动画开始时,调用SEL_CAViewAnimation2函数,SEL_CAViewAnimation2函数是一个有两个参数的函数,分别是const std::string& animationID和void* context
    setAnimationDidStopSelector动画结束时,调用SEL_CAViewAnimation0函数,SEL_CAViewAnimation0函数是一个无参数的函数
    setAnimationDidStopSelector动画结束时,调用SEL_CAViewAnimation2函数,SEL_CAViewAnimation2函数是一个有两个参数的函数,分别是const std::string& animationID和void* context
    removeAnimations根据animationID移除对应的动画
    removeAnimationsWithView移除对应的CAView的动画
    setAnimationsEnabled设置是否禁用动画效果
    areAnimationsEnabled动画是否被禁用
    areBeginAnimations动画是否开始执行
    areBeginAnimationsWithID对应的animationID的动画是否开始执行


    基本用法

    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);label->setFontSize(_px(72));label->setText("Hello World!");label->setColor(CAColor_white); this->getView()->insertSubview(label, 1); /****************下面是ViewAnimation部分************************/CAViewAnimation::beginAnimations("animation1", NULL);//开始 //CAView属性的改变:缩放、位置、旋转、透明度等等.label->setScale(5); CAViewAnimation::commitAnimations();//结束
    这是CAViewAnimation最基本的用法,beginAnimations和commitAnimations函数都是成对出现的,上一段代码就能够实现让CAView放大5倍的动画效果,虽然我们没有设置它的时间,但默认时间为0.2秒

    CAViewAnimation::beginAnimations("animation1", NULL);//开始 CAViewAnimation::setAnimationDuration(0.8);//设置时间CAViewAnimation::setAnimationDelay(1.0);//设置延时时间 /**CAView属性的改变:缩放、位置、旋转、透明度等等.*例如:label->setScale(5);*/ CAViewAnimation::setAnimationCurve(CAViewAnimationCurveEaseInOut);//时间曲线CAViewAnimation::setAnimationRepeatAutoreverses(true);//是否执行反动作CAViewAnimation::setAnimationRepeatCount(2);//反动作执行次数 CAViewAnimation::commitAnimations();//结束

    我们可以根据自己的需求,定制更多的属性来实现我们想要的动画效果。这是CAViewAnimation最基本的用法,beginAnimations和commitAnimations函数都是成对出现的,上一段代码就能够实现让CAView放大5倍的动画效果,虽然我们没有设置它的时间,但默认时间为0.2秒


    动画的嵌套

    CAViewAnimation::beginAnimations("animation1", NULL);CAViewAnimation::setAnimationDuration(0.8);//设置animation1时间 //1部分的动画CAViewAnimation::beginAnimations("animation2", NULL);CAViewAnimation::setAnimationDuration(0.8);//设置animation2时间 //2部分的动画CAViewAnimation::commitAnimations();//结束1CAViewAnimation::commitAnimations();//结束2

    多个CAViewAnimation之间可以嵌套使用,可以设置不同的时间、延时、反函数及回调等。当一定要注意View属性改变的位置,要写在对应的嵌套层级。


    监听与回调

    CAViewAnimation::beginAnimations("animation1", NULL);//开始 //开始回调,在Animation开始时调用CAViewAnimation::setAnimationWillStartSelector(this, CAViewAnimation0_selector(FirstViewController::callbackStartAnimation0)); /**CAView属性的改变:缩放、位置、旋转、透明度等等.*例如:label->setScale(5);*/ //结束回调,在Animation结束时调用CAViewAnimation::setAnimationDidStopSelector(this, CAViewAnimation2_selector(FirstViewController::callbackStopAnimation2)); CAViewAnimation::commitAnimations();//结束
    开始回调函数如下
    void FirstViewController::callbackStartAnimation0(){    CCLog("callbackStartAnimation0-->");} 结束回调函数如下void FirstViewController::callbackStopAnimation2(const std::string& animationID , void* context){    //输出animationID    CCLog("animationID:%s",animationID.c_str());}

    注意:回调的第二个参数“void* context”就是CAViewAnimation::beginAnimations("animation1", NULL);传入的第二个参数(我们这里传的是NULL),它本身是一个void指针类型,使用时候需要类型转换。开始回调函数如下


    例如:

      CALabel* label = CALabel::createWithCenter(DRect(winRect.size.width*0.5, winRect.size.height*0.5-270, winRect.size.width, 200)); this->getView()->insertSubview(label, 1); CAViewAnimation::beginAnimations("animation1", lable); CAViewAnimation::setAnimationDuration(0.8);//设置时间 label->setScale(5); CAViewAnimation2_selector(FirstViewController::callbackStopAnimation2));//结束回调,在Animation结束时调用 CAViewAnimation::commitAnimations();//结束 回调:void FirstViewController::callbackStopAnimation2(const std::string& animationID , void* context){    CALabel* label = (CALabel*)context;              if (label) {        label->setRotation(180);    }}


      这个样我们就可以获得Label并改变其属性,当然我们可以传入其他类型的参数。

      组合动画
      1同时执行

      默认情况下,CAView的属性变化写在一对beginAnimations()和commitAnimations()直接,这些所有的变化将是同时执行。

      2顺序执行

      方法一:延时

      利用延时,在上一个Animation时间结束后,再执行下一个Animation。

      //第一个AnimationCAViewAnimation::beginAnimations("", NULL); CAViewAnimation::setAnimationDuration(1.8); label->setRotation(180); CAViewAnimation::commitAnimations();    //第二个AnimationCAViewAnimation::beginAnimations("", NULL); CAViewAnimation::setAnimationDuration(2.8);CAViewAnimation::setAnimationDelay(1.8);//延时1.8秒 label->setScale(5); CAViewAnimation::commitAnimations();

      方法二:回调

      利用Animation的介绍回调

      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表示回调方法有一个参数,以此类推

      示例代码:

      // CALLBACK_BIND_2对应的tableViewHeightForRowAtIndexPath方法有两个参数m_pTableView->onCellHeightAtIndexPath(CALLBACK_BIND_2(TableViewTest::tableViewHeightForRowAtIndexPath, this)); // tableViewHeightForRowAtIndexPath的实现 两个参数分别为section和rowunsigned int TableViewTest::tableViewHeightForRowAtIndexPath(unsigned int section, unsigned int row){    return 130;} // CALLBACK_BIND_1对应的tableViewHeightForHeaderInSection方法有一个参数m_pTableView->onHeightForHeaderInSection(CALLBACK_BIND_1(TableViewTest::tableViewHeightForHeaderInSection, this)); // tableViewHeightForHeaderInSection的实现 一个参数是sectionunsigned int TableViewTest::tableViewHeightForHeaderInSection(unsigned int section){    return 50;}

      宏名: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代表类中的方法。

      示例:

      CC_LISTENING_FUNCTION(unsigned int(unsigned int section), HeightForHeaderInSection);// 解释:HeightForHeaderInSection为类CATableView的方法名,用到时前面需要加on,unsigned int section为回调方法的参数,// unsigned int为回调方法的返回值类型。 // 用法m_pTableView->onHeightForHeaderInSection(CALLBACK_BIND_1(TableViewTest::tableViewHeightForHeaderInSection, this)); // 实现tableViewHeightForHeaderInSection回调方法unsigned int TableViewTest::tableViewHeightForHeaderInSection(unsigned int section){    return 50;}

      判断平台的宏:

      #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用于来判断平台。

      下面来看一个通过判断平台打开网址的示例:

      void openUrl(const std::string &url){// 如果当前系统是MAC系统#if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC)    [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:[NSString stringWithUTF8String:url.c_str()]]];     // 如果当前系统是IOS系统#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithUTF8String:url.c_str()]]];         #endif}

      类说明 

      视图类CAView是整个CrossApp引擎最基本的类,负责将各式各样的界面呈现出来,我们在App中所能看见的的一切界面其实就是一个个CAView的组合。CAView负责在屏幕上定义矩形区域,在展示用户界面及响应用户界面交互方面发挥关键作用。每个视图对象要负责渲染试图矩形区域中的内容,并响应该区域内发生的操作事件,视图是应用程序用户交互的重要机制。


      除了显示内容和处理事件之外,试图还可以管理一个或多个子视图。我们可以在一个view上面添加多个子view,而作为父view,即父节点,负责管理其直接子视图,并根据需要调整他们的位置和尺寸,以及响应他们没有处理的事件。


      基类

      CAResponder


      CAView 方法(点击查看方法介绍)

      方法说明
      create创建
      createWithFrame创建,并指定其Frame
      createWithFrame创建,并指定Frame和Color
      createWithCenter创建,并设置其Center
      createWithCenter创建,并设置其Center和Color
      createWithLayout创建,并设置其Layout
      createWithLayout创建,并设置其Layout和Color
      createWithColor创建,并指定Color
      init初始化
      initWithFrame初始化,并指定其Frame
      initWithCenter初始化,并指定其Center
      initWithLayout初始化,并指定其Layout
      initWithColor初始化,并指定其Color
      description描述
      setZOrderzOrder轴值
      _setZOrderz轴值
      getZOrder获取z轴值
      setVertexZ顶点z轴值
      getVertexZ获取顶点z轴值
      setScaleX设置X轴缩放
      getScaleX获取X轴缩放
      setScaleY设置Y轴缩放
      getScaleY获取Y轴缩放
      setScale设置缩放
      getScale获取缩放
      setScale设置缩放,并指定其X轴Y轴
      setSkewX设置X倾斜
      getSkewX获取X倾斜
      setSkewY设置Y倾斜
      getSkewY获取Y倾斜
      setAnchorPoint设置锚点
      getAnchorPoint获取锚点
      setAnchorPointInPoints设置锚点的点
      getAnchorPointInPoints获取锚点的点
      setFrame设置Frame
      getFrame获取Frame
      setFrameOrigin设置Frame轴值
      getFrameOrigin获取Frame轴值
      setCenter设置Center
      getCenter获取Center
      setBounds设置边界
      getBounds获取边界
      setCenterOrigin设置Center轴值
      getCenterOrigin获取Center轴值
      setVisible设置是否可见
      isVisible查看是否可见
      setRotation设置旋转,并指定角度
      getRotation获取旋转角度
      setRotationX设置X轴旋转,并指定角度
      getRotationX获取X周旋转角度
      setRotationY设置Y轴旋转,并指定角度
      getRotationY获取Y轴旋转角度
      addSubview将子视图添加进当前视图
      insertSubview将子视图添加进当前视图,并指定一个Z轴值
      getSubviewByTag通过 tag 获取子视图
      getSubviewByTextTag通过 TextTag 获取子视图
      getSubviews获取子视图的集合
      getSubviewsCount获取子视图数量
      setSuperview设置视图
      getSuperview获取视图
      removeFromSuperview从父视图移除
      removeSubview删除子视图
      removeSubviewByTag删除子视图,根据tag
      removeSubviewByTextTag删除子视图,根据TextTag
      removeAllSubviews移除当前视图的所有子视图
      reorderSubview记录子视图与对应的标签值
      sortAllSubviews对当前视图的所有子视图进行排序
      isRunning查看是否运行
      onEnter进入
      onEnterTransitionDidFinish当图像加载时调用的事件回调
      onExit退出
      onExitTransitionDidStart当图像加载结束时调用的事件回调
      getCamera获得相机
      draw显示
      visit访问
      nextResponder获取下一个Responder
      copy复制View
      ccTouchBegan触摸事件开始时的回调函数
      ccTouchMoved触摸事件中触点移动时的回调函数
      ccTouchEnded触摸事件结束时的回调函数
      ccTouchCancelled触摸非正常结束时的回调函数(例如:电话或锁屏)


      CAView 方法说明

      static CAView* create(void);

      返回值:CAView*

      参数:

      解释:创建


      static CAView* createWithFrame(const DRect& rect);

      返回值:CAView*

      参数:

      类型参数名说明
      DRect&rect区域大小

      解释:创建,并指定其Frame


      static CAView* createWithFrame(const DRect& rect, const CAColor4B& color4B);

      返回值:CAView*

      参数:

      类型参数名说明
      DRect&rect区域大小
      CAColor4B&color4Bview颜色

      解释:创建,并指定Frame和Color


      static CAView* createWithCenter(const DRect& rect);

      返回值:CAView*

      参数:

      类型参数名说明
      DRect&rect中心点的位置及大小

      解释:创建,并设置其Center


      static CAView* createWithCenter(const DRect& rect, const CAColor4B& color4B);

      返回值:CAView*

      参数:

      类型参数名说明
      DRect&rect中心点的位置及大小
      CAColor4B&color4Bview颜色

      解释:创建,并设置其Center和Color


      static CAView* createWithLayout(const DLayout& layout);

      返回值:CAView*

      参数:

      类型参数名说明
      const DLayout&layoutlayout

      解释:创建,并设置其Layout


      static CAView* createWithLayout(const DLayout& layout, const CAColor4B& color4B);

      返回值:CAView*

      参数:

      类型参数名说明
      const DLayout&layoutlayout
      CAColor4B&color4Bview颜色

      解释:创建,并设置其Layout和Color


      static CAView* createWithColor(const CAColor4B& color4B);

      返回值:CAView*

      参数:

      类型参数名说明
      CAColor4B&color4Bview颜色

      解释:创建,并指定Color


      virtual bool init();

      返回值:bool

      参数:

      解释:初始化


      virtual bool initWithFrame(const DRect& rect);

      返回值:bool

      参数:

      类型参数名说明
      DRect&rect区域大小

      解释:初始化,并指定其Frame


      virtual bool initWithCenter(const DRect& rect);

      返回值:bool

      参数:

      类型参数名说明
      DRect&rect中心点大小

      解释:初始化,并指定其Center


      virtual bool initWithLayout(const DLayout& layout);

      返回值:bool

      参数:

      类型参数名说明
      const DLayout&layoutlayout

      解释:初始化,并指定其Layout


      virtual bool initWithColor(const CAColor4B& color4B);

      返回值:bool

      参数:

      类型参数名说明
      CAColor4B&color4Bview颜色

      解释:初始化,并指定其Color


      const char* description(void);

      返回值:char*

      参数:

      解释:描述


      virtual void setZOrder(int zOrder);

      返回值:void

      参数:

      类型参数名说明
      intzOrderzOrder轴值

      解释:zOrder轴值


      virtual void _setZOrder(int z);

      返回值:void

      参数:

      类型参数名说明
      intzz轴值

      解释:z轴值


      virtual int getZOrder();

      返回值:int

      参数:

      解释:获取z轴值


      virtual void setVertexZ(float vertexZ);

      返回值:void

      参数:

      类型参数名说明
      floatvertexZ顶点z轴值

      解释:顶点z轴值


      virtual float getVertexZ();

      返回值:float

      参数:

      解释:获取顶点z轴值


      virtual void setScaleX(float fScaleX);

      返回值:void

      参数:

      类型参数名说明
      floatfScaleXX轴缩放

      解释:设置X轴缩放


      virtual float getScaleX();

      返回值:float

      参数:

      解释:获取X轴缩放


      virtual void setScaleY(float fScaleY);

      返回值:void

      参数:

      类型参数名说明
      floatfScaleYY轴缩放

      解释:设置Y轴缩放


      virtual float getScaleY();

      返回值:float

      参数:

      解释:获取Y轴缩放


      virtual void setScale(float scale);

      返回值:void

      参数:

      类型参数名说明
      floatscale缩放

      解释:设置缩放


      virtual float getScale();

      返回值:float

      参数:

      解释:获取缩放


      virtual void setScale(float fScaleX,float fScaleY);

      返回值:void

      参数:

      类型参数名说明
      floatfScaleX缩放X轴
      floatfScaleY缩放Y轴

      解释:设置缩放,并指定其X轴Y轴


      virtual void setSkewX(float fSkewX);

      返回值:void

      参数:

      类型参数名说明
      floatfSkewXX倾斜

      解释:设置X倾斜


      virtual float getSkewX();

      返回值:float

      参数:

      解释:获取X倾斜


      virtual void setSkewY(float fSkewY);

      返回值:void

      参数:

      类型参数名说明
      floatfSkewYY倾斜

      解释:设置Y倾斜


      virtual float getSkewY();

      返回值:float

      参数:

      解释:获取Y倾斜


      void setAnchorPoint(const DPoint& anchorPoint);

      返回值:void

      参数:

      类型参数名说明
      DPoint&anchorPoint锚点

      解释:设置锚点


      const DPoint& getAnchorPoint();

      返回值:DPoint&

      参数:

      解释:获取锚点


      void setAnchorPointInPoints(const DPoint& anchorPointInPoints);

      返回值:void

      参数:

      类型参数名说明
      DPoint&anchorPointInPoints锚点的点

      解释:设置锚点的点


      const DPoint& getAnchorPointInPoints();

      返回值:DPoint&

      参数:

      解释:获取锚点的点


      virtual void setFrame(const DRect& rect);

      返回值:void

      参数:

      类型参数名说明
      DRect&rect区域大小

      解释:设置Frame


      virtual const DRect& getFrame() const;

      返回值:DRect&

      参数:

      解释:获取Frame


      virtual void setFrameOrigin(const DPoint& point);

      返回值:void

      参数:

      类型参数名说明
      DPoint&point轴值

      解释:设置Frame轴值


      virtual const DPoint& getFrameOrigin();

      返回值:DPoint&

      参数:

      解释:获取Frame轴值


      virtual void setCenter(const DRect& rect);

      返回值:void

      参数:

      类型参数名说明
      DRect&rect中心点大小

      解释:设置Center


      virtual DRect getCenter();

      返回值:DRect

      参数:

      解释:获取Center


      virtual void setBounds(const DRect& rect);

      返回值:void

      参数:

      类型参数名说明
      DRect&rect边界大小

      解释:设置边界


      virtual DRect getBounds() const;

      返回值:DRect

      参数:

      解释:获取边界


      virtual void setCenterOrigin(const DPoint& point);

      返回值:void

      参数:

      类型参数名说明
      DPoint&point轴值

      解释:设置Center轴值


      virtual DPoint getCenterOrigin();

      返回值:DPoint

      参数:

      解释:获取Center轴值


      virtual void setVisible(bool visible);

      返回值:void

      参数:

      类型参数名说明
      boolvisible是否可见

       解释:设置是否可见


      virtual bool isVisible();

      返回值:bool

      参数:

      解释:查看是否可见


      virtual void setRotation(float fRotation);

      返回值:void

      参数:

      类型参数名说明
      floatfRotation旋转角度

      解释:设置旋转,并指定角度


      virtual float getRotation();

      返回值:float

      参数:

      解释:获取旋转角度


      virtual void setRotationX(float fRotaionX);

      返回值:void

      参数:

      类型参数名说明
      floatfRotaionXX轴旋转角度

      解释:设置X轴旋转,并指定角度


      virtual float getRotationX();

      返回值:float

      参数:

       解释:获取X周旋转角度


      virtual void setRotationY(float fRotationY);

      返回值:void

      参数:

      类型参数名说明
      floatfRotationYY轴旋转角度

      解释:设置Y轴旋转,并指定角度


      virtual float getRotationY();

      返回值:float

      参数:

      解释:获取Y轴旋转角度


      virtual void addSubview(CAView * child);

      返回值:void

      参数:

      类型参数名说明
      CAView*child子视图

      解释:将子视图添加进当前视图


      virtual void insertSubview(CAView* subview, int z);

      返回值:void

      参数:

      类型参数名说明
      CAView*subview子视图
      intzZ轴值

      解释:将子视图添加进当前视图,并指定一个Z轴值


      virtual CAView * getSubviewByTag(int tag);

      返回值:CAView* 

      参数:

      类型参数名说明
      inttag标签

      解释:通过 tag 获取子视图


      virtual CAView * getSubviewByTextTag(const std::string& textTag);

      返回值:CAView*

      参数:

      类型参数名说明
      std::string&textTag文本标签

      解释:通过 TextTag 获取子视图


      virtual const CAVector<CAView*>& getSubviews();

      返回值:CAVector<CAView*>&

      参数:

      解释:获取子视图的集合


      virtual unsigned int getSubviewsCount(void) const;

      返回值:unsigned int

      参数:

      解释:获取子视图数量


      virtual void setSuperview(CAView* superview);

      返回值:void

      参数:

      类型参数名说明
      CAView*superview视图

      解释:设置视图


      virtual CAView* getSuperview();

      返回值:CAView*

      参数:

      解释:获取视图


      virtual void removeFromSuperview();

      返回值:void

      参数:

      解释:从父视图移除


      virtual void removeSubview(CAView* subview);

      返回值:void

      参数:

      类型参数名说明
      CAView*subview子视图

      解释:删除子视图


      virtual void removeSubviewByTag(int tag);

      返回值:void

      参数:

      类型参数名说明
      inttag标签

      解释:删除子视图,根据tag


      virtual void removeSubviewByTextTag(const std::string& textTag);

      返回值:void

      参数:

      类型参数名说明
      std::string&textTag文本标签

      解释:删除子视图,根据TextTag


      virtual void removeAllSubviews();

      返回值:void

      参数:

      解释:移除当前视图的所有子视图


      virtual void reorderSubview(CAView * child, int zOrder);

      返回值:void

      参数:

      类说明

      CAView的代理类,此类为抽象类,声明了3个纯虚函数。


      CAViewDelegate 方法(点击查看方法介绍)

      方法说明
      getSuperViewRect用于获取父节点的rect
      viewOnEnterTransitionDidFinish完全载入view后调用
      viewOnExitTransitionDidStart移除view时调用



      CAViewDelegate 方法说明

      virtual void getSuperViewRect(const DRect& rect);

      返回值:void

      参数:

      类型参数名说明
      const DRect&rect父节点的rect

      解释:用于获取父节点的rect


      virtual void viewOnEnterTransitionDidFinish();

      返回值:void

      参数:

      解释:完全载入view后调用


      virtual void viewOnExitTransitionDidStart();

      返回值:void

      参数:

      解释:移除view时调用

      类说明

      CATextField是单行输入框控件。主要接收用户的文本输入,多用于用户名、密码、聊天输入等。(1.1版本)


      CATextField 属性 (点击属性名可查看属性介绍)

      属性
      说明
      BackgroundViewTextField的背景视图
      CursorColorTextField的光标颜色
      FontNameTextField的字体名称
      FontSizeTextField的字体大小
      HoriMarginsTextField的水平边缘
      InputTypeTextField的输入类型
      PlaceHolderPlaceHolder文本内容
      SpaceHolderColorPlaceHolder文本内容颜色
      TextTextField的文本内容
      TextColorTextField的文字颜色
      TextEditAlignTextField的文本编辑对齐
      CharCountTextField的字符计数
      DelegateTextField的代理(设置代理才能被监听状态)
      VertMarginsTextField的垂直边缘


      CATextField 方法 (点击方法名可查看方法介绍)

      函数说明
      setKeyboardType设置键盘的类型(真机或模拟器上有效)
      getKeyboardType获取键盘类型(真机或模拟器上有效)
      setKeyboardReturnType设置确认键的类型(真机或模拟器上有效)  
      getKeyboardReturnType获取确认键的类型(真机或模拟器上有效)  
      resignFirstResponder隐藏键盘第一响应者状态
      becomeFirstResponder弹出键盘第一响应者状态
      resignResponder隐藏键盘状态
      createWithFrame创建,并指定其Frame
      createWithCenter创建,并指定其Center
      init初始化
      setImageRect设置图像大小
      updateImageRect更新图像
      setColor设置颜色
      getColor获取颜色


      CATextField是单行输入框控件。主要接收用户的文本输入,多用于用户名、密码、聊天输入等。


      在CATextField接受用户输入文本时,我们有时候希望获得用户的操作行为,比如CATextField获得焦点、CATextField失去焦点、用户输入字符、用户删除字符,这样我们可以对用户的操作进行逻辑处理,比如限制输入内容,输入字符长度等。那么如何才能监听到CATextField的改变呢?我们需要了解一下啊CATextFieldDelegate,它主要使用的有四个函数分别是:

      //获得焦点   virtual bool onTextFieldAttachWithIME(CATextField * sender);    //失去焦点   virtual bool onTextFieldDetachWithIME(CATextField * sender);       //输入文本   virtual bool onTextFieldInsertText(CATextField * sender, const char * text, int nLen);    //删除文本   virtual bool onTextFieldDeleteBackward(CATextField * sender, const char * delText, int nLen)
      假如我们想在FirstViewController中监听CATextField那么我们需要使FirstViewController继承CATextFieldDelegate并重写这些函数。下面我们以常见的登陆界面为例,来讲解CATextField的使用方法。

      首先看FirstViewController.h文件代码

      #include <iostream>#include "CrossApp.h" USING_NS_CC; class FirstViewController : public CAViewController, public CATextFieldDelegate{  public:    FirstViewController();    virtual ~FirstViewController();         //获得焦点     virtual bool onTextFieldAttachWithIME(CATextField * sender);    //失去焦点    virtual bool onTextFieldDetachWithIME(CATextField * sender);    //输入文本    virtual bool onTextFieldInsertText(CATextField * sender, const char * text, int nLen);    //删除文本    virtual bool onTextFieldDeleteBackward(CATextField * sender, const char * delText, int nLen);    //登录    void login(CAControl* control,DPoint point);     protected:    void viewDidLoad();     void viewDidUnload();  };

      然后我们在FirstViewController.cpp中做逻辑实现

      #include "FirstViewController.h"FirstViewController::FirstViewController(){} FirstViewController::~FirstViewController(){} void FirstViewController::viewDidLoad(){    //用户名文本    CALabel* nameLabel = CALabel::createWithFrame(DRect(50, 100, 100, 40));    nameLabel->setText(UTF8("用户名:"));    nameLabel->setTextAlignment(CATextAlignmentCenter);    nameLabel->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);    this->getView()->addSubview(nameLabel);         //密码文本    CALabel* passwordLabel = CALabel::createWithFrame(DRect(50, 200, 100, 40));    passwordLabel->setText(UTF8("密码:"));    passwordLabel->setTextAlignment(CATextAlignmentCenter);    passwordLabel->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);    this->getView()->addSubview(passwordLabel);         //创建    CATextField* nameTF = CATextField::createWithFrame(DRect(200, 100, 300, 40));         //设置tag    nameTF->setTag(1);         //设置提示文本    nameTF->setPlaceHolder(UTF8("请输入用户名"));         //设置光标颜色    nameTF->setCursorColor(CAColor_orange);         /*设置键盘类型(真机或模拟器上有效)    KEY_BOARD_TYPE_NORMAL:普通键盘    KEY_BOARD_TYPE_NUMBER:数字键盘    KEY_BOARD_TYPE_ALPHABET:字母键盘    */    nameTF->setKeyboardType(eKeyBoardType::KEY_BOARD_TYPE_ALPHABET);         /*设置确认键的类型(真机或模拟器上有效)    KEY_BOARD_RETURN_DONE:完成    KEY_BOARD_RETURN_SEARCH:搜索    KEY_BOARD_RETURN_SEND:发送    */    nameTF->setKeyboardReturnType(eKeyBoardReturnType::KEY_BOARD_RETURN_DONE);         //绑定代理(设置代理才能被监听状态)    nameTF->setDelegate(this);         //添加渲染    this->getView()->addSubview(nameTF);    CATextField* password = CATextField::createWithFrame(DRect(200,200,300,40));         //设置tag    password->setTag(2);         //设置提示文本    password->setPlaceHolder(UTF8("请输入密码"));         //设置提示文本颜色    password->setSpaceHolderColor(CAColor_red);         //设置输入样式为密码格式    password->setInputType(eKeyBoardInputType::KEY_BOARD_INPUT_PASSWORD);         //添加渲染    this->getView()->addSubview(password);         //登录按钮    CAButton* loginBtn = CAButton::createWithFrame(DRect(200, 260, 100, 40), CAButtonType::CAButtonTypeRoundedRect);    loginBtn->setTitleForState(CAControlStateAll, UTF8("登录"));    loginBtn->addTarget(this, CAControl_selector(FirstViewController::login), CAControlEventTouchDown);    this->getView()->addSubview(loginBtn);} void FirstViewController::viewDidUnload(){    // Release any retained subviews of the main view.    // e.g. self.myOutlet = nil;} bool FirstViewController::onTextFieldAttachWithIME(CATextField * sender){    //获得焦点    CCLog("onTextFieldAttachWithIME--->");         //如果为false获得焦点时不弹出键盘    return false;} bool FirstViewController::onTextFieldDetachWithIME(CATextField * sender){    //失去焦点    CCLog("onTextFieldDetachWithIME--->");         //失去焦点时不移除键盘    return true;} bool FirstViewController::onTextFieldInsertText(CATextField * sender, const char * text, int nLen){    //输入时调用    CCLog("onTextFieldInsertText--->Text:%s,Len:%d", text, nLen);         //如果为true,控件则不会接受输入的字符    return true;} bool FirstViewController::onTextFieldDeleteBackward(CATextField * sender, const char * delText, int nLen){    //删除字符时调用    CCLog("onTextFieldDeleteBackward--->Text:%s,Len:%d",delText,nLen);         //如果为true,控件则不删除受输入的字符    return false;} //登录void FirstViewController::login(CAControl* control, DPoint point){    //根据tag值获得nameTF 和passwordTF    CATextField* nameTF = (CATextField*) this->getView()->getSubviewByTag(1);    CATextField* passwordTF = (CATextField*) this->getView()->getSubviewByTag(2);         //获得输入框的内容    string name = nameTF->getText();    string password = passwordTF->getText();         //如果用户名为"9miao" 密码为"123456" 则打印ok否则打印error    if (strcmp(name.c_str(), "9miao") == 0 &&  strcmp(password.c_str(), "123456") == 0)    {            CCLog("OK");    }    else    {            CCLog("ERROR");    }}

      这样我们就实现了一个最简单的登录页面,通过这个demo能过让更好的理解CATextField的使用方法。


      CATextField 属性介绍     

       BackgroundView

      类型:CAView*

      解释:设置TextField的背景视图。set/get{}。


      CursorColor

      类型:CAColor4B

      解释:设置TextField的光标颜色。set/get{}。


      FontName

      类型:std::string

      解释:设置TextField的字体名称。set/get{}。


      FontSize

      类型:int

      解释:设置TextField的字体大小。set/get{}。


      HoriMargins

      类型:int

      解释:设置TextField的水平边缘。set/get{}。


      InputType

      类型:eKeyBoardInputType

      解释:设置TextField的输入类型。set/get{}。

      enum eKeyBoardInputType{    KEY_BOARD_INPUT_NORMAL = 1,   //正常输入法      KEY_BOARD_INPUT_PASSWORD,     //密码输入法};


      PlaceHolder

      类型:std::string

      解释:PlaceHolder文本内容set/get{}。


      SpaceHolderColor

      类型:CAColor4B

      解释:PlaceHolder文本内容颜色。set/get{}。


      Text

      类型:std::string

      解释:设置TextField的文本内容。set/get{}。


      TextColor

      类型:CAColor4B

      解释:设置TextField的文字颜色。set/get{}。


      TextEditAlign

      类型:eTextEditAlign

      解释:设置TextField的文本编辑对齐。set/get{}。


      CharCount

      类型:int

      解释:获取TextField的字符计数。get{}。

          

      Delegate

      类型:CATextFieldDelegate*

      解释:设置TextField的代理(设置代理才能被监听状态)。set/get{}。


      VertMargins

      类型:int

      解释:设置TextField的垂直边缘。set/get{}。


      CATextField 方法介绍

      inline void setKeyboardType (eKeyBoardType type);

      返回值:

      参数:

      类型参数名说明
      eKeyBoardTypetype键盘类型

      解释:设置键盘的类型

      enum eKeyBoardType{    KEY_BOARD_TYPE_NORMAL = 0,  //正常键盘    KEY_BOARD_TYPE_NUMBER,      //数字键盘    KEY_BOARD_TYPE_ALPHABET,    //字母键盘};

      inline int getKeyboardType ();

      返回值:inline int

      参数:

      解释:获取键盘类型(真机或模拟器上有效)


      inline void setKeyboardReturnType (eKeyBoardReturnType type);

      返回值:

      参数:

      类型参数名说明
      eKeyBoardReturnTypetype键盘类型

      解释:

      <p style="text-indent: 0em;">enum eKeyBoardReturnType<br>{<br>    KEY_BOARD_RETURN_DONE = 21, //确认键为完成<br>    KEY_BOARD_RETURN_SEARCH,    //确认键为搜索<br>    KEY_BOARD_RETURN_SEND,      //确认键为发送<br>    KEY_BOARD_RETURN_ENTER,     //确认键为进入<br>};<br></p>

      inline int getKeyboardReturnType ();

      返回值:inline int

      参数:

      解释:获取确认键的类型(真机或模拟器上有效) 


      virtual bool resignFirstResponder();

      返回值:bool

      参数:

      解释:隐藏键盘第一响应者状态


      virtual bool becomeFirstResponder();

      返回值:bool

      参数:

      解释:弹出键盘第一响应者状态


      virtual void resignResponder();

      返回值:void

      参数:

      解释:隐藏键盘状态


      static CATextField* createWithFrame(const DRect& frame);

      返回值:CATextField*

      参数:

      类型参数名说明
      const DRect& frame区域大小

      解释:创建,并指定其Frame


      static CATextField* createWithCenter(const DRect& rect);

      返回值:CATextField* 

      参数:

      类型参数名说明
      const DRect& rect中心点的位置及大小

      解释:创建,并指定其Center


      bool init();

      返回值:bool

      参数:

      解释:初始化


      virtual void setImageRect(const DRect& rect);

      返回值:void

      参数:

      类型参数名说明
      const DRect&rect大小

      解释:设置图像大小


      virtual void updateImageRect();

      返回值:void

      参数:

      解释:更新图像


      void setColor(const CAColor4B& var);

      返回值:void

      参数:

      类型参数名说明
      const CAColor4B&var颜色值

      解释:设置颜色


      const CAColor4B& getColor();

      返回值:CAColor4B& 

      参数:

      解释:获取颜色

      类说明

      CrossApp引擎的根类,主要是进行内存的管理,定义部分回调函数指针。引擎绝大部分类派生自CAObject,其共同遵从同一套内存管理方式。


      CAObject 属性(点击查看方法介绍)

      属性说明
      m_uID对象唯一id
      m_uReference引用计数器
      m_uAutoReleaseCount自动释放引用计数器
      UserData用户数据
      UserObject用户对象
      Tag标签
      TextTag文本标签


      CAObject方法(点击查看方法介绍)

      方法说明
      init初始化
      release减少对象的计数器
      retain增加对象的计数器
      autorelease设置自动管理方式
      copy复制对象
      isSingleReference实例化对象是否只有一个使用者
      retainCount返回对象当前计数器的值
      isEqual与指定object实例对象是否相同


      CrossApp内存管理简介

      CrossApp采用引用计数器的方式进行内存的管理,CAObject的派生类都采用这种方式管理对象。最基本的原则就是谁new/retain,谁就负责release,当我们创建一个object时,会自动添加一个计数器,每当对这个object进行引用时,都会使用retain方法进行计数器的加1操作;同样的当释放对这个object的引用时都会调用release方法进行计数器的减1操作,如果引用计数器m_uReference的值为0,就删除此object。

      此外,CrossApp还提供了另一种自动管理内存的方式,当我们不确定object在何时释放时,可以调用autorelease方法进行延迟释放object操作,此时object处于自动管理状态,object被加入到自动释放池中,系统会在每帧结束的时候自动对释放池中的所有object进行一次release操作,如果m_uReference的值为0,则删除当前object。


      CAObject 属性说明

      m_uID

      类型:unsigned int

      解释:CAObject的实例对象id,采用累加的方式,初值为零,每创建一个object,m_uID值加1,同时在创建一个object时会将当前对象的m_uReference初始化为1,将当前的m_uAutoReleaseCount初始化为0。


      m_uReference

      类型:unsigned int    

      解释:引用计数器,每创建一个object,计数器的值自动加1。

          

      m_uAutoReleaseCount

      类型:unsigned int

      解释:是否自动管理object,如果m_uAutoReleaseCount的值为0,非自动管理方式,当m_uAutoReleaseCount的值为非0,那么采用自动管理的方式。 

               

      UserObject

      类型:CAObject*

      解释:用户对象。


      UserData

      类型:void*

      解释:用户数据。


      Tag

      类型:int

      解释:标签。


      TextTag

      类型:std::string

      解释:文本标签。


      CAObject 方法说明

      bool init();

      返回值:

      参数:

      解释:初始化


      void retain(void)

      返回值:void

      参数:

      解释:对引用计数器m_uReference的值加1。


      void release(void)

      返回值:void

      参数:

      解释:对引用计数器m_uReference的值减1,如果m_uReference的值为0,则删除此object。


      CAObject* autorelease(void)

      返回值:CAObject*

      参数:

      解释:将当前object设置为自动内存管理方式       

              

      CAObject* copy(void);

      返回值:CAObject*

      参数:

      解释:复制对象


      unsigned int retainCount(void) const

      返回值:unsigned int

      参数:

      解释:返回当前引用计数器m_uReference的值


      bool isSingleReference(void) const

      返回值:bool

      参数:

      解释:通过与引用计数器的值做比较,返回object是否只有一个使用者。


      virtual bool isEqual(const CAObject* pObject)

      返回值:

      参数:

      类型
      参数名说明
      const CAObject*pObject对象

      解释:虚函数,判断当前对象与指定实例化对象是否相同


      类说明

      所有在屏幕上显示的对象的超类,定义了响应触摸事件的接口。


      基类

      CAObject


      CAResponder 属性(点击查看方法介绍)

      属性
      说明
      HaveNextResponder下一个响应,默认true
      TouchEnabled启用触摸,默认true
      ScrollEnabled启用滚动,默认true
      HorizontalScrollEnabled启用水平滚动,默认true
      VerticalScrollEnabled启用竖直滚动,默认true
      PriorityScroll滚动优先级,默认false,cascrollview以及其派生类型默认为true
      ReachBoundaryHandOverToSuperview到达边界交给父视图,默认true
      TouchEventScrollHandOverToSuperview触摸事件滚动交给superviewv,默认true
      MouseMovedEnabled鼠标移动启用,认false
      MouseScrollWheelEnabled鼠标滚轮启用,默认false
      ZLevel水平
      Touches触摸


      CAResponder 方法(点击查看方法介绍)

      方法 说明
      isFirstResponder调用者是否是首对象
      resignFirstResponder使调用者失去首对象状态
      becomeFirstResponder通知调用者,成为当前window中的首对象。
      nextResponder返回下一个接收事件的对象
      ccTouchBegan触摸事件开始时的回调函数
      ccTouchMoved触摸事件中触点移动时的回调函数
      ccTouchEnded触摸事件结束时的回调函数
      ccTouchCancelled触摸非正常结束时的回调函数。(例如:电话或锁屏)


      CAResponder 属性说明

              HaveNextResponder

      Responder->setHaveNextResponder(bool var);


              下一个响应,默认true 

              TouchEnabled

      Responder->setTouchEnabled(bool var);

              启用触摸,默认true

              ScrollEnabled

      Responder->setScrollEnabled(bool var);


              启用滚动,默认true

              HorizontalScrollEnabled

      Responder->setHorizontalScrollEnabled(bool var);


              启用水平滚动,默认true

              VerticalScrollEnabled

      Responder->setVerticalScrollEnabled(bool var);


              启用竖直滚动,默认true


              PriorityScroll

      Responder->setPriorityScroll(bool var);


              滚动优先级,默认false,cascrollview以及其派生类型默认为true

              ReachBoundaryHandOverToSuperview

      Responder->setReachBoundaryHandOverToSuperview(bool var);


              到达边界交给父视图,默认true

              TouchEventScrollHandOverToSuperview

      Responder->setTouchEventScrollHandOverToSuperview(bool var);


              触摸事件滚动交给superviewv,默认true

              MouseMovedEnabled

      Responder->setMouseMovedEnabled(bool var);


              鼠标移动启用,认false

              MouseScrollWheelEnabled

      Responder->setMouseScrollWheelEnabled(bool var);


              鼠标滚轮启用,默认false

              ZLevel

      Responder->getZLevel();

              水平

              Touches

      Responder->getTouches();


              触摸

      CAResponder 方法说明

              bool isFirstResponder()  

           返回值:bool

           参数:

           解释:返回一个布尔值用于判断当前对象是否为首对象。

       

              virtual bool resignFirstResponder()

           返回值:bool

           参数:

           解释:让调用对象在当前window中失去首对象状态

       

              virtual bool becomeFirstResponder()

              返回值:bool

               参数:

               解释:将调用者设置为首对象,返回bool值判断是否设置成功,设置为首对象的对象可以接收所有view的触摸事件。


              virtual CAResponder* nextResponder()

              返回值:CAResponder*

           参数:

               解释:返回下一个接收事件的对象,如果没有则返回NULL。

       

              virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)

              返回值:bool

       参数:

      类型参数名说明
      CCTouch*pTouch触摸传递对象
      CCEvent*pEvent此参数待定

               解释:触摸事件开始时的回调函数

       

              virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent)

          返回值:bool

       参数:

      类型参数名说明
      CCTouch*pTouch触摸传递对象
      CCEvent*pEvent此参数待定

               解释:触摸事件中触点移动时的回调函数


              virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)

          返回值:bool

       参数:

      类型参数名说明
      CCTouch*pTouch触摸传递对象
      CCEvent*pEvent此参数待定

               解释:触摸事件结束时的回调函数

          

              virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent)

          返回值:bool

       参数:

      类型参数名说明
      CCTouch*pTouch触摸传递对象
      CCEvent*pEvent此参数待定

               解释:触摸非正常结束时的回调函数。(例如:电话或锁屏)

      类说明

      拉动刷新view,为scrollView及其派生类提供拉动刷新操作。


      基类

      CAView


      CAPullToRefreshView 属性(点击查看方法介绍)

      属性说明
      PullToRefreshText拉动时的提示文本
      ReleaseToRefreshText释放拉动操作时的提示文本
      RefreshingText刷新时的提示文本
      LabelColor提示文本颜色
      PullToImage拉动提示图片
      LoadingView刷新动画
      LayoutLinearType布局类型
      PullToRefreshType拉动刷新的类型


      CAPullToRefreshView 方法(点击查看方法介绍)

      方法说明
      create创建,默认Frame为(0,0,0,0)
      init初始化


      CAPullToRefreshView 属性说明

      PullToRefreshText

      类型:string

      解释:下拉时的提示文本,get/set{}。


      ReleaseToRefreshText

      类型:string

      解释:释放拉动操作时的提示文本,get/set{}。


      RefreshingText

      类型:string

      解释:刷新时的提示文本,get/set{}。


      LabelColor

      类型:CAColor4B

      解释:所有提示文本的颜色,get/set{}。


      PullToImage

      类型:CAImage*

      解释:拉动操作时的提示图片,get/set{}。


      LoadingView

      类型:CAActivityIndicatorView*

      解释:加载动画,get/set{}。


      LayoutLinearType

      类型:CALayoutLinearType

      解释:布局类型,get/set{}。


      PullToRefreshType

      类型:CAPullToRefreshType

      解释:拉动刷新的类型,这里的类型实际指刷新视图的位置,get/set{}。


      CAPullToRefreshView 方法说明

      static CAPullToRefreshView* create(const CAPullToRefreshType& type)

      返回值:CAPullToRefreshView*

      参数:

      类型参数名说明
      const CAPullToRefreshType&type拉动刷新的类型

      解释:创建一个拉动刷新view,指明view的类型,type是一个枚举值。CAPullToRefreshType包括五种类型:类似于tableView和collectionView可以进行上拉和下拉刷新;listView的左拉和右拉刷新;完全自定义的拉动刷新。

      typedef enum{    CAPullToRefreshTypeHeader = 0,    CAPullToRefreshTypeFooter,    CAPullToRefreshTypeLeftHeader,    CAPullToRefreshTypeRightFooter,    CAPullToRefreshTypeCustom }CAPullToRefreshType;


      virtual bool
      init();

      返回值:bool

      参数:

      解释:初始化

      类说明

      CAButton按钮的基类,主要用于定义按钮的状态和回调事件,并响应按钮的触摸事件。按钮有普通、高亮、选中、禁止与全状态五种状态。有点击、重复点击,点击后在按钮范围内滑动、点击后再按钮外部滑动、点击并在按钮内部抬起、点击按下再任意地方抬起与特定值改变时七种按钮回调事件触发的条件。


      基类

      CAView


      CAControl 属性(点击查看方法介绍)

      属性说明
      ControlState按钮的状态
      ControlStateLocked控制状态锁定


      CAControl 方法(点击查看方法介绍)

      属性说明
      setControlStateNormal设置为正常状态
      setControlStateHighlighted设置为高亮状态
      setControlStateDisabled设置为不可选状态
      setControlStateSelected设置为选中状态
      init初始化


      CAControl 属性说明

      ControlState

      类型:CAControlState

      解释:按钮的状态,枚举类型,包括正常、高亮、不可选、选中和全状态五种状态。这里所谓的全状态,即我们对按钮进行操作时,为了方便,无须对按钮的各个状态进行设置,只需设置一个全状态,即可将当前的操作应用到按钮的各个状态,get/set{}。

      typedef enum{   CAControlStateNormal =   0,   CAControlStateHighlighted,   CAControlStateDisabled,   CAControlStateSelected,   CAControlStateAll}CAControlState;


      ControlStateLocked

      类型:bool

      解释:控制状态锁定


      CAControl 方法说明

      void setControlStateNormal()

      返回值:void

      参数:

      说明:设置按钮为正常状态,这也是按钮的默认状态。

       

      void setControlStateHighlighted()

      返回值:void

      参数:

      说明:设置按钮为高亮状态

       

      void setControlStateDisabled()

      返回值:void

      参数:

      说明:设置按钮为不可选状态

       

      void setControlStateSelected()

      返回值:void

      参数:

      说明:设置按钮为选中状态

       

      bool init();

      返回值:bool

      参数:

      解释:初始化

      类说明

      CAWindow主要的作用是作为所有view的载体、容器,分发触摸消息,协同viewController完成对应用程序的管理。应用程序通常只有一个window,即使存在多个window,也只能有一个window能够接收屏幕事件。应用程序启动时创建这个窗口,并往窗口中加入一或多个视图并显示出来,之后我们很少需要再次引用它。CAWindow是所有CAView的根,管理和协调应用程序的显示。


      基类

      CAView


      CAWindow 方法(点击查看方法介绍)

      方法说明
      init
      初始化
      presentModalViewController弹出一个新viewController
      dismissModalViewController隐藏新弹出的viewController


      CAWindow 方法说明

      bool init();

      返回值:bool

      参数:

      解释:初始化


      void presentModalViewController(CAViewController* controller, bool animated)

      返回值:void

      参数:

      类型参数名说明
      CAViewController*controller新弹出的viewController
      boolanimated是否播放弹出动画

      解释:生成一个新的viewController,并从底部将新生成的viewController从屏幕的底部弹出,覆盖原先的画面,可以自己实现新弹出的内容。


      void dismissModalViewController(bool animated)

      返回值:void

      参数:

      解释:将新生成的viewController隐藏。

      类说明

      指屏幕上添加的一个栏目,具有同按钮类似的标题、图片等属性,定义了接口,不能直接使用,其具体的实现形式交由子类完成。


      基类

      CAObject


      CABarItem 属性(点击查看方法介绍)

      属性说明
      TitlebarItem的标题
      ImagebarItem的图片
      TouchEnabledbarItem是否可触摸


      CABarItem 属性介绍

      Title

      类型:string

      解释:显示标题,默认为空,get/set{}。


      Image

      类型:CAImage*

      解释:设置显示图片,默认为空,get/set{}。


      TouchEnabled

      类型:bool

      解释:设置触摸状态的标志位,默认为true,is/set{}。

      类说明

      自定义导航栏按钮,辅助navigationBarItem的功能实现。


      基类

      CABarItem


      CABarButtonItem 属性(点击查看方法介绍)

      属性说明
      HighlightedImage高亮时的图像
      ItemWidth项目宽度
      CustomView自定义视图


      CABarButtonItem 方法(点击查看方法介绍)

      属性说明
      create创建,指定标题、图像和按钮点击时的图像
      init初始化,指定标题、图像和按钮点击时的图像,默认图像和按钮点击时的图像为NULL
      initWithTitle初始化标题,指定标题、图像和按钮点击时的图像,默认图像和按钮点击时的图像为NULL
      initWithImage初始化图像,指定图像和高亮时的图像,默认高亮时的图像为NULL
      initWithCustomView初始化图像,指定图像和按钮点击时的图像,默认按钮点击时的图像为NULL
      setTarget设置回调函数
      getTarget获取回调函数
      getSel获取SEL


      CABarButtonItem 属性说明

      HighlightedImage

      类型:CAImage*

      解释:点击按钮时,高亮状态的图片。set/get{}。


      ItemWidth

      类型:unsigned int

      解释:项目宽度,set/get{}。


      CustomView

      类型:CAView*

      解释:自定义视图,get{}。


      CABarButtonItem 方法说明

      static CABarButtonItem* create(const std::string& title, CAImage* image, CAImage* highlightedImage);

      返回值:CABarButtonItem*

      参数:

      类型参数名说明
      const std::string&title标题
      CAImage*image图像
      CAImage* highlightedImage

      按钮点击时的图像

      解释:创建,指定标题、图像和按钮点击时的图像


      bool init(const std::string& title, CAImage* image = NULL, CAImage* highlightedImage = NULL)

      返回值:bool

      参数:

      类型参数名说明
      const std::string&title标题
      CAImage*image图像
      CAImage* highlightedImage

      按钮点击时的图像

      解释:初始化,指定标题、图像和按钮点击时的图像,默认图像和按钮点击时的图像为NULL


      bool initWithTitle(const std::string& title, CAImage* image = NULL, CAImage* highlightedImage = NULL);

      返回值:bool

      参数:

      类型参数名说明
      const std::string&title标题
      CAImage*image图像
      CAImage* highlightedImage

      按钮点击时的图像

      解释:初始化标题,指定标题、图像和按钮点击时的图像,默认图像和按钮点击时的图像为NULL


      bool initWithImage(CAImage* image, CAImage* highlightedImage = NULL);

      返回值:bool

      参数:

      类型参数名说明
      CAImage*image图像
      CAImage* highlightedImage

      按钮点击时的图像

      解释:初始化图像,指定图像和按钮点击时的图像,默认按钮点击时的图像为NULL


      bool initWithCustomView(CAView* customView);

      返回值:bool

      参数:

      类型参数名说明
      CAView*customView自定义图像

      解释:初始化自定义图像,指定自定义图像


      void setTarget(CAObject* target, SEL_CAControl callfunc);

      返回值:void

      参数:

      类型参数名说明
      CAObject* target当前对象
      SEL_CAControl callfunc函数回调器

      解释:为按钮添加一个点击事件


      CAObject* getTarget();

      返回值:CAObject*

      参数:

      解释:获取回当前对象


      SEL_CAControl getSel();

      返回值:SEL_CAControl

      参数:

      解释:获取按钮点击事件的回调函数器

      类说明

      CrossApp中的任务调度,也就是通常所说的定时器。


      基类

      CAObject


      CAScheduler 方法(点击查看方法介绍)

      方法说明
      schedule启动定时器
      schedule方法重载,启动定时器
      unschedule移除定时器
      unscheduleAllForTarget移除指定对象的所有定时器
      unscheduleAll移除当前对象的所有定时器
      isScheduled是否存在指定对象的定时器
      getScheduler获取一个CAScheduler单例
      update更新
      pauseTarget暂停指定对象的定时器
      resumeTarget恢复指定对象的定时器
      isTargetPaused指定对象定时器是否被暂停
      pauseAllTargets暂停所有定时器
      pauseAllTargetsWithMinPriority暂停所有定时器,以最小优先 
      resumeTargets恢复对象集合的所有定时器


      CAScheduler 方法说明

      static void schedule(SEL_SCHEDULE pfnSelector, CAObject *pTarget, float fInterval,unsigned int repeat, float delay, bool bPaused)

      返回值:void

      参数:

      类型参数名说明
      SEL_SCHEDULEpfnSelector定时器的回调函数
      CAObject*pTarget定时器所属对象
      floatfInterval调度定时器的时间间隔
      unsignedrepeat除第一次外,调度的次数
      floatdelay第一次调度前的延迟时间
      boolbPaused定时器是否为暂停状态

      解释:启动定时器


      示例:

      progress = CAProgress::create();          progress->setFrame(CCRect(winRect.size.width*0.5-100,winRect.size.height*0.5+100,200,16));progress->setProgresstrackColor(ccYELLOW);this->getView()->addSubview(progress);CAScheduler::schedule(schedule_selector(FifthViewController::changeValue),this,1,3,4,false); void FifthViewController::changeValue(float interval){    float currentValue = progress->getProgress();    progress->setProgress(currentValue+0.1);}

      设置一个定时器,调度时间间隔为1秒,延迟4秒调度,除去第一次调度外,重复调度3次。每次调度,进度条的值增加百分之10,所以进度条的值在4次调度为百分之四十。


      static void schedule(SEL_SCHEDULE pfnSelector, CAObject *pTarget, float fInterval, bool bPaused = false);

      返回值:void

      参数:

      类型参数名说明
      SEL_SCHEDULEpfnSelector定时器的回调函数
      CAObject*pTarget定时器所属对象
      floatfInterval调度定时器的时间间隔
      boolbPaused定时器是否为暂停状态

      解释:方法重载,启动定时器


      static void unschedule(SEL_SCHEDULE pfnSelector, CAObject *pTarget);

      返回值:void

      参数:

      类型参数名说明
      SEL_SCHEDULEpfnSelector定时器的回调函数
      CAObject*pTarget定时器所属对象

      解释:移除定时器


      static void unscheduleAllForTarget(CAObject *pTarget);

      返回值:void

      参数:

      类型参数名说明
      CAObject*pTarget定时器所属对象

      解释:移除指定对象的所有定时器


      static void unscheduleAll(void);

      返回值:void

      参数:

      解释:移除当前对象的所有定时器


      static bool isScheduled(SEL_SCHEDULE pfnSelector, CAObject *pTarget);

      返回值:bool

      参数:

      类型参数名说明
      SEL_SCHEDULEpfnSelector定时器的回调函数
      CAObject*pTarget定时器所属对象

      解释:是否存在指定对象的定时器


      static CAScheduler* getScheduler();

      返回值:CAScheduler* 

      参数:

      解释:获取一个CAScheduler单例


      void update(float dt);

      返回值:void

      参数:

      类型参数名说明
      floatdt数据

      解释:更新定时器


      void pauseTarget(CAObject *pTarget);

      返回值:void

      参数:

      类型参数名说明
      CAObject*pTarget定时器所属对象

      解释:暂停指定对象的定时器


      void resumeTarget(CAObject *pTarget);

      返回值:void

      参数:

      类型参数名说明
      CAObject*pTarget定时器所属对象

      解释:恢复指定对象的定时器


      bool isTargetPaused(CAObject *pTarget);

      返回值:bool

      参数:

      类型参数名说明
      CAObject*pTarget定时器所属对象

      解释:指定对象定时器是否被暂停


      CCSet* pauseAllTargets();

      返回值:CCSet*

      参数:

      解释:暂停所有定时器


      CCSet* pauseAllTargetsWithMinPriority(int nMinPriority);

      返回值:CCSet*

      参数:

      类型参数名说明
      intnMinPriority最小优先

      解释:暂停所有定时器,以最小优先


      void resumeTargets(CCSet* targetsToResume);

      返回值:void

      参数:

      类型参数名说明
      CCSet*targetsToResume恢复目标

      解释:恢复对象集合的所有定时器

      类说明

      获取照相或相册图片


      CAMediaDelegate 方法(点击查看方法介绍)

      方法说明
      getSelectedImage获取图片



      CAMediaDelegate 方法说明

      virtual void getSelectedImage(CCImage *image) = 0

      返回值:void

      参数:CCImage *image

      类型参数名说明
      CCImage*image图像

      解释:需要使用相册,照相机功能时需要继承此类,重写getSelectedImage方法,在这个方法内,参数image就是从设备传递过来的图片。

      类说明

              键盘代理类,用于声明返回键和菜单键两种按键事件响应的接口。


      CAKeypadDelegate 方法(点击查看方法介绍)

      方法说明
      keyBackClicked返回键的响应接口
      keyMenuClicked针对wophone和android的菜单键的响应接口


      CAKeypadDelegate 方法

      virtual void keyBackClicked() {};

      返回值:void

      参数:

      解释:返回键的响应接口


      virtual void keyMenuClicked() {};

      返回值:void

      参数:

      解释:针对wophone和android的菜单键的响应接口




      什么是CrossApp?


      CrossApp是一款完全开源、免费、跨平台的移动应用开发引擎,基于最宽松的MIT开源协议,开发者根据自身情况使用CrossApp开发任何商业项目。CrossApp以C++作为开发语言,图形渲染基于OpenGL ES 2.0,采用MVC框架模式。使用CrossApp开发的应用程序支持导出到各大主流移动平台,真正实现"一次编码,多处运行"的跨平台开发技术。

      CrossApp主要由9秒社团自研,官方制定了CrossApp的基本架构,确立了CrossApp的基本雏形,而其后的版本也将由来自各方的开发精英自愿组成的9秒社团常务贡献委员会共同进行更新和维护。

      为什么选用CrossApp?

      1. 跨平台性:CrossApp暂时主要支持目前最主流的移动平台IOS和Android,CrossApp的平台无关性,使得相对传统的iOS和Android原生应用开发,CrossApp更能节省开发的周期和成本,App开发完成后只需要经过较为简单的移植工作,就能轻松实现在不同平台上应用。
      2. 丰富的UI控件:CrossApp的设计宗旨在于为移动应用开发者提供快速、高效的开发解决方案。在此基础上,CrossApp封装了大量的UI控件,各类控件的功能十分丰富,开发者可以直接使用这些控件进行应用的开发。这些控件基本满足应用开发需求中的大部分功能,也免去了自己封装UI控件花费的大量时间,进一步提升开发的效率、节省开发的成本。同时CrossApp也会整合部分由第三方开发者提供的优秀控件资源,更大的丰富CrossApp的UI控件。
      3. 技术支持:官方会提供每天8小时的在线页面问答式服务,每个问题的反馈速度大概在30分钟左右,回复率90%。

      CrossApp耗电优化

      由于之前CrossApp抽取了cocos2d-x的渲染驱动模式,程序生命周期中,在不断重绘,渲染驱动模式的缺点就是CPU占用高因此耗电。显而易见,这种不断的重绘方式对于游戏可能影响不大,但对于APP来说太浪费了。因此,我们针对应用程序的特性,将渲染机制改为事件驱动模式。这种模式的渲染要有外界触发才会重绘,在没有外界触发的时候画面静止,渲染停止,以达到节能的效果。 


      如何使用学学习CrossApp?


      版本下载:

      github地址:https://github.com/9miao/CrossApp
      oschina地址:http://git.oschina.net/9miao/CrossApp

      在学习CrossApp之前必须要了解CrossApp的一些概要


      1.CrossApp的功能?

      CrossApp是一个开源、免费、跨平台的应用开发引擎,使用C++作为开发语言,目前主要支持导出iOS和Android平台的应用程序。有关CrossApp的详细介绍,请参阅CrossApp介绍。


      下载地址:

              CrossApp工作Git :http://git.oschina.net/9miao/CrossApp

              CrossApp GitHub :https://github.com/9miao/CrossApp


      2. CrossApp的基本框架

      CrossApp是基于MVC模式设计的,关于CrossApp的MVC模式的详细说明,请参阅CrossApp的MVC模式


      3.CrossApp要求的开发工具

      在不进行移植导出应用程序安装包的情况下,开发不需要特殊的工具, IDE仅仅VS或Xcode就能满足开发、调试需求。在windows下CrossApp推荐使用Visual Studio 2012或更高版本作为开发的IDE,在Mac下推荐使用Xcode 5.0或更高版本作为开发的IDE。对于移植iOS,不需要特别的环境配置,如果需要移植Android,请分别参阅Windows和Mac下配置Android开发环境。


      4. 创建CrossApp工程的方式

      在Windows下,有两种创建CrossApp工程的方式:使用命令行方式和使用工程创建工具。在Mac下,使用命令行的方式创建。具体创建CrossApp工程的方式请参阅创建CrossApp跨平台工程。


      CrossApp会为我们创建各个平台对应的工程入口,创建的工程默认放在引擎的projects目录下,在不同平台下分别运行不同的工程就能运行起来。例如,在Windows下我们可以直接运行proj.win32里的.sln文件直接在vs中运行工程,当需要移植到Android时需要在eclipse中导入proj.android。

      大家学习CrossApp的时候,搞清楚基础概念性的东西,能够大大提高我们学习CrossApp的效率。今天就和大家简单谈谈CrossApp的坐标系统。

      基础坐标系

      CrossApp采用的坐标系是屏幕坐标系,即左上角为原点,向右为X轴增长方向、向下对应Y轴增长方向。如图:

      CrossApp坐标系
              

      节点的概念

      谈到CrossApp的坐标系,不得不谈到视图类CAView。我们来看看API中CAView的类说明 : 
      视图类CAView是整个CrossApp引擎最基本的类,负责将各式各样的界面呈现出来,我们在App中所能看见的的一切界面其实就是一个个CAView的组合。CAView负责在屏幕上定义矩形区域,在展示用户界面及响应用户界面交互方面发挥关键作用。每个视图对象要负责渲染试图矩形区域中的内容,并响应该区域内发生的操作事件,视图是应用程序用户交互的重要机制。

      除了显示内容和处理事件之外,试图还可以管理一个或多个子视图。我们可以在一个view上面添加多个子view,而作为父view,即父节点,负责管理其直接子视图,并根据需要调整他们的位置和尺寸,以及响应他们没有处理的事件。

      根据类说明我们可以得出以下结论:

      1. 所有能看到的都是CAView的派生类。
      2. CAView上面可以添加子CAView。
      3. 父节点管理子视图


      新手朋友可能不看明白父节点和子视图的概念 并且B是添加在A上的,假如这时候,我们调整A的坐标位置,那么B也将随A的坐标改变而改变。这样我们就说:B是A的子节点(也称子视图),A是B的父节点。 由于B是A的子节点(子视图),那么B则可以使用A的节点坐标系        
      ,我画图来说明:

      CrossApp坐标系2

      如图所示,屏幕上显示了两个CAView分别是A和B,


      上下左右边距、中心点、宽高

      CAView在坐标系中定义了属性:DLayout。API定义如下:

      示意图.jpg

      Layout

      类型:DLayout
      解释:确定view在屏幕上显示的自适应方式。


      起始点、中心点、宽高(旧版本)

      那么CAView在坐标系中分别定义了三个属性:Frame、Bounds、Center。API定义如下:
      E715A5A28490D0516B11CAEC7F3F488.jpg
      Frame
      类型:DRect
      解释:确定view在屏幕上显示的位置和大小,参考的是父视图的坐标系统,frame属性是view及其子类共有属性。DRect包括两个成员,一个是起点坐标origin,另一个是宽高size,创建一个view必须指定Frame,否则看不见任何效果。对于CAView及其子类的frame操作,在createWithFrame、setFrame等操作时,如果DRect的size成员设置为(0,0),则不改变view的大小;如果只想改变view的坐标,不需要改变view的大小,则可采用setFrameOrigin方法来进行设置,get/set{}。

      Bounds
      类型:DRect
      解释:view在自身坐标系统中的位置和大小,参考的是自身的坐标系统,DRect的origin值永远都是(0,0),bounds属性是view及其子类共有属性。在设置frame时,bounds也确定,其值等于frame的值。bounds和frame是有区别的,frame的值会随着view的缩放操作改变,bounds的值则不会改变,get/set{}。

      Center
      类型:DRect
      解释:view的中心点在屏幕上的位置,CrossApp采用的坐标系是屏幕坐标系,即左上角为原点,向右和向下分别对应X和Y轴。在CrossApp中我们确定一个view的位置,是通过origin和size来设定的,为了方便,这里可以直接使用Center将view的中心点设置在我们想要的位置。如果只想改变view的坐标,不需要改变view的大小,则可采用setFrameOrigin方法来进行设置,get/set{}。

      测试代码:

      //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更多应用于打印输出设备,但都表示每英寸所包含的像素点

      PPI

      iphone4iPhone5 PPI

      CrossApp为我们提供的解决方案:

      CrossApp辅助适配方案适配的原则是尽量保持UI的物理尺寸相近,但仍旧可能会有细微变化,具体的变化值由系统决定。在不同设备下,ppi值会有所不同,在保持UI的物理尺寸不变的情况下,在不同设备上的显示效果会有所差别。屏幕尺寸大的设备,显示的内容会相对较多,ppi值越高,则画面越精细。

      CrossApp提供的Dip类型数据

      DPoint:点
      DSize:面积
      DRect:区域(包含一个点位点和面积)

      推荐适配方案

      尽量避免固定值
      使用比例值
      使用基准值
      为了防止拉伸变形,多用CAScale9ImageView控件
      字体大小推荐使用 (10)
      例如:
      DSize(100,200);//不推荐这样写
      DSIze(屏幕宽度/2,屏幕高度/2);//使用比例值
      DPoint(父节点的宽度 -100,父节点的宽度-200);//使用基准值


      CrossApp 横屏竖屏切换方法

      ios方法:

      打开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 如图:

      更改Device Orientation 属性为Landscape Right

      Android 方法:


      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音频库
      extensionsjson、http、sqlite3库等
      licenses本引擎依赖了很多的开源工程,他们的所有许可声明都在这里了。
      scripting支持的脚本
      template包含在不同IDE和平台下来创建CrossApp工程的模板
      projects工程目录
      tools
      各种脚本处理文件、包含工程创建等

      MVC模式简介 
      关于MVC模式,并没有一个非常明确的概念,在不同的开发环境中,设计可能有所区别。

      面向对象的目标就是设计出低耦合、高聚合的程序,MVC模式提供了一种很好的解决方案。CrossApp是基于MVC模式的,这里的MVC即模型层(Model)、视图层(View)、控制层(Controller),三者各司其职,共同维持一个完整的应用程序。

      blob.png

      在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开发应用程序

      使用CrossApp开发移动应用程序必要的准备工作可参考以下步骤:

      blob.png

      1. CrossApp官网http://crossapp.9miao.com/Home/List/index/cid/3.html下载CrossApp的源码,解压至本地计算机。以下是CrossApp解压的目录结构

      blob.png

      2. 开发前的环境配置,在CrossApp的官网有环境配置的详细说明,参考说明进行开发前的环境配置,以便开发完成导出各个平台的安装包。

      3. 以上两步完成后,现在就可以开始我们的App开发,首先需要新建一个自己的CrossApp工程,同样在环境配置文档中也说明了如何使用命令行新建一个CrossApp工程,运行proj.win32下的.sln文件就可以运行我们新建的工程, 

      4. 参考CrossAppAPI文档就可以进行我们跨平台应用程序的开发了,以后我们自己的编码通常就是从AppDelegate类开始,具体的使用范例可以参考CrossApp官网的Demo示例。

      我创建一个名为HelloCrossApp的工程,那么在引擎的根目录的projects文件夹下,将会出现一个名为HelloCrossApp的工程目录。我们打开这个目录可见下图的的结构:

      CrossApp项目结构

      HelloCrossApp的工程目录结构
      Classes存放我们编写的C++代码
      proj.android android平台工程配置
      proj.ios  ios平台工程配置(需要在MacOS下使用xode)
      proj.mac  mac平台工程配置(需要在MacOS下使用xode)
      proj.win32 win32平台工程配置(用于在win下开发,推荐vs2013)
      Resources项目的资源目录(存放:图片、音效、字体等)


      大家打开各自平台使用的工程配置,我以win下vs2013为例子截图

      win下vs2013

      工程配置结构
      HelloCrossApp我们自己的项目
      libCocosDenshion声音库
      libCrossAppCrossApp引擎库
      libExtensions使用的第三方的库(json、sqlit3、network、websockets等)


      打开HelloCrossApp下的Classes目录,看到如下结构:

      HelloCrossApp下的Classes目录

      Classes目录结构
      AppDelegate 目入口
      FirstViewController项目的CAViewController
      RootWindow项目启动的CAWindow


      我在这里引用API给出的CAWindow和CAViewController解释

      什么是CAWindow?

      CAWindow主要的作用是作为所有view的载体、容器,分发触摸消息,协同viewController完成对应用程序的管理。应用程序通常只有一个window,即使存在多个window,也只能有一个window能够接收屏幕事件。应用程序启动时创建这个窗口,并往窗口中加入一或多个视图并显示出来,之后我们很少需要再次引用它。CAWindow是所有CAView的根,管理和协调应用程序的显示。

      什么是CAViewController?

      CAViewController作为CAView的管理器,其最基本的功能就是控制视图的切换。视图控制器在MVC设计模式中扮演控制层(C)的角色, CAViewController的作用就是管理与之关联的view,同时与其他CAViewController相互通信和协调。

      我们在这里详细讲一下AppDelegate 的代码,打开Application.h文件,我在代码上标注了中文的注释,帮助大家理解。

      #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的主要类结构图。

      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脚本创建工程。


      命令行创建工程示例:

      Mac下创建CrossApp工程

      CAVector、CAList、CADeque、CAMap 对应C++中的STL提供的vector、list、deque、map使用方式一致,但是CAVector、CAList、CADeque、CAMap添加和移除元素时,遵循CrossApp的内存管理原则,分别在添加元素的时候Object的引用计数+1,移除的时候Object的引用计数-1.


      我们看看C++中他们的描述与不同。
      c++标准库中,容器vector和list都可以用来存放一组类型相同的数据。而且二者不同于数组的一点是,支持动态增长。但它们还是有有几点不同

      (1)  vector是顺序表,表示的是一块连续的内存,元素被顺序存储;list是双向连接表,在内存中不一定连续。

      (2)当数值内存不够时,vector会重新申请一块足够大的连续内存,把原来的数据拷贝到新的内存里面;list因为不用考虑内存的连续,因此新增开销比vector小。

      (3)list只能通过指针访问元素,随机访问元素的效率特别低,在需要频繁随机存取元素时,使用vector更加合适。

      (4)当向vector插入或者删除一个元素时,需要复制移动待插入元素右边的所有元素;因此在有频繁插入删除操作时,使用list更加合适。

      我再来看看对deque对描述

        deque是双向开口的连续性存储空间。虽说是连续性存储空间,但这种连续性只是表面上的,实际上它的内存是动态分配的,它在堆上分配了一块一块的动态储存区,每一块动态存储去本身是连续的,deque自身的机制把这一块一块的存储区虚拟地连在一起。

          它首次插入一个元素,默认会动态分配512字节空间,当这512字节空间用完后,它会再动态分配自己另外的512字节空间,然后虚拟地连在一起。deque的这种设计使得它具有比vector复杂得多的架构、算法和迭代器设计。它的性能损失比之vector,是几个数量级的差别。所以说,deque要慎用。

      C++中map容器提供一个键值对容器,map只允许一个键对一个值。

      CrossApp设计它们时也遵循类似的设计原则,所以我们使用起来也是类似的用法。

      我们对数据容器的操作一般为:增、删、查、遍历

      我们这里分别对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());

      《一》工欲善其事,必先利其器。

      我们想要在win环境下搭建开发环境需要以下工具,请在必须下载完成后再开始学习:
      首先下载CROSSAPP引擎:crossapp越新越好啦
                      github地址:https://github.com/9miao/CrossApp
                      oschina地址:http://git.oschina.net/9miao/CrossApp  (国内较快) 


      环境需求如下:
              ①操作系统: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环境)
              CrossApp的引擎目录下 双击project-creator.exe
              弹出一下窗口:
               project-creator.exe
              上面填写你的工程名,下面填写你的Android包名-->点击Create Project Now-->(完成)

              创建工程会再引擎的根目录多一个名为:projects的文件夹,大家创建的工程,也就在这个目录下了。


      方法二: Python脚本创建

                 1.双击安装Python
                 2.配置环境path
                  右键计算器(我的电脑)-->属性-->高级系统设置-->环境变量-->系统变量-->双击Path-->在变量值结尾添加:“;C:/Python27”(引号改成你的Python安装路径,注意前面有一个分号";")

                      Python脚本创建
                 3.测试python环境:python --version
      python --version
              看到版本提示Python环境配置成功
                  4.创建工程
                      打开CMD-->引擎根目录 oolsproject-creator  
           
                      输入:python create_project.py -project HelloCrossApp -package com.9miao.crossapp -language cpp
      创建工程

             看到提示成功的信息,工程就创建成功了!


      《三》通过vs2013启动一个项目:

              打开项目目录下:proj.win32HelloCrossApp.sln(你的创建的工程名)
              1.启动vs2013后,右键HelloCrossApp-->设置为启动项目
              2.右键HelloCrossApp-->调试-->启动新实例
              3.第一次启动会等待时间较长,如果没有什么错误信息,将会弹出CrossApp项目窗口
      CrossApp项目窗口
      通过vs2013启动一个项目

      1.以下移植android的环境配置所需的工具:

      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以上版本,配置的方法基本一样,请根据操作系统型号选择配置环境所需的工具包。


      2.安装java环境

      配置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等命令就能看见相关的信息。


      3.移植Android

      将工程导入eclipse,File->New->Other->Android Project from Existing Code,点击 Browse 找到我们引擎目录下 CrossApp 里的 proj.android

      如图:

      移植Android


      将工程导入eclipse,File->New->Other->Android Project from Existing Code,点击 Browse 找到我们新创建的工程目录下的 proj.android

      如图:

      将工程导入eclipse


      4.导入完成后需要确认以下配置:

      1)确认Android 版本和引擎版本一致

      确认Android 版本和引擎版本一致

      如图中 Android 版本都为 4.4.2,如果不一样右键引擎选择 Properties->Android 选择和新建项目版本一样的 Android版本。

      2)更改新建项目的ndk路径为ndk的根目录。例如:D:androidandorid-ndk-r9

      更改新建项目的ndk路径为ndk的根目录

      例如: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


      创建新项目:

      方法一:python脚本创建项目
                      一、打开“终端”,并找到CrossApp引擎根目录下的 tools/project-creator/目录下    

                      tools/project-creator/
                      二、执行命令: python create_project.py 效果如下    

                      python create_project.py

                     三、根据提示 输入创建c++代码项目命令:
                      ./create_project.py -project MyGame -package com.MyCompany.AwesomeGame -language cpp
                      看到下面的提示就创建成功了

                      创建c++代码项目命令
             

      方法二:project-creator.app创建项目
                      双击CrossApp引擎根目录下的project-creator.app

      project-creator.app创建项目
                      输入项目名和android报名

                      blob.png


      这样我们点CrossApp引擎点根目录就会多一个名为projects的文件夹,这里面存放着我们创建的CrossApp项目。

      运行新项目

      一、打开        projects文件夹并选择我们的项目

      二、选择proj.ios文件下的"xxx.xcodeproj"(xxx为你创建的文件名)
                      proj.ios
      三、将启动项目设置为你的项目名  打上对勾
              启动项目

      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

      如图:

      移植Android

      将工程导入eclipse,File->New->Other->Android Project from Existing Code 点击 Browse 找到我们新创建的工程目录下的 proj.android

      如图:

      proj.android


      4.导入完成后需要确认以下配置:

      1)确认 Android 版本和引擎版本一致

      Properties-Android

      如图中 Android 版本都为 4.4.2,如果不一样右键引擎选择 Properties->Android 选择和新建项目版本一样的 Android版本。

      2)更改新建项目的 ndk 路径为ndk的根目录。例如:D:androidandorid-ndk-r9

      更改新建项目的 ndk 路径


      5.以上步骤完成后,我们直接右键工程->Run As Android Application,开始编译我们的工程。


      6.工程导入eclipse后,编译运行过程中所出现的异常和错误以及对应的解决办法如下表所示。


      7.环境配置参考视屏


      类说明

      DLayout自适应布局。


      DLayout 属性(点击属性名可查看属性介绍)

      属性
      说明
      horizontal水平方向
      vertical垂直方向
      DHorizontalLayoutZero水平方向清零
      DVerticalLayoutZero垂直方向清零
      DLayoutZeroLayout 清零
      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中心点


      使用介绍

      示意图.jpg


      //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 属性说明

      horizontal

      类型:DHorizontalLayout

      解释:水平方向


      vertical

      类型:DVerticalLayout

      解释:垂直方向


      DHorizontalLayoutZero

      类型:DHorizontalLayout

      解释:水平方向L、R、W、C清零


      DVerticalLayoutZero

      类型:DVerticalLayout

      解释:垂直方向T、B、H、C清零


      DLayoutZero

      类型:DLayoutZ

      解释:Layout L、R、W、T、B、H、C清零


      DHorizontalLayoutFill

      类型:DHorizontalLayout

      解释:水平方向塞满


      DVerticalLayoutFill

      类型:DVerticalLayout

      解释:垂直方向塞满


      DLayoutFill

      类型:DLayout

      解释:塞满


      CALayout 方法说明

      static inline DHorizontalLayout DHorizontalLayout_L_R(float left, float right);

      返回值: DHorizontalLayout

      参数:

      类型参数名说明
      floatleft左侧边距
      floatright右侧边距

      解释:设置水平方向 左侧边距和右侧边距


      static inline DHorizontalLayout DHorizontalLayout_L_W(float left, float width);

      返回值: DHorizontalLayout

      参数:

      类型参数名说明
      floatleft左侧边距
      floatwidth宽度

      解释:设置水平方向 左侧边距和宽度


      static inline DHorizontalLayout DHorizontalLayout_L_C(float left, float center);

      返回值: DHorizontalLayout

      参数:

      类型参数名说明
      floatleft左侧边距
      floatcenter中心点

      解释:设置水平方向 左侧边距和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)


      static inline DHorizontalLayout DHorizontalLayout_R_W(float right, float width);

      返回值: DHorizontalLayout

      参数:

      类型参数名说明
      floatright左侧边距
      floatwidth宽度

      解释:设置水平方向 右侧边距和宽度


      static inline DHorizontalLayout DHorizontalLayout_R_C(float right, float center);

      返回值: DHorizontalLayout

      参数:

      类型参数名说明
      floatright左侧边距
      floatcenter中心点

      解释:设置水平方向 右侧边距和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)


      static inline DHorizontalLayout DHorizontalLayout_W_C(float width, float center);

      返回值: DHorizontalLayout

      参数:

      类型参数名说明
      floatwidth宽度
      floatcenter中心点

      解释:设置水平方向 宽度和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)


      static inline DVerticalLayout DVerticalLayout_T_B(float top, float bottom);

      返回值: DVerticalLayout

      参数:

      类型参数名说明
      floattop上边距
      floatbottom下边距

      解释:设置垂直方向 上边距和下边距


      static inline DVerticalLayout DVerticalLayout_T_H(float top, float height);

      返回值: DVerticalLayout

      参数:

      类型参数名说明
      floattop上边距
      floatheight宽度

      解释:设置垂直方向 上边距和宽度


      static inline DVerticalLayout DVerticalLayout_T_C(float top, float center);

      返回值: DVerticalLayout

      参数:

      类型参数名说明
      floattop上边距
      floatcenter中心点

      解释:设置垂直方向 上边距和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)


      static inline DVerticalLayout DVerticalLayout_B_H(float bottom, float height);

      返回值: DVerticalLayout

      参数:

      类型参数名说明
      floatbottom下边距
      floatheight宽度

      解释:设置垂直方向 下边距和宽度


      static inline DVerticalLayout DVerticalLayout_B_C(float bottom, float center);

      返回值: DVerticalLayout

      参数:

      类型参数名说明
      floatbottom下边距
      floatcenter中心点

      解释:设置垂直方向 下边距和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)


      static inline DVerticalLayout DVerticalLayout_H_C(float height, float center);

      返回值: DVerticalLayout

      参数:

      类型参数名说明
      floatheight高度
      floatcenter中心点

      解释:设置垂直方向 高度和中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)


      DHorizontalLayout 属性说明

      left

      类型:float

      解释:Layout 水平方向左侧边距(单位DP)


      right

      类型:float

      解释:Layout 水平方向右侧边距(单位DP)


      width

      类型:float

      解释:Layout 水平方向宽度(单位DP)


      center

      类型:float

      解释:Layout 水平方向中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)


      DVerticalLayout 属性说明

      top

      类型:float

      解释:Layout 垂直方向上边距(单位DP)


      bottom

      类型:float

      解释:Layout 垂直方向下边距(单位DP)


      height

      类型:float

      解释:Layout 垂直方向高度(单位DP)


      center

      类型:float

      解释:Layout 垂直方向中心点(中心点的float为当前屏幕的比例。如果想在屏幕水平方向的中间设置为0.5即可)

      类说明

      标签文字类,用于显示文本。


      CALabel 属性 (点击属性名可查看属性介绍)

      属性说明
      Textlabel的文本内容
      FontNamelabel的字体
      FontSizelabel的字体大小
      Dimensionslabel的尺寸大小
      VerticalTextAlignmet文本的竖直对齐方式
      TextAlignment文本的水平对齐方式
      NumberOfLinelabel的行数
      UnderLinelabel的字体下划线
      Boldlabel的字体加粗
      Italicslabel的字体斜体
      EnableCopylabel的字体启用复制
      LineSpacinglabel的字体的行间距
      WordWraplabel的字体自动换行
      LabelSize获取label的大小


      CALabel 方法 (点击方法名可查看方法介绍)

      方法说明
      sizeToFit设置自适应label宽度
      unsizeToFi取消设置自适应label宽度
      applyStylelabel的样式风格
      applyStylelabel的应用风格
      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 属性说明

      Text

      类型:string

      解释:设置文本显示的字符串。 set/get{}。


       FontName

      类型:string

      解释:设置文本显示的字体。FontName


      FontSize

      类型:unsigned int

      解释:设置文本小时的字体大小。set/get{}。


      Dimensions

      类型:DSize

      解释:设置文本显示的尺寸大小。set/get{}。


      VerticalTextAlignmet 

      类型:CAVerticalTextAlignment

      解释:设置文本显示的竖直对齐方式,枚举类型。set/get{}。

      typedef enum    {    CAVerticalTextAlignmentTop,        //顶部对齐方式    CAVerticalTextAlignmentCenter,     //中心对齐方式    CAVerticalTextAlignmentBottom,     //底部对齐方式} CAVerticalTextAlignment;


      TextAlignment
       

      类型:CATextAlignment

      解释:设置文本显示的水平对齐方式,枚举类型。set/get{}。

      typedef enum{    CATextAlignmentLeft,        //左对齐方式    CATextAlignmentCenter,      //中心对齐方式    CATextAlignmentRight,       //右对齐方式} CATextAlignment;

      NumberOfLine

      类型:unsigned int

      解释:设置文本显示的行数。set/get{}。set/get{}。


      UnderLine

      类型:bool

      解释:设置文本显示的字体下划线。set/get{}。


      Bold

      类型:bool

      解释:设置文本显示的字体加粗。set/get{}。


      Italics 

      类型:bool

      解释:设置文本显示的字体斜体。set/get{}。


      EnableCopy

      类型:bool

      解释:设置文本显示的字体启用复制set/get{}。


      LineSpacing 

      类型:int

      解释:设置文本显示的字体行间距。set/get{}。


      WordWrap

      类型: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 sizeToFit();

      返回值: void

      参数:

      解释:设置自适应label宽度,即label的宽度随文本变化而变换


      void unsizeToFit();

      返回值: void

      参数:

      解释:取消设置自适应label宽度


      void applyStyle(const string& sStyleName);

      返回值: void

      参数:

      类型参数名说明
      const string&sStyleNamelabel的样式名称

      解释:label的样式风格


      void applyStyle(const CALabelStyle* pLabelStyle);

      返回值: void

      参数:

      类型参数名说明
      const CALabelStyle*pLabelStylelabel的应用风格

      解释: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&varCAColor4B的类型颜色

      解释:设置label的颜色

          

      const CAColor4B& getColor();

      返回值: 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 属性说明

      PixelFormat

      类型:CAImage::PixelFormat

      解释:像素格式。get{}。


      PixelsWide

      类型:unsigned int

      解释:像素宽。get{}。


      PixelsHigh

      类型:unsigned int

      解释:像素高。get{}。


      ContentSize

      类型:DSize

      解释:内容大小。get{}。


      ShaderProgram

      类型:CAGLProgram*

      解释:着色程序。set/get{}。


      Monochrome

      类型:bool

      解释:单色。is{}。


      Data

      类型:unsigned char*

      解释:数据。get{}。


      DataLenght

      类型: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 longlenght长度

      解释:创建,默认没有缓存


      static CAImage* createWithImageData(const unsigned char * data, unsigned long lenght, const std::string& key);

      返回值:static CAImage*

      参数:

      类型参数名说明
      const unsigned char *data数据
      unsigned longlenght长度
      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字体名称
      floatfontSize字体大小
      const DSize&dimensions图像大小
      CATextAlignmenthAlignment文本对齐
      CAVerticalTextAlignmentvAlignment垂直文本对齐
      boolisForTextField = false是否显示文本框(默认不显示)
      intiLineSpacing = 0文本间距(默认0)
      boolbBold = false是否显示加粗(默认不加粗)
      boolbItalics = false是否显示斜体(默认不斜体)
      boolbUnderLine = false是否显示下划线(默认不显示)

      解释:创建,并指定文本内容


      static int getFontHeight(const char* pFontName, unsigned long nSize);

      返回值:static int

      参数:

      类型参数名说明
      const char*pFontName字体名字
      unsigned longnSize字体大小

      解释:获得字体高度


      static int getStringWidth(const char* pFontName, unsigned long nSize, const std::string& pText); 

      返回值:static int

      参数:

      类型参数名说明
      const char*pFontName字体名字
      unsigned longnSize字体大小
      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 longnSize字体大小
      const std::string&pText文本内容
      intiLimitWidth最大宽度
      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 longnSize字体大小
      const std::string&pText文本内容
      intiLimitWidth最大宽度
      intiLineSpace = 0间距
      boolbWordWrap = 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图像
      floatscaleX缩放X轴
      floatscaleY缩放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 intpixelsWide像素宽
      unsigned intpixelsHigh像素高

      解释:创建,并指定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 intpixelsWide像素宽
      unsigned intpixelsHigh像素高
      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 longdataLen数据长度

      解释:初始化,并指定其图像缓存


      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 intpixelsWide像素宽
      unsigned int pixelsHigh像素高

      解释:初始化,并指定其原数据


      const char* description(void);

      返回值:const char*

      参数:

      解释:获取图像描述


      void releaseData();

      返回值: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完全路径
      boolbIsToRGB = false是否用RGB格式保存(默认否)

      解释:是否保存成RGB格式


      const char* getImageFileType();

      返回值:const char*

      参数:

      解释:获取图像文件类型


      float getAspectRatio();

      返回值:float

      参数:

      解释:得到长宽比


      CAImage::Format detectFormat(const unsigned char * data, unsigned long dataLen);

      返回值: CAImage::Format

      参数:

      类型参数名说明
      const unsigned char *data数据
      unsigned longdataLen数据长度

      解释:检测格式


      void premultipliedImageData();

      返回值:void

      参数:

      解释:进行图像数据


      void repremultipliedImageData();

      返回值:void

      参数:

      解释:再进行图像数据


      void updateGifImageWithIndex(unsigned int index);

      返回值:void

      参数:

      类型参数名说明
      unsigned intindexindex

      解释:通过index更新GIF图像


      unsigned int getGifImageIndex();

      返回值:unsigned int

      参数:

      解释:获取GIF图像的index


      unsigned int getGifImageCounts();

      返回值:unsigned int

      参数:

      解释:获取GIF图像的参数


      static void reloadAllImages();

      返回值:static void

      参数:

      解释:重新加载所有图像


      CAImageView 属性说明

      ImageViewScaleType

      类型:CAImageViewScaleType

      解释:图像缩放类型。set/get{}。


      AnimationImages

      类型:CAVector<CAImage*>

      解释:动画图像。set/get{}。


      AnimationDuration

      类型:float

      解释:动画间隔的时间。set/get{}。


      AnimationRepeatCount

      类型:unsigned int

      解释:动画重复次数。set/get{}。


      CAImageView 方法说明

      static CAImageView* create();

      返回值: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 init(void);

      返回值: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 startAnimating();

      返回值:void

      参数:

      解释:开始动画


      void stopAnimating();

      返回值:void

      参数:

      解释:结束动画


      bool isAnimating();

      返回值: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重新绘制图像


      CAScale9ImageView
      CAScale9ImageView的实现非常巧妙,通过将原纹理资源切割成9部分(PS: 这也是叫九宫图的原因),根据想要的尺寸,完成以下的三个步骤:
          (1)保持4个角部分不变形
          (2)单向拉伸4条边(即在4个角两两之间的边,比如上边,只做横向拉伸)
          (3)双向拉伸中间部分(即九宫图的中间部分,横向,纵向同时拉伸,PS:拉伸比例不一定相同)

      CAScale9ImageView

      实例代码:
      CAScale9ImageView
      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 属性说明

      OriginalSize

      类型:DSize

      解释:原始尺寸,get{}。


      CapInsets

      类型:DSize

      解释:拉伸区域,get{}。


      InsetLeft

      类型:float

      解释:左侧拉伸距离。get{}。


      InsetTop

      类型:float

      解释:上侧拉伸距离。get{}。


      InsetRight

      类型:float

      解释:右侧拉伸距离。get{}。


      InsetBottom

      类型: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 init();

      返回值: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

      参数:

      类型参数名说明
      floatinsetLeft左侧拉伸区域

      解释设置左侧拉伸区域


      virtual void setInsetTop(float insetTop);

      返回值:virtual void

      参数:

      类型参数名说明
      floatinsetTop上侧拉伸区域

      解释设置上侧拉伸区域


      virtual void setInsetRight(float insetRight);

      返回值:virtual void

      参数:

      类型参数名说明
      floatinsetRight右侧拉伸区域

      解释设置右侧拉伸区域


      virtual void setInsetBottom(float insetBottom);

      返回值:virtual void

      参数:

      类型参数名说明
      floatinsetBottom下侧拉伸区域

      解释设置下侧拉伸区域


      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

      参数:

      类型参数名说明
      floatalpha透明度

      解释设置透明度


      virtual CAView* copy();

      返回值:virtual CAView*

      参数:

      解释复制


      virtual void setImage(CAImage* image);

      返回值:virtual void

      参数:

      类型参数名说明
      CAImage*image图像

      解释设置图像


      using CAView::getImage;

      返回值:using

      参数:

      解释获取图像


      virtual void draw(void);

      返回值:virtual void

      参数:

      类型参数名说明
      voidvoid

      解释重新绘制图像

      类说明

      在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 属性说明

      AllowsSelected

      类型:bool

      解释:是否可以选择。is/set{}。


      Selected

      类型:bool

      解释:是否被选择。is{}。


      TouchClick

      类型: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 init();

      返回值:virtual bool

      参数:

      解释:初始化


      void setBackGroundViewForState(const CAControlState& controlState, CAView *var);

      返回值:void

      参数:

      类型
      参数名说明
      const CAControlState&controlStateButton的状态
      CAView*var图像

      解释:设置Button的状态的背景View

      typedef enum{    CAControlStateNormal:       缺省状态    CAControlStateHighlighted:  高亮状态    CAControlStateDisabled:     禁用状态    CAControlStateSelected:     选中状态    CAControlStateAll:          全部状态}CAControlState;


      CAView* getBackGroundViewForState(const CAControlState& controlState);

      返回值:CAView*

      参数:

      类型
      参数名说明
      const CAControlState&controlStateButton的状态

      解释:获取Button的状态的背景View

      typedef enum{    CAControlStateNormal:       缺省状态    CAControlStateHighlighted:  高亮状态    CAControlStateDisabled:     禁用状态    CAControlStateSelected:     选中状态    CAControlStateAll:          全部状态}CAControlState;

      void setImageForState(const CAControlState& controlState, CAImage* var);

      返回值:void

      参数:

      类型
      参数名说明
      const CAControlState&controlStateButton的状态
      CAImage*var图像

      解释:设置Button的状态和图像(不支持九宫格)

      typedef enum{    CAControlStateNormal:       缺省状态    CAControlStateHighlighted:  高亮状态    CAControlStateDisabled:     禁用状态    CAControlStateSelected:     选中状态    CAControlStateAll:          全部状态}CAControlState;

      CAImage* getImageForState(const CAControlState& controlState);

      返回值:CAImage*

      参数:

      类型
      参数名说明
      const CAControlState&controlStateButton的状态

      解释:获取Button的状态和图像(不支持九宫格)

      typedef enum{    CAControlStateNormal:       缺省状态    CAControlStateHighlighted:  高亮状态    CAControlStateDisabled:     禁用状态    CAControlStateSelected:     选中状态    CAControlStateAll:          全部状态}CAControlState;

      void setTitleForState(const CAControlState& controlState, const std::string& var);

      返回值:void

      参数:

      类型
      参数名说明
      const CAControlState&controlStateButton的状态
      const std::string&var文本

      解释:设置Button标题的显示文本

      typedef enum{    CAControlStateNormal:       缺省状态    CAControlStateHighlighted:  高亮状态    CAControlStateDisabled:     禁用状态    CAControlStateSelected:     选中状态    CAControlStateAll:          全部状态}CAControlState;

      const std::string& getTitleForState(const CAControlState& controlState);

      返回值:const std::string&

      参数:

      类型
      参数名说明
      const CAControlState&controlStateButton的状态

      解释:获取Button标题的显示文本

      typedef enum{    CAControlStateNormal:       缺省状态    CAControlStateHighlighted:  高亮状态    CAControlStateDisabled:     禁用状态    CAControlStateSelected:     选中状态    CAControlStateAll:          全部状态}CAControlState;

      void setImageColorForState(const CAControlState& controlState, const CAColor4B& var);

      返回值:void

      参数:

      类型
      参数名说明
      const CAControlState&controlStateButton的状态
      const CAColor4B&var颜色

      解释:设置Button的图像颜色和状态

      typedef enum{    CAControlStateNormal:       缺省状态    CAControlStateHighlighted:  高亮状态    CAControlStateDisabled:     禁用状态    CAControlStateSelected:     选中状态    CAControlStateAll:          全部状态}CAControlState;

      void setTitleColorForState(const CAControlState& controlState, const CAColor4B& var);

      返回值:void

      参数:

      类型
      参数名说明
      const CAControlState&controlStateButton的状态
      const CAColor4B&var颜色

      解释:设置Button的标题颜色和状态

      typedef enum{    CAControlStateNormal:       缺省状态    CAControlStateHighlighted:  高亮状态    CAControlStateDisabled:     禁用状态    CAControlStateSelected:     选中状态    CAControlStateAll:          全部状态}CAControlState;

      void setTitleFontName(const std::string& var);

      返回值: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

      参数:

      类型
      参数名说明
      floatfontSize字体大小

      解释:设置标题字体大小


      virtual void setControlState(const CAControlState& var);

      返回值:virtual void

      参数:

      类型
      参数名说明
      const CAControlState&var状态

      解释:设置状态

      typedef enum{    CAControlStateNormal:       缺省状态    CAControlStateHighlighted:  高亮状态    CAControlStateDisabled:     禁用状态    CAControlStateSelected:     选中状态    CAControlStateAll:          全部状态}CAControlState;

      void interruptTouchState();

      返回值: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 CAControl::addTarget;

      返回值:using

      参数:

      解释:添加回调事件


      using CAControl::removeTarget;

      返回值:using

      参数:

      解释:删除回调事件


      using CAControl::removeAllTargets;

      返回值:using

      参数:

      解释:删除所有回调事件


      类说明

      CATextView是多行输入框,其主要用法和CATextField相似。


      CATextView 属性 (点击属性名可查看属性介绍)

      属性说明
      TextFontSizeTextView的字体大小
      TextTextView的文本内容
      TextColorTextView的文字颜色
      DelegateTextView绑定Delegate
      TextViewAlignTextView的文本对齐方式
      ReturnTypeTextView的确认键类型


      CATextView 方法 (点击方法名可查看方法介绍)

      方法说明
      setBackGroundImage背景图像
      resignFirstResponder隐藏键盘第一响应者状态
      becomeFirstResponder弹出键盘第一响应者状态
      createWithFrame创建一个CATextView,并指定其Frame
      createWithCenter创建一个CATextView,并指定其Center


      CATextView 属性介绍            

      TextFontSize

      类型:int

      解释:设置TextView的字体大小。set/get{}。


      Text

      类型:std::string

      解释:设置TextView的文本内容。set/get{}。


      TextColor

      类型:CAColor4B

      解释:设置TextView的文字颜色。set/get{}。


      Delegate

      类型:CATextViewDelegate*

      解释:TextView绑定Delegate。set/get{}。


      TextViewAlign

      类型:TextViewAlign

      解释:TextView的文本对齐方式。set/get{}。


      ReturnType

      类型: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
      intheight高度

      解释:键盘高度


      virtual bool textViewShouldChangeCharacters(CATextView* sender, unsigned int location, unsigned int lenght, const std::string& changedText);

      返回值:bool

      参数:

      类型参数名说明
      CATextView*sender当前textField
      unsigned int location光标选中的字符串,即被替换的字符串
      unsigned intlenghtlength为0时,表示删除
      const std::string&changedText更改文本时Text内容

      解释:TextView文字更改后触发(返回true表示修改生效,返回false表示不做修改,textField的内容不变)

      类说明

      CASwitch控件,它是开关控件,可以实现类型开关。


      CASwitch 属性 (点击属性名可查看属性介绍)

      属性说明
      Onswitch是否处于开状态 
      TouchClickswitch是否处于触摸点击事件
      OnImage获取开状态的图像
      OffImage获取关状态的图像
      ThumbTintImage获取Switch的图像


      CASwitch 方法 (点击方法名可查看方法介绍)

      方法说明 
      setOnImageswitch开状态时的图像
      setOffImageswitch关状态时的图像
      setThumbTintImageswitch的图像
      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 属性介绍

      On();

      类型:bool

      解释:查看是否处于开状态 。is{}。


      TouchClick();

      类型:bool

      解释:查看是否处于触摸点击事件。is{}。


      OnImage

      类型:CAImage*

      解释:获取开状态的图像。get{}。


      OffImage

      类型:CAImage*

      解释:获取关状态的图像。get{}。


      ThumbTintImage

      类型:CAImage*

      解释:获取Switch的图像。get{}。


      CASwitch 方法介绍

      void setOnImage(CAImage* onImage) 

      返回值:void

      参数:

      类型参数名说明
      CAImage*onImage开状态时的图像

      解释:设置开状态时的图像


      void setOffImage(CAImge* offImage)

      返回值:void

      参数:

      类型参数名说明
      CAImge*offImage关状态时的图像

      解释:设置关状态时的图像


      void setThumTintImage(CAImage* thumbTintImage)      

      返回值:void

      参数:

      类型参数名说明
      CAImage*thumbTintImageSwitch的背景图像

      解释:设置Switch的背景图像


      void setIsOn(bool on, bool animated);

      返回值:void

      参数:

      类型参数名说明
      boolon是否处于开状态
      boolanimated是否添加动画

      解释:设置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_CAControlselector函数回调器

      解释:添加回调事件


      void removeTarget(CAObject* target, SEL_CAControl selector);

      返回值:void

      参数:

      类型参数名说明
      CAObject*target当前对象 
      SEL_CAControlselector函数回调器

      解释:删除回调事件


      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 属性说明

      ProgressTintColor

      类型:CAColor4B

      解释:设置进度的颜色。set/get{}。


      ProgressTrackColor

      类型:CAColor4B

      解释:设置背景的颜色。set/get{}。


      ProgressTintImage

      类型:CAImage*

      解释:设置进度的图片。set/get{}。


      ProgressTrackImage

      类型:CAImage*

      解释:设置背景的图片。set/get{}。


      CAProgress 方法说明

      bool init();

      返回值:bool

      参数:

      解释:初始化


      static CAProgress* create();

      返回值: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

      参数:

      类型
      参数名
      说明
      floatprogress进度值
      boolanimated = false是否显示动画

      解释:设置进度


      float getProgress();

      返回值: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));    }}

      CAAlertView 方法说明

      void setMessageFontName(std::string &var);

      返回值:void

      参数:

      类型参数名说明
      std::stringvar信息文字

      解释:设置提示信息的字体


      void setTitle(std::string var, CAColor4B col);

      返回值:void

      参数:

      类型参数名说明
      CAColor4Bcol标题颜色
      std::stringvar信息文字

      解释:设置提示框的标题


      void setAlertMessage(std::string var, CAColor4B col);

      返回值:void

      参数:

      类型参数名说明
      CAColor4Bcol提示信息颜色
      std::stringvar提示信息字体

      解释:设置提示框的提示信息


      void addButton(const std::string& btnText, CAColor4B col = ccc4(3, 100, 255, 255), CAImage* pNormalImage = NULL,AImage* pHighlightedImage = NULL);

      返回值:void

      参数:

      类型参数名说明
      std::string&btnText按钮文字
      CAColor4Bcol按钮颜色
      CAImage*pNormalImage按钮图像
      AImage*pHighlightedImage高亮度图像

      解释:添加一个按钮到CAAlertView


      void setTarget(CAObject* target, SEL_CAAlertBtnEvent selector);

      返回值:void

      参数:

      类型参数名说明
      CAObject*target监听目标
      SEL_CAAlertBtnEventselector监听选择器

      解释:设置 CAAlertView 的监听


      void show();

      返回值:void

      参数:

      解释:设置显示提示框


      void hide();

      返回值:void

      参数:

      解释:设置隐藏提示框void


      static bool hideWithDisplayed();

      返回值:static bool

      参数:

      解释:隐藏提示框


      static CAAlertView* create();

      返回值: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();     }

      然后我们就要在FirstViewController.cpp中去实现这写代理函数:
      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 属性介绍        

      TouchEnabledAtSubviews

      类型:bool

      解释:触摸事件启用在子视图。is/set{}。


      ViewSize

      类型:DSize

      解释:设置容器的内部大小。set/get{}。


      Bounces

      类型:bool

      解释:设置是否滚动回弹。is/set{}。


      BounceHorizontal

      类型:bool

      解释:水平方向回弹。is/set{}。


      BounceVertical

      类型:bool

      解释:竖直方向回弹。is/set{}。


      ShowsHorizontalScrollIndicator

      类型:bool

      解释:设置是否显示水平滚动条。is/set{}。


      ShowsVerticalScrollIndicator

      类型:bool

      解释:设置是否显示竖直滚动条。is/set{}。


      MaximumZoomScale

      类型:float

      解释:最大缩放比例,默认值为1。set/get{}。


      MinimumZoomScale

      类型:float

      解释:最小缩放比例,默认值为1。set/get{}。


      ZoomScale

      类型:float

      解释: 滑动层缩放比例, 默认值为1。get{}。


      ScrollViewDelegate

      类型:CAScrollViewDelegate*

      解释:滚动视图代表。set/get{}。


      ShowsScrollIndicators

      类型:bool

      解释:显示滚动指示器。is/set{}。


      HeaderRefreshView

      类型:CAPullToRefreshView*

      解释:头部刷新试图。set/get{}。


      FooterRefreshView

      类型:CAPullToRefreshView*

      解释:尾部刷新试图。set/get{}。


      Tracking

      类型:bool

      解释:查看 ScrollView 是否正在滚动。is{}。

              

      Zooming

      类型:bool

      解释:查看 ScrollView 是否正在进行缩放控制。is{}。


      Decelerating

      类型:bool

      解释:查看 ScrollView 是否在惯性运动中。is{}。


      MultitouchGesture

      类型:MultitouchGesture

      解释:多点触控手势,set/get{}。


      CAScrollView 方法介绍

      void setContentOffset(const DPoint& offset, bool animated);

      返回值:void

      参数:

      类型参数名说明
      const DPoint&offset偏移量
      boolanimated是否播放动画

      解释:设置内容偏移量


      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子视图
      intz数量

      解释:插入子视图


      void removeAllSubviews();

      返回值:void

      参数:

      解释:删除所有子视图


      void removeSubview(CAView* subview);  

      返回值:void

      参数:

      类型参数名说明
      CAView*subview子视图

      解释:删除子视图


      CAView* getSubviewByTag(int aTag); 

      返回值:CAView*

      参数:

      类型参数名说明
      intaTag子视图标签

      解释:通过标签获取子视图


      void removeSubviewByTag(int tag);

      返回值:void

      参数:

      类型参数名说明
      inttag子视图标签

      解释:通过标签删除子视图


      CAView* getSubviewByTag(int aTag);

      返回值:CAView* 

      参数:

      类型参数名说明
      intaTag子视图标签

      解释:过标签获取子视图


      DPoint getContentOffset();

      返回值:DPoint

      参数:

      解释:获得内容偏移量


      void setZoomScale(float zoom);

      返回值:void

      参数:

      类型参数名说明
      floatzoom缩放比例

      解释:设置缩放比例


      virtual bool isReachBoundaryLeft();

      返回值:bool

      参数:

      解释:是否到达左边界


      virtual bool isReachBoundaryRight();

      返回值:bool

      参数:

      解释:是否到达右边界


      virtual bool isReachBoundaryUp();

      返回值:bool

      参数:

      解释:是否到达上边界


      virtual bool isReachBoundaryDown();

      返回值:bool

      参数:

      解释:是否到达下边界


      void endHeaderRefresh();

      返回值:void

      参数:

      解释:端头刷新


      void endFooterRefresh();

      返回值:void

      参数:

      解释:端尾刷新


      DPoint getContentOffset();

      返回值: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触摸
      floatoff_xx坐标偏移量
      floatoff_yy坐标偏移量
      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 init();

      返回值:virtual bool

      参数:

      解释:初始化


      void startPullToHeaderRefreshView();

      返回值:void

      参数:

      解释:开始顶端刷新视图


      virtual void switchPCMode(bool var);

      返回值:virtual void

      参数:

      类型参数名说明
      boolvar开关

      解释:开关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 属性(点击查看方法介绍)

      属性说明
      ListViewOrientationlistView的滚动方向
      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 方法(点击查看方法介绍)

      方法说明
      numberOfIndexcell的总数量
      listViewHeightForIndexcell的高度
      listViewCellAtIndex添加生成cell
      listViewWillDisplayCellAtIndex回调当前将要显示的CAListView


      CAListViewCell 属性(点击查看方法介绍)

      属性说明
      ContentView获得内容视图
      BackgroundView设置背景视图
      ReuseIdentifier设置重用标识符
      Index获得重用标识符
      ControlStateEffect设置控制状态效应
      AllowsSelectedCAListViewCell是否可以选择


      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 属性介绍

      ListViewOrientation 

      类型:CAListViewOrientation*

      解释:listView的滚动方向。set/get{}。


      ListViewDataSource

      类型:CAListViewDataSource*

      解释:添加数据代理。set/get{}。


      ListViewDelegate    

      类型:CAListViewDelegate*

      解释:添加交互代理。set/get{}。


      ListHeaderView      

      类型:CAView*

      解释:添加头部视图。set/get{}。


      ListFooterView      

      类型:CAView*

      解释:添加尾部视图。set/get{}。


      SeparatorColor     

      类型:CAColor4B

      解释:设置cell分割线的颜色。set/get{}。


      ListHeaderHeight

      类型:unsigned int

      解释:设置头部视图的高度。set/get{}。


      ListFooterHeight

      类型:unsigned int

      解释:设置尾部视图的高度。set/get{}。


      SeparatorViewHeight

      类型:unsigned int

      解释:设置fell分割线的高度。set/get{}。


      AllowsHeadAndFootHover  

      类型:bool

      解释:允许头和尾的悬停。set/get{}。


      AllowsSelection   

      类型:bool

      解释:是否开启cell选择。is{}。


      AllowsMultipleSelection    

      类型:bool

      解释:是否可以多选cell。is{}。


      CAListView 方法介绍

      virtual void setAllowsSelection(bool var);  

      返回值:virtual void

      参数:

      类型
      参数名
      说明
      boolvar 

      解释:是否可以多选cell


      void setSelectAtIndex(unsigned int index);  

      返回值:void

      参数:

      类型
      参数名
      说明
      unsigned intindexcell的索引值

      解释:根据索引设置cell为选中状态


      void setUnSelectAtIndex(unsigned int index);  

      返回值:void

      参数:

      类型
      参数名
      说明
      unsigned intindexcell的索引值

      解释:根据索引设置cell为未选中状态


      virtual void setShowsScrollIndicators(bool var); 

      返回值:virtual void

      参数:

      类型
      参数名
      说明
      boolvar是否显示滚动条

      解释:设置显示滚动条


      CAListViewCell* dequeueReusableCellWithIdentifier(const char* reuseIdentifier);

      返回值:CAListViewCell*

      参数:

      类型参数名说明
      const char*reuseIdentifier标识符

      解释:可以重用单元标示符


      CAListViewCell* cellForRowAtIndex(unsigned int index);

      返回值:CAListViewCell*

      参数:

      类型参数名说明
      unsigned intindexcell的索引值

      解释:通过cell索引获取Index


      virtual void switchPCMode(bool var)

      返回值:virtual void

      参数:

      类型参数名说明
      boolvar开关

      解释:开关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

      参数:

      类型参数名说明
      CAListViewlistView当前的listView
      unsigned intindexcell的索引值

      解释:选中cell时调用

              

      virtual void listViewDidDeselectCellAtIndex(CAListView *listView, unsigned int index)        

      返回值:virtual void

      参数:

      类型参数名说明
      CAListViewlistView当前的listView
      unsigned intindexcell的索引值

      解释:取消选择cell时调用


      CAListViewDataSource方法介绍

      virtual unsigned int numberOfIndex(CAListView *listView)        

      返回值:virtual unsigned int

      参数:

      类型参数名说明
      CAListViewlistView当前的listView

      解释:cell的总数量


      virtual unsigned int listViewHeightForIndex(CAListView *listView, unsigned int index)        

      返回值:virtual unsigned int

      参数:

      类型参数名说明
      CAListViewlistView当前的listView
      unsigned intindexcell的索引值

      解释:cell的高度


      virtual CAListViewCell* listViewCellAtIndex(CAListView *listView, const DSize& cellSize, unsigned int index)       

      返回值:virtual CAListViewCell*

      参数:

      类型参数名说明
      CAListViewlistView当前的listView
      DSizecellSizecell的size
      unsigned intindexcell的索引值

      解释:添加生成cell


      virtual void listViewWillDisplayCellAtIndex(CAListView* table, CAListViewCell* cell, unsigned int index) ;

      返回值:virtual void

      参数:

      类型参数名说明
      CAListViewlistView当前的listView
      CAListViewCellcell显示添加的cell
      unsigned intindexcell的索引值

      解释:回调当前将要显示的CAListView


      CAListViewCell 属性介绍

      ContentView

      类型:CAView*

      解释:获得内容视图。get{}。


      BackgroundView

      类型:CAView*

      解释:设置背景视图。set/get{}。


      ReuseIdentifier

      类型:std::string

      解释:设置重用标识符。set/get{}。


      Index

      类型:unsigned int

      解释:获得重用标识符。set/get{}。


      ControlStateEffect

      类型:bool

      解释:设置控制状态效应。is/set{}。


      AllowsSelected

      类型: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 方法(点击查看方法介绍)

      方法说明
      numberOfIndexcell的数量
      listViewHeightForIndexcell的高度
      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 indexcell的索引值

      解释:cell的高度


      virtual CAListViewCell* listViewCellAtIndex(CAListView *listView, const DSize& cellSize, unsigned int index) = 0;

      返回值:CAListViewCell*

      参数:

      类型参数名说明
      CAListView*listView当前的listView
      const DSize&cellSizecell的size
      unsigned int indexcell的索引值

      解释:生成cell 


      virtual void listViewWillDisplayCellAtIndex(CAListView* table, CAListViewCell* cell, unsigned int index) {};

      返回值:void

      参数:

      类型参数名说明
      CAListView*tableListView的table
      CAListView*listView当前的listView
      unsigned int indexcell的索引值

      解释:回调当前将要显示的list

      类说明

      CAListView的数据代理


      CAListViewDelegate 方法(点击查看方法介绍)

      方法说明
      listViewDidSelectCellAtIndex选中cell时调用
      listViewDidDeselectCellAtIndex取消选中时调用 


      CAListViewDelegate 方法说明

      virtual void listViewDidSelectCellAtIndex(CAListView *listView, unsigned int index)

      返回值:void

      参数:

      类型参数名说明
      CAListView*listView当前的listView
      unsigned int indexcell的索引值

      解释:选中cell时调用

       

      virtual void listViewDidDeselectCellAtIndex(CAListView *listView, unsigned int index)

      返回值:void

      参数:

      类型参数名说明
      CAListView*listView当前的listView
      unsigned int indexcell的索引值

      解释:取消选中时调用 

      类说明 

      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重用标识符
      Sectionsection
      Rowcell
      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 属性说明

      TableViewDataSource

      类型:CATableViewDataSource*

      解释:添加数据代理。set/get{}。


      TableViewDelegate

      类型:CATableViewDelegate*

      解释:添加交互代理。set/get{}。


      TableHeaderView

      类型:CAView*

      解释:添加头部视图。set/get{}。


      TableFooterView

      类型:CAView*

      解释:添加尾部视图。set/get{}。


      SeparatorColor

      类型:CAColor4B

      解释:设置cell分割线的颜色。set/get{}。


      TableHeaderHeight

      类型:unsigned int

      解释:设置头部视图的高度。set/get{}。


      TableFooterHeight

      类型:unsigned int

      解释:设置尾部视图的高度。set/get{}。


      SeparatorViewHeight

      类型:unsigned int

      解释:设置cell分割线的高度。set/get{}。


      AllowsSelection

      类型:bool

      解释:是否开启cell选择。is{}。


      AllowsMultipleSelection

      类型:bool

      解释:是否可以多选cell。is{}。


      AlwaysTopSectionHeader

      类型:bool

      解释:设置cell顶部的标题。is/set{}。


      AlwaysBottomSectionFooter

      类型:bool

      解释:设置cell底部的标题。is/set{}。


      CATableView 方法说明

      virtual void setAllowsSelection(bool var);

      返回值:virtual void

      参数:

      类型
      参数名说明

      类说明

      CATableView的数据代理类,用于定义tableView的数据接口。


      CATableViewDataSource 方法(点击查看方法介绍)

      方法说明
      tableCellAtIndex获取指定cell
      tableViewHeightForRowAtIndexPath获取指定的cell高度
      numberOfRowsInSection获取对应的section所包含的cell个数
      numberOfSections获取tableview包含的section个数
      tableViewSectionViewForHeaderInSection在tableView中通过索引获取头部Section
      tableViewHeightForHeaderInSection在tableView中通过索引获取头部Section高度
      tableViewSectionViewForFooterInSection在tableView中通过索引获取尾部Section
      tableViewHeightForFooterInSection在tableView中通过索引获取尾部Section高度
      tableViewWillDisplayCellAtIndex回调当前将要显示的tableView


      CATableViewDataSource 方法说明

      virtual CATableViewCell* tableCellAtIndex(CATableView* table, const DSize& cellSize, unsigned int section, unsigned int row) = 0;

      返回值:CATableViewCell* 

      参数:

      类型参数名说明
      CATableView*table当前tableView
      const DSize&cellSizecell的size
      unsigned intsectioncell所属的区域
      unsigned introwcell所在行数

      解释:获取指定cell


      virtual unsigned int tableViewHeightForRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row) = 0;

      返回值:unsigned int

      参数:

      类型参数名说明
      CATableView*table当前tableView
      unsigned intsectioncell所属的区域
      unsigned introwcell所在行数

      解释:获取指定的cell高度


      virtual unsigned int numberOfRowsInSection(CATableView* table, unsigned int section) = 0;

      返回值:unsigned int

      参数:

      类型参数名说明
      CATableView*table当前tableView
      unsigned intsectioncell所属的区域

      解释:获取对应的section所包含的cell个数


      virtual unsigned int numberOfSections(CATableView* table);

      返回值:unsigned int

      参数:

      类型参数名说明
      CATableView*table当前tableView

      解释:获取tableview包含的section个数


      virtual CAView* tableViewSectionViewForHeaderInSection(CATableView* table, const DSize& viewSize, unsigned int section);

      返回值:CAView*

      参数:

      类型参数名说明
      CATableView*table当前tableView
      const DSize&viewSizeview的size
      unsigned intsectioncell所属的区域

      解释:在tableView中通过索引获取头部Section


      virtual unsigned int tableViewHeightForHeaderInSection(CATableView* table, unsigned int section);

      返回值:unsigned int

      参数:

      类型参数名说明
      CATableView*table当前tableView
      const DSize&cellSizecell的size

      解释:在tableView中通过索引获取头部Section高度


      virtual CAView* tableViewSectionViewForFooterInSection(CATableView* table, const DSize& viewSize, unsigned int section);

      返回值:CAView*

      参数:

      类型参数名说明
      CATableView*table当前tableView
      const DSize&viewSizeview的size
      unsigned intsectioncell所属的区域

      解释:在tableView中通过索引获取尾部Section


      virtual unsigned int tableViewHeightForFooterInSection(CATableView* table, unsigned int section);

      返回值:unsigned int

      参数:

      类型参数名说明
      CATableView*table当前tableView
      unsigned intsectioncell所属的区域

      解释:在tableView中通过索引获取尾部Section高度


      virtual void tableViewWillDisplayCellAtIndex(CATableView* table, CATableViewCell* cell, unsigned int section, unsigned int row) {};

      返回值:void

      参数:

      类型参数名说明
      CATableView*table当前tableView
      CATableViewCell*cellcell
      unsigned intsectioncell所属的区域
      unsigned introwcell所在行数

      解释:回调当前将要显示的tableView


      类说明

      CATableView的代理类,用于响应拖动和点击事件。


      CATableViewDelegate 方法(点击查看方法介绍)

      方法说明
      tableViewDidSelectRowAtIndexPath选中cell时触发
      tableViewDidDeselectRowAtIndexPath取消选择时触发


      CATableViewDelegate 方法说明

      virtual void tableViewDidSelectRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row)

      返回值:void

      参数:

      类型参数名说明
      CATableView* table当前tableView
      unsigned int sectioncell所属的区域
      unsigned introwcell所在行数

      解释:选中cell时触发


      virtual void tableViewDidDeselectRowAtIndexPath(CATableView* table, unsigned int section, unsigned int row)

      返回值:void

      参数:

      类型参数名说明
      CATableView* table当前tableView
      unsigned int sectioncell所属的区域
      unsigned introwcell所在行数

      解释:取消选择时触发

      类说明

      作为CATableView的cell添加进tableView,具备CAControl的功能。


      基类

      CAControl


      CATableViewCell 属性(点击查看方法介绍)

      属性说明
      ContentView内容视图
      BackgroundView设置cell的背景视图
      ReuseIdentifier复用标示符
      SectionSection
      Row
      ControlStateEffect控制状态
      AllowsSelected允许选择


      CATableViewCell 方法(点击查看方法介绍)

      方法说明
      create创建,并指定cell的复用标示符
      initWithReuseIdentifier初始化,并指定复用标示符


      CATableViewCell 属性说明

      ContentView

      类型:CAView

      解释:内容视图,get{}。


      BackgroundView

      类型:CAView*

      解释:设置cell的背景视图,set/get{}。


      ReuseIdentifier

      类型:std::string

      解释:复用标示符,set/get{}。


      Section

      类型:unsigned int

      解释:Section,get{}。


      Row

      类型:unsigned int

      解释:行,get{}。


      ControlStateEffect

      类型:bool

      解释:控制状态,is/set{}。


      AllowsSelected

      类型:bool

      解释:允许选择,is/set{}。


      CATableViewCell 方法说明

      static CATableViewCell* create(const std::string& reuseIdentifier);

      返回值:CATableViewCell*

      类型:

      类型参数名说明
      const std::string&reuseIdentifier复用标示符

      解释:创建,并指定cell的复用标示符


      virtual bool initWithReuseIdentifier(const std::string& reuseIdentifier);

      返回值:bool

      类型:

      类型参数名说明
      const std::string&reuseIdentifier复用标示符

      解释:初始化,并指定复用标示符

      类说明

      CACollectionView同CATableView类似,主要用于数据的展示,实现了tableView的基本功能,同时对tableView拓展,更完美的进行展示数据。


      CACollectionView的使用方法和CATableView比较类似,我们也要分别使用:CACollectionView、CACollectionViewCell、CACollectionViewDelegate、CACollectionViewDataSource来构建。

      CACollectionView是表格视图的容器,是容器的载体。

      CACollectionViewCell是表格视图的一个单元(本节后面简称cell)。

      CACollectionViewDelegate是交互代理,响应cell选中和取消状态。

      CACollectionViewDataSource是数据代理,设置Selection个数及Selection包含cell个数。


      CACollectionView 属性(点击查看方法介绍)

      属性说明
      CollectionViewDataSource添加数据代理
      CollectionViewDelegate添加交互代理
      CollectionHeaderView添加头部视图
      CollectionFooterView添加尾部视图
      CollectionHeaderHeight设置头部的高度
      CollectionFooterHeight设置尾部的高度
      HoriInterval水平间隔
      VertInterval垂直间隔
      AllowsSelection允许选择
      AllowsMultipleSelection允许多个选择
      AlwaysTopSectionHeader总是顶部的标题
      AlwaysBottomSectionFooter总是底部的节尾


      CACollectionView 方法(点击查看方法介绍)

      方法说明
      createWithFrame创建,并指定其Frame,默认Frame为(0,0,0,0)
      createWithCenter创建,并指定其Center,默认Center为(0,0,0,0)
      dequeueReusableCellWithIdentifier从复用队列中寻找指定标识符的cell
      setAllowsSelection是否开启cell选择
      setAllowsMultipleSelection是否可以多选cell
      setSelectRowAtIndexPath通过索引选择一行
      setUnSelectRowAtIndexPath通过索引取消选择一行
      setShowsScrollIndicators设置显示滚动指示器
      cellForRowAtIndexPath根据索引获取显示的cell
      getHighlightCollectionCell获取高亮显示的collectioncell
      switchPCMode开关PC模式
      init初始化
      clearData清除数据
      reloadData重载数据


      CACollectionViewDelegate 方法(点击查看方法介绍)

      方法说明
      collectionViewDidSelectCellAtIndexPath选中cell时调用
      collectionViewDidDeselectCellAtIndexPath取消选择cell时调用


      CACollectionViewDataSource 方法(点击查看方法介绍)

      方法说明
      collectionCellAtIndex获取指定cell
      collectionViewHeightForRowAtIndexPathcell的高度
      numberOfItemsInRowsInSection每个cell里的item数量
      numberOfRowsInSection获取对应的section所包含的cell个数
      numberOfSections获取tableview包含的section个数
      collectionViewSectionViewForHeaderInSectionheaderView的内容
      collectionViewHeightForHeaderInSection每个section的headerView
      collectionViewSectionViewForFooterInSectionfooterView的内容
      collectionViewHeightForFooterInSection每个section的footerView
      collectionViewWillDisplayCellAtIndex回调当前将要显示的collectionView


      我们本机的示例,不再使用自定义的CACollectionViewCell的方法来实现,我们来看看本节的示例代码:

      FirstViewController.h内容:

      #ifndef __HelloCpp__ViewController__#define __HelloCpp__ViewController__ #include <iostream>#include "CrossApp.h" USING_NS_CC; class FirstViewController : public CAViewController, CACollectionViewDelegate, CACollectionViewDataSource{     public:    FirstViewController();    virtual ~FirstViewController();     protected:        void viewDidLoad();         void viewDidUnload();     public:    //选中item时调用    virtual void collectionViewDidSelectCellAtIndexPath(CACollectionView *collectionView, unsigned int section, unsigned int row, unsigned int item);         //取消item是调用    virtual void collectionViewDidDeselectCellAtIndexPath(CACollectionView *collectionView, unsigned int section, unsigned int row, unsigned int item);         //获取指定cell    virtual CACollectionViewCell* collectionCellAtIndex(CACollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int row, unsigned int item);         //section的个数    virtual unsigned int numberOfSections(CACollectionView *collectionView);         //section中的cell个数    virtual unsigned int numberOfRowsInSection(CACollectionView *collectionView, unsigned int section);        //每个cell中Item的个数    virtual unsigned int numberOfItemsInRowsInSection(CACollectionView *collectionView, unsigned int section, unsigned int row);         //cell的高度    virtual unsigned int collectionViewHeightForRowAtIndexPath(CACollectionView* collectionView, unsigned int section, unsigned int row);     private:    //用于获得屏幕的size    CADipSize size;         //CACollectionView    CACollectionView* p_Conllection;         //颜色容器    std::vector<CAColor4B> colorArr;}; #endif /* defined(__HelloCpp__ViewController__) */

      FirstViewController.cpp内容:

      #include "FirstViewController.h" FirstViewController::FirstViewController(){} FirstViewController::~FirstViewController(){} void FirstViewController::viewDidLoad(){    //获得屏幕大小    size = this->getView()->getBounds().size;         //随机出颜色    for (int i = 0; i < 40; i++)    {        char r = CCRANDOM_0_1() * 255;        char g = CCRANDOM_0_1() * 255;        char b = CCRANDOM_0_1() * 255;                 //将随机的ccc4对象放入到容器里        colorArr.push_back(ccc4(r, g, b, 255));    }         //生成CACollectionView    p_Conllection = CACollectionView::createWithFrame(this->getView()->getBounds());         //开启选中    p_Conllection->setAllowsSelection(true);         //开启多选    p_Conllection->setAllowsMultipleSelection(true);         //绑定交互代理    p_Conllection->setCollectionViewDelegate(this);         //绑定数据代理    p_Conllection->setCollectionViewDataSource(this);         //item水平间的距离    p_Conllection->setHoriInterval(40);         //itme竖直间的距离    p_Conllection->setVertInterval(40);         //添加到屏幕渲染    this->getView()->addSubview(p_Conllection);} void FirstViewController::viewDidUnload(){    // Release any retained subviews of the main view.    // e.g. self.myOutlet = nil;} void FirstViewController::collectionViewDidSelectCellAtIndexPath(CACollectionView *collectionView, unsigned int section, unsigned int row, unsigned int item){    //选中    CCLog("选中");} void FirstViewController::collectionViewDidDeselectCellAtIndexPath(CACollectionView *collectionView, unsigned int section, unsigned int row, unsigned int item){    //取消选中    CCLog("取消选中");} CACollectionViewCell* FirstViewController::collectionCellAtIndex(CACollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int row, unsigned int item){    //计算 如果cell个数大于颜色数组,则返回空    if (row * 3 + item >= colorArr.size())    {        return NULL;    }         //获得    DSize _size = cellSize;         //根据标识获得CACollectionViewCell    CACollectionViewCell* p_Cell = collectionView->dequeueReusableCellWithIdentifier("CrossApp");         //如果没有找到相应的CACollectionViewCell则新建一个    if (p_Cell == NULL)    {        p_Cell = CACollectionViewCell::create("CrossApp");                 //生成Item背景        CAView* itemImage = CAView::createWithFrame(DRect(0, 0, _size.width, _size.height));        itemImage->setTag(99);        p_Cell->addSubview(itemImage);        DSize itemSize = itemImage->getBounds().size;                 //生成itemCALabel        CALabel* itemText = CALabel::createWithCenter(DRect(itemSize.width*0.5, itemSize.height*0.5, 150, 40));        itemText->setTag(100);        itemText->setFontSize(29);        itemText->setTextAlignment(CATextAlignmentCenter);        itemText->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);        itemImage->addSubview(itemText);    }         //设置Item背景颜色    CAView* itemImageView = p_Cell->getSubviewByTag(99);    itemImageView->setColor(colorArr.at(row * 3 + item));    CCLog("%d", row * 3 + item);         //设置itme文本显示    char pos[20] = "";    sprintf(pos, "(%d,%d,%d)", section, row, item);    CALabel* itemText = (CALabel*)p_Cell->getSubviewByTag(99)->getSubviewByTag(100);    itemText->setText(pos);    return p_Cell;} unsigned int FirstViewController::numberOfSections(CACollectionView *collectionView){    return 1;} unsigned int FirstViewController::numberOfRowsInSection(CACollectionView *collectionView, unsigned int section){    return colorArr.size() % 3 == 0 ? colorArr.size() / 3 : colorArr.size() / 3 + 1;} unsigned int FirstViewController::numberOfItemsInRowsInSection(CACollectionView *collectionView, unsigned int section, unsigned int row){    return 3;} unsigned int FirstViewController::collectionViewHeightForRowAtIndexPath(CACollectionView* collectionView, unsigned int section, unsigned int row){    return (this->getView()->getBounds().size.width - 40 * 4) / 3;}

      CACollectionView 属性说明

      CollectionViewDataSource

      类型:CACollectionViewDataSource*

      解释:添加数据代理。set/get{}。

          

      CollectionViewDelegate

      类型:CACollectionViewDelegate*

      解释:添加交互代理。set/get{}。


      CollectionHeaderView

      类型:CAView*

      解释:添加头部视图。set/get{}。


      CollectionFooterView

      类型:CAView**

      解释:添加尾部视图。set/get{}。


      CollectionHeaderHeight

      类型:unsigned int

      解释:设置头部的高度set/get{}。


      CollectionFooterHeight

      类型:unsigned int

      解释:设置尾部的高度set/get{}。

          

      HoriIntervalsetHoriInterval

      类型:unsigned int

      解释:水平间隔。set/get{}。


      VertInterval

      类型:unsigned int

      解释:垂直间隔。set/get{}。


      AllowsSelection

      类型:bool

      解释:允许选择。is{}。


      AllowsMultipleSelection

      类型:bool

      解释:允许多个选择。is{}。


      AlwaysTopSectionHeader

      类型:bool

      解释:总是顶部的标题。is/set{}。


      AlwaysBottomSectionFooter

      类型:bool

      解释:总是底部的节尾。is/set{}。


      CACollectionView 方法说明

      static CACollectionView* createWithFrame(const DRect& rect);

      返回值:static CACollectionView*

      参数:

      类型参数名说明
      DRectrect区域大小

      解释:创建,并指定其Frame,默认Frame为(0,0,0,0)


      static CACollectionView* createWithCenter(const DRect& rect);

      返回值:static CACollectionView*

      参数:

      类型参数名说明
      DRectrect中心点的位置及大小

      解释:创建,并指定其Center,默认Center为(0,0,0,0)


      CACollectionViewCell* dequeueReusableCellWithIdentifier(const char* reuseIdentifier);

      返回值:CACollectionViewCell*

      参数:

      类型参数名说明
      charreuseIdentifier重用标识符

      解释:从复用队列中寻找指定标识符的cell


      virtual void setAllowsSelection(bool var);

      返回值:virtual void

      参数:

      类型参数名说明
      boolvar是否开启cell选择

      解释:设置是否开启cell选择


      virtual void setAllowsMultipleSelection(bool var);

      返回值:virtual void

      参数:

      类型参数名说明
      boolvar是否可以多选cell

      解释:设置是否可以多选cell


      void setSelectRowAtIndexPath(unsigned int section, unsigned int row, unsigned int item);

      返回值:void

      参数:

      类型参数名说明
      unsigned intsectionSection
      unsigned int row
      unsigned intitem项目

      解释:设置索引路径选择行


      void setUnSelectRowAtIndexPath(unsigned int section, unsigned int row, unsigned int item);

      返回值:void

      参数:

      类型参数名说明
      unsigned intsectionSection
      unsigned int row
      unsigned intitem项目

      解释:设置索引路径不允许选择行


      virtual void setShowsScrollIndicators(bool var);

      返回值:virtual void

      参数:

      类型参数名说明
      boolvar是否显示滚动指示器

      解释:设置显示滚动指示器


      CACollectionViewCell* cellForRowAtIndexPath(unsigned int section, unsigned int row, unsigned int item);

      返回值:CACollectionViewCell*

      参数:

      类型参数名说明
      unsigned intsectionSection
      unsigned int row
      unsigned intitem项目

      解释:根据索引获取显示的cell


      CACollectionViewCell* getHighlightCollectionCell();

      返回值:CACollectionViewCell*

      参数:

      解释:获取高亮显示的collectioncell


      virtual void switchPCMode(bool var);

      返回值:virtual void

      参数:

      类型参数名说明
      boolvar开关

      解释:开关PC模式


      virtual bool init();

      返回值:virtual bool

      参数:

      解释:初始化


      void clearData();

      返回值:void

      参数:

      解释:清除数据


      void reloadData();

      返回值:void

      参数:

      解释:重载数据


      CACollectionViewDelegate 方法说明

      virtual void collectionViewDidSelectCellAtIndexPath(CACollectionView *collectionView, unsigned int section, unsigned int row, unsigned int item){};

      返回值:virtual void

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell
      unsigned intsectionSection
      unsigned int row
      unsigned intitem项目

      解释:选中cell时调用


      virtual void collectionViewDidDeselectCellAtIndexPath(CACollectionView *collectionView, unsigned int section, unsigned int row, unsigned int item){};

      返回值:virtual void

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell
      unsigned intsectionSection
      unsigned int row
      unsigned intitem项目

      解释:取消选择cell时调用


      CACollectionViewDataSource 方法说明

      virtual CACollectionViewCell* collectionCellAtIndex(CACollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int row, unsigned int item)

      返回值:virtual CACollectionViewCell*

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell
      DSizecellSizecell大小
      unsigned intsectionSection
      unsigned int row
      unsigned intitem项目

      解释:获取指定cell


      virtual unsigned int collectionViewHeightForRowAtIndexPath(CACollectionView* collectionView, unsigned int section, unsigned int row)

      返回值:virtual unsigned int

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell
      unsigned intsectionSection
      unsigned int row
      unsigned intitem项目

      解释:cell的高度


      virtual unsigned int numberOfItemsInRowsInSection(CACollectionView *collectionView, unsigned int section, unsigned int row)

      返回值:virtual unsigned int

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell
      unsigned intsectionSection
      unsigned int row
      unsigned intitem项目

      解释:每个cell里的item数量


      virtual unsigned int numberOfRowsInSection(CACollectionView *collectionView, unsigned int section)

      返回值:virtual unsigned int

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell
      unsigned intsectionSection

      解释:获取对应的section所包含的cell个数


      virtual unsigned int numberOfSections(CACollectionView *collectionView)

      返回值:virtual unsigned int

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell

      解释:获取tableview包含的section个数


      virtual CAView* collectionViewSectionViewForHeaderInSection(CACollectionView *collectionView, const DSize& viewSize, unsigned int section)

      返回值:virtual CAView*

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell
      DSizecellSizecell大小
      unsigned intsectionSection

      解释:headerView的内容


      virtual unsigned int collectionViewHeightForHeaderInSection(CACollectionView *collectionView, unsigned int section)

      返回值:virtual unsigned int 

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell
      unsigned intsectionSection

      解释:每个section的headerView


      virtual CAView* collectionViewSectionViewForFooterInSection(CACollectionView *collectionView, const DSize& viewSize, unsigned int section)

      返回值:virtual CAView*

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell
      const DSize&viewSize视图大小
      unsigned intsectionSection

      解释:footerView的内容


      virtual unsigned int collectionViewHeightForFooterInSection(CACollectionView *collectionView, unsigned int section)

      返回值:virtual unsigned int

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell
      CCSizecellSizecell大小
      unsigned intsectionSection

      解释:每个section的footerView


      virtual void collectionViewWillDisplayCellAtIndex(CACollectionView* table, CACollectionViewCell* cell, unsigned int section, unsigned int row, unsigned int item) {};

      返回值:virtual void

      参数:

      类型参数名说明
      CACollectionView*table
      CACollectionViewcollectionViewcell
      unsigned intsectionSection
      unsigned int row
      unsigned intitem项目

      解释:回调当前将要显示的collectionView




      类说明

      CACollectionView的数据代理


      CACollectionViewDataSource 方法(点击查看方法介绍)

      方法说明
      collectionCellAtIndex获取指定cell
      collectionViewHeightForRowAtIndexPathcell的高度
      numberOfItemsInRowsInSection每个cell里的item数量
      numberOfRowsInSection获取对应的section所包含的cell个数
      numberOfSections获取tableview包含的section个数
      collectionViewSectionViewForHeaderInSectionheaderView的内容
      collectionViewHeightForHeaderInSection每个section的headerView
      collectionViewSectionViewForFooterInSectionfooterView的内容
      collectionViewHeightForFooterInSection每个section的footerView
      collectionViewWillDisplayCellAtIndex回调当前将要显示的Collection


      CACollectionViewDataSource 方法说明

      virtual CACollectionViewCell* collectionCellAtIndex(CACollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int row, unsigned int item)

      返回值:virtual CACollectionViewCell*

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell
      DSizecellSizecell大小
      unsigned intsectionSection
      unsigned int row
      unsigned intitem项目

      解释:获取指定cell

      示例:

      CACollectionViewCell* CollectionViewTest::collectionCellAtIndex(CACollectionView *collectionView, const CCSize& cellSize, unsigned int section, unsigned int row, unsigned int item){    CACollectionViewCell* p_Cell = collectionView->dequeueReusableCellWithIdentifier("CrossApp");    if (p_Cell == NULL)    {        p_Cell = CACollectionViewCell::create("CrossApp");        CAImageView* itemView = CAImageView::createWithImage(CAImage::create("logo.png"));        itemView->setCenter(CCRect(cellSize.width*0.5,cellSize.height*0.5,cellSize.height * 0.90,cellSize.height * 0.90));        itemView->setTag(99);        p_Cell->addSubview(itemView);          CALabel* itemText = CALabel::createWithCenter(CCRect(itemView->getBounds().size.width*0.5,                                                             itemView->getBounds().size.height*0.5,                                                             itemView->getBounds().size.width*0.6,                                                             itemView->getBounds().size.width*0.5));        itemText->setTag(100);        itemText->setFontSize(29 * CROSSAPP_ADPTATION_RATIO);        itemText->setTextAlignment(CATextAlignmentCenter);        itemText->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);        itemView->addSubview(itemText);      }    char pos[20] = "";    sprintf(pos, "(%d,%d,%d)",section, row, item);    CALabel* itemText = (CALabel*)p_Cell->getSubviewByTag(99)->getSubviewByTag(100);    itemText->setText(pos);      return p_Cell;}


      virtual unsigned int collectionViewHeightForRowAtIndexPath(CACollectionView* collectionView, unsigned int section, unsigned int row)

      返回值:virtual unsigned int

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell
      unsigned intsectionSection
      unsigned int row
      unsigned intitem项目

      解释:cell的高度


      virtual unsigned int numberOfItemsInRowsInSection(CACollectionView *collectionView, unsigned int section, unsigned int row)

      返回值:virtual unsigned int

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell
      unsigned intsectionSection
      unsigned int row
      unsigned intitem项目

      解释:每个cell里的item数量


      virtual unsigned int numberOfRowsInSection(CACollectionView *collectionView, unsigned int section)

      返回值:virtual unsigned int

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell
      unsigned intsectionSection

      解释:获取对应的section所包含的cell个数


      virtual unsigned int numberOfSections(CACollectionView *collectionView)

      返回值:virtual unsigned int

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell

      解释:获取tableview包含的section个数


      virtual CAView* collectionViewSectionViewForHeaderInSection(CACollectionView *collectionView, const DSize& viewSize, unsigned int section)

      返回值:virtual CAView*

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell
      DSizecellSizecell大小
      unsigned intsectionSection

      解释:headerView的内容


      virtual unsigned int collectionViewHeightForHeaderInSection(CACollectionView *collectionView, unsigned int section)

      返回值:virtual unsigned int 

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell
      unsigned intsectionSection

      解释:每个section的headerView


      virtual CAView* collectionViewSectionViewForFooterInSection(CACollectionView *collectionView, const DSize& viewSize, unsigned int section)

      返回值:virtual CAView*

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell
      const DSize&viewSize视图大小
      unsigned intsectionSection

      解释:footerView的内容


      virtual unsigned int collectionViewHeightForFooterInSection(CACollectionView *collectionView, unsigned int section)

      返回值:virtual unsigned int

      参数:

      类型参数名说明
      CACollectionViewcollectionViewcell
      CCSizecellSizecell大小
      unsigned intsectionSection

      解释:每个section的footerView


      virtual void collectionViewWillDisplayCellAtIndex(CACollectionView* table, CACollectionViewCell* cell, unsigned int section, unsigned int row, unsigned int item) {};

      返回值:virtual void

      参数:

      类型参数名说明
      CACollectionView*table
      CACollectionViewcollectionViewcell
      unsigned intsectionSection
      unsigned int row
      unsigned intitem项目

      解释:回调当前将要显示的Collection


      类说明

      CASlider是滚动条控件,主要作用是方便数值调节,如音量大小控制、缩放视图等操作。


      CASlider 属性(点击查看方法介绍)

      属性说明
      TouchClick触摸点击
      Value
      MinValue最小值
      MaxValue最大值
      TrackHeight滚动条高度
      MinTrackTintImage设置前景图片(已经划过的部分) 
      MaxTrackTintImage设置后景图片(未划过的部分) 
      ThumbTintImage滚动块的图片


      CASlider 方法(点击查看方法介绍)

      方法说明
      createWithFrame创建,并指定其Frame,默认Frame为(0,0,0,0)
      createWithCenter创建,并指定其Center,默认Center为(0,0,0,0)
      addTarget添加回调事件
      addTargetForTouchUpSide添加回调事件的触摸
      removeTarget删除回调事件
      setValue设定值
      setMinValue设定最小值
      setMaxValue设定最大值
      setTrackHeight设置滚动条高度
      setMinTrackTintImage设置前景图片(已经划过的部分) 
      setMaxTrackTintImage设置后景图片(未划过的部分) 
      setThumbTintImage设置滚动块的图片
      initWithFrame初始化r,并指定其Frame
      initWithCenter初始化,并指定其Center
      ccTouchBegan触摸事件开始时的回调函数
      ccTouchMoved触摸事件中触点移动时的回调函数
      ccTouchEnded触摸事件结束时的回调函数
      layoutSubViews子视图布局


      我们可以通过设置CASlider的最大值和最小值来确定其值的范围,可以通过设置图片改变滚动条的样子,我们这里就利用CASlider来控制一张图片的缩放大小,来演示一下CASlider的使用方法:
      首先我们在FirstViewController.h中添加一个监听函数,用于监听CASlider的值的变化。

      //监听函数    void zoomViewBySliderValue(CAControl* control, DPoint point)

      然后我们在FirstViewController.cpp中去实现CASlider来控制CAImageView的缩放变化。


      void FirstViewController::viewDidLoad(){    //获得屏幕大小    CCSize size = this->getView()->getBounds().size;         //创建CAImageView    CAImageView* imageView = CAImageView::createWithImage(CAImage::create("HelloWorld.png"));    imageView->setCenter(DRect(size.width*0.5, size.height*0.5, 800, 1200));         //设置tag    imageView->setTag(1);        //添加    this->getView()->addSubview(imageView);         //创建CASlider    CASlider* slider = CASlider::createWithCenter(DRect(size.width*0.5, size.height*0.2, size.width*0.8, 20));         //绑定监听    slider->addTarget(this, CAControl_selector(FirstViewController::zoomViewBySliderValue));        //添加    this->getView()->insertSubview(slider, 1);         //创建CALabel    CALabel* label = CALabel::createWithCenter(DRect(size.width*0.5, size.height*0.1, size.width*0.8, 40));        //设置文本    char temptext[40];    sprintf(temptext, "ScaleValue:%0.2f", slider->getValue());    label->setText(temptext);         //设置居中    label->setTextAlignment(CATextAlignmentCenter);    label->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);        //设置Tag    label->setTag(3);    this->getView()->addSubview(label);} void FirstViewController::zoomViewBySliderValue(CAControl* control, DPoint point){    //获得silder对象    CASlider* slider = (CASlider*)control;         //获得silder的当前值    float zoomValue = slider->getValue();         //根据tag值获得image    CAImageView* image = (CAImageView*)this->getView()->getSubviewByTag(1);         //设置image的缩放比    image->setScale(zoomValue);         //根据tag获得CALabel    CALabel* label = (CALabel*)this->getView()->getSubviewByTag(3);         //设置文本    char temptext[40];    sprintf(temptext, "ScaleValue:%0.2f", slider->getValue());    label->setText(temptext);}

      我们通过addTarget来为CASlider绑定一个监听,我们又在监听函数中,根据CASlider的变化来改变CAImageView的缩放值,同样的原理我们也可以进行其它数值的改变,大家举一反三可以自己去尝试一下。


      CASlider 属性说明

      TouchClick

      类型:bool

      解释:触摸点击。is{}。

          

      Value     

      类型:float

      解释:值。get{}。


      MinValue 

      类型:float

      解释:最小值。get{}。


      MaxValue  

      类型:float

      解释:最大值。get{}。


      TrackHeight 

      类型:float

      解释:滚动条高度。get{}。


      MinTrackTintImage

      类型:CAImage*

      解释:设置前景图片(已经划过的部分) 。get{}。


      MaxTrackTintImage

      类型:CAImage*

      解释:设置后景图片(未划过的部分) 。get{}。


      ThumbTintImage

      类型:CAImage*

      解释:滚动块的图片 。get{}。


      CASlider 方法说明

      static CASlider* createWithFrame(const DRect& rect);

      返回值:static CASlider

      参数:

      类型
      参数名说明
      DRectrect区域大小

      解释:创建,并指定其Frame,默认Frame为(0,0,0,0)


      static CASlider* createWithCenter(const DRect& rect);

      返回值:static CASlider

      参数:

      类型
      参数名说明
      DRectrect中心点的位置及大小

      解释:创建,并指定其Center,默认Center为(0,0,0,0)


      void addTarget(CAObject* target, SEL_CAControl selector);

      返回值:void

      参数:

      类型
      参数名说明
      CAObject*target目标
      SEL_CAControlselector选择器

      解释:添加回调事件


      void addTargetForTouchUpSide(CAObject* target, SEL_CAControl selector);

      返回值:void

      参数:

      类型
      参数名说明
      CAObject*target目标
      SEL_CAControlselector选择器

      解释:添加回调事件的触摸


      void removeTarget(CAObject* target, SEL_CAControl selector);

      返回值:void

      参数:

      类型
      参数名说明
      CAObject*target目标
      SEL_CAControlselector选择器

      解释:删除回调事件


      virtual void setValue(float value);

      返回值:virtual void

      参数:

      类型
      参数名说明
      floatvalue

      解释:设定值


      virtual void setMinValue(float minValue);

      返回值:virtual void

      参数:

      类型
      参数名说明
      floatminValue最小值

      解释:设定最小值


      virtual void setMaxValue(float maxValue);

      返回值:virtual void

      参数:

      类型
      参数名说明
      floatmaxValue最大值

      解释:设定最大值


      virtual void setTrackHeight(float trackHeight);

      返回值:virtual void

      参数:

      类型
      参数名说明
      floattrackHeight滚动条高度

      解释:设置滚动条高度


      virtual void setMinTrackTintImage(CAImage* minTrackTintImage);

      返回值:virtual void

      参数:

      类型
      参数名说明
      CAImage*minTrackTintImage前景图片(已经划过的部分)  

      解释:设置前景图片(已经划过的部分)  


      virtual void setMaxTrackTintImage(CAImage* maxTrackTintImage);

      返回值:virtual void

      参数:

      类型
      参数名说明
      CAImage*maxTrackTintImage后景图片(未划过的部分) 

      解释:设置后景图片(未划过的部分) 


      virtual void setThumbTintImage(CAImage* thumbTintImage);

      返回值:virtual void

      参数:

      类型
      参数名说明
      CAImage*thumbTintImage滚动块的图片 

      解释:设置滚动块的图片 

            

      void setContentSize(const CCSize & var);

      返回值:void

      参数:

      类型
      参数名说明
      CCSizevar内容大小

      解释:设置内容大小


      bool initWithFrame(const DRect& rect);

      返回值:bool

      参数:

      类型参数名说明
      const DRect&rect区域大小

      解释:初始化,并指定其Frame


      bool initWithCenter(const DRect& rect);

      返回值:bool

      参数:

      类型参数名说明
      const DRect&rect中心点的位置及大小

      解释:初始化,并指定其Center


      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 layoutSubViews();

      返回值:virtual void

      参数:

      解释:子视图布局



      类说明

      CAStepper是步进控件,它的作用和CASlider非常类似,只是CAStepper的改变的固定值,它包括左右两部分,左部为减少,右部为增加。


      CAStepper 属性(点击查看方法介绍)

      属性说明
      Continuous设置连续
      AutoRepeat设置自动重复
      Wraps设置是否可在最大值和最小值循环
      Value设定值
      MinValue设定最小值
      MaxValue设定最大值
      StepValue设置步进值
      TouchEffect设置接触效应


      CAStepper 方法(点击查看方法介绍)

      方法说明
      create创建,默认Frame为(0,0,0,0)
      createWithFrame创建,并指定其Frame,默认Frame为(0,0,0,0)
      createWithCenter创建,并指定其Center,默认Center为(0,0,0,0)
      setBackgroundImage设置背景图像
      getBackgroundImageForState获取背景图像
      setIncrementImage设置右部增加部分的背景
      getIncrementImageForState获取右部增加部分的背景
      setDecrementImage设置左部减少部分的背景
      getDecrementImageForState获取左部减少部分的背景
      addTarget添加回调事件
      removeTarget删除回调事件
      removeAllTargets删除所有回调事件
      init初始化
      initWithFrame初始化,并指定其Frame
      initWithCenter初始化,并指定其Center
      onEnter输入
      onExit退出
      visit访问
      setDividerColor设置分频器颜色
      getDividerColor获取分频器颜色
      setTailorImageAtIndex设置索引裁剪图像
      getTailorImageAtIndex获取索引截取图像


      我们尝试这用CAStepper去控制一张图片的旋转,每次旋转30度。
      同样我们首先要在FirstViewController.h中添加一个监听函数,来监听CAStepper的值的变化。

      //监听函数    void stepperValueChange(CAControl* control, DPoint point);

      然后我们在FirstViewController.cpp添加CAStepper控件并为其绑定监听。

      void FirstViewController::viewDidLoad(){    // Do any additional setup after loading the view from its nib.    DRect winRect = this->getView()->getBounds();    DSize size = winRect.size;         //创建CAImageView用于选择    CAImageView* imageView = CAImageView::createWithImage(CAImage::create("HelloWorld.png"));    imageView->setFrame(winRect);    imageView->setTag(1);    this->getView()->addSubview(imageView);    CAStepper* stepper = CAStepper::createWithCenter(DRect(size.width * 0.5, size.height * 0.6, 200, 200));         //最大值    stepper->setMaxValue(360);         //最小值    stepper->setMinValue(0);         //每此变化值(步进值)    stepper->setStepValue(30);         //设置监听    stepper->addTarget(this, CAControl_selector(FirstViewController::stepperValueChange));         //是否开启触摸特效    stepper->setTouchEffect(true);         //释放开车长按效果(flase必须一次一次按,true可以按着不懂变化。默认为true)测试无效    stepper->setAutoRepeat(true);         //设置是否可在最大值和最小值循环(当增长到最大值时,再点增大则变成最小值。最小值再减少变成最大值)    stepper->setWraps(true);         //添加到屏幕    this->getView()->addSubview(stepper);}

      void FirstViewController::stepperValueChange(CAControl* control, DPoint point){    //获得stepper对象    CAStepper* stepper = (CAStepper*)control;         //根据tag获得imageView    CAImageView* imageView = (CAImageView*)this->getView()->getSubviewByTag(1);         //获得stepper的当前值    float zoomValue = stepper->getValue();         //设置旋转角度    imageView->setRotation(zoomValue);}

      这样我们就可以通过增减CAStepper的值来控制CAImageView的旋转角度了。


      CAStepper 属性说明

      Continuous

      类型:bool

      解释:设置连续,set/get{}。


      AutoRepeat

      类型:bool

      解释:设置自动重复,set/get{}。


      Wraps

      类型:bool

      解释:设置是否可在最大值和最小值循环set/get{}。


      Value

      类型:double

      解释:设定值,set/get{}。


      MinValue

      类型:double

      解释:设定最小值,set/get{}。


      MaxValue

      类型:double

      解释:设定最大值。set/get{}。


      StepValue

      类型:double

      解释:设置步进值。set/get{}。


      TouchEffect

      类型:bool

      解释:设置接触效应,set/get{}。


      CAStepper 方法说明

      static CAStepper* create();

      返回值:static CAStepper

      参数:

      解释:创建,默认Frame为(0,0,0,0)


      static CAStepper* createWithFrame(const CCRect& rect);

      返回值:static CAStepper

      参数:

      类型
      参数名说明
      CCRect&rect区域大小

      解释:创建,并指定其Frame,默认Frame为(0,0,0,0)


      static CAStepper* createWithCenter(const CCRect& rect);

      返回值:static CAStepper

      参数:

      类型
      参数名说明
      CCRectrect中心点的位置及

      解释:创建,并指定其Center,默认Center为(0,0,0,0)


      void setBackgroundImage(CAImage* image, CAControlState state);

      返回值:void

      参数:

      类型
      参数名说明
      CAImage*image图像
      CAControlStatestate控制状态

      解释:设置背景图像


      CAImage* getBackgroundImageForState(CAControlState state);

      返回值:CAImage*

      参数:

      类型
      参数名说明
      CAControlStatestate控制状态

      解释:获取背景图像


      void setIncrementImage(CAImage* image, CAControlState state);

      返回值:void

      参数:

      类型
      参数名说明
      CAImage*image图像
      CAControlStatestate控制状态

      解释:设置右部增加部分的背景 


      CAImage* getIncrementImageForState(CAControlState state);

      返回值:CAImage*

      参数:

      类型
      参数名说明
      CAControlStatestate控制状态

      解释:获取右部增加部分的背景 


      void setDecrementImage(CAImage* image, CAControlState state);

      返回值:void

      参数:

      类型
      参数名说明
      CAImage*image图像
      CAControlStatestate控制状态

      解释:设置左部减少部分的背景


      CAImage* getDecrementImageForState(CAControlState state);

      返回值:CAImage*

      参数:

      类型
      参数名说明
      CAControlStatestate控制状态

      解释:获取左部减少部分的背景


      virtual void addTarget(CAObject* target, SEL_CAControl selector);

      返回值:virtual void

      参数:

      类型参数名说明
      CAObject*target目标
      SEL_CAControlselector选择器

      解释:添加回调事件


      virtual void removeTarget(CAObject* target, SEL_CAControl selector);

      返回值:virtual void

      参数:

      类型参数名说明
      CAObject*target目标
      SEL_CAControlselector选择器

      解释:删除回调事件


      virtual void removeAllTargets();

      返回值:virtual void

      参数:

      解释:删除所有回调事件


      virtual bool init();

      返回值:virtual bool

      参数:

      解释:初始化


      virtual bool initWithFrame(const DRect& rect);

      返回值:virtual bool

      参数:

      类型参数名说明
      const DRect&rect区域大小

      解释:初始化,并指定其Frame


      virtual bool initWithCenter(const DRect& rect);

      返回值:virtual bool

      参数:

      类型参数名说明
      const DRect&rect中心点的位置及大小

      解释:初始化,并指定其Center


      virtual void onEnter();

      返回值:virtual void

      参数:

      解释:输入


      virtual void onExit();

      返回值:virtual void

      参数:

      解释:退出


      virtual void visit();

      返回值:virtual void

      参数:

      解释:访问


      void setDividerColor(CAColor4B color);

      返回值:void

      参数:

      类型参数名说明
      CAColor4Bcolor颜色

      解释:设置分频器颜色


      CAColor4B getDividerColor();

      返回值:CAColor4B

      参数:

      解释:获取分频器颜色


      void setTailorImageAtIndex(int index);

      返回值:void

      参数:

      类型参数名说明
      intindex索引

      解释:设置索引裁剪图像


      CAView* getTailorImageAtIndex(int index);

      返回值:CAView*

      参数:

      类型参数名说明
      intindex索引

      解释:获取索引截取图像

            



      类说明

      CAPageView用于实现分页、翻页效果。CAPageView为我们提供了横向和竖直两个方向的样式。我也可以通过继承CAPageViewDelegate来实现对CAPageView的监听。


      CAPageView 属性(点击查看方法介绍)

      属性说明
      PageViewDirection页面浏览方向
      PageViewDelegate页面视图代表
      CurrPage当前页
      Spacing间距


      CAPageView 方法(点击查看方法介绍)

      方法说明
      createWithFrame创建,并指定其Frame,默认Frame为(0,0,0,0)
      createWithCenter创建,并指定其Center,默认Center为(0,0,0,0)
      setCurrPage设置显示指定页
      getPageCount获取页面总数
      setViews添加存放View的CADeque容器
      setViews添加存放View的CAVector容器
      getSubViewAtIndex通过索引获取子视图
      setShowsScrollIndicators设置显示滚动条
      init
      初始化


      我来看一下代码实例:
      首先我们需要继承CAPageViewDelegate实现监听函数。我们在.h文件中添加如下代码:

      #include <iostream>#include "CrossApp.h" USING_NS_CC; class FirstViewController : public CAViewController, public  CAPageViewDelegate{     public:    FirstViewController();         virtual ~FirstViewController();         //切换开始时调用    virtual void pageViewDidBeginTurning(CAPageView* pageView);         //切换结束时调用    virtual void pageViewDidEndTurning(CAPageView* pageView);         //选择当前的切换页时调用    virtual void pageViewDidSelectPageAtIndex(CAPageView* pageView, unsigned int index, const DPoint& point);protected:         void viewDidLoad();         void viewDidUnload();     };

      然后在.cpp中实现逻辑:

      void FirstViewController::viewDidLoad(){    //生命一个CAVector作为添加到PageView的容器    CAVector<CAView*> viewVector;         //获得屏幕的rect    DRect winRect = this->getView()->getBounds();             //创建CALabel    CALabel* labelView = CALabel::createWithFrame(winRect);         //设置为居中    labelView->setTextAlignment(CATextAlignmentCenter);    labelView->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);    labelView->setFontSize(75);         //设置文本内容    labelView->setText(UTF8("第一个View"));             //创建CAImageView    CAImageView* imageView = CAImageView::createWithImage(CAImage::create("HelloWorld.png"));         //设置显示区域    imageView->setFrame(winRect);         //创建一个蓝色的View    CAView* view = CAView::createWithColor(CAColor_blue);             //设置显示区域    view->setFrame(winRect);         //创建CALabel    CALabel* lastLabel = CALabel::createWithFrame(winRect);             //设置居中    lastLabel->setTextAlignment(CATextAlignmentCenter);                lastLabel->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);    lastLabel->setFontSize(75);         //设置显示文本    lastLabel->setText(UTF8("最后一个View"));             //将lastLabel添加到view    view->addSubview(lastLabel);             //将上面的三个控件放入到CAVector容器内    viewVector.pushBack(labelView);    viewVector.pushBack(imageView);    viewVector.pushBack(view);             /*创建一个CAPageView并设置为水平滚动    CAPageViewDirectionHorizontal:水平    CAPageViewDirectionVertical:竖直    */             CAPageView* pageViewTest = CAPageView::createWithCenter(DRect(winRect.size.width*0.5, winRect.size.height*0.5, winRect.size.width, winRect.size.height), CAPageView::CAPageViewDirectionHorizontal);            //设置监听    pageViewTest->setPageViewDelegate(this);         //将CAVector添加到pageViewTest    pageViewTest->setViews(viewVector);    pageViewTest->getPageCount();             //将pageViewTest添到屏幕显示    this->getView()->addSubview(pageViewTest);     } void FirstViewController::viewDidUnload(){    // Release any retained subviews of the main view.    // e.g. self.myOutlet = nil;} void FirstViewController::pageViewDidBeginTurning(CAPageView* pageView){    CCLog("Begin--->");} void FirstViewController::pageViewDidEndTurning(CAPageView* pageView){    CCLog("End--->");} void FirstViewController::pageViewDidSelectPageAtIndex(CAPageView* pageView, unsigned int index, const DPoint& point){    CCLog("Index:%d",index);}

      我们创建了一个含有三个CAView的CAPageView,横向滑动可以切换到不同的CAView,在我们切换时候会调用pageViewDidBeginTurning函数和pageViewDidEndTurning函数,当我们点击某个页面的时候pageViewDidSelectPageAtIndex会被调用。


      CAPageView 属性说明

      PageViewDirection

      类型:CAPageViewDirection

      解释:页面浏览方向。get{}。

          

      PageViewDelegate

      类型:CAPageViewDelegate*

      解释:页面视图代表。set/get{}。


      CurrPage

      类型:int

      解释:当前页。get{}。


      Spacing

      类型:int

      解释:间距。set/get{}。


      CAPageView 方法说明

      static CAPageView* createWithFrame(const CCRect& rect, const CAPageViewDirection& type);

      返回值:CAPageView*

      参数:

      类型参数名说明
      CCRect&rect大小
      CAPageViewDirection&
      type类型

      解释:创建,并指定其Frame,默认Frame为(0,0,0,0)

          

      static CAPageView* createWithCenter(const CCRect& rect, const CAPageViewDirection& type);

      返回值:CAPageView*

      参数:

      类型参数名说明
      CCRect&rect大小
      CAPageViewDirection&
      type类型

      解释:创建,并指定其Center,默认Center为(0,0,0,0)


      void setCurrPage(int var, bool animated, bool listener = false);

      返回值:void

      参数:

      类型参数名说明
      intvar页面数
      boolanimated动画
      boollistener监听

      解释:设置显示指定页

          

      unsigned int getPageCount();

      返回值:unsigned int

      参数:

      解释:获取页面总数


      void setViews(const CADeque<CAView*>& vec);

      返回值:void

      参数:

      类型参数名说明
      CADeque<CAView*>&vecCADeque容器

      解释:添加存放View的CADeque容器


      void setViews(const CAVector<CAView*>& vec);

      返回值:void

      参数:

      类型参数名说明
      CAVector<CAView*>&vecCAVector容器

      解释:添加存放View的CAVector容器


      CAView* getSubViewAtIndex(int index);

      返回值:CAView*

      参数:

      类型参数名说明
      intindex索引

      解释:通过索引获取子视图


      virtual void setShowsScrollIndicators(bool var);

      返回值:void

      参数:

      类型参数名说明
      boolvar是否显示滚动条

      解释:设置显示滚动条


      bool init();

      返回值:bool

      参数:

      解释:初始化







      类说明

              CAPageView的滚动事件的代理


      CAPageViewDelegate 方法(点击查看方法介绍)

      方法说明
      pageViewDidBeginTurning开始滚动时触发
      pageViewDidEndTurning滚动结束时触发
      pageViewDidSelectPageAtIndex点击pageView时触发


      CAPageViewDelegate 方法说明

      virtual void pageViewDidBeginTurning(CAPageView* pageView)

      返回值:void

      参数:

      类型参数名说明
      CAPageView*pageView当前pageView

      解释:开始滚动时触发

       

      virtual void pageViewDidEndTurning(CAPageView* pageView)

      返回值:void

      参数:

      类型参数名说明
      CAPageView*pageView当前pageView

      解释:滚动结束时触发

       

      virtual void pageViewDidSelectPageAtIndex(CAPageView* pageView, unsigned int index)

      返回值:void

      参数:

      类型参数名说明
      CAPageView*pageView当前pageView
      unsigned intsection所点击的页数

      解释:点击pageView时触发



      类说明

      CAWaterfallView 由很多的格子组成,但是每个格子的宽度和高速都是不确定的,是在动态改变的,就像瀑布一样,是一条线一条线的。


      CAWaterfallView 属性(点击查看方法介绍)

      属性说明
      WaterfallViewDataSource添加数据代理
      WaterfallViewDelegate添加交互代理
      WaterfallHeaderView添加头部视图
      WaterfallFooterView添加尾部视图
      WaterfallHeaderHeight设置头部的高度
      WaterfallFooterHeight设置尾部的高度
      ColumnCount列计数
      ItemMargin项目边缘
      ColumnMargin列边缘
      AllowsSelection允许选择
      AllowsMultipleSelection允许多个选择
      AlwaysTopSectionHeader总是显示顶部
      AlwaysBottomSectionFooter总是显示底部


      CAWaterfallView 方法(点击查看方法介绍)

      方法说明
      createWithFrame创建,并指定其Frame
      createWithCenter创建,并设置其Center
      init初始化
      reloadData重载数据
      dequeueReusableCellWithIdentifier从复用队列中寻找指定标识符的cell
      setAllowsSelection是否开启cell选择
      setAllowsMultipleSelection是否可以多选cell
      setSelectRowAtIndexPath通过索引选择一行
      setUnSelectRowAtIndexPath通过索引取消选择一行
      setShowsScrollIndicators显示滚动指示器
      cellForRowAtIndexPath根据索引获取显示的cell
      displayingWaterfallCell显示Waterfall的Cell
      getHighlightWaterfallCell突出Waterfall的Cell
      switchPCMode开关PC模式


      CAWaterfallView 属性说明

      WaterfallViewDataSource

      类型:CAWaterfallViewDataSource*

      解释:添加数据代理,set/get{}。


      WaterfallViewDelegate

      类型:CAWaterfallViewDelegate*

      解释:添加交互代理,set/get{}。


      WaterfallHeaderView

      类型:CAView*

      解释:添加头部视图,set/get{}。


      WaterfallFooterView

      类型:CAView*

      解释:添加尾部视图,set/get{}。


      WaterfallHeaderHeight

      类型:unsigned int

      解释:设置头部的高度,set/get{}。


      WaterfallFooterHeight

      类型:unsigned int

      解释:设置尾部的高度,set/get{}。


      ColumnCount

      类型:unsigned int

      解释:列计数,set/get{}。


      ItemMargin

      类型:unsigned int

      解释:项目边缘,set/get{}。


      ColumnMargin

      类型:unsigned int

      解释:列边缘,set/get{}。


      AllowsSelection

      类型:bool

      解释:允许选择,is{}。


      AllowsMultipleSelection

      类型:bool

      解释:允许多个选择,is{}。


      AlwaysTopSectionHeader

      类型:bool

      解释:总是显示顶部,is/set{}。


      AlwaysBottomSectionFooter

      类型:bool

      解释:总是显示底部,is/set{}。


      CAWaterfallView 方法说明

      static CAWaterfallView* createWithFrame(const DRect& rect);

      返回值:CAWaterfallView*

      参数:

      类型参数名说明
      const DRect&rect区域大小 

      解释:创建,并指定其Frame


      static CAWaterfallView* createWithCenter(const DRect& rect);

      返回值:CAWaterfallView*

      参数:

      类型参数名说明
      const DRect&rect中心点的位置及大小

      解释:

      创建,并设置其Center


      virtual bool init();

      返回值:bool

      参数:

      解释:初始化


      void reloadData();

      返回值:void

      参数:

      解释:重载数据


      CAWaterfallViewCell* dequeueReusableCellWithIdentifier(const char* reuseIdentifier);

      返回值:CAWaterfallViewCell*

      参数:

      类型参数名说明
      const char*reuseIdentifier重用标识符

      解释:从复用队列中寻找指定标识符的cell


      virtual void setAllowsSelection(bool var);

      返回值:void

      参数:

      类型参数名说明
      boolvar是否开启

      解释:是否开启cell选择


      virtual void setAllowsMultipleSelection(bool var);

      返回值:void

      参数:

      类型参数名说明
      boolvar是否开启

      解释:是否可以多选cell


      void setSelectRowAtIndexPath(unsigned int itemIndex);

      返回值:void

      参数:

      类型参数名说明
      unsigned intitemIndex项目Index

      解释:通过索引选择一行


      void setUnSelectRowAtIndexPath(unsigned int itemIndex);

      返回值:void

      参数:

      类型参数名说明
      unsigned intitemIndex项目Index

      解释:通过索引取消选择一行


      virtual void setShowsScrollIndicators(bool var);

      返回值:void

      参数:

      类型参数名说明
      boolvar是否开启

      解释:显示滚动指示器


      CAWaterfallViewCell* cellForRowAtIndexPath(unsigned int itemIndex);

      返回值:CAWaterfallViewCell*

      参数:

      类型参数名说明
      unsigned intitemIndex项目Index

      解释:根据索引获取显示的cell


      const CAVector<CAWaterfallViewCell*>& displayingWaterfallCell();

      返回值:CAVector<CAWaterfallViewCell*>&

      参数:

      解释:显示Waterfall的Cell


      CAWaterfallViewCell* getHighlightWaterfallCell();

      返回值:CAWaterfallViewCell*

      参数:

      解释:突出Waterfall的Cell


      virtual void switchPCMode(bool var);

      返回值:void

      参数:

      类型参数名说明
      boolvar是否开启

      解释:开关PC模式







      类说明:

              数据代理方法


      CAWaterfallViewDataSource 方法

      方法说明
      waterfallCellAtIndex获取指定cell
      waterfallViewHeightForItemAtIndexItem高度
      numberOfItemsitem数量
      waterfallViewSectionViewForHeaderwaterfallView的标题图像
      waterfallViewHeightForHeaderwaterfallView的头部高度
      waterfallViewSectionViewForFooterwaterfallView的底部图像
      waterfallViewHeightForFooterwaterfallView的底部高度
      waterfallViewWillDisplayCellAtIndex回调当前将要显示的waterfallView


      CAWaterfallViewDataSource 方法说明

      virtual CAWaterfallViewCell* waterfallCellAtIndex(CAWaterfallView *waterfallView, const DSize& cellSize, unsigned int itemIndex);

      返回值:CAWaterfallViewCell* 

      参数:

      类型参数名说明
      CAWaterfallView*waterfallView当前waterfallView
      const DSize&cellSizecell大小
      unsigned int 
      itemIndex项目Index

      解释:获取指定cell


      virtual unsigned int waterfallViewHeightForItemAtIndex(CAWaterfallView *waterfallView, unsigned int itemIndex);

      返回值:unsigned int 

      参数:

      类型参数名说明
      CAWaterfallView*waterfallView当前waterfallView
      unsigned int 
      itemIndex项目Index

      解释:Item高度


      virtual unsigned int numberOfItems(CAWaterfallView *waterfallView);

      返回值:unsigned int 

      参数:

      类型参数名说明
      CAWaterfallView*waterfallView当前waterfallView

      解释:item数量


      virtual CAView* waterfallViewSectionViewForHeader(CAWaterfallView *waterfallView, const DSize& viewSize);

      返回值:CAView*

      参数:

      类型参数名说明
      CAWaterfallView*waterfallView当前waterfallView
      const DSize&viewSize 图像大小

      解释:waterfallView的标题图像


      virtual unsigned int waterfallViewHeightForHeader(CAWaterfallView *waterfallView);

      返回值:unsigned int 

      参数:

      类型参数名说明
      CAWaterfallView*waterfallView当前waterfallView

      解释:waterfallView的头部高度


      virtual CAView* waterfallViewSectionViewForFooter(CAWaterfallView *waterfallView, const DSize& viewSize);

      返回值:CAView*

      参数:

      类型参数名说明
      CAWaterfallView*waterfallView当前waterfallView
      const DSize&viewSize 图像大小

      解释:waterfallView的底部图像


      virtual unsigned int waterfallViewHeightForFooter(CAWaterfallView *waterfallView);

      返回值:unsigned int

      参数:

      类型参数名说明
      CAWaterfallView*waterfallView当前waterfallView

      解释:waterfallView的底部高度


      virtual void waterfallViewWillDisplayCellAtIndex(CAWaterfallView* waterfallView, CAWaterfallViewCell* cell, unsigned int itemIndex) {};

      返回值:void

      参数:

      类型参数名说明
      CAWaterfallView*waterfallView当前waterfallView
      CAWaterfallViewCell*cellcell
      unsigned int 
      itemIndex项目Index

      解释:回调当前将要显示的waterfallView






      类说明

      瀑布流控件代理方法


      CAWaterfallViewDelegate 方法(点击查看方法介绍)

      方法说明
      waterfallViewDidSelectCellAtIndexPath选中cell时调用
      waterfallViewDidDeselectCellAtIndexPath取消选择cell时调用


      CAWaterfallViewDelegate 方法说明

      virtual void waterfallViewDidSelectCellAtIndexPath(CAWaterfallView *waterfallView, unsigned int itemIndex){};

      返回值:void

      参数:

      类型参数名说明
      CAWaterfallView*waterfallView当前WaterfallView
      unsigned int itemIndex项目Index

      解释:选中cell时调用


      virtual void waterfallViewDidDeselectCellAtIndexPath(CAWaterfallView *waterfallView, unsigned int itemIndex){};

      返回值:void

      参数:

      类型参数名说明
      CAWaterfallView*waterfallView当前WaterfallView
      unsigned int itemIndex项目Index

      解释:取消选择cell时调用




      类说明

      作为CAWaterfallViewCell添加进WaterfallView。


      CAWaterfallViewCell 属性(点击查看方法介绍)

      属性说明
      ContentView显示图像
      BackgroundView背景图像
      ReuseIdentifier重用标识符
      ItemIndex项目Index
      ControlStateEffect控制状态
      AllowsSelected允许选择


      CAWaterfallViewCell 方法(点击查看方法介绍)

      方法说明
      create创建
      initWithReuseIdentifier重用标识符初始化


      CAWaterfallViewCell 属性说明

      ContentView

      类型:CAView*

      解释:显示图像,get{}。


      BackgroundView

      类型:CAView*

      解释:背景图像,set/get{}。


      ReuseIdentifier

      类型:std::string

      解释:重用标识符,set/get{}。


      ItemIndex

      类型:unsigned int

      解释:项目Index,get{}。


      ControlStateEffect

      类型:bool

      解释:控制状态,is/set{}。


      AllowsSelected

      类型:bool

      解释:允许选择,is/set{}。


      CAWaterfallViewCell 方法说明

      static CAWaterfallViewCell* create(const std::string& reuseIdentifier);

      返回值:CAWaterfallViewCell* 

      参数:

      类型参数名说明
      const std::string&reuseIdentifier重用标识符

      解释:创建


      virtual bool initWithReuseIdentifier(const std::string& reuseIdentifier);

      返回值:bool

      参数:

      类型参数名说明
      const std::string&reuseIdentifier重用标识符

      解释:重用标识符初始化

      类说明

      CATextField是单行输入框控件。主要接收用户的文本输入,多用于用户名、密码、聊天输入等。


      CATextField 属性(点击查看方法介绍)

      属性说明
      Delegate数据代理
      ClearButtonMode添加按钮模式
      MarginLeft左边缘
      MarginRight右边缘
      FontSize字体大小
      PlaceHolderTextPlaceHolder文本内容
      PlaceHolderColorPlaceHolder文本内容颜色
      Text文本内容
      TextColor文本内容颜色
      KeyboardType键盘类型
      ReturnTypeReturn键类型
      TextFieldAlignTextField的对齐方式
      SecureTextEntry设置TextField为密码输入框
      AllowkeyBoardHide返回键恢复键盘
      MaxLenght最大长度


      CATextField 方法(点击查看方法介绍)

      方法说明
      resignFirstResponder隐藏键盘第一响应者状态
      becomeFirstResponder弹出键盘第一响应者状态
      createWithFrame创建,并指定其Frame
      createWithCenter创建,并设置其Center
      init初始化
      setMarginImageLeft设置左边缘图像
      setMarginImageRight设置右边缘图像
      setBackgroundImage设置背景图像


      CATextField 属性说明

      Delegate

      类型:CATextFieldDelegate*

      解释:数据代理,set/get{}。


      ClearButtonMode

      类型:ClearButtonMode

      解释:添加按钮模式,set/get{}。

      typedef enum{    None = 0,     //正常模式,不添加按钮    WhileEditing  //添加清除按钮}ClearButtonMode;

      MarginLeft

      类型:int

      解释:左边缘(如果选择默认:左16,右16),set/get{}。


      MarginRight

      类型:int

      解释:右边缘(如果选择默认:左16,右16),set/get{}。


      FontSize

      类型:int

      解释:字体大小,set/get{}。


      PlaceHolderText

      类型:std::string

      解释:PlaceHolder文本内容,set/get{}。


      PlaceHolderColor

      类型:CAColor4B

      解释:PlaceHolder文本内容颜色,set/get{}。


      Text

      类型:std::string

      解释:文本内容,set/get{}。


      TextColor

      类型:CAColor4B

      解释:文本内容颜色,set/get{}。


      KeyboardType

      类型:KeyboardType

      解释:键盘类型,set/get{}。(默认为KeyboardTypeDefault类型)

      typedef enum{    Default = 0,    NumbersAndPunctuation,    URL,    NumberPad,    PhonePad,    NamePhonePad,    EmailAddress,}KeyboardType;


      ReturnType

      类型:ReturnType

      解释:Return键类型,set/get{}。(默认ReturnTypeDone类型)

      typedef enum{    Done=0,    Go,    Next,    Search,    Send}ReturnType;


      TextFieldAlign

      类型:TextFieldAlign

      解释:TextField的对齐方式,set/get{}。(默认:中心)

      typedef enum {    Left,    Center,    Right}TextFieldAlign;

      SecureTextEntry

      类型:bool

      解释:设置TextField为密码输入框,is/set{}。(密码输入框,默认为假)


      AllowkeyBoardHide

      类型:bool

      解释:返回键恢复键盘,is/set{}。(返回键恢复键盘,默认为真)


      MaxLenght

      类型:int

      解释:最大长度,set/get{}。


      CATextField 方法说明

      virtual bool resignFirstResponder();

      返回值:bool

      参数:

      解释:隐藏键盘第一响应者状态


      virtual bool becomeFirstResponder();

      返回值:bool

      参数:

      解释:弹出键盘第一响应者状态


      static CATextField* createWithFrame(const DRect& frame);

      返回值:CATextField*

      参数:

      类型参数名说明
      const DRect&frame区域大小

      解释:创建,并指定其Frame


      static CATextField* createWithCenter(const DRect& rect);

      返回值:CATextField*

      参数:

      类型参数名说明
      const DRect&rect中心点的位置及大小

      解释:创建,并设置其Center


      bool init();

      返回值:bool

      参数:

      解释:初始化


      void setMarginImageLeft(const DSize& imgSize,const std::string& filePath);

      返回值:void

      参数:

      类型参数名说明
      const DSize&imgSize图像大小
      const std::string& filePath图像路径

      解释:设置左边缘图像


      void setMarginImageRight(const DSize& imgSize,const std::string& filePath);

      返回值:void

      参数:

      类型参数名说明
      const DSize&imgSize图像大小
      const std::string& filePath图像路径

      解释:设置右边缘图像


      void setBackgroundImage(CAImage* image);

      返回值:void

      参数:

      类型参数名说明
      CAImage*image图像

      解释:设置背景图像


      类说明

      CATextField的数据代理


      CATextFieldDelegate 方法(点击查看方法介绍)

      方法说明
      textFieldShouldBeginEditing开始编辑时触发
      textFieldShouldEndEditing结束编辑时触发
      textFieldShouldReturn返回时触发
      keyBoardHeight键盘高度
      textFieldShouldChangeCharacters文字更改后触发


      CATextFieldDelegate 方法说明

      virtual bool textFieldShouldBeginEditing(CATextField * sender)

      返回值:bool

      参数:

      类型参数名说明
      CATextField*sender当前textField

      解释:开始编辑时触发


      virtual bool textFieldShouldEndEditing(CATextField * sender)

      返回值:bool

      参数:

      类型参数名说明
      CATextField*sender当前textField

      解释:结束编辑时触发(如果发件人不想从时间中分离,返回true)


      virtual void textFieldShouldReturn(CATextField *sender){}

      返回值:void

      参数:

      类型参数名说明
      CATextField*sender当前textField

      解释:返回时触发


      virtual void keyBoardHeight(CATextField *sender, int height){}

      返回值:void

      参数:

      类型参数名说明
      CATextField*sender当前textField
      intheight高度

      解释:键盘高度


      virtual bool textFieldShouldChangeCharacters(CATextField* sender, unsigned int location, unsigned int lenght, const std::string& changedText);

      返回值:bool

      参数:

      类型参数名说明
      CATextField*sender当前textField
      unsigned int location光标选中的字符串,即被替换的字符串
      unsigned intlenghtlength为0时,表示删除
      const std::string&changedText更改文本时Text内容

      解释:textField文字更改后触发(返回true表示修改生效,返回false表示不做修改,textField的内容不变)

      类说明:

      CAAutoCollectionView同CATableView类似,主要用于数据的展示,实现了tableView的基本功能,同时对tableView拓展,更完美的进行展示数据。


      CAAutoCollectionView的使用方法和CATableView比较类似,我们也要分别使用:CAAutoCollectionView、CACollectionViewCell、CAAutoCollectionViewDelegate、CAAutoCollectionViewDataSource来构建。

      CAAutoCollectionView是表格视图的容器,是容器的载体。

      CACollectionViewCell是表格视图的一个单元(本节后面简称cell)。

      CAAutoCollectionViewDelegate是交互代理,响应cell选中和取消状态。

      CAAutoCollectionViewDataSource是数据代理,设置Selection个数及Selection包含Item个数。


      CAAutoCollectionView 属性(点击查看方法介绍)

      属性说明
      CollectionViewDataSource添加数据代理
      CollectionViewDelegate添加交互代理
      CollectionHeaderView添加头部视图
      CollectionFooterView添加尾部视图
      CollectionHeaderHeight设置头部的高度
      CollectionFooterHeight设置尾部的高度
      CollectionViewOrientationCollectionView方向取向
      CollectionViewCellHoriAlignCollectionView的Cell水平对齐
      CollectionViewCellVertAlignCollectionView的Cell垂直对齐
      HoriCellIntervalcell水平间隔
      VertCellIntervalcell垂直间隔
      HoriMargins水平边距
      VertMargins垂直边距
      AllowsSelection允许选择
      AllowsMultipleSelection允许多个选择
      AlwaysTopSectionHeader总是顶部的标题
      AlwaysBottomSectionFooter总是底部的节尾


      CAAutoCollectionView 方法(点击查看方法介绍)

      说明说明
      createWithFrame创建,并指定其Frame
      createWithCenter创建,并指定Color
      init初始化
      reloadData重载数据
      dequeueReusableCellWithIdentifier从复用队列中寻找指定标识符的cell
      setAllowsSelection是否开启cell选择
      setAllowsMultipleSelection是否可以多选cell
      setSelectRowAtIndexPath通过索引选择一行
      setUnSelectRowAtIndexPath通过索引取消选择一行
      setShowsScrollIndicators设置显示滚动指示器
      cellForRowAtIndexPath根据索引获取显示的cell
      displayingCollectionCell显示CollectionCell
      getHighlightCollectionCell获取高亮显示的collectioncell
      switchPCMode开关PC模式


      我们本机的示例,不再使用自定义的CACollectionViewCell的方法来实现,我们来看看本节的示例代码:

      FirstViewController.h内容:

      #ifndef __HelloCpp__ViewController__#define __HelloCpp__ViewController__#include <iostream>#include "CrossApp.h"USING_NS_CC;class FirstViewController : public CAViewController, CAAutoCollectionViewDataSource, CAAutoCollectionViewDelegate{     protected:    void viewDidLoad();         void viewDidUnload();     public:FirstViewController();     virtual ~FirstViewController();         //选中    virtual void collectionViewDidSelectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item);         //取消选中    virtual void collectionViewDidDeselectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item);         //获取指定cell    virtual CACollectionViewCell* collectionCellAtIndex(CAAutoCollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int item);         //项目大小    virtual DSize collectionViewSizeForItemAtIndexPath(CAAutoCollectionView* collectionView, unsigned int section, unsigned int item);         //每个Section中Item的个数    virtual unsigned int numberOfItemsInSection(CAAutoCollectionView *collectionView, unsigned int section);         //section的个数    virtual unsigned int numberOfSections(CAAutoCollectionView *collectionView);     private:    DSize size;         CAAutoCollectionView* p_AutoCollection;         std::vector<CAColor4B> colorArr;         };  #endif /* defined(__HelloCpp__ViewController__) */


      FirstViewController.cpp内容:

      #include "FirstViewController.h"FirstViewController::FirstViewController(){}FirstViewController::~FirstViewController(){}void FirstViewController::viewDidLoad(){    //获得屏幕大小    size = this->getView()->getBounds().size;         //随机出颜色    for (int i = 0; i < 40; i++)    {        char r = CCRANDOM_0_1() * 255;        char g = CCRANDOM_0_1() * 255;        char b = CCRANDOM_0_1() * 255;                 //将随机的ccc4对象放入到容器里        colorArr.push_back(ccc4(r, g, b, 255));    }         //生成CACollectionView    p_AutoCollection = CAAutoCollectionView::createWithFrame(this->getView()->getBounds());    DRect rect = this->getView()->getBounds();    CCLog("MaxX = %f", rect.getMaxX());    CCLog("MaxX = %f", rect.getMaxY());         //开启选中    p_AutoCollection->setAllowsSelection(true);         //开启多选    p_AutoCollection->setAllowsMultipleSelection(true);         //绑定交互代理    p_AutoCollection->setCollectionViewDelegate(this);         //绑定数据代理    p_AutoCollection->setCollectionViewDataSource(this);              //item水平间的距离    p_AutoCollection->setHoriMargins(40);    p_AutoCollection->setHoriCellInterval(40);         //p_AutoCollection->setCollectionHeaderHeight(40);         //itme竖直间的距离    p_AutoCollection->setVertMargins(40);    p_AutoCollection->setVertCellInterval(40);         //p_AutoCollection->setCollectionFooterHeight(40);         //添加到屏幕渲染    this->getView()->addSubview(p_AutoCollection);     }void FirstViewController::viewDidUnload(){    // Release any retained subviews of the main view.    // e.g. self.myOutlet = nil;}//选中void FirstViewController::collectionViewDidSelectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item){    //选中    CCLog("选中");}//取消选中void FirstViewController::collectionViewDidDeselectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item){    //取消选中    CCLog("取消选中");}//获取指定cellCACollectionViewCell* FirstViewController::collectionCellAtIndex(CAAutoCollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int item){    //根据标识获得CACollectionViewCell    CACollectionViewCell* p_Cell = collectionView->dequeueReusableCellWithIdentifier("CrossApp");    //如果没有找到相应的CACollectionViewCell则新建一个    if (p_Cell == NULL)    {        p_Cell = CACollectionViewCell::create("CrossApp");                 //生成Item背景        CAView* itemImage = CAView::createWithFrame(DRect(0, 0, cellSize.width, cellSize.height));        itemImage->setTag(99);        p_Cell->addSubview(itemImage);        DSize itemSize = itemImage->getBounds().size;                 //生成itemCALabel        CALabel* itemText = CALabel::createWithCenter(DRect(itemSize.width*0.5, itemSize.height*0.5, 150, 40));        itemText->setTag(100);        itemText->setFontSize(29);        itemText->setTextAlignment(CATextAlignmentCenter);        itemText->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);        itemImage->addSubview(itemText);    }         //设置Item背景颜色    CAView* itemImageView = p_Cell->getSubviewByTag(99);    itemImageView->setColor(colorArr.at(item));    CCLog("row = %d", item);         //设置itme文本显示    char pos[20] = "";    sprintf(pos, "(%d,%d)", section, item);    CALabel* itemText = (CALabel*)p_Cell->getSubviewByTag(99)->getSubviewByTag(100);    itemText->setText(pos);    return  p_Cell;}//项目大小DSize FirstViewController::collectionViewSizeForItemAtIndexPath(CAAutoCollectionView* collectionView, unsigned int section, unsigned int item){    DSize size;    size.width = (this->getView()->getBounds().size.width - 40 * 4) / 3;    size.height = (this->getView()->getBounds().size.width - 40 * 4) / 3;    return size;}//每个Section中Item的个数unsigned int FirstViewController::numberOfItemsInSection(CAAutoCollectionView *collectionView, unsigned int section){    return 15;}//section的个数unsigned int FirstViewController::numberOfSections(CAAutoCollectionView *collectionView){    return 10;}

      CAAutoCollectionView 属性说明

      CollectionViewDataSource

      类型:CAAutoCollectionViewDataSource*

      解释:添加数据代理,set/get{}。


      CollectionViewDelegate

      类型:CAAutoCollectionViewDelegate*

      解释:添加交互代理,set/get{}。


      CollectionHeaderView

      类型:CAView*

      解释:添加头部视图,set/get{}。


      CollectionFooterView

      类型:CAView*

      解释:添加尾部视图,set/get{}。


      CollectionHeaderHeight

      类型:unsigned int

      解释:设置头部的高度,set/get{}。


      CollectionFooterHeight

      类型:unsigned int

      解释:设置尾部的高度,set/get{}。


      CollectionViewOrientation

      类型:CACollectionViewOrientation

      解释:CollectionView方向取向,set/get{}。


      CollectionViewCellHoriAlign

      类型:CACollectionViewCellHoriAlign

      解释:CollectionView的Cell水平对齐,set/get{}。


      CollectionViewCellVertAlign

      类型:CACollectionViewCellVertAlign

      解释:CollectionView的Cell垂直对齐,set/get{}。


      HoriCellInterval

      类型:unsigned int

      解释:cell水平间隔,set/get{}。


      VertCellInterval

      类型:unsigned int

      解释:cell垂直间隔,set/get{}。


      HoriMargins

      类型:unsigned int

      解释:水平边距,set/get{}。


      VertMargins

      类型:unsigned int

      解释:垂直边距,set/get{}。


      AllowsSelection

      类型:bool

      解释:允许选择,is{}。


      AllowsMultipleSelection

      类型:bool

      解释:允许多个选择,is{}。


      AlwaysTopSectionHeader

      类型:bool

      解释:总是顶部的标题,is/set{}。


      AlwaysBottomSectionFooter

      类型:bool

      解释:总是底部的节尾,is/set{}。


      CAAutoCollectionView 方法说明

      static CAAutoCollectionView* createWithFrame(const DRect& rect);

      返回值:CAAutoCollectionView* 

      参数:

      类型参数名说明
      const DRect&rect区域大小

      解释:创建,并指定其Frame


      static CAAutoCollectionView* createWithCenter(const DRect& rect);

      返回值:CAAutoCollectionView* 

      参数:

      类型参数名说明
      const DRect& rect中心点的位置及大小

      解释:创建,并指定Color


      virtual bool init();

      返回值:bool

      参数:

      解释:初始化


      void reloadData();

      返回值:void

      参数:

      解释:重载数据


      CACollectionViewCell* dequeueReusableCellWithIdentifier(const char* reuseIdentifier);

      返回值:CACollectionViewCell*

      参数:

      类型参数名说明
      const char* reuseIdentifier重载标识符

      解释:从复用队列中寻找指定标识符的cell


      virtual void setAllowsSelection(bool var);

      返回值:void

      参数:

      类型参数名说明
      boolvar是否开启

      解释:是否开启cell选择


      virtual void setAllowsMultipleSelection(bool var);

      返回值:void

      参数:

      类型参数名说明
      boolvar是否开启

      解释:是否可以多选cell


      void setSelectRowAtIndexPath(unsigned int section, unsigned int item);

      返回值:void

      参数:

      类型参数名说明
      unsigned int sectionsection
      unsigned intitem项目数量

      解释:通过索引选择一行


      void setUnSelectRowAtIndexPath(unsigned int section, unsigned int item);

      返回值:void

      参数:

      类型参数名说明
      unsigned int sectionsection
      unsigned intitem项目数量

      解释:通过索引取消选择一行


      virtual void setShowsScrollIndicators(bool var);

      返回值:void

      参数:

      类型参数名说明
      boolvar是否开启

      解释:设置显示滚动指示器


      CACollectionViewCell* cellForRowAtIndexPath(unsigned int section, unsigned int row, unsigned int item);

      返回值:CACollectionViewCell* 

      参数:

      类型参数名说明
      unsigned int sectionsection
      unsigned introw
      unsigned intitem项目数量

      解释:根据索引获取显示的cell


      const CAVector<CACollectionViewCell*>& displayingCollectionCell();

      返回值:CAVector<CACollectionViewCell*>& 

      参数:

      解释:显示CollectionCell


      CACollectionViewCell* getHighlightCollectionCell();

      返回值:CACollectionViewCell*

      参数:

      解释:获取高亮显示的collectioncell


      virtual void switchPCMode(bool var);

      返回值:void

      参数:

      类型参数名说明
      boolvar是否开启

      解释:开关PC模式






      类说明:

              CAAutoCollectionViewDataSource是数据代理,设置Selection个数及Selection包含Item个数。


      CAAutoCollectionViewDataSource 方法(点击查看方法介绍)

      方法说明
      collectionCellAtIndex获取指定cell
      collectionViewSizeForItemAtIndexPath获取对应的collectionView的Item大小
      numberOfItemsInSection每个Section里的item数量
      numberOfSections获取collectionView包含的section个数
      collectionViewSectionViewForHeaderInSectionheaderView的内容
      collectionViewHeightForHeaderInSection每个section的headerView
      collectionViewSectionViewForFooterInSectionfooterView的内容
      collectionViewHeightForFooterInSection每个section的footerView
      collectionViewWillDisplayCellAtIndex回调当前将要显示的collectionView


      CAAutoCollectionViewDataSource 方法说明    

      virtual CACollectionViewCell* collectionCellAtIndex(CAAutoCollectionView *collectionView, const DSize& cellSize, unsigned int section, unsigned int item);

      返回值:CACollectionViewCell* 

      参数:

      类型

      参数名说明
      CAAutoCollectionView*collectionView当前collectionView
      const DSize& cellSizecell大小
      unsigned intsectionsection
      unsigned intitem项目

      解释:获取指定cell


      virtual DSize collectionViewSizeForItemAtIndexPath(CAAutoCollectionView* collectionView, unsigned int section, unsigned int item);

      返回值:DSize

      参数:

      类型

      参数名说明
      CAAutoCollectionView*collectionView当前collectionView
      unsigned intsectionsection
      unsigned intitem项目

      解释:

      获取对应的collectionView的Item大小


      virtual unsigned int numberOfItemsInSection(CAAutoCollectionView *collectionView, unsigned int section);

      返回值:unsigned int 

      参数:

      类型

      参数名说明
      CAAutoCollectionView*collectionView当前collectionView
      unsigned intsectionsection

      解释:每个Section里的item数量


      virtual unsigned int numberOfSections(CAAutoCollectionView *collectionView);

      返回值:unsigned int

      参数:

      类型

      参数名说明
      CAAutoCollectionView*collectionView当前collectionView

      解释:获取collectionView包含的section个数


      virtual CAView* collectionViewSectionViewForHeaderInSection(CAAutoCollectionView *collectionView, const DSize& viewSize, unsigned int section);

      返回值:CAView* 

      参数:

      类型

      参数名说明
      CAAutoCollectionView*collectionView当前collectionView
      const DSize&viewSizeview大小
      unsigned intsectionsection

      解释:headerView的内容


      virtual unsigned int collectionViewHeightForHeaderInSection(CAAutoCollectionView *collectionView, unsigned int section);

      返回值:unsigned int

      参数:

      类型

      参数名说明
      CAAutoCollectionView*collectionView当前collectionView
      unsigned intsectionsection

      解释:每个section的headerView


      virtual CAView* collectionViewSectionViewForFooterInSection(CAAutoCollectionView *collectionView, const DSize& viewSize, unsigned int section);

      返回值:CAView*

      参数:

      类型

      参数名说明
      CAAutoCollectionView*collectionView当前collectionView
      const DSize&viewSizeview大小
      unsigned intsectionsection

      解释:footerView的内容


      virtual unsigned int collectionViewHeightForFooterInSection(CAAutoCollectionView *collectionView, unsigned int section);

      返回值:unsigned int 

      参数:

      类型

      参数名说明
      CAAutoCollectionView*collectionView当前collectionView
      unsigned intsectionsection

      解释:每个section的footerView


      virtual void collectionViewWillDisplayCellAtIndex(CAAutoCollectionView* table, CACollectionViewCell* cell, unsigned int section, unsigned int item) {};

      返回值:void

      参数:

      类型

      参数名说明
      CAAutoCollectionView*collectionView当前collectionView
      CACollectionViewCell* cellcell
      unsigned intsectionsection
      unsigned intitem项目

      解释:回调当前将要显示的collectionView

      类说明

              CAAutoCollectionViewDelegate是交互代理,响应cell选中和取消状态。


      CAAutoCollectionViewDelegate 方法(点击查看方法介绍)

      方法说明
      collectionViewDidSelectCellAtIndexPath选中cell时调用
      collectionViewDidDeselectCellAtIndexPath取消选择cell时调用


      CAAutoCollectionViewDelegate 方法说明

      virtual void collectionViewDidSelectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item){};

      返回值:void

      参数:

      类型参数名说明
      CAAutoCollectionView*collectionView当前collectionView
      unsigned int sectionsection
      unsigned int item项目

      解释:选中cell时调用


      virtual void collectionViewDidDeselectCellAtIndexPath(CAAutoCollectionView *collectionView, unsigned int section, unsigned int item){};

      返回值:void

      参数:

      类型参数名说明
      CAAutoCollectionView*collectionView当前collectionView
      unsigned int sectionsection
      unsigned int item项目

      解释:取消选择cell时调用

      类说明

      视频播放器控制。


      CAVideoPlayerControlView 属性(点击查看方法介绍)

      属性说明
      Title标题
      ShowBackButton显示后退按钮
      PlayerControlViewDelegatePlayerControlView代理类


      CAVideoPlayerControlView 方法(点击查看方法介绍)

      属性说明
      createWithFrame创建,并指定其Frame。
      createWithCenter创建,并指定其Center。
      initWithPath初始化Path。
      initWithUrl初始化Url。


      CAVideoPlayerControlView 属性说明

      Title

      类型:std::string

      解释:标题,set/get{}。


      ShowBackButton

      类型:bool

      解释:显示后退按钮,set/get{}。


      PlayerControlViewDelegate

      类型:CAVideoPlayerControlViewDelegate*

      解释:PlayerControlView代理类,set/get{}。


      CAVideoPlayerControlView 方法说明

      static CAVideoPlayerControlView* createWithFrame(const DRect& rect);

      返回值:CAVideoPlayerControlView*

      参数:

      类型参数名说明
      const DRect&rect区域大小

      解释:创建,并指定其Frame


      static CAVideoPlayerControlView* createWithCenter(const DRect& rect);

      返回值:CAVideoPlayerControlView*

      参数:

      类型参数名说明
      const DRect&rect中心点的位置及大小

      解释:创建,并设置其Center


      void initWithPath(const std::string& szPath);

      返回值:void

      参数:

      类型参数名说明
      const std::string& szPath路径

      解释:初始化并制定文件路径


      void initWithUrl(const std::string& szUrl);

      返回值:void

      参数:

      类型参数名说明
      const std::string&szUrlUrl

      解释:初始化并制定Url

      类说明

      CAVideoPlayerControlView的代理类


      CAVideoPlayerControlViewDelegate 方法(点击查看方法介绍)

      方法说明
      onBackButtonClicked点击后退按钮调用


      CAVideoPlayerControlViewDelegate 方法说明

      virtual void onBackButtonClicked(CAVideoPlayerControlView *playerControlView) {};

      返回值:void

      参数:

      类型参数名说明
      CAVideoPlayerControlView*playerControlViewplayerControlView

      解释:点击后退按钮调用





      类说明

      Web视图控件


      CAWebView 属性(点击查看方法介绍)

      属性说明
      WebViewDelegateWebView代理类


      CAWebView 方法(点击查看方法介绍)

      方法说明
      init初始化
      createWithFrame创建,并指定其Frame
      createWithCenter创建,并设置其Center
      setJavascriptInterfaceSchemeJavaScript接口方法
      loadHTMLString加载HTML字符串
      loadURL加载URL
      loadFile加载File
      stopLoading停止加载
      reload重载
      canGoBack可以后退
      canGoForward可以前进
      goBack返回
      goForward前进
      evaluateJSevaluateJS
      getHTMLSource获取HTMLSource
      setScalesPageToFit设置页面适度大小
      hideNativeWebAndShowImage隐藏本地网络和显示图像
      showNativeWeb显示本地网络
      update更新
      draw显示
      setVisible设置可见
      setActivityView设置活动视图
      showLoadingActivity显示加载活动


      CAWebView 属性说明

      WebViewDelegate

      类型:CAWebViewDelegate*

      解释:WebView代理类,set/get{}。


      CAWebView 方法说明

      virtual bool init();

      返回值:bool

      参数:

      解释:初始化

          

      static CAWebView* createWithFrame(const DRect& rect);

      返回值:CAWebView*

      参数:

      类型参数名说明
      const DRect&rect区域大小

      解释:创建,并指定其Frame


      static CAWebView* createWithCenter(const DRect& rect);

      返回值:CAWebView*

      参数:

      类型参数名说明
      const DRect& rect中心点的位置及大小

      解释:创建,并设置其Center


      void setJavascriptInterfaceScheme(const std::string &scheme);

      返回值:void

      参数:

      类型参数名说明
      const std::string schemescheme

      解释:JavaScript接口方法


      void loadHTMLString(const std::string &string, const std::string &baseURL);

      返回值:void

      参数:

      类型参数名说明
      const std::string&stringstring
      const std::string&baseURLURL地址

      解释:加载HTML字符串


      void loadURL(const std::string &url);

      返回值:void

      参数:

      类型参数名说明
      const std::string&urlURL地址

      解释:加载URL


      void loadFile(const std::string &fileName);

      返回值:void

      参数:

      类型参数名说明
      const std::string&fileNameFile

      解释:加载File


      void stopLoading();

      返回值:void

      参数:

      解释:停止加载


      void reload();

      返回值:void

      参数:

      解释:重载


      bool canGoBack();

      返回值:bool

      参数:

      解释:可以后退


      bool canGoForward();

      返回值:bool

      参数:

      解释:可以前进



      void goBack();

      返回值:void

      参数:

      解释:返回


      void goForward();

      返回值:void

      参数:

      解释:前进


      std::string evaluateJS(const std::string &js);

      返回值:std::string 

      参数:

      类型参数名说明
      const std::string&jsJS

      解释:evaluateJS


      std::string getHTMLSource();

      返回值:std::string 

      参数:

      解释:获取HTMLSource


      void setScalesPageToFit(const bool scalesPageToFit);

      返回值:void

      参数:

      类型参数名说明
      boolscalesPageToFitscalesPageToFit

      解释:设置页面适度大小


      void hideNativeWebAndShowImage();

      返回值:void

      参数:

      解释:隐藏本地网络和显示图像


      void showNativeWeb();

      返回值:void

      参数:

      解释:显示本地网络


      virtual void update(float dt);

      返回值:void

      参数:

      类型参数名说明
      floatdtdt

      解释:更新


      virtual void draw();

      返回值:void

      参数:

      解释:显示


      virtual void setVisible(bool visible);

      返回值:void

      参数:

      类型参数名说明
      boolvisiblevisible

      解释:设置可见


      void setActivityView(CAActivityIndicatorView* loadingView);

      返回值:void

      参数:

      类型参数名说明
      CAActivityIndicatorView*loadingView加载视图

      解释:设置活动视图


      void showLoadingActivity(bool show);

      返回值:void

      参数:

      类型参数名说明
      boolshow显示

      解释:显示加载活动


      类说明

      CAWebView代理类


      CAWebViewDelegate 方法

      方法说明
      onShouldStartLoading在应开始加载时触发
      onDidFinishLoading在完成加载时触发
      onDidFailLoading在未加载时触发
      onJSCallback在JS调用返回时触发


      CAWebViewDelegate 方法说明

      virtual bool onShouldStartLoading(CAWebView* pWebView, const std::string &url);

      返回值:

      参数:

      类型参数名说明
      CAWebView* pWebView当前WebView
      const std::string&urlURL地址

      解释:在应开始加载时触发


      virtual void onDidFinishLoading(CAWebView* pWebView, const std::string &url);

      返回值:void

      参数:

      类型参数名说明
      CAWebView* pWebView当前WebView
      const std::string&urlURL地址

      解释:在完成加载时触发


      virtual void onDidFailLoading(CAWebView* pWebView, const std::string &url);

      返回值:void

      参数:

      类型参数名说明
      CAWebView* pWebView当前WebView
      const std::string&urlURL地址

      解释:在未加载时触发


      virtual void onJSCallback(CAWebView* pWebView, const std::string &message);

      返回值:

      参数:

      类型参数名说明
      CAWebView* pWebView当前WebView
      const std::string&messagemessage

      解释:在JS调用返回时触发

      类说明

      显示一张Gif图片


      CAGifView 方法

      方法说明
      createWithFrame创建,并指定其Frame
      createWithCenter创建,并设置其Center
      createWithGif创建,并指定Gif
      init初始化
      initWithGif初始化指定Gif
      setFrame设置Frame
      setCenter设置Center
      setGif设置Gif
      setTimes设置Times
      setRepeatForever设置Gif永远重复
      isRepeatForever查看Gif是否永远重复


      CAGifView 方法说明

      static CAGifView* createWithFrame(const DRect& rect);

      返回值:CAGifView*

      参数:

      类型参数名说明
      const DRect&rect区域大小

      解释:创建,并指定其Frame


      static CAGifView* createWithCenter(const DRect& rect);

      返回值:CAGifView*

      参数:

      类型参数名说明
      const DRect&rect中心点的位置及大小

      解释:

      创建,并设置其Center


      static CAGifView* createWithGif(CAGif* gif);

      返回值:

      参数:

      类型参数名说明
      CAGif*gifGif

      解释:创建,并指定Gif


      virtual bool init();

      返回值:bool

      参数:

      解释:初始化


      virtual bool initWithGif(CAGif* gif);

      返回值:bool

      参数:

      类型参数名说明
      CAGif*gifGif

      解释:初始化指定Gif


      virtual void setFrame(DRect rect);

      返回值:void

      参数:

      类型参数名说明
      DRectrect区域大小

      解释:设置Frame


      virtual void setCenter(DRect rect);

      返回值:void

      参数:

      类型参数名说明
      DRectrect中心点的位置及大小

      解释:设置Center


      void setGif(CAGif* gif);

      返回值:

      参数:

      类型参数名说明
      CAGif*gifGif

      解释:设置Gif


      void setTimes(float times);

      返回值:void

      参数:

      类型参数名说明
      floattimesTimes

      解释:设置Times


      void setRepeatForever(bool repeatForever);

      返回值:void

      参数:

      类型参数名说明
      boolrepeatForever永远重复

      解释:设置Gif永远重复


      bool isRepeatForever();

      返回值:bool

      参数:

      解释:查看Gif是否永远重复

      类说明

      图像渲染


      CARenderImage 方法

      方法说明
      visit访问
      draw显示
      create创建,指定Format和DepthStencilFormat
      create创建,指定Format
      create创建
      initWithWidthAndHeight初始化指定格Format
      initWithWidthAndHeight初始化指定格Format和DepthStencilFormat
      printscreenWithView截图并指定view
      printscreenWithView截图并指定view和offset
      printscreenWithView截图并指定view和backgroundColor
      printscreenWithView截图并指定view、offset和backgroundColor
      clear清除背景颜色
      clearDepth清除depthValue
      clearStencil清除Stencil
      saveToFile保存到文件
      listenToBackground监听背景
      listenToForeground监听前景
      getClearFlags获取清除的标志
      setClearFlags设置清除的标志
      getClearColor获取清除的颜色
      setClearColor设置清除的颜色
      getClearDepth获取清除的深度
      setClearDepth设置清除的深度
      getClearStencil获取清除的模板
      setClearStencil设置清除的模板
      isAutoDraw查看是否自动显示
      setAutoDraw设置自动显示


      CARenderImage 方法说明

      virtual void visit();

      返回值:void

      参数:

      解释:访问


      virtual void draw();

      返回值:void

      参数:

      解释:显示


      static CARenderImage* create(int w ,int h, CAImage::PixelFormat eFormat, GLuint uDepthStencilFormat);

      返回值:CARenderImage*

      参数:

      类型参数名说明
      intwWidth
      inthheight
      CAImage::PixelFormat eFormat格式
      GLuintuDepthStencilFormatDepthStencilFormat

      解释:创建,指定Format和DepthStencilFormat


      static CARenderImage* create(int w, int h, CAImage::PixelFormat eFormat);

      返回值:CARenderImage*

      参数:

      类型参数名说明
      intwWidth
      inthheight
      CAImage::PixelFormat eFormat格式

      解释:创建,指定Format


      static CARenderImage* create(int w, int h);

      返回值:CARenderImage*

      参数:

      类型参数名说明
      intwWidth
      inthheight

      解释:创建


      bool initWithWidthAndHeight(int w, int h, CAImage::PixelFormat eFormat);

      返回值:bool

      参数:

      类型参数名说明
      intwWidth
      inthheight
      CAImage::PixelFormat eFormat格式

      解释:初始化指定格Format


      bool initWithWidthAndHeight(int w, int h, CAImage::PixelFormat eFormat, GLuint uDepthStencilFormat);

      返回值:bool

      参数:

      类型参数名说明
      intwWidth
      inthheight
      CAImage::PixelFormat eFormat格式
      GLuintuDepthStencilFormatDepthStencilFormat

      解释:初始化指定格Format和DepthStencilFormat


      void printscreenWithView(CAView* view);

      返回值:void

      参数:

      类型参数名说明
      CAView*view图像

      解释:截图并指定view


      void printscreenWithView(CAView* view, DPoint offset);

      返回值:void

      参数:

      类型参数名说明
      CAView*view图像
      DPointoffsetoffset

      解释:截图并指定view和offset


      void printscreenWithView(CAView* view, const CAColor4B& backgroundColor);

      返回值:void

      参数:

      类型参数名说明
      CAView*view图像
      const CAColor4B&backgroundColor背景颜色

      解释:截图并指定view和backgroundColor


      void printscreenWithView(CAView* view, DPoint offset, const CAColor4B& backgroundColor);

      返回值:void

      参数:

      类型参数名说明
      CAView*view图像
      DPointoffsetoffset
      const CAColor4B&backgroundColor背景颜色

      解释:截图并指定view、offset和backgroundColor


      void clear(const CAColor4B& backgroundColor);

      返回值:void

      参数:

      类型参数名说明
      const CAColor4B&backgroundColor背景颜色

      解释:清除背景颜色


      void clearDepth(float depthValue);

      返回值:void

      参数:

      类型参数名说明
      floatdepthValuedepthValue

      解释:清除depthValue


      void clearStencil(int stencilValue);

      返回值:void

      参数:

      类型参数名说明
      intstencilValuestencilValue

      解释:清除Stencil


      bool saveToFile(const char* szFilePath);

      返回值:bool

      参数:

      类型参数名说明
      const char *szFilePath文件

      解释:保存到文件


      void listenToBackground(CAObject *obj);

      返回值:void

      参数:

      类型参数名说明
      CAObject* objobj

      解释:监听背景


      void listenToForeground(CAObject *obj);

      返回值:void

      参数:

      类型参数名说明
      CAObject* objobj

      解释:监听前景


      unsigned int getClearFlags() const;

      返回值:unsigned int 

      参数:

      解释:获取清除的标志


      void setClearFlags(unsigned int uClearFlags);

      返回值:void

      参数:

      类型参数名说明
      unsigned int uClearFlags标志

      解释:设置清除的标志


      const CAColor4F& getClearColor() const;

      返回值:const CAColor4F&

      参数:

      解释:获取清除的颜色


      void setClearColor(const CAColor4F &clearColor);

      返回值:void

      参数:

      类型参数名说明
      const CAColor4F&clearColor颜色

      解释:设置清除的颜色


      float getClearDepth() const;

      返回值:float

      参数:

      解释:获取清除的深度


      void setClearDepth(float fClearDepth);

      返回值:void

      参数:

      类型参数名说明
      floatfClearDepthDepth

      解释:设置清除的深度


      int getClearStencil() const;

      返回值:int

      参数:

      解释:获取清除的模板


      void setClearStencil(float fClearStencil);

      返回值:void

      参数:

      类型参数名说明
      floatfClearStencilStencil

      解释:设置清除的模板


      bool isAutoDraw() const;

      返回值:bool

      参数:

      解释:查看是否自动显示


      void setAutoDraw(bool bAutoDraw);

      返回值:void

      参数:

      类型参数名说明
      boolbAutoDraw自动显示

      解释:设置自动显示

      类说明

      分段按钮,segmentedControl由一个或多个segment组成,点击不同段得到不同的信息,每次只能选择一段。


      基类

      CAControl


      CASegmentedControl 属性(点击查看方法介绍)

      属性
      说明
      BackgroundView背景视图


      CASegmentedControl 方法(点击查看方法介绍)

      方法说明
      create创建,并指定itemsCount,默认Frame为(0,0,0,0)
      createWithFrame创建,并指定其Frame和itemsCount,默认Frame为(0,0,0,0)
      createWithCenter创建,并指定其Create和itemsCount,默认Create为(0,0,0,0)
      init初始化
      setBackgroundImage设置背景图像
      setTitleColor设置标题颜色
      getTitleColor获取标题颜色
      setImageColor设置图像颜色
      getImageColor获取图像颜色
      insertSegmentWithTitleAtIndex根据传递的参数,插入segment并设置标题,标题默认为空。
      insertSegmentWithImageAtIndex根据传递的参数,插入segment并设置前景图片,标题默认为空。
      removeSegmentAtIndex移除segment的某一段
      setTitleFontName设置标题字体
      setTitleFontSize设置标题大小
      setSegmentItemBackgroundImage设置Segment背景图像
      addTarget添加点击事件
      setSelectedAtIndex设置Selected的index
      getSelectedAtIndex获取Selected的index
      getNumberOfSegments获取segment的数量
      setTitleForSegmentAtIndex设置segment标题,通过index
      getTitleForSegmentAtIndex获取segment标题,通过index
      setImageForSegmentAtIndex设置segment图像和状态,通过index
      getImageForSegmentAtIndex获取segment图像,通过index
      setWidthForSegmentAtIndex设置segment的宽度,通过index
      getWidthForSegmentAtIndex获取segment的宽度,通过index
      setContentOffsetForSegmentAtIndex设置segment偏移量,通过index
      getContentOffsetForSegmentAtIndex获取segment偏移量,通过index
      setEnabledForSegmentAtIndex设置segment的段是否启用,通过index
      isEnabledForSegmentAtIndex通过index 查看segment的段是否启用
      setImageSizeAtIndex设置图像大小和index
      setImageSelectedColor设置图像Selected颜色
      getImageSelectedColor获取图像Selected颜色
      setTintColor设置标题颜色
      setTitleSelectedColor设置标题Selected颜色
      getTitleSelectedColor获取标题Selected颜色


      CASegmentedControl 属性说明

      BackgroundView

      类型:CAView*

      解释:背景视图,get{}。


      CASegmentedControl 方法说明

      static CASegmentedControl* create(unsigned int itemsCount);

      返回值:CASegmentedControl*

      参数:

      类型参数名说明
      unsigned int itemsCountitemsCount

      解释:创建,并指定itemsCount,默认Frame为(0,0,0,0)


      static CASegmentedControl* createWithFrame(const DRect& rect, unsigned int itemsCount);

      返回值:CASegmentedControl*

      参数:

      类型参数名说明
      DRect&rect区域大小
      unsigned int itemsCountitemsCount

      解释:创建,并指定其Frame和itemsCount,默认Frame为(0,0,0,0)


      static CASegmentedControl* createWithCenter(const DRect& rect, unsigned int itemsCount);

      返回值:CASegmentedControl*

      参数:

      类型参数名说明
      DRect&rect中心点的位置及大小
      unsigned int itemsCountitemsCount

      解释:创建,并指定其Create和itemsCount,默认Create为(0,0,0,0)


      virtual bool init();

      返回值:bool

      参数:

      解释:初始化


      void setBackgroundImage(CAImage* image);

      返回值:void

      参数:

      类型参数名说明
      CAImage*image图像

      解释:设置背景图像


      void setTitleColor(const CAColor4B& color);

      返回值:void

      参数:

      类型参数名说明
      CAColor4B&color标题颜色

      解释:设置标题颜色


      const CAColor4B& getTitleColor();

      返回值:CAColor4B& 

      参数:

      解释:获取标题颜色


      void setImageColor(const CAColor4B& color);

      返回值:void

      参数:

      类型参数名说明
      CAColor4B&color

      图像颜色

      解释:设置图像颜色


      const CAColor4B& getImageColor();

      返回值:CAColor4B& 

      参数:

      解释:获取图像颜色


      void insertSegmentWithTitleAtIndex(const std::string& title, int index);

      返回值:void

      参数:

      类型参数名说明
      std::string&titlesegment显示的标题
      intindex插入segment的位置

      解释:根据传递的参数,插入segment并设置标题,标题默认为空。


      void insertSegmentWithImageAtIndex(CAImage* image, int index, CAControlState controlState);

      返回值:void

      参数:

      类型参数名说明
      CAImage*imagesegment背景图片
      intindexsegment的插入位置
      CAControlStatecontrolStatesegment的状态

      解释:根据传递的参数,插入segment并设置前景图片,标题默认为空。


      void removeSegmentAtIndex(int index);

      返回值:void

      参数:

      类型参数名说明
      intindexsegment的插入位置

      解释:移除segment的某一段


      void setTitleFontName(std::string titleName);

      返回值:void

      参数:

      类型参数名说明
      std::stringtitleNamesegment的标题字体

      解释:设置标题字体


      void setTitleFontSize(float titleSize);

      返回值:void

      参数:

      类型参数名说明
      float titleSizesegment的标题大小

      解释:设置标题大小


      void setSegmentItemBackgroundImage(CAImage* image);

      返回值:void

      参数:

      类型参数名说明
      CAImage*imageSegment的背景图像

      解释:设置Segment背景图像


      void addTarget(CAObject* target, SEL_CASegmentedControl selector);

      返回值:void

      参数:

      类型参数名说明
      CAObject*target当前对象
      SEL_CASegmentedControl selector函数回调器

      解释:添加点击事件


      void setSelectedAtIndex(int index);

      返回值:void

      参数:

      类型参数名说明
      intindexSelected的index

      解释:设置Selected的index


      int  getSelectedAtIndex();

      返回值:int

      参数:

      解释:获取Selected的index


      int  getNumberOfSegments();

      返回值:int

      参数:

      解释:获取segment的数量


      void setTitleForSegmentAtIndex(const std::string& title, int index);

      返回值:void

      参数:

      类型参数名说明
      std::string&titlesegment标题
      intindex插入segment的位置

      解释:设置segment标题,通过index


      std::string getTitleForSegmentAtIndex(int index);

      返回值:std::string 

      参数:

      类型参数名说明
      intindexsegment的位置

      解释:获取segment标题,通过index


      void setImageForSegmentAtIndex(CAImage* image, int index, CAControlState controlState);

      返回值:void

      参数:

      类型参数名说明
      CAImage*imagesegment图像
      intindexsegment的位置
      CAControlStatecontrolStatesegment的状态

      解释:设置segment图像和状态,通过index


      CAImage* getImageForSegmentAtIndex(int index);

      返回值:CAImage*

      参数:

      类型参数名说明
      intindexsegment的位置

      解释:获取segment图像,通过index


      void setWidthForSegmentAtIndex(float width, int index);

      返回值:void

      参数:

      类型参数名说明
      floatwidthsegment的宽度
      intindexsegment的位置

      解释:设置segment的宽度,通过index


      float getWidthForSegmentAtIndex(int index);

      返回值:float

      参数:

      类型参数名说明
      intindexsegment的位置

      解释:获取segment的宽度,通过index


      void setContentOffsetForSegmentAtIndex(DSize offset, int index);

      返回值:void

      参数:

      类型参数名说明
      DSizeoffsetsegment偏移量
      intindexsegment的位置

      解释:设置segment偏移量,通过index


      DSize getContentOffsetForSegmentAtIndex(int index);

      返回值:DSize

      参数:

      类型参数名说明
      intindexsegment的位置

      解释:获取segment偏移量,通过index


      void setEnabledForSegmentAtIndex(bool isEnable, int index);

      返回值:void

      参数:

      类型参数名说明
      boolisEnable是否启用

      解释:设置segment的段是否启用,通过index


      bool isEnabledForSegmentAtIndex(int index);

      返回值:bool

      参数:

      类型参数名说明
      intindexsegment的位置

      解释:通过index 查看segment的段是否启用


      void setImageSizeAtIndex(DSize size, int index);

      返回值:void

      参数:

      类型参数名说明
      DSizesize图像大小
      intindexsegment的位置

      解释:

      设置图像大小和index


      void setImageSelectedColor(const CAColor4B& color);

      返回值:void

      参数:

      类型参数名说明
      CAColor4B&color图像Selected颜色

      解释:设置图像Selected颜色


      const CAColor4B& getImageSelectedColor();

      返回值:CAColor4B& 

      参数:

      解释:获取图像Selected颜色


      void setTintColor(const CAColor4B& color);

      返回值:void

      参数:

      类型参数名说明
      CAColor4B&color标题颜色

      解释:设置标题颜色


      void setTitleSelectedColor(const CAColor4B& color);

      返回值:void

      参数:

      类型参数名说明
      CAColor4B&color标题Selected颜色

      解释:设置标题Selected颜色


      const CAColor4B& getTitleSelectedColor();

      返回值:CAColor4B&

      参数:

      解释:获取标题Selected颜色

      类说明

      选择器控件,pickerView至少包括一个组件(component),每个组件包括供选择的子项(row)。


      基类

      CAView,CATableViewDataSource


      CAPickerView 属性(点击查看方法介绍)

      属性
      说明
      PickerViewDelegate滑动事件代理
      PickerViewDataSource数据代理
      FontSizeNormal正常状态下的字体大小
      FontSizeSelected选中时的字体大小
      FontColorNormal正常状态下的字体颜色
      FontColorSelected选中时的字体颜色
      SeparateColor选中框的边框颜色


      CAPickerView 方法(点击查看方法介绍)

      方法说明
      create创建,默认Frame为(0,0,0,0)
      createWithFrame创建,并指定其Frame,默认Frame为(0,0,0,0)
      createWithCenter创建,并设置其Center,默认Center为(0,0,0,0)
      init初始化
      onEnter进入
      onExit退出
      visit访问
      initWithFrame初始化,并指定其Frame
      initWithCenter初始化,并指定其Center
      numberOfComponents获取组件的数量
      numberOfRowsInComponent获取指定组件的row的数量
      rowSizeForComponent获取指定组件的size
      viewForRow获取row
      reloadAllComponents刷新所有组件
      reloadComponent刷新指定组件
      selectRow指定选中的row
      selectedRowInComponent获取当前被选中的row
      setBackgroundColor设置背景颜色


      CAPickerView 属性说明

      PickerViewDelegate

      类型:CAPickerViewDelegate*

      解释:pickerView的选中事件代理,包含一个选中时触发的接口,public get/set{}。


      PickerViewDataSource

      类型:CAPickerViewDataSource*

      解释:pickerView的数据代理,详细接口请参考CAPickerViewDataSource代理类,public get/set{}。


      FontSizeNormal

      类型:float

      解释:备选项的字体大小,public get/set{}。


      FontSizeSelected

      类型:float

      解释:选中项的字体大小,public get/set{}。


      FontColorNormal

      类型:CAColor4B

      解释:备选项的字体颜色,public get/set{}。


      FontColorSelected

      类型:CAColor4B

      解释:选中项的字体颜色,public get/set{}。


      SeparateColor

      类型:CAColor4B

      解释:选框的边框颜色,public get/set{}。


      CAPickerView 方法说明

      static CAPickerView* create();

      返回值:CAPickerView*

      参数:

      解释:创建,默认Frame为(0,0,0,0)


      static CAPickerView* createWithFrame(const DRect& rect);

      返回值:CAPickerView*

      参数:

      类型
      参数名说明
      DRect&rect区域大小

      解释:创建,并指定其Frame,默认Frame为(0,0,0,0)


      static CAPickerView* createWithCenter(const DRect& rect);

      返回值:CAPickerView*

      参数:

      类型
      参数名说明
      DRect&rect中心点的位置及大小

      解释:创建,并设置其Center,默认Center为(0,0,0,0)


      virtual bool init();

      返回值:bool

      参数:

      解释:初始化


      virtual void onEnter();

      返回值:void

      参数:

      解释:进入


      virtual void onExit();

      返回值:void

      参数:

      解释:退出


      virtual void visit();

      返回值:void

      参数:

      解释:访问


      virtual bool initWithFrame(const DRect& rect);

      返回值:bool

      参数:

      类型
      参数名说明
      DRect&rect区域大小

      解释:初始化,并指定其Frame


      virtual bool initWithCenter(const DRect& rect);

      返回值:bool

      参数:

      类型
      参数名说明
      DRect&rect中心点的位置及大小

      解释:初始化,并指定其Center


      virtual int numberOfComponents();

      返回值:int

      参数:

      解释:获取组件的数量


      virtual int numberOfComponents()

      返回值:int

      参数:

      解释:返回pickerView中component的数量


      virtual int numberOfRowsInComponent(unsigned int component)

      返回值:int

      参数:

      类型
      参数说明
      unsigned intcomponent指定的component

      解释:返回pickerView中component的数量


      virtual CCSize rowSizeForComponent(unsigned int component)

      返回值:CCSize

      参数:

      类型
      参数说明
      unsigned intcomponent指定的component

      解释:获取指定组件的size


      virtual CAView* viewForRow(unsigned int row, unsigned int component)

      返回值:CAView*

      参数:

      类型
      参数说明
      unsigned introw指定的row
      unsigned int component指定的component

      解释:获取row


      virtual void reloadAllComponents()

      返回值:void

      参数:

      解释:刷新所有的组件,创建pickerView时必须手动刷新一次pickerView。

      示例:

      pickerView = CAPickerView::createWithCenter(CCRect(size.width*0.5, size.height*0.5, size.width*0.6, size.height*0.5));pickerView->setDelegate(this);pickerView->setDataSource(this);pickerView->setFontSizeNormal(30 * CROSSAPP_ADPTATION_RATIO);pickerView->setFontSizeSelected(30 * CROSSAPP_ADPTATION_RATIO);pickerView->setFontColorNormal(CAColor_blueStyle);pickerView->setFontColorSelected(CAColor_blueStyle);pickerView->setSeparateColor(CAColor_blueStyle);pickerView->reloadAllComponents();this->getView()->addSubview(pickerView);

      virtual void reloadComponent(unsigned int component, bool bReload = true)

      返回值:void

      参数:

      类型
      参数说明
      unsigned intcomponent指定的component
      boolbReload可选参数

      解释:刷新指定组件


      virtual void selectRow(unsigned int row, unsigned int component, bool animated = false)

      返回值:void

      参数:

      类型
      参数说明
      unsigned introw指定的row
      unsigned intcomponent指定的component
      boolanimated可选参数

      解释:指定选中的row


      virtual int selectedRowInComponent(unsigned int component)

      返回值:int

      参数:

      类型
      参数说明
      unsigned intcomponent指定的component

      解释:获取当前被选中的row


      virtual void setBackgroundColor(const CAColor4B& color);    

      返回值:void

      参数:

      类型
      参数名说明
      CAColor4B&color颜色

      解释:设置背景颜色

      类说明

              CAPickerView的数据代理


      CAPickerViewDataSource 方法(点击查看方法介绍)

      方法说明
      numberOfComponentsInPickerView设定component的数量
      numberOfRowsInComponent设定component中row的数量
      widthForComponent设定component的宽
      rowHeightForComponent设定row的高
      titleForRow设定row的显示内容
      viewForRow设定备选row的view
      viewForSelect设定选中row的view


      CAPickerViewDataSource 方法说明

      virtual unsigned int numberOfComponentsInPickerView(CAPickerView* pickerView) = 0

      返回值:unsigned int

      参数:

      类型参数名说明
      CAPickerView*pickerView当前pickerView

      类型 参数名 说明

      CAPickerView* pickerView 当前pickerView

      解释:设定component的数量


      virtual unsigned int numberOfRowsInComponent(CAPickerView* pickerView, unsigned int component) = 0

      返回值:unsigned int

      参数:

      类型参数名说明
      CAPickerView*pickerView当前pickerView
      unsigned intcomponent当前的component

      解释:设定component中row的数量


      virtual float widthForComponent(CAPickerView* pickerView, unsigned int component) {return 0;}

      返回值:float

      参数:

      类型参数名说明
      CAPickerView*pickerView当前pickerView
      unsigned intcomponent当前的component

      解释:设定component的宽

       

      virtual float rowHeightForComponent(CAPickerView* pickerView, unsigned int component) {return 0;}

      返回值:float

      参数:

      类型参数名说明
      CAPickerView*pickerView当前pickerView
      unsigned intcomponent当前的component

      解释:设定row的高

       

      virtual CCString* titleForRow(CAPickerView* pickerView, unsigned int row, unsigned int component) {return NULL;}

      返回值:CCString*

      参数:

      类型参数名说明
      CAPickerView*pickerView当前pickerView
      unsigned introw当前的row
      unsigned intcomponent当前的component

      解释:设定row的显示内容

       

      virtual CAView* viewForRow(CAPickerView* pickerView, unsigned int row, unsigned int component) {return NULL;}

      返回值:CAView*

      参数:

      类型参数名说明
      CAPickerView*pickerView当前pickerView
      unsigned introw当前的row
      unsigned intcomponent当前的component

      解释:设定row的显示内容

       

      virtual CAView* viewForSelect(CAPickerView* pickerView, unsigned int component, const CCSize& size) {return NULL;}

      返回值:CAView*

      参数:

      类型参数名说明
      CAPickerView*pickerView当前pickerView
      unsigned intcomponent当前的component
      const CCSize&size被选中row的size

      解释:设定选中row的view

      类说明

      CAPickerView的滚动事件的代理


      CAPickerViewDelegate 方法(点击查看方法介绍)

      方法说明
      numberOfComponentsInPickerView获取PickerView的Component数量
      numberOfRowsInComponent获取PickerView的Component行数
      widthForComponentPickerView的Component宽度
      rowHeightForComponentPickerView的Component高度
      titleForRowPickerView的Row标题
      viewForRowPickerView的背景图像
      viewForSelectPickerView的选中时图像


      CAPickerViewDelegate 方法说明

      virtual unsigned int numberOfComponentsInPickerView(CAPickerView* pickerView) = 0; 

      返回值:unsigned int

      参数:

      类型参数名说明
      CAPickerView* pickerView当前pickerView

      解释:获取PickerView的Component数量


      virtual unsigned int numberOfRowsInComponent(CAPickerView* pickerView, unsigned int component) = 0;

      返回值:unsigned int

      参数:

      类型参数名说明
      CAPickerView* pickerView当前pickerView
      unsigned intcomponent当前选中的component

      解释:获取PickerView的Component行数


      virtual float widthForComponent(CAPickerView* pickerView, unsigned int component) {return 0;}

      返回值:float

      参数:

      类型参数名说明
      CAPickerView* pickerView当前pickerView
      unsigned intcomponent当前选中的component

      解释:PickerView的Component宽度


      virtual float rowHeightForComponent(CAPickerView* pickerView, unsigned int component) {return 0;}

      返回值:float

      参数:

      类型参数名说明
      CAPickerView* pickerView当前pickerView
      unsigned intcomponent当前选中的component

      解释:PickerView的Component高度


      virtual const char* titleForRow(CAPickerView* pickerView, unsigned int row, unsigned int component) {return NULL;}

      返回值:const char*

      参数:

      类型参数名说明
      CAPickerView* pickerView当前pickerView
      unsigned introw当前选中的row
      unsigned intcomponent当前选中的component

      解释:PickerView的Row标题


      virtual CAView* viewForRow(CAPickerView* pickerView, unsigned int row, unsigned int component) {return NULL;}

      返回值:CAView* 

      参数:

      类型参数名说明
      CAPickerView* pickerView当前pickerView
      unsigned introw当前选中的row
      unsigned intcomponent当前选中的component

      解释:PickerView的背景图像


      virtual CAView* viewForSelect(CAPickerView* pickerView, unsigned int component, const DSize& size) {return NULL;}

      返回值:CAView* 

      参数:

      类型参数名说明
      CAPickerView* pickerView当前pickerView
      unsigned intcomponent当前选中的component
      const DSize&size图像大小

      解释:PickerView的选中时图像

      类说明

      活动指示器,即加载动画。


      基类

      CAView


      CAActivityIndicatorView 属性(点击查看方法介绍)

      属性说明
      ActivityIndicatorView活动指示器的动画视图
      ActivityBackView活动指示器的背景视图
      LoadingMinTime最小加载时间


      CAActivityIndicatorView 方法(点击查看方法介绍)

      方法说明
      startAnimating启动活动指示器
      stopAnimating停止活动指示器
      isAnimating活动指示器是否正在运行
      setTargetOnCancel取消活动指示器时的回调
      create创建,默认Frame为(0,0,0,0)
      createWithFrame创建,并指定其Frame,默认Frame为(0,0,0,0)
      createWithCenter创建,并设置其Center,默认Center为(0,0,0,0)
      init初始化
      onEnter进入
      onExit退出
      visit访问
      draw显示
      setStyle设置活动指示器的类型,枚举值,默认包括四种类型
      setTimesOneCycle设置一个循环周期时间
      setCycleTime设置周期时间


      CAActivityIndicatorView 属性介绍

      ActivityIndicatorView

      类型:CAView*

      解释:活动指示器的动画视图,动作为重复旋转动画,get/set{}。

       

      ActivityBackView

      类型:CAView*

      解释:活动指示器动画的背景视图,get/set{}。

       

      LoadingMinTime

      类型:float

      解释:最小加载时间,默认为0,如果加载时间小于最小加载时间,则在这期间加载动画不能被停止,get/set{}。


      CAActivityIndicatorView 方法说明

      void startAnimating()

      返回值:void

      参数:

      解释:开始运行活动指示器


      void stopAnimating()

      返回值:void 

      参数:

      解释:停止活动指示器


      bool isAnimating()

      返回值:bool

      参数:

      解释:判断活动指示器是否正在运行,即是否有任务等待。


      void setTargetOnCancel(CAObject* target, SEL_CallFunc callBack)

      返回值:void

      参数:

      类型参数名说明
      CAObject* target当前对象
      SEL_CallFunccallBack回调器

      解释:取消活动指示器后的操作,通过回调函数定义操作。


      static CAActivityIndicatorView* create();

      返回值:CAActivityIndicatorView*

      参数:

      解释:创建,默认Frame为(0,0,0,0)


      static CAActivityIndicatorView* createWithFrame(const DRect& rect);

      返回值:CAActivityIndicatorView*

      参数:

      类型参数名说明
      const DRect&rect区域大小

      解释:创建,并指定其Frame,默认Frame为(0,0,0,0)


      static CAActivityIndicatorView* createWithCenter(const DRect& rect);

      返回值:CAActivityIndicatorView*

      参数:

      类型参数名说明
      const DRect&rect中心点的位置及大小

      解释:创建,并设置其Center,默认Center为(0,0,0,0)


      virtual bool init();

      返回值:bool

      参数:

      解释:初始化


      virtual void onEnter();

      返回值:void

      参数:

      解释:进入


      virtual void onExit();

      返回值:void

      参数:

      解释:退出


      virtual void visit();

      返回值:void

      参数:

      解释:访问


      virtual void draw();

      返回值:void

      参数:

      解释:显示


      virtual void setStyle(CAActivityIndicatorViewStyle style);   

      返回值:void

      参数:

      类型参数名说明
      CAActivityIndicatorViewStylestyle设置活动指示器的类型

      解释:

      设置活动指示器的类型,枚举值,默认包括四种类型

      typedef enum{    CAActivityIndicatorViewStyleWhiteLarge,     CAActivityIndicatorViewStyleWhite,    CAActivityIndicatorViewStyleGray,    CAActivityIndicatorViewStyleImage,}CAActivityIndicatorViewStyle;


      void setTimesOneCycle(float times);

      返回值:void

      参数:

      类型参数名说明
      floattimes时间

      解释:设置一个循环周期时间


      void setCycleTime(float time);

      返回值:void

      参数:

      类型参数名说明
      floattimes时间

      解释:设置周期时间

      UI编辑器说明:

      新添加CACell的布局编辑。

      CATableViewCell、CACollectionViewCell和CAWaterfallViewCell都继承CACell。

      CACell可单独使用,也可以运用到CATableViewCell、CACollectionViewCell和CAWaterfallViewCell。


      UI编辑器CACell布局使用简单介绍:

      FirstViewController.h文件:

      #ifndef __HelloCpp__ViewController__#define __HelloCpp__ViewController__#include <iostream>#include "CrossApp.h"USING_NS_CC;class FirstViewController: public CAViewController{     public:FirstViewController();     virtual ~FirstViewController();     protected:         void viewDidLoad();         void viewDidUnload();         void onButton(CAButton* btn, DPoint point);     };#endif /* defined(__HelloCpp__ViewController__) */

       FirstViewController.cpp文件:

      #include "FirstViewController.h" FirstViewController::FirstViewController(){ } FirstViewController::~FirstViewController(){ } void FirstViewController::viewDidLoad(){//    必须把新建项目的代码注释或者删除//    Do any additional setup after loading the view from its nib.//    DRect winRect = this->getView()->getBounds();//    CAImageView* imageView = CAImageView::createWithImage(CAImage::create("r/HelloWorld.png"));//    imageView->setImageViewScaleType(CAImageViewScaleTypeFitImageCrop);//    imageView->setFrame(winRect);//    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);//    label->setFontSize(_px(72));//    label->setText("Hello World!");//    label->setColor(CAColor_white);//    this->getView()->insertSubview(label, 1);//    //    CCLog("%f", CAApplication::getApplication()->getWinSize().width);         CACell* cell = CACell::create("cell1");    cell->setLayout(DLayout(DHorizontalLayout_W_C(600, 0.5), DVerticalLayout_H_C(800, 0.5)));    this->getView()->addSubview(cell);    //以上代码以上代码CACell可替换成CATableViewCell、CACollectionViewCell和CAWaterfallViewCel等其中任何一种类型         if(CAButton* btn = dynamic_cast<CAButton*>(cell->getViewWithID("Button_1")))    {        btn->addTarget(this, CAControl_selector(FirstViewController::onButton),                       CAControlEventTouchUpInSide);    }} void FirstViewController::viewDidUnload(){    // Release any retained subviews of the main view.    // e.g. self.myOutlet = nil;} void FirstViewController::onButton(CAButton* btn, DPoint point){    CACell* cell = CACollectionViewCell::create("cell1");    cell->setLayout(DLayout(DHorizontalLayout_W_C(600, 0.5), DVerticalLayout_H_C(800, 0.5)));    this->getView()->addSubview(cell);         if (CAView* view = dynamic_cast<CAView*>(cell->getViewWithID("View_4")))    {        view->setColor(CAColor_red);    }}

      UI编辑器Controller布局使用简单介绍:

      FirstViewController.h文件:

      #ifndef __HelloCpp__ViewController__#define __HelloCpp__ViewController__#include <iostream>#include "CrossApp.h"USING_NS_CC;class FirstViewController: public CAViewController{     public:FirstViewController();     virtual ~FirstViewController();     protected:         void viewDidLoad();         void viewDidUnload();         void onButton(CAButton* btn, DPoint point);     };#endif /* defined(__HelloCpp__ViewController__) */

      FirstViewController.cpp文件:

      #include "FirstViewController.h" FirstViewController::FirstViewController(){ } FirstViewController::~FirstViewController(){ } void FirstViewController::viewDidLoad(){//    必须把新建项目的代码注释或者删除//    Do any additional setup after loading the view from its nib.//    DRect winRect = this->getView()->getBounds();//    CAImageView* imageView = CAImageView::createWithImage(CAImage::create("r/HelloWorld.png"));//    imageView->setImageViewScaleType(CAImageViewScaleTypeFitImageCrop);//    imageView->setFrame(winRect);//    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);//    label->setFontSize(_px(72));//    label->setText("Hello World!");//    label->setColor(CAColor_white);//    this->getView()->insertSubview(label, 1);//    //    CCLog("%f", CAApplication::getApplication()->getWinSize().width);         //需要强制转换一下类型    if(CAButton* btn = dynamic_cast<CAButton*>(this->getViewWithID("MyButton")))    {        btn->addTarget(this, CAControl_selector(FirstViewController::onButton),                       CAControlEventTouchUpInSide);    }} void FirstViewController::viewDidUnload(){    // Release any retained subviews of the main view.    // e.g. self.myOutlet = nil;} void FirstViewController::onButton(CAButton* btn, DPoint point){    if (CAView* view = getViewWithID("View_4"))    {        view->setColor(CAColor_magenta);    }}

      类说明

      CAViewController是CrossApp中MVC中的C(控制器),它的作用是用于CAView的管理、控制视图及CAViewController之间的通信与协调。CAViewController是所有CrossApp中Controller的基类。


      基类

      CAContentContainer, CAKeypadDelegate


      CAViewController 属性(点击查看方法介绍)

      属性方法
      Title标题
      NavigationController获取NavigationController
      NavigationBarItem获取NavigationBarItem
      TabBarController获取TabBarController
      TabBarItem获取TabBarItem


      CAViewController 方法(点击查看方法介绍)

      方法说明
      init初始化
      getNibName返回类型的名称
      isViewRunning当前View是否再运行
      setNavigationBarItem设置CANavigationBarItem属性
      setTabBarItem设置CATabBarItem属性
      presentModalViewController弹出一个CAViewController
      dismissModalViewController移除CAViewController
      isKeypadEnabled设置监听物理返回键
      setKeypadEnabled设置监听物理返回键
      getView获取当前CAViewController的View根节点
      nextResponder获得下个监听者
      ccTouchBegan触摸事件开始时的回调函数
      ccTouchMoved触摸事件中触点移动时的回调函数
      ccTouchEnded触摸事件结束时的回调函数
      ccTouchCancelled触摸非正常结束时的回调函数。(例如:电话或锁屏)
      viewDidLoad当前控制器的view被加载完毕后调用
      viewDidUnload当前控制器的view被移除掉时调用
      viewDidAppear显示时被调用
      viewDidDisappear隐藏时被调用
      reshapeViewRectDidFinish当前view被修改大小时被自动调用
      keyBackClickedback键响应函数(android平台)
      keyMenuClickedmenu键响应函数(android平台)
      addViewFromSuperview将自己添加到根节点View
      removeViewFromSuperview将自己从根节View点移除


      生命周期

      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.


      例如:

      bool RootWindow::init(){    if (!CAWindow::init())    {        return false;    }         CAViewController* controller1 = new CAViewController();    CAViewController* controller2 = new CAViewController();    CAViewController* controller3 = new CAViewController();    CAViewController* controller4 = new CAViewController();         CAVector<CAViewController*> vec;    vec.pushBack(controller1);    vec.pushBack(controller2);    vec.pushBack(controller3);    vec.pushBack(controller4);         //创建一个CATabBarController    CATabBarController* tabBarController = new CATabBarController();         //将CAVector<CAViewController*>添加到CATabBarController    tabBarController->initWithViewControllers(vec);         //将tabBarController添加到当前的Window    this->setRootViewController(tabBarController);         //释放内存    controller1->release();    controller2->release();    controller3->release();    controller4->release();    tabBarController->release();}


      这样就使用CATabBarController来管理CAViewController的显示与隐藏了

      CAView的管理

      一般我们会把逻辑代码写到viewDidLoad()方法中,我回把所要显示的CAView通过this->getView()->addSubview(CrossApp::CAView *child);添加到m_pView的子节点上。


      例如:

      void CopybookViewController::viewDidLoad(){    _winRect = this->getView()->getBounds();         CAImageView* imageView = CAImageView::createWithImage(CAImage::create("r/HelloWorld.png"));    imageView->setImageViewScaleType(CAImageViewScaleTypeFitImageCrop);    imageView->setFrame(_winRect);         this->getView()->addSubview(imageView);}

      CAViewController 属性

       Title

      类型:std::string

      解释:标题。set/get{}。

          

      NavigationController

      类型:CANavigationController*

      解释:获取NavigationController属性。get{}。


      NavigationBarItem

      类型:CANavigationBarItem*

      解释:获取NavigationBarItem属性。get{}。


      TabBarController

      类型:CATabBarController*

      解释:获取TabBarController。get{}。


      TabBarItem

      类型:CATabBarItem*

      解释:获取TabBarItem。get{}。


      CAViewController 方法

      virtual bool init();

      返回值:bool

      参数:

      解释:初始化,默认返回true,如果返回false则初始化失败


      const char* getNibName();

      返回值:const char*

      参数:

      解释:返回类型的名称


      bool isViewRunning();

      返回值:bool

      参数:

      解释:当前View是否再运行


      void setNavigationBarItem(CANavigationBarItem* item); 

      返回值:void

      参数:

      类型
      参数名说明
      CANavigationBarItem*item项目

      解释:设置CANavigationBarItem属性(只有被CANavigationController管理才会显示)


      void setTabBarItem(CATabBarItem* item);

      返回值:void

      参数:

      类型
      参数名说明
      CANavigationBarItem*item项目

      解释:设置CATabBarItem属性(只有被CATableController管理才会显示)


      void presentModalViewController(CAViewController* controller, bool animated);

      返回值:void

      参数:

      类型
      参数名说明
      CAViewController*controller要弹出的CAViewController
      boolanimated是否需要弹出动画

      解释:弹出一个CAViewController



      void dismissModalViewController(bool animated);

      返回值:void

      参数:

      类型
      参数名说明
      boolanimated是否需要动画

      解释:移除CAViewController


      virtual bool isKeypadEnabled();

      返回值:virtual bool

      参数:

      解释:是否监听物理返回键(android的Back键或pc的Esc键)


      virtual void setKeypadEnabled(bool value);

      返回值:virtual void 

      参数:

      类型
      参数名说明
      boolvaluetrue允许,false禁止

      解释:设置是否监听物理返回键,默认为false


       

      virtual CAView* getView();

      返回值:CAView*

      参数:

      解释:当前CAViewController的View根节点


      virtual CAResponder* nextResponder();

      返回值:CAResponder*

      参数:

      解释:获得下个监听者


      virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent);

      返回值:bool

      参数:

      类型
      参数名说明
      CATouch*pTouch触摸传递对象
      CAEvent*pEvent此参数待定

      解释:触摸事件开始时的回调函数

        

      virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent);

      返回值:void

      参数:

      类型
      参数名说明
      CATouch*pTouch触摸传递对象
      CAEvent*pEvent此参数待定

      解释:触摸事件中触点移动时的回调函数


      virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent);

      返回值:void

      参数:

      类型
      参数名说明
      CATouch*pTouch触摸传递对象
      CAEvent*pEvent此参数待定

      解释:触摸事件结束时的回调函数


      virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent);

      返回值:void

      参数:

      类型
      参数名说明
      CATouch*pTouch触摸传递对象
      CAEvent*pEvent此参数待定

      解释:触摸非正常结束时的回调函数。(例如:电话或锁屏)


      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

      参数:

      类型
      参数名说明
      CAView*node节点

      解释:将自己添加到根节点View(例如window,也可是其他View)


      virtual void removeViewFromSuperview();

      返回值:void

      参数:

      解释:将自己从根节View点移除

      类说明

      CADrawerController是易用的侧边抽屉式导航控制器。


      基类

      CAViewController


      CADrawerController 方法(点击查看方法介绍)

      方法说明
      initWithController初始化
      getLeftViewController获得左边的ViewController
      getRightViewController获得右边的ViewController
      showLeftViewController显示左边的viewController
      hideLeftViewController隐藏左边的viewController
      isShowLeftViewController左边是否在显示


      创建与初始

      bool RootWindow::init(){    if (!CAWindow::init())    {        return false;    }         //创建左边的ViewController    LeftViewController* left = LeftViewController::create();         //创建右边边的ViewController    RightViewController* right = RightViewController::create();    CADrawerController* drawerController = new CADrawerController();         //最后参数是左边ViewController露出的尺寸    drawerController->initWithController(left, right, _px(500));         //必须加上背景,不然只能滑动一次    drawerController->setBackgroundView(CAView::create());    this->setRootViewController(drawerController);         //释放内存    drawerController->autorelease();    return true;}


      管理

      显示与隐藏

         /*    *显示左边的viewController    *animated:是否显示动画    */    void showLeftViewController(bool animated);         /*    *隐藏左边的viewController    *animated:是否显示动画    */


      CADrawerController 方法

      virtual bool initWithController(CAViewController* leftViewController,CAViewController* rightViewController,float division);

      返回值:bool

      参数:

      类型参数名说明
      CAViewController*leftViewController左边
      CAViewControllerrightViewController右边
      floatdivision左边露出的尺寸

      解释:初始化


      CAViewController* getLeftViewController();

      返回值:CAViewController*

      参数:

      解释:获得左边的ViewController


      CAViewController* getRightViewController();

      返回值:CAViewController*

      参数:

      解释:获得右边的ViewController


      void showLeftViewController(bool animated);

      返回值:void

      参数:

      类型参数名说明
      boolanimated是否显示动画

      解释:显示左边的viewController


             

      void hideLeftViewController(bool animated);

      返回值:void

      参数:

      类型参数名说明
      boolanimated是否显示动画

      解释:隐藏左边的viewController


      bool isShowLeftViewController();

      返回值:bool

      参数:

      解释:左边是否在显示

      类说明

      CANavigationController是CAViewController的子类,它的作用是管理多个CAViewController,我们要明白的是CANavigationController是使用堆栈的方式管理的,即我们每往CANavigationController添加一个CAViewController,则进行一次堆栈的操作,每次移除则进行一次出栈操作。


      基类

      CAViewController, CANavigationBarDelegate


      CANavigationController 属性(点击查看方法介绍)

      属性说明
      NavigationBarHidden导航栏隐藏
      TouchMoved触摸移动
      NavigationBarBackGroundImage导航栏背面图像
      NavigationBarBackGroundColor导航栏背面颜色
      NavigationBarTitleColor导航栏标题颜色
      NavigationBarButtonColor导航栏按钮颜色


      CANavigationController 方法(点击查看方法介绍)

      方法
      说明
      initWithRootViewController使用CAViewController来初始化,这个是必须的
      replaceViewController替换栈顶的viewController
      pushViewController将新的viewController压入栈顶
      popViewControllerAnimated移除栈顶的viewController
      popToRootViewControllerAnimated移除根的viewController
      popFirstViewController移除第一个viewController
      popViewControllerAtIndex根据索引值移除viewController
      getViewControllerAtIndex根据索引值获取viewController
      getBackViewController返回最后一个ViewController
      getViewControllerCount当前栈内viewController总数
      setNavigationBarHidden是否隐藏navigationBar
      updateItem更新navigationBarItem
      ccTouchBegan触摸事件开始时的回调函数
      ccTouchMoved触摸事件中触点移动时的回调函数
      ccTouchEnded触摸事件结束时的回调函数
      ccTouchCancelled触摸非正常结束(例如:电话或锁屏)
      isReachBoundaryLeft到左边界
      isReachBoundaryRight到右边界
      isReachBoundaryUp到上边界
      isReachBoundaryDown到下边界



      创建与初始化

      bool RootWindow::init(){    if (!CAWindow::init())    {        return false;    }         //创建Navigation    CANavigationController* _viewController = new CANavigationController();        //创建Navigation的第一个Controller    FirstViewController* first = new FirstViewController();      first->init();         //使用一个controller初始化Navigation(必须)    _viewController->initWithRootViewController(first);         //RootWindow加载Navigation    this->setRootViewController(_viewController);        //释放内存    first->release();        //释放内存    _viewController->release();    return true;}

      样式属性

      可控制样式:barItem位置、标题、左按钮、右按钮

      bool RootWindow::init(){    if (!CAWindow::init())    {        return false;    }         //创建Navigation    CANavigationController* _viewController = new CANavigationController();         //创建Navigation的第一个Controller    FirstViewController* first = new FirstViewController();      first->init();         //创建CANavigationBarItem并设置显示标题    CANavigationBarItem* nItem = CANavigationBarItem::create("First");         //创建左边按钮(右边按钮同理)    CABarButtonItem* leftBtn = CABarButtonItem::create("", CAImage::create("source_material/btn_left_white.png"), CAImage::create("source_material/btn_left_blue.png"));        //将leftBtn添加到CANavigationBarItem    nItem->addLeftButtonItem(leftBtn);         //将CANavigationBarItem添加到FirstViewController    first->setNavigationBarItem(nItem);         //使用一个controller初始化Navigation(必须)    //CABarVerticalAlignmentBottom显示在底部    _viewController->initWithRootViewController(first,CABarVerticalAlignmentBottom);        //RootWindow加载Navigation    this->setRootViewController(_viewController);        //释放内存    first->release();        //释放内存    _viewController->release();    return true;}



      主要了解:CABarButtonItem这个类的样式

      //根据title创建CANavigationBarItemstatic CANavigationBarItem* create(const std::string& title); //添加左边按钮void addLeftButtonItem(CABarButtonItem* item); //添加邮编按钮void addRightButtonItem(CABarButtonItem* item);

      管理

      初始化

      virtual bool initWithRootViewController(CAViewController* viewController,CABarVerticalAlignment var = CABarVerticalAlignmentTop);

      替换

      virtual void replaceViewController(CAViewController* viewController, bool animated);

      增加

      virtual void pushViewController(CAViewController* viewController, bool animated);

      移除
        /*    *移除栈顶的viewController    *animated:是否播放动画    */    CAViewController* popViewControllerAnimated(bool animated);         /*    *移除根的viewController    *animated:是否播放动画    */    void popToRootViewControllerAnimated(bool animated);         /*    *移除第一个viewController    *animated:是否播放动画    */    CAViewController* popFirstViewController();         /*    *根据索引值移除viewController    *animated:是否播放动画    */    CAViewController* popViewControllerAtIndex(int index);


      CANavigationController 属性

      NavigationBarHidden

      类型:bool

      解释:导航栏隐藏。is{}。


       TouchMoved

      类型:bool

      解释:触摸移动。is/set{}。    


      NavigationBarBackGroundImage

      类型:CAImage*,

      解释:导航栏背面图像。set/get{}。


      NavigationBarBackGroundColor

      类型:CAColor4B

      解释:导航栏背面颜色。set/get{}。


      NavigationBarTitleColor

      类型:CAColor4B

      解释:导航栏标题颜色。set/get{}。


      NavigationBarButtonColor

      类型:CAColor4B

      解释:导航栏按钮颜色。set/get{}。


      CANavigationController 方法

      virtual bool initWithRootViewController(CAViewController* viewController,CABarVerticalAlignment var = CABarVerticalAlignmentTop);

      返回值:bool

      参数:

      类型参数名说明
      CAViewController*viewController初始化CAViewController
      CABarVerticalAlignmentvar = CABarVerticalAlignmentTopCANavigationBar的现实样式

      解释:使用CAViewController来初始化,这个是必须的

                                            

      virtual void replaceViewController(CAViewController* viewController, bool animated);

      返回值:void

      参数:

      类型参数名说明
      CAViewController*viewController新的viewController
      boolanimated是否播放动画

      解释:替换栈顶的viewController


            

      virtual void pushViewController(CAViewController* viewController, bool animated);

      返回值:void

      参数:

      类型参数名说明
      CAViewController*viewController新的viewController
      boolanimated是否播放动画

      解释:将新的viewController压入栈顶


      CAViewController* popViewControllerAnimated(bool animated);

      返回值:CAViewController*

      参数:

      类型参数名说明
      boolanimated是否播放动画

      解释:移除栈顶的viewController


      void popToRootViewControllerAnimated(bool animated);

      返回值:void

      参数:

      类型参数名说明
      boolanimated是否播放动画

      解释:移除根的viewController


      CAViewController* popFirstViewController();

      返回值:CAViewController*

      参数:

      解释:移除第一个viewController


      CAViewController* popViewControllerAtIndex(int index);

      返回值:CAViewController*

      参数:

      类型参数名说明
      intindex移除第几个viewController

      解释:根据索引值移除viewController


      CAViewController* getViewControllerAtIndex(int index);

      返回值:CAViewController*

      参数:

      类型参数名说明
      intindex获取第几个viewController

      解释:根据索引值获取viewController


      CAViewController* getBackViewController();

      返回值:CAViewController*

      参数:

      解释:返回最后一个ViewController


      inline unsigned long getViewControllerCount() ;

      返回值:unsigned long

      参数:

      解释:当前栈内viewController总数


      virtual void setNavigationBarHidden(bool hidden, bool animated);

      返回值:void

      参数:

      类型参数名说明
      boolhidden隐藏navigationBar
      boolanimated是否播放动画

      解释:是否隐藏navigationBar


      void updateItem(CAViewController* viewController);

      返回值:void

      参数:

      类型参数名说明
      CAViewController*viewController更新navigationBarItem

      解释:更新navigationBarItem


      virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent);

      返回值:bool

      参数:

      类型参数名说明
      CATouch*pTouch触摸传递对象
      CAEvent*pEvent此参数待定

      解释:触摸事件开始时的回调函数

         

      virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent);

      返回值:void

      参数:

      类型参数名说明
      CATouch*pTouch触摸传递对象
      CAEvent*pEvent此参数待定

      解释:触摸事件中触点移动时的回调函数

        

      virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent);

      返回值:void

      参数:

      类型参数名说明
      CATouch*pTouch触摸传递对象
      CAEvent*pEvent此参数待定

      解释:触摸事件结束时的回调函数


      virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent);

      返回值:void

      参数:

      类型参数名说明
      CATouch*pTouch触摸传递对象
      CAEvent*pEvent此参数待定

      解释:触摸非正常结束时的回调函数。(例如:电话或锁屏)


      virtual bool isReachBoundaryLeft();

      返回值:virtual bool

      参数:

      解释:到左边界


      virtual bool isReachBoundaryRight();

      返回值:virtual bool

      参数:

      解释:到右边界


      virtual bool isReachBoundaryUp();

      返回值:virtual bool

      参数:

      解释:到上边界


      virtual bool isReachBoundaryDown();

      返回值:virtual bool

      参数:

      解释:到下边界



      类说明

      CANavigationBar的代理类,在navigationController中移除栈顶的viewController。


      CANavigationBarDelegate 方法(点击查看方法介绍)

      方法说明
      navigationPopViewController将viewControlller从栈顶移除


      CANavigationBarDelegate 方法说明

      virtual void navigationPopViewController(CANavigationBar* navigationBar, bool animated) = 0

      返回值:void

      参数:

      类型参数名说明
      CANavigationBar*navigationBarCANavigationController管理的navigationBar
      boolanimated是否播放切换动画

      解释:将viewControlller从栈顶移除

      类说明

      每个viewController都具有一个navigationBarItem,在navigationBar中用于标识当前的viewController。


      基类

      CABarItem


      CANavigationBarItem 属性(点击查看方法介绍)

      属性说明
      NagigationBarHidden隐藏标题
      TitleView标题视图
      TitleViewImage标题图片
      LeftButtonItems导航栏上的左边按钮数组
      RightButtonItems导航栏上的右边按钮数组
      ShowGoBackButton是否显示返回按钮


      CANavigationBarItem 方法(点击查看方法介绍)

      属性说明
      create创建
      init初始化
      addLeftButtonItem在navigationBar左边添加一个自定义按钮
      addRightButtonItem在navigationBar右边添加一个自定义按钮


      CANavigationBarItem 属性介绍

      NagigationBarHidden

      类型:bool

      解释:初始化,is/set{}。


      TitleView

      类型:CAView*

      解释:使用view设置标题,get/set{}。


      TitleViewImage

      类型:CAImage*

      解释:使用图片设置标题,get/set{}。


      LeftButtonItems

      类型:CCArray*

      解释:navigationBar上,左边添加的按钮的记录数组,只读属性。,get{}。


      RightButtonItems

      类型:CCArray*

      解释:navigationBar上,右边添加的按钮的记录数组,只读属性。get{}。


      ShowGoBackButton

      类型:bool

      解释:是否隐藏navigationBar左边自动生成的返回按钮,is/set{}。


      CANavigationBarItem 方法介绍

      static CANavigationBarItem* create(const std::string& title);

      返回值:CANavigationBarItem* 

      参数:

      类型参数名说明
      const std::string&title标题

      解释:创建,并指定标题


      bool init(const std::string& title);

      返回值:bool

      参数:

      类型参数名说明
      const std::string&title标题

      解释:初始化


      void addLeftButtonItem(CABarButtonItem* item)

      返回值:void

      参数:

      类型参数名说明
      CABarButtonItem*item自定义按钮

      解释:通过传递的item参数,自定义导航栏左边按钮 。


      void addRightButtonItem(CABarButtonItem* item)

      返回值:void

      参数:

      类型参数名说明
      CABarButtonItem*item自定义按钮

      解释:通过传递的item参数,自定义导航栏右边按钮 。

      类说明

      导航栏控件,对应于CANavigationController,一般不单独使用,交由navigationController管理,实现App的层次结构。


      基类

      CAView


      CANavigationBar 属性(点击查看方法介绍)

      属性说明
      BackGroundView背景图片
      TitleColor标题颜色
      ButtonColor按钮颜色
      Delegate代理
      Item子项数组


      CANavigationBar 方法(点击查看方法介绍)

      方法说明
      init初始化
      create创建,并指定Dsize
      setBackGroundView设置背景图片
      setTitleColor设置标题颜色
      setButtonColor设置按钮颜色
      setItem设置子项数组


      效果图

      view1


      CANavigationBar 属性说明

      BackGroundView

      类型:CAView

      解释:背景图片,get{}。


      TitleColor

      类型:CAColor4B

      解释:标题颜色,get{}。


      ButtonColor

      类型:CAColor4B

      解释:按钮颜色,get{}。


      Delegate

      类型:CANavigationBarDelegate*

      解释:代理,set/get{}。


      Item

      类型:CANavigationBarItem*

      解释:子项数组,get{}。


      CANavigationBar 方法说明

      virtual bool init(const DSize& size = DSizeZero);

      返回值:bool

      参数:

      类型参数名说明
      DSize& sizesize

      解释:初始化,并指定size


      static CANavigationBar* create(const DSize& size = DSizeZero);

      返回值:CANavigationBar*

      参数:

      类型参数名说明
      DSize&sizesize

      解释:创建,并指定Dsize


      virtual void setBackGroundView(CAView* var);

      返回值:void

      参数:

      类型参数名说明
      CAView*var背景图片

      解释:设置背景图片


      virtual void setTitleColor(const CAColor4B& color);

      返回值:void

      参数:

      类型参数名说明
      CAColor4B&color标题颜色

      解释:设置标题颜色


      virtual void setButtonColor(const CAColor4B& color);

      返回值:void

      参数:

      类型参数名说明
      CAColor4B&color按钮颜色

      解释:设置按钮颜色


      virtual void setItem(CANavigationBarItem* item);

      返回值:void

      参数:

      类型参数名说明
      CANavigationBarItem* item子项数组

      解释:设置子项数组

      类说明

      视图管理器的派生类,CATabBarController作为一个特殊的视图管理器,负责协调多个视图管理器之间的工作,是对视图管理器的一种特殊封装。通常当你的程序需要使用一些平行的界面,这里说的平行界面就是程序中的某些功能界面是处于平级的,这些功能界面可以相互切换,tabBarController就很适合这种情况。


      基类

      CAViewController,CATabBarDelegate,CAPageViewDelegate,CAScrollViewDelegate


      CATabBarController 属性点击查看方法介绍)

      属性说明
      ScrollEnabledTabBar可以滑动切换
      TabBarHidden查看TabBar是否隐藏
      TabBarVerticalAlignmentTabBar对齐方式
      TabBarBackGroundImageTabBar的背景图像
      TabBarBackGroundColorTabBar的背景颜色
      TabBarSelectedBackGroundImageTabBar选择状态下背景的图像
      TabBarSelectedBackGroundColorTabBar选择状态下背景的颜色
      TabBarSelectedIndicatorImageTabBar选择状态下的指标图像
      TabBarSelectedIndicatorColorTabBar选择状态下的指标颜色
      TabBarTitleColorForNormalTabBar标题为正常状态的颜色
      TabBarTitleColorForSelectedTabBar标题为选定状态的颜色


      CATabBarController 方法点击查看方法介绍)

      方法说明
      initWithViewControllers初始化CATabBar
      showSelectedViewController设置当前被选中的viewController
      getViewControllerAtIndex获取当前显示view的viewController的索引值
      getSelectedViewController获取当前选中的viewController
      showSelectedViewControllerAtIndex根据索引值显示当前选中的viewController
      getSelectedViewControllerAtIndex获取当前的被选中的viewController的索引值
      setTabBarHiddenTabBar显示或隐藏
      updateItem更新视图
      showTabBarSelectedIndicator显示刷新TabBar


      创建与初始化

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      FirstViewController* first= new FirstViewController();
      first->init();
      first->setTabBarItem(CATabBarItem::create(UTF8("第一项"),CAImage::create(""),CAImage::create("")));
      SecondViewController* Second = new SecondViewController();
      Second->init();
      Second->setTabBarItem(CATabBarItem::create(UTF8("第二项"), CAImage::create(""), CAImage::create("")));
      ThirdViewController* Third = new ThirdViewController();
      Third->init();
      Third->setTabBarItem(CATabBarItem::create(UTF8("第三项"), CAImage::create(""), CAImage::create("")));
       
      //将多个ViewController放到CAVector进行管理
      CAVector<CAViewController*> vector;
      vector.pushBack(first);
      vector.pushBack(Second);
      vector.pushBack(Third);
       
      //创建TabBar
      CATabBarController* tab = new CATabBarController();
       
      //通过含有ViewControler的CAVector进行初始化
      tab->initWithViewControllers(vector);
       
      //设置可以滑动切换
      tab->setScrollEnabled(true);
      tab->showTabBarSelectedIndicator();
      this->setRootViewController(tab);
       
      //是否内存
      first->release();
      Second->release();
      Third->release();
      tab->release();


      样式

      可设置样式:文本、位置(上、下)、背景颜色、图片


      CATabBarItem控制:文本、默认图片、选中图片

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      //title:文本,image:默认背景图片,selectedImage:选中时背景图片
      static CATabBarItem* create(const std::string& title, CAImage* image, CAImage* selectedImage = NULL);
      CATabBarController控制:显示位置(初始时设置)、背景颜色、图片
           
          //初始时设置显示位置在顶部
          tab->initWithViewControllers(vector,CABarVerticalAlignmentTop);
           
          //是否隐藏TabBar
          tab->setTabBarHidden(falsefalse);
           
          //默认背景颜色
          tab->setTabBarBackGroundColor(CAColor_orange);
           
          //默认背景图片
          tab->setTabBarBackGroundImage(CAImage::create("source_material/btn_left_blue.png"));


      管理


      主要是切换:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
          /*
          *设置当前被选中的viewController
          *viewController:要设置选中的指针
          */
          bool showSelectedViewController(CAViewController* viewController);
           
          /*
          *获取当前显示view的viewController的索引值
          *index:索引位置(从0开始)
          */
          CAViewController* getViewControllerAtIndex(unsigned int index);


      CATabBarController 属性

      ScrollEnabled

      类型:bool

      解释:TabBar可以滑动切换。is/set{}。

          

      TabBarHidden

      类型:bool

      解释:查看TabBar是否隐藏。is{}。


      TabBarVerticalAlignment

      类型:CABarVerticalAlignment

      解释:TabBar对齐方式。get{}。


      TabBarBackGroundImage

      类型:CAImage*

      解释:TabBar的背景图像。set/get{}。


      TabBarBackGroundColor

      类型:CAColor4B

      解释:TabBar的背景颜色。set/get{}。


      TabBarSelectedBackGroundImage

      类型:CAImage*

      解释:TabBar选择状态下背景的图像。set/get{}。


      TabBarSelectedBackGroundColor

      类型:CAColor4B

      解释:TabBar选择状态下背景的颜色set/get{}。


      TabBarSelectedIndicatorImage

      类型:CAImage*

      解释:TabBar选择状态下指标的图像。set/get{}。


      TabBarSelectedIndicatorColor

      类型:CAColor4B

      解释:TabBar选择状态下指标的颜色set/get{}。


      TabBarTitleColorForNormal

      类型:CAColor4B

      解释:TabBar标题为正常的颜色。set/get{}。


      TabBarTitleColorForSelected

      类型:CAColor4B

      解释:TabBar标题为选定的颜色。set/get{}。


      CATabBarController 方法

      virtual bool initWithViewControllers(const CAVector<CAViewController*>& viewControllers,CABarVerticalAlignment var = CABarVerticalAlignmentBottom);

      返回值:bool

      参数:

      类型参数名说明
      CAVector<CAViewController*>&viewControllers含有CAViewController的数组
      CABarVerticalAlignmentvar = CABarVerticalAlignmentBottom切换条位置(上部,下部)

      解释:初始化CATabBar


             

      bool showSelectedViewController(CAViewController* viewController);

      返回值:bool

      参数:

      类型参数名说明
      CAViewController*viewController要设置选中的指针

      解释:设置当前被选中的viewController


      CAViewController* getViewControllerAtIndex(unsigned int index);

      返回值:CAViewController*

      参数:

      类型参数名说明
      unsigned intindex索引位置(从0开始)

      解释:获取当前显示view的viewController的索引值


      CAViewController* getSelectedViewController();

      返回值:CAViewController*

      参数:

      解释:获取当前选中的viewController


      virtual bool showSelectedViewControllerAtIndex(unsigned int index);

      返回值:bool

      参数:

      类型参数名说明
      unsigned intindex索引位置(从0开始)

      解释:根据索引值显示当前选中的viewController


      virtual unsigned int getSelectedViewControllerAtIndex();

      返回值:unsigned int

      参数:

      解释:获取当前的被选中的viewController的索引值


      virtual void setTabBarHidden(bool hidden, bool animated);

      返回值:void

      参数:

      类型参数名说明
      boolhidden是否隐藏(默认false)
      boolanimated是否开启动画效果

      解释:TabBar的显示与隐藏


      void updateItem(CAViewController* viewController);

      返回值:void

      参数:

      类型参数名说明
      CAViewController*viewController需要更新的视图管理器

      解释:更新视图


      void showTabBarSelectedIndicator();

      返回值:void

      参数:

      解释:显示刷新TabBar

      类说明

      作为CATabBar的代理类,抽象类。


      CATabBarDelegate 方法(点击查看方法介绍)

      方法说明
      tabBarSelectedItem通过此接口调用显示tabBar的内容的方法
      tabBarClickToForbidSelectedItem通过索引禁止单击选择子项


      CATabBarDelegate 方法说明

      void tabBarSelectedItem(CATabBar* tabBar, CATabBarItem* item, unsigned int index)

      返回值:void

      参数:

      类型参数名说明
      CATabBar*tabBar当前CATabBar对象
      CATabBarItem*itemtabBar的子项
      unsigned intindex子项的索引值

      解释:声明一个接口,供子类实现,用于显示和管理tabBar的每个子项所包含的内容。


      virtual void tabBarClickToForbidSelectedItem(CATabBar* tabBar, CATabBarItem* item, unsigned int index){};

      返回值:void

      参数:

      类型参数名说明
      CATabBar*tabBar当前CATabBar对象
      CATabBarItem*itemtabBar的子项
      unsigned intindex子项的索引值

      解释:通过索引禁止单击选择子项

      类说明

      每个viewController都具有一个tabBarItem,在tabBar中标识当前的viewController。


      基类

      CABarItem


      CATabBarItem 属性(点击查看方法介绍)

      属性说明
      SelectedImage选中时的图片
      BadgeValue标签


      CATabBarItem 方法 (点击查看方法介绍)

      属性说明
      create创建
      init初始化


      CATabBarItem 属性说明

      SelectedImage

      类型:CAImage*

      解释:tabBarItem被选中时的图片,get/set{}。


      BadgeValue

      类型:std::string

      解释:标签,get/set{}。


      CATabBarItem 方法说明

      static CATabBarItem* create(std::string title, CAImage* image, CAImage* selectedImage=NULL)

      返回值:static CATabBarItem*

      参数:

      类型参数名说明
      stringtitle显示标题
      CAImage*image显示图片
      CAImage*selectedImage被选中时的图片,可选参数。

      解释:创建一个tabBarItem,并指定它的标题,图片。

          

      bool init(const std::string& title, CAImage* image, CAImage* selectedImage = NULL);

      返回值:bool

      参数:

      类型参数名说明
      stringtitle显示标题
      CAImage*image显示图片
      CAImage*selectedImage被选中时的图片,可选参数。

      解释:初始化

      类说明

      在移动开发过程中,常常要遇到调用移动设备的需求,如调用摄像头、通信录、wifi列表、蓝牙等等。CrossApp也为我们提供了调用Android和IOS平台设备的统一接口,我们只需要在CrossApp写统一的调用,然后在Android和IOS平台设置相对的权限,这样引擎会根据不同的平台去调用相应的执行,达到一样的效果。

      CrossApp引擎中为我们提供设置调用的为CADevice,它在引擎的extensionsdevice目录下。我们想要使用CADevice时,需要引入:#include "CrossAppExt.h"并声明命名空间:USING_NS_CC_EXT;


      基类

      CAObject


      CADevice 方法(点击查看方法介绍)

      方法说明
      getSystemVersionWithIOS获取IOS系统版本
      getAppVersion获取app版本
      openCamera打开相机
      openAlbum打开相册
      getScreenBrightness获取屏幕亮度
      setScreenBrightness设置屏幕亮度
      writeToSavedPhotosAlbum保存到相册
      getAddressBook获取通信录
      updateVersion更新版本
      getNetWorkType获取网络类型
      getWifiListWithAndroid获取WiFi列表
      setVolume设置音量
      getVolume获取音量
      OpenURL打开网址(调用浏览器打开网址)
      getBatteryLevel获取电池电量
      isNetWorkAvailble查看是否连接到网络
      sendLocalNotification发送本地通知
      getWifiConnectionInfo获取WiFi连接信息
      initBlueTooth初始化蓝牙
      setBlueToothType设置蓝牙类型
      startGyroscope开始陀螺仪
      setGyroInterval陀螺间隔
      stopGyroscope停止陀螺仪


      通过上面的函数列表我们可以清楚的知道,CrossApp为我们提供的设备调用函数,但我还有时还需要实现相应的代理,才能获得想要的信息,比如调用摄像机拍照后,我们想要获得照片,那么我们必须要实现CAMediaDelegate代理,这我们才能获得这张照片的问题。

      我们这里查看一这些代理函数:


      摄像头代理:

      class CC_DLL CATabBarItem : public CABarItem{     public:         static CATabBarItem* create(const std::string& title, CAImage* image, CAImage* selectedImage = NULL);     public:    CATabBarItem();         virtual ~CATabBarItem();         bool init(const std::string& title, CAImage* image, CAImage* selectedImage = NULL);         //获得照片纹理    CC_SYNTHESIZE_RETAIN(CAImage*, m_pSelectedImage, SelectedImage);         //标签    CC_SYNTHESIZE_PASS_BY_REF(std::string, m_pBadgeValue, BadgeValue);     };


      蓝牙代理:

      class CC_DLL CABlueToothDelegate{public:    virtual ~CABlueToothDelegate(){};         //蓝牙状态    virtual void getBlueToothState(CABlueToothState state) {};         //蓝牙设备信息    virtual void getSearchBlueToothDevice(CABlueToothUnit unit){};         //开始查找蓝牙设备    virtual void startDiscoveryBlueToothDevice(){};         //找到蓝牙设备    virtual void finishedDiscoveryBlueToothDevice(){};};


      WIFI代理:

      class CC_DLL CAWifiDelegate{public:    virtual ~CAWifiDelegate(){};         //wifi信息    virtual void getWifiListFunc(std::vector<CAWifiInfo> _wifiInfoList) = 0;};


      CADevice  方法介绍 

      CC_DLL const char* getSystemVersionWithIOS();

      返回值:const char* 

      参数:

      解释:获取IOS系统版本


      CC_DLL const char* getAppVersion();

      返回值:const char*

      参数:

      解释:获取app版本


      CC_DLL void openCamera(CAMediaDelegate* target);

      返回值:void

      参数:

      类型参数名说明
      CAMediaDelegate*target媒体代理

      解释:打开相机


      CC_DLL void openAlbum(CAMediaDelegate* target);

      返回值:void

      参数:

      类型参数名说明
      CAMediaDelegate* target媒体代理

      解释:打开相册


      CC_DLL float getScreenBrightness();

      返回值:float

      参数:

      解释:获取屏幕亮度


      CC_DLL void setScreenBrightness(float brightness);

      返回值:void

      参数:

      类型参数名说明
      floatbrightness屏幕亮度

      解释:设置屏幕亮度


      CC_DLL void writeToSavedPhotosAlbum(const std::string &s);

      返回值:void

      参数:

      类型参数名说明
      const std::string&s相册

      解释:保存到相册


      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

      参数:

      类型参数名说明
      onst std::string&url网址
      unsigned int versionNumber版本号
      const std::string
      &appIdAppID

      解释:更新版本


      CC_DLL CANetWorkType getNetWorkType();

      返回值:CANetWorkType

      参数:

      解释:获取网络类型


      CC_DLL void getWifiListWithAndroid(CAWifiDelegate *target);

      返回值:void

      参数:

      类型参数名说明
      CAWifiDelegatetargetWiFi代理

      解释:获取WiFi列表(Android)


      CC_DLL void setVolume(float sender, int type);

      返回值:void

      参数:

      类型参数名说明
      floatsender音量
      inttype类型

      解释:设置音量


      CC_DLL float getVolume(int type);

      返回值:float

      参数:

      类型参数名说明
      inttype类型

      解释:获取音量


      CC_DLL void OpenURL(const std::string &url);

      返回值:void

      参数:

      类型参数名说明
      const std::string &url网址

      解释:打开网址(调用浏览器打开网址)


      CC_DLL float getBatteryLevel();

      返回值:float

      参数:

      解释:获取电池电量


      CC_DLL bool isNetWorkAvailble();

      返回值:bool

      参数:

      解释:查看是否连接到网络


      CC_DLL void sendLocalNotification(const char* title, const char* content, unsigned long time);

      返回值:void

      参数:

      类型参数名说明
      const char* title标题
      const char*content内容
      unsigned longtime时间

      解释:发送本地通知


      CC_DLL CAWifiInfo getWifiConnectionInfo();

      返回值:CAWifiInfo

      参数:

      解释:获取WiFi连接信息


      CC_DLL void initBlueTooth(CABlueToothDelegate *target);

      返回值:void

      参数:

      类型参数名说明
      CABlueToothDelegate*target蓝牙代理

      解释:初始化蓝牙


      CC_DLL void setBlueToothType(CABlueToothType type);

      返回值:void

      参数:

      类型参数名说明
      CABlueToothTypetype蓝牙类型

      解释:设置蓝牙类型


      typedef enum{    CABLUETOOTHOPEN = 0,            //开蓝牙    CABLUETOOTHCLOSE,               //关蓝牙    CABLUETOOTHDISCOVERY = 3 ,      //寻找蓝牙    CABLUETOOTHCANCELDISCOVERY      //取消寻找蓝牙     }CABlueToothType;     //蓝牙类型

      CC_DLL void startGyroscope(CAGyroDelegate* delegate);

      返回值:void

      参数:

      类型参数名说明
      CAGyroDelegate*delegate陀螺仪代理

      解释:开始陀螺仪


      CC_DLL void setGyroInterval(float interval);

      返回值:void

      参数:

      类型参数名说明
      floatinterval间隔

      解释:陀螺间隔


      CC_DLL void stopGyroscope();

      返回值:void

      参数:

      解释:停止陀螺仪

      类说明

      在CrossApp中提供了自带的存储类:CAUserDefault,适合存储数据量比较小,结构比较简单的数据。如果你需要存储大量的复杂数据,建议使用SQlite3比较合适。


      CAUserDefault 方法 (点击查看方法介绍)

      方法说明
      setBoolForKey根据pkey存储一个bool类型
      setIntegerForKey根据pkey存储一个int类型
      setFloatForKey根据pkey存储一个float类型
      setDoubleForKey根据pkey存储一个double类型
      setStringForKey根据pkey存储一个string类型
      getBoolForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回false
      getBoolForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue
      getIntegerForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回0 
      getIntegerForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue
      getFloatForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回0.0f 
      getFloatForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue
      getDoubleForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回0.0
      getDoubleForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue
      flush存储到UserDefault.xml,不写的话不会存入 
      getXMLFilePath获得UserDefault.xml的存储路径
      getStringForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回""
      getStringForKey根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue


      存储代码如下:

          //存储名字    CAUserDefault::sharedUserDefault()->setStringForKey("name", "zero");         //存储年龄    CAUserDefault::sharedUserDefault()->setIntegerForKey("age", 25);         //存储身高    CAUserDefault::sharedUserDefault()->setDoubleForKey("height",1.75);         //存储体重    CAUserDefault::sharedUserDefault()->setFloatForKey("wight", 75.0f);         //存储性别 true为男 fasle 女    CAUserDefault::sharedUserDefault()->setBoolForKey("sex", true);         //这里一定要提交写入哦,否则不会记录到xml中,下次启动游戏你就获取不到value了    CAUserDefault::sharedUserDefault()->flush();


      读取示例代码:

          //读取name    std::string name =  CAUserDefault::sharedUserDefault()->getStringForKey("name");         //读取Email,如果没有Email则返回"default"    std::string email = CAUserDefault::sharedUserDefault()->getStringForKey("Email","default");         //读取age    int age = CAUserDefault::sharedUserDefault()->getIntegerForKey("age");         //读取id,如果没有id则返回10000    int id = CAUserDefault::sharedUserDefault()->getIntegerForKey("id", 10000);         //读取身高体重,如果没有找到则返回0    double height =CAUserDefault::sharedUserDefault()->getDoubleForKey("height");    float weight =CAUserDefault::sharedUserDefault()->getFloatForKey("weight");         //读取sex,如果没有找到sex则返回true    bool sex = CAUserDefault::sharedUserDefault()->getBoolForKey("false", true);

      CAUserDefault 方法 

      void setBoolForKey(const char* pkey,bool valuer)

      返回值:void

      参数:

      类型参数名说明
      const char*pkeypkey
      boolvaluerbool类型的值

      解释:根据pkey存储一个bool类型 


      void setIntegerForKey(const char* pkey,int valuer)  

      返回值:void

      参数:

      类型参数名说明
      const char*pkeypkey
      intvaluerint类型的值

      解释:根据pkey存储一个int类型 


      void setFloatForKey(const char* pkey,float valuer)

      返回值:void

      参数:

      类型参数名说明
      const char*pkeypkey
      floatvaluerfloat类型的值

      解释:  根据pkey存储一个float类型 


      void setDoubleForKey(const char* pkey,double valuer)

      返回值:void

      参数:

      类型参数名说明
      const char*pkeypkey
      doublevaluerdouble类型的值

      解释:  根据pkey存储一个double类型 


      void setStringForKey(const char* pkey, const std::string & value)

      返回值:void

      参数:

      类型参数名说明
      const char*pkeypkey
      std::string &valuestring类型的值

      解释:  根据pkey存储一个string类型 


      bool getBoolForKey(const char* pKey)

      返回值:bool

      参数:

      类型参数名说明
      const char*pKeypkey

      解释:  根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回false 


      bool getBoolForKey(const char* pKey,bool defaultValue)

      返回值:bool

      参数:

      类型参数名说明
      const char*pkeypkey
      booldefaultValue默认值 

      解释:  根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue 


      int getIntegerForKey(const char* pKey)

      返回值:int

      参数:

      类型参数名说明
      const char*pKeypkey

      解释:根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回0 


      int getIntegerForKey(const char* pKey, int defaultValue)

      返回值:int

      参数:

      类型参数名说明
      const char*pkeypkey
      intdefaultValue默认值 

      解释:  根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue


      float getFloatForKey(const char* pKey)        

      返回值:float

      参数:

      类型参数名说明
      const char*pKeypkey

      解释:  根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回0.0f 


      float getFloatForKey(const char* pKey,float defaultValue)

      返回值:float

      参数:

      类型参数名说明
      const char*pkeypkey
      floatdefaultValue默认值

      解释:根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue 


      double getDoubleForKey(const char* pKey)        

      返回值:double

      参数:

      类型参数名说明
      const char*pkeypkey

      解释:  根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回0.0


      double getDoubleForKey(const cha * pKey,double defaultValue)

      返回值:double

      参数:

      类型参数名说明
      const char*pkeypkey
      doubledefaultValue默认值

      解释:  根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue 


      void flush();

      返回值:void

      参数:

      解释:  存储到UserDefault.xml,不写的话不会存入 


      const string& getXMLFilePath();

      返回值:const string&

      参数:

      解释:  获得UserDefault.xml的存储路径


      std::string getStringForKey(const char* pKey);

      返回值:

      参数:

      类型参数名说明
      const char*pkeypkey

      解释:根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回""


      std::string getStringForKey(const char* pKey, const std::string & defaultValue);

      返回值:

      参数:

      类型参数名说明
      const char*pkeypkey
      doubledefaultValue默认值

      解释:根据pkey读取相应的值,如果没有在UserDefault.xml找出则返回defaultValue

      在CrossApp中,简单数据存储,可以使用CAUserDefault。那么如何存储大量,不规则的数据?我们可以使用SQLite数据库存储数据。SQLite是使用非常广泛的嵌入式数据库,它有小巧 、高效、跨平台、开源免费和易操作的特点。

      SQLite数据库是使用C语言来编写的,在CrossApp中使用也是非常容易的。

      CrossApp已经添加了SQlite的,在CrossAppextensionssqlite3目录,我直接使用就可以了。


      引入头文件

      #include "CrossAppExt.h"


      创建数据库

      //数据库指针sqlite3 *pdb=NULL; //保存数据库的路径std::string path= CCFileUtils::sharedFileUtils()->getWritablePath()+"save.db"; std::string sql;int result; //打开一个数据,如果该数据库不存在,则创建一个新的数据库文件result=sqlite3_open(path.c_str(),&pdb); if(result!=SQLITE_OK){    CCLog("open database failed,  number%d",result);}


      SQL语句

      //创建数据库表的sql语句

      sql="create table student(ID integer primary key autoincrement,name text,sex text)";


      创建Talbe

      //创建表格result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL); if(result!=SQLITE_OK)    CCLog("create table failed");


        插入

        //向表内插入3条数据sql="insert into student  values(1,'student1','male')"; result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL); if(result!=SQLITE_OK)   CCLog("insert data failed!"); sql="insert into student  values(2,'student2','female')"; result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL); if(result!=SQLITE_OK)    CCLog("insert data failed!"); sql="insert into student  values(3,'student3','male')"; result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL); if(result!=SQLITE_OK)    CCLog("insert data failed!");

        查询

        //查询结果char **re; //行、列int r,c;  //查询数据sqlite3_get_table(pdb,"select * from student",&re,&r,&c,NULL); CCLog("row is %d,column is %d",r,c); //将查询出的数据通过log输出for(int i=1;i<=r;i++){    for(int j=0;j<c;j++)    {        CCLog("%s",re[i*c+j]);    }} sqlite3_free_table(re);


        删除

        sql="delete from student where ID=1"; //删除id=1的学生的信息result=sqlite3_exec(pdb,sql.c_str(), NULL,NULL,NULL); if(result!=SQLITE_OK)    CCLog("delete data failed!");

        注意
        使用sqlite一定要注意的内存管理问题,那就是打开数据库之后,数据操作完成之后,一定要关闭数据库,否侧会造成内存泄漏。

        sqlite3_close(pdb);

        SQlite保存路径

        Android:

        /data/data/com.youCompany.Helloworld/files/save.db

        IOS:

        位于程序沙盒的文档目录下


        ../Documents/save.db



        CrossApp使用lib_json来解析json文件。lib_json已经加入了libExtensions下,我们在CrossApp中使用非常的便捷。


        首先引入头文件

        #include "CrossAppExt.h"using namespace CSJson;


        我们先熟悉一下几个类名和函数

           /*    Value:写过脚本、弱语言的童鞋应该很清楚var,其他Value 和var一个道理,都是可以表示很多数据类型的数据类型。     这话可能比较绕,简单说就是Value你可以理解可以是int 也可以是string 也可以是其他数据类型。    当然定义 Value value,只是个定义,还没有决定其数据类型,如果你Value value =10;那么value 就是个整型    在用于JSON时,我们常表示为一个map,其中包括 key-value,键值对    其中Value 中包括一些将其转为基础数据类型的6个方法,如下:        value.asCString();        value.asString();        value.asBool();        value.asDouble();        value.asInt();        value.asUInt();    */             Value map;         /*    FastWriter:起作用是将Value数据编码成JSON格式的数据    常用函数:write(<#const Json::Value &root#>)    */    Json::FastWriter write;             /*    Value:作用与FastWriter相反,是将JSON格式的数据解析成一个Value    常用函数: reader.parse(<#std::istream &is#>, <#Json::Value &root#>)    */    Json::Reader reader;

        通过上面的注释,我们可以很清楚的了解函数的意义。下面我们开始生成Json数据和解析Json数据。


        Json数据生成

        //先定义数据    Value map;    map["name"] = "9miao";    map["password"] = "123456";    map["Email"] = "9miao@longtugame.com";    map["PHONE"] = 10086;         //编码成json数据    FastWriter  write;    string jsonData = write.write(map);         //打印结果    CCLog("jsonData:%s", jsonData.c_str());

        上面的打印结果:

        jsonData:{"Email":"9miao@longtugame.com","PHONE":10086,"name":"9miao","password":"123456"}

        Json数据解析

        有时候我们需要解析Resources目录下的json文件,首先我们就需要将json文件拷贝到Resources目录下。我们将下面的Json格式文件拷贝到Resources目录下命名为info.json.

        {    "info":     [        {"name":"aaa","num":"0001"},        {"name":"bbb","num":"0002"},        {"name":"ccc","num":"0003"},        {"name":"ddd","num":"0004"},        {"name":"eee","num":"0005"},        {"name":"fff","num":"0006"},        {"name":"ggg","num":"0007"},        {"name":"hhh","num":"0008"},        {"name":"iii","num":"0009"},        {"name":"jjj","num":"0010"},        {"name":"kkk","num":"0011"},        {"name":"lll","num":"0012"},        {"name":"mmm","num":"0013"},        {"name":"nnn","num":"0014"},        {"name":"ooo","num":"0015"},        {"name":"ppp","num":"0016"}    ],         "gender": "male",    "occupation": "coder"}

        我们在程序中添加以下代码对其解析:

        Reader reader;    //定义Valuer    Value value;         //json文件路径    string jsonFile = CCFileUtils::sharedFileUtils()->fullPathForFilename("info.json");         //将文件生成CCString对象    CCString* json = CCString::createWithContentsOfFile(jsonFile.c_str());         //将数据解析到value中    if (reader.parse(json->getCString(),value))    {        int length = value["info"].size();                 //循环解析子节点        for (int index = 0; index < length; index++)        {            std::string name = value["info"][index]["name"].asString();            std::string num = value["info"][index]["num"].asString();                         CCLog("name:%s", name.c_str());            CCLog("num:%s", num.c_str());        }                 //获取方式一        Value valueGender;        valueGender = value.get("gender", valueGender);        std::string gender = valueGender.asCString();                 //获取方式二        std::string occupation = value["occupation"].asCString();        CCLog("gender:%s", gender.c_str());        CCLog("occupation:%s", occupation.c_str());    }


        CrossAppy已经加入了tinyxml2库用于xml解析。#include "CrossApp.h"时候已经包含tinyxml2.h无须再引入头文件,这样我们就能在开发时方便的生成和解析xml文件。


        xml文档生成


        命名空间

        using namespace tinyxml2;

        生成xml代码

            //获得xml的保存路径    std::string filePath = CCFileUtils::sharedFileUtils()->getWritablePath() + "test.xml";         //在生成一个XMLDocument对象    tinyxml2::XMLDocument *pDoc = new tinyxml2::XMLDocument();         //xml 声明(参数可选)    XMLDeclaration *pDel = pDoc->NewDeclaration("xml version="1.0" encoding="UTF-8"");         //将pDel添加到XMLDocument对象中    pDoc->LinkEndChild(pDel);         //添加plist节点    XMLElement *plistElement = pDoc->NewElement("plist");         //设置l版本    plistElement->SetAttribute("version", "1.0");         //将pDec添加到XMLDocument对象中    pDoc->LinkEndChild(plistElement);         //添加一行注释    XMLComment *commentElement = pDoc->NewComment("this is xml comment");         //将注释添加到XMLDocument对象中    plistElement->LinkEndChild(commentElement);         //添加dic节点    XMLElement *dicElement = pDoc->NewElement("dic");    plistElement->LinkEndChild(dicElement);         //添加key节点    XMLElement *keyElement = pDoc->NewElement("key");    keyElement->LinkEndChild(pDoc->NewText("Text"));    dicElement->LinkEndChild(keyElement);         XMLElement *arrayElement = pDoc->NewElement("array");    dicElement->LinkEndChild(arrayElement);         for (int i = 0; i<3; i++) {        XMLElement *elm = pDoc->NewElement("name");        elm->LinkEndChild(pDoc->NewText("W3Cschool"));        arrayElement->LinkEndChild(elm);    }         pDoc->SaveFile(filePath.c_str());         CCLog("path:%s", filePath.c_str());         pDoc->Print();         delete pDoc;


        生成XML如下:

        <?xml version="1.0" encoding="UTF-8"?><plist version="1.0"><!--this is xml comment--><dic>    <key>Text</key>    <array>        <name>W3Cschool </name>        <name>W3Cschool </name>        <name>W3Cschool </name>    </array></dic></plist>


        解析XML


        下面我们就来解析一下上面生成的XML文档

        解析代码:

            //解析xml的路径    std::string filePath = CCFileUtils::sharedFileUtils()->getWritablePath() + "test.xml";         //生成一个XMLDocument对象    tinyxml2::XMLDocument *pDoc = new tinyxml2::XMLDocument();         //将xml文件读取到XMLDocument对象中    XMLError errorId = pDoc->LoadFile(filePath.c_str());         if (errorId != 0) {        //xml格式错误        return;    }         XMLElement *rootEle = pDoc->RootElement();         //获取第一个节点属性    const XMLAttribute *attribute = rootEle->FirstAttribute();         //打印节点属性名和值    CCLog("attribute_name = %s,attribute_value = %s", attribute->Name(), attribute->Value());         XMLElement *dicEle = rootEle->FirstChildElement("dic");        XMLElement *keyEle = dicEle->FirstChildElement("key");         if (keyEle) {        CCLog("keyEle Text= %s", keyEle->GetText());    }         XMLElement *arrayEle = keyEle->NextSiblingElement();         XMLElement *childEle = arrayEle->FirstChildElement();        while (childEle) {        CCLog("childEle Text= %s", childEle->GetText());                 childEle = childEle->NextSiblingElement();    }         delete pDoc;

        打印结果:

        attribute_name = version,attribute_value = 1.0 keyEle Text= Text childEle Text= W3Cschool childEle Text= W3Cschool childEle Text= W3Cschool

        注意:

        tinyxml在android上解析assert文件夹下会有问题,解决方式如下:

        unsigned long nSize = 0; std::string fullPath = CCFileUtils::sharedFileUtils()->fullPathForFilename("test.xml"); unsigned char* pBuffer = CCFileUtils::sharedFileUtils()->getFileData(fullPath.c_str(), "rb", &nSize); tinyxml2::XMLDocument xmlDoc; xmlDoc.Parse((const char *)pBuffer);

        CrossApp为我们封装了http的网络框架,其文件在CrossApp引擎包的extensions etwork文件下的 HttpClient、HttpRequest 、HttpResponse。

        进行一次http交互,需要涉及的有三个类:

        HttpRequest 用来描述一个请求。

        HttpResponse 用来描述对应请求的响应。

        HttpClient是一个单例模式的类,它的职责就是负责将收到的HttpRequest对象push到发送队列中,并发送一个信号量驱动工作线程工作,工作线程再将收到的数据封装成一个HttpResponse对象push接收队列,并启用调度来派送数据。


        引用头文件:

        #include "CrossAppExt.h"

        请求

        /**编译到Android平台之后注意添加联网权限**///创建request对象,这里new出来的对象不能使用autorelease(),原因后述  CAHttpRequest* request = new CAHttpRequest(); //设置URLrequest->setUrl("www.9maio.com"); //设置请求类型kHttpGet、kHttpPost、KHttpPostFile、kHttpPut、kHttpDelete、kHttpUnkownrequest->setRequestType(CAHttpRequest::kHttpGet); //这是回调对象和回调函数  request->setResponseCallback(this, httpresponse_selector(FirstViewController::requestresult)); //使用CCHttpClient共享实例来发送requestCAHttpClient::getInstance()->send(request); //调用release() request->release();

        接收

        void FirstViewController::requestresult(CAHttpClient* clinet, CAHttpResponse* response){    if (!response->isSucceed())    {        return;    }    //获取返回代码,比如200、404等    int statusCode = response->getResponseCode();    if (statusCode == 200)    {        std::string responseRes = "";        std::vector<char> *buffer = response->getResponseData();        for (unsigned int i = 0; i < buffer->size(); i++)        {            responseRes += (*buffer)[i];        }        //查找字符“官方特约”        string::size_type idx = responseRes.find(UTF8("官方特约"));        if (idx == -1)        {            //为找到字符            CCLog(" Not Found");            return;        }        string temp = responseRes.substr(idx, 30);        string num = temp.substr(temp.find(UTF8(":")) + 3, temp.find("<") - temp.find(UTF8(":")) - 3);        CCLog("temp:%s",temp.c_str());    }    else    {        //打印返回代码        CCLog("statusCode:%d", statusCode);    }}

        本节贴出如何通过http请求网络图片,并绘制到屏幕上


        发送请求

            /**    编译到Android平台之后注意添加联网权限    **/    CCHttpRequest* request = new CCHttpRequest();         // 请求图片的url    request->setUrl("http://www.9miao.com/template/dean_hotspot_141011/deancss/logo.png");         //请求方式    request->setRequestType(CCHttpRequest::kHttpGet);         //设置回调    request->setResponseCallback(this, httpresponse_selector(FirstViewController::onHttpRequestImageCompleted));         // 设置tag    request->setTag("image");         CCHttpClient::getInstance()->send(request);         request->release();

        接受图片

        void FirstViewController::onHttpRequestImageCompleted(CCHttpClient *sender, CCHttpResponse *response){    if (!response)    {        return;    }         if (!response->isSucceed())    {        CCLog("response failed");        CCLog("error buffer: %s", response->getErrorBuffer());        return;    }         vector<char> *buffer = response->getResponseData();         //创建一个CCImage    CCImage* img = new CCImage();         img->initWithImageData((unsigned char*)buffer->data(), buffer->size());         //创建一个纹理CAImage    CAImage* texture = new CAImage();         bool isImg = texture->initWithImage(img);         img->release();         //通过CAImageView绘制到屏幕    CAImageView* iv = CAImageView::createWithImage(texture);         iv->setFrame(DRect(0, 0, 200, 200));         this->getView()->addSubview(iv);}

        如果成功,将会看到9秒社团的logo。



        类说明
        CAViewAnimation是CrossApp中提供实现动画效果的类,它的对外提供一系列的静态函数供使用者调用,通过对CAViewAnimation的属性设置,及对View属性的改变,来定制你所需要的动画效果。CAViewAnimation的使用方法类似于IOS开发中的Core Animation


        CAViewAnimation 方法(点击查看方法介绍)

        方法说明
        beginAnimations表示动画开始
        commitAnimations表示动画结束
        setAnimationDuration动画所用的时间,默认为0.2秒
        setAnimationDelay动画延时多长时间后开始播放,默认为0秒
        setAnimationCurve设置动画的曲线方式
        setAnimationRepeatCount动画的重复次数,默认1次
        setAnimationRepeatAutoreverses画结束后,是否执行反向动作,默认为false
        setAnimationWillStartSelector动画开始时,调用SEL_CAViewAnimation0函数,SEL_CAViewAnimation0函数是一个无参数的函数
        setAnimationWillStartSelector动画开始时,调用SEL_CAViewAnimation2函数,SEL_CAViewAnimation2函数是一个有两个参数的函数,分别是const std::string& animationID和void* context
        setAnimationDidStopSelector动画结束时,调用SEL_CAViewAnimation0函数,SEL_CAViewAnimation0函数是一个无参数的函数
        setAnimationDidStopSelector动画结束时,调用SEL_CAViewAnimation2函数,SEL_CAViewAnimation2函数是一个有两个参数的函数,分别是const std::string& animationID和void* context
        removeAnimations根据animationID移除对应的动画
        removeAnimationsWithView移除对应的CAView的动画
        setAnimationsEnabled设置是否禁用动画效果
        areAnimationsEnabled动画是否被禁用
        areBeginAnimations动画是否开始执行
        areBeginAnimationsWithID对应的animationID的动画是否开始执行


        基本用法

        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);label->setFontSize(_px(72));label->setText("Hello World!");label->setColor(CAColor_white); this->getView()->insertSubview(label, 1); /****************下面是ViewAnimation部分************************/CAViewAnimation::beginAnimations("animation1", NULL);//开始 //CAView属性的改变:缩放、位置、旋转、透明度等等.label->setScale(5); CAViewAnimation::commitAnimations();//结束
        这是CAViewAnimation最基本的用法,beginAnimations和commitAnimations函数都是成对出现的,上一段代码就能够实现让CAView放大5倍的动画效果,虽然我们没有设置它的时间,但默认时间为0.2秒

        CAViewAnimation::beginAnimations("animation1", NULL);//开始 CAViewAnimation::setAnimationDuration(0.8);//设置时间CAViewAnimation::setAnimationDelay(1.0);//设置延时时间 /**CAView属性的改变:缩放、位置、旋转、透明度等等.*例如:label->setScale(5);*/ CAViewAnimation::setAnimationCurve(CAViewAnimationCurveEaseInOut);//时间曲线CAViewAnimation::setAnimationRepeatAutoreverses(true);//是否执行反动作CAViewAnimation::setAnimationRepeatCount(2);//反动作执行次数 CAViewAnimation::commitAnimations();//结束

        我们可以根据自己的需求,定制更多的属性来实现我们想要的动画效果。这是CAViewAnimation最基本的用法,beginAnimations和commitAnimations函数都是成对出现的,上一段代码就能够实现让CAView放大5倍的动画效果,虽然我们没有设置它的时间,但默认时间为0.2秒


        动画的嵌套

        CAViewAnimation::beginAnimations("animation1", NULL);CAViewAnimation::setAnimationDuration(0.8);//设置animation1时间 //1部分的动画CAViewAnimation::beginAnimations("animation2", NULL);CAViewAnimation::setAnimationDuration(0.8);//设置animation2时间 //2部分的动画CAViewAnimation::commitAnimations();//结束1CAViewAnimation::commitAnimations();//结束2

        多个CAViewAnimation之间可以嵌套使用,可以设置不同的时间、延时、反函数及回调等。当一定要注意View属性改变的位置,要写在对应的嵌套层级。


        监听与回调

        CAViewAnimation::beginAnimations("animation1", NULL);//开始 //开始回调,在Animation开始时调用CAViewAnimation::setAnimationWillStartSelector(this, CAViewAnimation0_selector(FirstViewController::callbackStartAnimation0)); /**CAView属性的改变:缩放、位置、旋转、透明度等等.*例如:label->setScale(5);*/ //结束回调,在Animation结束时调用CAViewAnimation::setAnimationDidStopSelector(this, CAViewAnimation2_selector(FirstViewController::callbackStopAnimation2)); CAViewAnimation::commitAnimations();//结束
        开始回调函数如下
        void FirstViewController::callbackStartAnimation0(){    CCLog("callbackStartAnimation0-->");} 结束回调函数如下void FirstViewController::callbackStopAnimation2(const std::string& animationID , void* context){    //输出animationID    CCLog("animationID:%s",animationID.c_str());}

        注意:回调的第二个参数“void* context”就是CAViewAnimation::beginAnimations("animation1", NULL);传入的第二个参数(我们这里传的是NULL),它本身是一个void指针类型,使用时候需要类型转换。开始回调函数如下


        例如:

          CALabel* label = CALabel::createWithCenter(DRect(winRect.size.width*0.5, winRect.size.height*0.5-270, winRect.size.width, 200)); this->getView()->insertSubview(label, 1); CAViewAnimation::beginAnimations("animation1", lable); CAViewAnimation::setAnimationDuration(0.8);//设置时间 label->setScale(5); CAViewAnimation2_selector(FirstViewController::callbackStopAnimation2));//结束回调,在Animation结束时调用 CAViewAnimation::commitAnimations();//结束 回调:void FirstViewController::callbackStopAnimation2(const std::string& animationID , void* context){    CALabel* label = (CALabel*)context;              if (label) {        label->setRotation(180);    }}


          这个样我们就可以获得Label并改变其属性,当然我们可以传入其他类型的参数。

          组合动画
          1同时执行

          默认情况下,CAView的属性变化写在一对beginAnimations()和commitAnimations()直接,这些所有的变化将是同时执行。

          2顺序执行

          方法一:延时

          利用延时,在上一个Animation时间结束后,再执行下一个Animation。

          //第一个AnimationCAViewAnimation::beginAnimations("", NULL); CAViewAnimation::setAnimationDuration(1.8); label->setRotation(180); CAViewAnimation::commitAnimations();    //第二个AnimationCAViewAnimation::beginAnimations("", NULL); CAViewAnimation::setAnimationDuration(2.8);CAViewAnimation::setAnimationDelay(1.8);//延时1.8秒 label->setScale(5); CAViewAnimation::commitAnimations();

          方法二:回调

          利用Animation的介绍回调

          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表示回调方法有一个参数,以此类推

          示例代码:

          // CALLBACK_BIND_2对应的tableViewHeightForRowAtIndexPath方法有两个参数m_pTableView->onCellHeightAtIndexPath(CALLBACK_BIND_2(TableViewTest::tableViewHeightForRowAtIndexPath, this)); // tableViewHeightForRowAtIndexPath的实现 两个参数分别为section和rowunsigned int TableViewTest::tableViewHeightForRowAtIndexPath(unsigned int section, unsigned int row){    return 130;} // CALLBACK_BIND_1对应的tableViewHeightForHeaderInSection方法有一个参数m_pTableView->onHeightForHeaderInSection(CALLBACK_BIND_1(TableViewTest::tableViewHeightForHeaderInSection, this)); // tableViewHeightForHeaderInSection的实现 一个参数是sectionunsigned int TableViewTest::tableViewHeightForHeaderInSection(unsigned int section){    return 50;}

          宏名: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代表类中的方法。

          示例:

          CC_LISTENING_FUNCTION(unsigned int(unsigned int section), HeightForHeaderInSection);// 解释:HeightForHeaderInSection为类CATableView的方法名,用到时前面需要加on,unsigned int section为回调方法的参数,// unsigned int为回调方法的返回值类型。 // 用法m_pTableView->onHeightForHeaderInSection(CALLBACK_BIND_1(TableViewTest::tableViewHeightForHeaderInSection, this)); // 实现tableViewHeightForHeaderInSection回调方法unsigned int TableViewTest::tableViewHeightForHeaderInSection(unsigned int section){    return 50;}

          判断平台的宏:

          #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用于来判断平台。

          下面来看一个通过判断平台打开网址的示例:

          void openUrl(const std::string &url){// 如果当前系统是MAC系统#if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC)    [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:[NSString stringWithUTF8String:url.c_str()]]];     // 如果当前系统是IOS系统#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithUTF8String:url.c_str()]]];         #endif}

          类说明 

          视图类CAView是整个CrossApp引擎最基本的类,负责将各式各样的界面呈现出来,我们在App中所能看见的的一切界面其实就是一个个CAView的组合。CAView负责在屏幕上定义矩形区域,在展示用户界面及响应用户界面交互方面发挥关键作用。每个视图对象要负责渲染试图矩形区域中的内容,并响应该区域内发生的操作事件,视图是应用程序用户交互的重要机制。


          除了显示内容和处理事件之外,试图还可以管理一个或多个子视图。我们可以在一个view上面添加多个子view,而作为父view,即父节点,负责管理其直接子视图,并根据需要调整他们的位置和尺寸,以及响应他们没有处理的事件。


          基类

          CAResponder


          CAView 方法(点击查看方法介绍)

          方法说明
          create创建
          createWithFrame创建,并指定其Frame
          createWithFrame创建,并指定Frame和Color
          createWithCenter创建,并设置其Center
          createWithCenter创建,并设置其Center和Color
          createWithLayout创建,并设置其Layout
          createWithLayout创建,并设置其Layout和Color
          createWithColor创建,并指定Color
          init初始化
          initWithFrame初始化,并指定其Frame
          initWithCenter初始化,并指定其Center
          initWithLayout初始化,并指定其Layout
          initWithColor初始化,并指定其Color
          description描述
          setZOrderzOrder轴值
          _setZOrderz轴值
          getZOrder获取z轴值
          setVertexZ顶点z轴值
          getVertexZ获取顶点z轴值
          setScaleX设置X轴缩放
          getScaleX获取X轴缩放
          setScaleY设置Y轴缩放
          getScaleY获取Y轴缩放
          setScale设置缩放
          getScale获取缩放
          setScale设置缩放,并指定其X轴Y轴
          setSkewX设置X倾斜
          getSkewX获取X倾斜
          setSkewY设置Y倾斜
          getSkewY获取Y倾斜
          setAnchorPoint设置锚点
          getAnchorPoint获取锚点
          setAnchorPointInPoints设置锚点的点
          getAnchorPointInPoints获取锚点的点
          setFrame设置Frame
          getFrame获取Frame
          setFrameOrigin设置Frame轴值
          getFrameOrigin获取Frame轴值
          setCenter设置Center
          getCenter获取Center
          setBounds设置边界
          getBounds获取边界
          setCenterOrigin设置Center轴值
          getCenterOrigin获取Center轴值
          setVisible设置是否可见
          isVisible查看是否可见
          setRotation设置旋转,并指定角度
          getRotation获取旋转角度
          setRotationX设置X轴旋转,并指定角度
          getRotationX获取X周旋转角度
          setRotationY设置Y轴旋转,并指定角度
          getRotationY获取Y轴旋转角度
          addSubview将子视图添加进当前视图
          insertSubview将子视图添加进当前视图,并指定一个Z轴值
          getSubviewByTag通过 tag 获取子视图
          getSubviewByTextTag通过 TextTag 获取子视图
          getSubviews获取子视图的集合
          getSubviewsCount获取子视图数量
          setSuperview设置视图
          getSuperview获取视图
          removeFromSuperview从父视图移除
          removeSubview删除子视图
          removeSubviewByTag删除子视图,根据tag
          removeSubviewByTextTag删除子视图,根据TextTag
          removeAllSubviews移除当前视图的所有子视图
          reorderSubview记录子视图与对应的标签值
          sortAllSubviews对当前视图的所有子视图进行排序
          isRunning查看是否运行
          onEnter进入
          onEnterTransitionDidFinish当图像加载时调用的事件回调
          onExit退出
          onExitTransitionDidStart当图像加载结束时调用的事件回调
          getCamera获得相机
          draw显示
          visit访问
          nextResponder获取下一个Responder
          copy复制View
          ccTouchBegan触摸事件开始时的回调函数
          ccTouchMoved触摸事件中触点移动时的回调函数
          ccTouchEnded触摸事件结束时的回调函数
          ccTouchCancelled触摸非正常结束时的回调函数(例如:电话或锁屏)


          CAView 方法说明

          static CAView* create(void);

          返回值:CAView*

          参数:

          解释:创建


          static CAView* createWithFrame(const DRect& rect);

          返回值:CAView*

          参数:

          类型参数名说明
          DRect&rect区域大小

          解释:创建,并指定其Frame


          static CAView* createWithFrame(const DRect& rect, const CAColor4B& color4B);

          返回值:CAView*

          参数:

          类型参数名说明
          DRect&rect区域大小
          CAColor4B&color4Bview颜色

          解释:创建,并指定Frame和Color


          static CAView* createWithCenter(const DRect& rect);

          返回值:CAView*

          参数:

          类型参数名说明
          DRect&rect中心点的位置及大小

          解释:创建,并设置其Center


          static CAView* createWithCenter(const DRect& rect, const CAColor4B& color4B);

          返回值:CAView*

          参数:

          类型参数名说明
          DRect&rect中心点的位置及大小
          CAColor4B&color4Bview颜色

          解释:创建,并设置其Center和Color


          static CAView* createWithLayout(const DLayout& layout);

          返回值:CAView*

          参数:

          类型参数名说明
          const DLayout&layoutlayout

          解释:创建,并设置其Layout


          static CAView* createWithLayout(const DLayout& layout, const CAColor4B& color4B);

          返回值:CAView*

          参数:

          类型参数名说明
          const DLayout&layoutlayout
          CAColor4B&color4Bview颜色

          解释:创建,并设置其Layout和Color


          static CAView* createWithColor(const CAColor4B& color4B);

          返回值:CAView*

          参数:

          类型参数名说明
          CAColor4B&color4Bview颜色

          解释:创建,并指定Color


          virtual bool init();

          返回值:bool

          参数:

          解释:初始化


          virtual bool initWithFrame(const DRect& rect);

          返回值:bool

          参数:

          类型参数名说明
          DRect&rect区域大小

          解释:初始化,并指定其Frame


          virtual bool initWithCenter(const DRect& rect);

          返回值:bool

          参数:

          类型参数名说明
          DRect&rect中心点大小

          解释:初始化,并指定其Center


          virtual bool initWithLayout(const DLayout& layout);

          返回值:bool

          参数:

          类型参数名说明
          const DLayout&layoutlayout

          解释:初始化,并指定其Layout


          virtual bool initWithColor(const CAColor4B& color4B);

          返回值:bool

          参数:

          类型参数名说明
          CAColor4B&color4Bview颜色

          解释:初始化,并指定其Color


          const char* description(void);

          返回值:char*

          参数:

          解释:描述


          virtual void setZOrder(int zOrder);

          返回值:void

          参数:

          类型参数名说明
          intzOrderzOrder轴值

          解释:zOrder轴值


          virtual void _setZOrder(int z);

          返回值:void

          参数:

          类型参数名说明
          intzz轴值

          解释:z轴值


          virtual int getZOrder();

          返回值:int

          参数:

          解释:获取z轴值


          virtual void setVertexZ(float vertexZ);

          返回值:void

          参数:

          类型参数名说明
          floatvertexZ顶点z轴值

          解释:顶点z轴值


          virtual float getVertexZ();

          返回值:float

          参数:

          解释:获取顶点z轴值


          virtual void setScaleX(float fScaleX);

          返回值:void

          参数:

          类型参数名说明
          floatfScaleXX轴缩放

          解释:设置X轴缩放


          virtual float getScaleX();

          返回值:float

          参数:

          解释:获取X轴缩放


          virtual void setScaleY(float fScaleY);

          返回值:void

          参数:

          类型参数名说明
          floatfScaleYY轴缩放

          解释:设置Y轴缩放


          virtual float getScaleY();

          返回值:float

          参数:

          解释:获取Y轴缩放


          virtual void setScale(float scale);

          返回值:void

          参数:

          类型参数名说明
          floatscale缩放

          解释:设置缩放


          virtual float getScale();

          返回值:float

          参数:

          解释:获取缩放


          virtual void setScale(float fScaleX,float fScaleY);

          返回值:void

          参数:

          类型参数名说明
          floatfScaleX缩放X轴
          floatfScaleY缩放Y轴

          解释:设置缩放,并指定其X轴Y轴


          virtual void setSkewX(float fSkewX);

          返回值:void

          参数:

          类型参数名说明
          floatfSkewXX倾斜

          解释:设置X倾斜


          virtual float getSkewX();

          返回值:float

          参数:

          解释:获取X倾斜


          virtual void setSkewY(float fSkewY);

          返回值:void

          参数:

          类型参数名说明
          floatfSkewYY倾斜

          解释:设置Y倾斜


          virtual float getSkewY();

          返回值:float

          参数:

          解释:获取Y倾斜


          void setAnchorPoint(const DPoint& anchorPoint);

          返回值:void

          参数:

          类型参数名说明
          DPoint&anchorPoint锚点

          解释:设置锚点


          const DPoint& getAnchorPoint();

          返回值:DPoint&

          参数:

          解释:获取锚点


          void setAnchorPointInPoints(const DPoint& anchorPointInPoints);

          返回值:void

          参数:

          类型参数名说明
          DPoint&anchorPointInPoints锚点的点

          解释:设置锚点的点


          const DPoint& getAnchorPointInPoints();

          返回值:DPoint&

          参数:

          解释:获取锚点的点


          virtual void setFrame(const DRect& rect);

          返回值:void

          参数:

          类型参数名说明
          DRect&rect区域大小

          解释:设置Frame


          virtual const DRect& getFrame() const;

          返回值:DRect&

          参数:

          解释:获取Frame


          virtual void setFrameOrigin(const DPoint& point);

          返回值:void

          参数:

          类型参数名说明
          DPoint&point轴值

          解释:设置Frame轴值


          virtual const DPoint& getFrameOrigin();

          返回值:DPoint&

          参数:

          解释:获取Frame轴值


          virtual void setCenter(const DRect& rect);

          返回值:void

          参数:

          类型参数名说明
          DRect&rect中心点大小

          解释:设置Center


          virtual DRect getCenter();

          返回值:DRect

          参数:

          解释:获取Center


          virtual void setBounds(const DRect& rect);

          返回值:void

          参数:

          类型参数名说明
          DRect&rect边界大小

          解释:设置边界


          virtual DRect getBounds() const;

          返回值:DRect

          参数:

          解释:获取边界


          virtual void setCenterOrigin(const DPoint& point);

          返回值:void

          参数:

          类型参数名说明
          DPoint&point轴值

          解释:设置Center轴值


          virtual DPoint getCenterOrigin();

          返回值:DPoint

          参数:

          解释:获取Center轴值


          virtual void setVisible(bool visible);

          返回值:void

          参数:

          类型参数名说明
          boolvisible是否可见

           解释:设置是否可见


          virtual bool isVisible();

          返回值:bool

          参数:

          解释:查看是否可见


          virtual void setRotation(float fRotation);

          返回值:void

          参数:

          类型参数名说明
          floatfRotation旋转角度

          解释:设置旋转,并指定角度


          virtual float getRotation();

          返回值:float

          参数:

          解释:获取旋转角度


          virtual void setRotationX(float fRotaionX);

          返回值:void

          参数:

          类型参数名说明
          floatfRotaionXX轴旋转角度

          解释:设置X轴旋转,并指定角度


          virtual float getRotationX();

          返回值:float

          参数:

           解释:获取X周旋转角度


          virtual void setRotationY(float fRotationY);

          返回值:void

          参数:

          类型参数名说明
          floatfRotationYY轴旋转角度

          解释:设置Y轴旋转,并指定角度


          virtual float getRotationY();

          返回值:float

          参数:

          解释:获取Y轴旋转角度


          virtual void addSubview(CAView * child);

          返回值:void

          参数:

          类型参数名说明
          CAView*child子视图

          解释:将子视图添加进当前视图


          virtual void insertSubview(CAView* subview, int z);

          返回值:void

          参数:

          类型参数名说明
          CAView*subview子视图
          intzZ轴值

          解释:将子视图添加进当前视图,并指定一个Z轴值


          virtual CAView * getSubviewByTag(int tag);

          返回值:CAView* 

          参数:

          类型参数名说明
          inttag标签

          解释:通过 tag 获取子视图


          virtual CAView * getSubviewByTextTag(const std::string& textTag);

          返回值:CAView*

          参数:

          类型参数名说明
          std::string&textTag文本标签

          解释:通过 TextTag 获取子视图


          virtual const CAVector<CAView*>& getSubviews();

          返回值:CAVector<CAView*>&

          参数:

          解释:获取子视图的集合


          virtual unsigned int getSubviewsCount(void) const;

          返回值:unsigned int

          参数:

          解释:获取子视图数量


          virtual void setSuperview(CAView* superview);

          返回值:void

          参数:

          类型参数名说明
          CAView*superview视图

          解释:设置视图


          virtual CAView* getSuperview();

          返回值:CAView*

          参数:

          解释:获取视图


          virtual void removeFromSuperview();

          返回值:void

          参数:

          解释:从父视图移除


          virtual void removeSubview(CAView* subview);

          返回值:void

          参数:

          类型参数名说明
          CAView*subview子视图

          解释:删除子视图


          virtual void removeSubviewByTag(int tag);

          返回值:void

          参数:

          类型参数名说明
          inttag标签

          解释:删除子视图,根据tag


          virtual void removeSubviewByTextTag(const std::string& textTag);

          返回值:void

          参数:

          类型参数名说明
          std::string&textTag文本标签

          解释:删除子视图,根据TextTag


          virtual void removeAllSubviews();

          返回值:void

          参数:

          解释:移除当前视图的所有子视图


          virtual void reorderSubview(CAView * child, int zOrder);

          返回值:void

          参数:

          类说明

          CAView的代理类,此类为抽象类,声明了3个纯虚函数。


          CAViewDelegate 方法(点击查看方法介绍)

          方法说明
          getSuperViewRect用于获取父节点的rect
          viewOnEnterTransitionDidFinish完全载入view后调用
          viewOnExitTransitionDidStart移除view时调用



          CAViewDelegate 方法说明

          virtual void getSuperViewRect(const DRect& rect);

          返回值:void

          参数:

          类型参数名说明
          const DRect&rect父节点的rect

          解释:用于获取父节点的rect


          virtual void viewOnEnterTransitionDidFinish();

          返回值:void

          参数:

          解释:完全载入view后调用


          virtual void viewOnExitTransitionDidStart();

          返回值:void

          参数:

          解释:移除view时调用

          类说明

          CATextField是单行输入框控件。主要接收用户的文本输入,多用于用户名、密码、聊天输入等。(1.1版本)


          CATextField 属性 (点击属性名可查看属性介绍)

          属性
          说明
          BackgroundViewTextField的背景视图
          CursorColorTextField的光标颜色
          FontNameTextField的字体名称
          FontSizeTextField的字体大小
          HoriMarginsTextField的水平边缘
          InputTypeTextField的输入类型
          PlaceHolderPlaceHolder文本内容
          SpaceHolderColorPlaceHolder文本内容颜色
          TextTextField的文本内容
          TextColorTextField的文字颜色
          TextEditAlignTextField的文本编辑对齐
          CharCountTextField的字符计数
          DelegateTextField的代理(设置代理才能被监听状态)
          VertMarginsTextField的垂直边缘


          CATextField 方法 (点击方法名可查看方法介绍)

          函数说明
          setKeyboardType设置键盘的类型(真机或模拟器上有效)
          getKeyboardType获取键盘类型(真机或模拟器上有效)
          setKeyboardReturnType设置确认键的类型(真机或模拟器上有效)  
          getKeyboardReturnType获取确认键的类型(真机或模拟器上有效)  
          resignFirstResponder隐藏键盘第一响应者状态
          becomeFirstResponder弹出键盘第一响应者状态
          resignResponder隐藏键盘状态
          createWithFrame创建,并指定其Frame
          createWithCenter创建,并指定其Center
          init初始化
          setImageRect设置图像大小
          updateImageRect更新图像
          setColor设置颜色
          getColor获取颜色


          CATextField是单行输入框控件。主要接收用户的文本输入,多用于用户名、密码、聊天输入等。


          在CATextField接受用户输入文本时,我们有时候希望获得用户的操作行为,比如CATextField获得焦点、CATextField失去焦点、用户输入字符、用户删除字符,这样我们可以对用户的操作进行逻辑处理,比如限制输入内容,输入字符长度等。那么如何才能监听到CATextField的改变呢?我们需要了解一下啊CATextFieldDelegate,它主要使用的有四个函数分别是:

          //获得焦点   virtual bool onTextFieldAttachWithIME(CATextField * sender);    //失去焦点   virtual bool onTextFieldDetachWithIME(CATextField * sender);       //输入文本   virtual bool onTextFieldInsertText(CATextField * sender, const char * text, int nLen);    //删除文本   virtual bool onTextFieldDeleteBackward(CATextField * sender, const char * delText, int nLen)
          假如我们想在FirstViewController中监听CATextField那么我们需要使FirstViewController继承CATextFieldDelegate并重写这些函数。下面我们以常见的登陆界面为例,来讲解CATextField的使用方法。

          首先看FirstViewController.h文件代码

          #include <iostream>#include "CrossApp.h" USING_NS_CC; class FirstViewController : public CAViewController, public CATextFieldDelegate{  public:    FirstViewController();    virtual ~FirstViewController();         //获得焦点     virtual bool onTextFieldAttachWithIME(CATextField * sender);    //失去焦点    virtual bool onTextFieldDetachWithIME(CATextField * sender);    //输入文本    virtual bool onTextFieldInsertText(CATextField * sender, const char * text, int nLen);    //删除文本    virtual bool onTextFieldDeleteBackward(CATextField * sender, const char * delText, int nLen);    //登录    void login(CAControl* control,DPoint point);     protected:    void viewDidLoad();     void viewDidUnload();  };

          然后我们在FirstViewController.cpp中做逻辑实现

          #include "FirstViewController.h"FirstViewController::FirstViewController(){} FirstViewController::~FirstViewController(){} void FirstViewController::viewDidLoad(){    //用户名文本    CALabel* nameLabel = CALabel::createWithFrame(DRect(50, 100, 100, 40));    nameLabel->setText(UTF8("用户名:"));    nameLabel->setTextAlignment(CATextAlignmentCenter);    nameLabel->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);    this->getView()->addSubview(nameLabel);         //密码文本    CALabel* passwordLabel = CALabel::createWithFrame(DRect(50, 200, 100, 40));    passwordLabel->setText(UTF8("密码:"));    passwordLabel->setTextAlignment(CATextAlignmentCenter);    passwordLabel->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);    this->getView()->addSubview(passwordLabel);         //创建    CATextField* nameTF = CATextField::createWithFrame(DRect(200, 100, 300, 40));         //设置tag    nameTF->setTag(1);         //设置提示文本    nameTF->setPlaceHolder(UTF8("请输入用户名"));         //设置光标颜色    nameTF->setCursorColor(CAColor_orange);         /*设置键盘类型(真机或模拟器上有效)    KEY_BOARD_TYPE_NORMAL:普通键盘    KEY_BOARD_TYPE_NUMBER:数字键盘    KEY_BOARD_TYPE_ALPHABET:字母键盘    */    nameTF->setKeyboardType(eKeyBoardType::KEY_BOARD_TYPE_ALPHABET);         /*设置确认键的类型(真机或模拟器上有效)    KEY_BOARD_RETURN_DONE:完成    KEY_BOARD_RETURN_SEARCH:搜索    KEY_BOARD_RETURN_SEND:发送    */    nameTF->setKeyboardReturnType(eKeyBoardReturnType::KEY_BOARD_RETURN_DONE);         //绑定代理(设置代理才能被监听状态)    nameTF->setDelegate(this);         //添加渲染    this->getView()->addSubview(nameTF);    CATextField* password = CATextField::createWithFrame(DRect(200,200,300,40));         //设置tag    password->setTag(2);         //设置提示文本    password->setPlaceHolder(UTF8("请输入密码"));         //设置提示文本颜色    password->setSpaceHolderColor(CAColor_red);         //设置输入样式为密码格式    password->setInputType(eKeyBoardInputType::KEY_BOARD_INPUT_PASSWORD);         //添加渲染    this->getView()->addSubview(password);         //登录按钮    CAButton* loginBtn = CAButton::createWithFrame(DRect(200, 260, 100, 40), CAButtonType::CAButtonTypeRoundedRect);    loginBtn->setTitleForState(CAControlStateAll, UTF8("登录"));    loginBtn->addTarget(this, CAControl_selector(FirstViewController::login), CAControlEventTouchDown);    this->getView()->addSubview(loginBtn);} void FirstViewController::viewDidUnload(){    // Release any retained subviews of the main view.    // e.g. self.myOutlet = nil;} bool FirstViewController::onTextFieldAttachWithIME(CATextField * sender){    //获得焦点    CCLog("onTextFieldAttachWithIME--->");         //如果为false获得焦点时不弹出键盘    return false;} bool FirstViewController::onTextFieldDetachWithIME(CATextField * sender){    //失去焦点    CCLog("onTextFieldDetachWithIME--->");         //失去焦点时不移除键盘    return true;} bool FirstViewController::onTextFieldInsertText(CATextField * sender, const char * text, int nLen){    //输入时调用    CCLog("onTextFieldInsertText--->Text:%s,Len:%d", text, nLen);         //如果为true,控件则不会接受输入的字符    return true;} bool FirstViewController::onTextFieldDeleteBackward(CATextField * sender, const char * delText, int nLen){    //删除字符时调用    CCLog("onTextFieldDeleteBackward--->Text:%s,Len:%d",delText,nLen);         //如果为true,控件则不删除受输入的字符    return false;} //登录void FirstViewController::login(CAControl* control, DPoint point){    //根据tag值获得nameTF 和passwordTF    CATextField* nameTF = (CATextField*) this->getView()->getSubviewByTag(1);    CATextField* passwordTF = (CATextField*) this->getView()->getSubviewByTag(2);         //获得输入框的内容    string name = nameTF->getText();    string password = passwordTF->getText();         //如果用户名为"9miao" 密码为"123456" 则打印ok否则打印error    if (strcmp(name.c_str(), "9miao") == 0 &&  strcmp(password.c_str(), "123456") == 0)    {            CCLog("OK");    }    else    {            CCLog("ERROR");    }}

          这样我们就实现了一个最简单的登录页面,通过这个demo能过让更好的理解CATextField的使用方法。


          CATextField 属性介绍     

           BackgroundView

          类型:CAView*

          解释:设置TextField的背景视图。set/get{}。


          CursorColor

          类型:CAColor4B

          解释:设置TextField的光标颜色。set/get{}。


          FontName

          类型:std::string

          解释:设置TextField的字体名称。set/get{}。


          FontSize

          类型:int

          解释:设置TextField的字体大小。set/get{}。


          HoriMargins

          类型:int

          解释:设置TextField的水平边缘。set/get{}。


          InputType

          类型:eKeyBoardInputType

          解释:设置TextField的输入类型。set/get{}。

          enum eKeyBoardInputType{    KEY_BOARD_INPUT_NORMAL = 1,   //正常输入法      KEY_BOARD_INPUT_PASSWORD,     //密码输入法};


          PlaceHolder

          类型:std::string

          解释:PlaceHolder文本内容set/get{}。


          SpaceHolderColor

          类型:CAColor4B

          解释:PlaceHolder文本内容颜色。set/get{}。


          Text

          类型:std::string

          解释:设置TextField的文本内容。set/get{}。


          TextColor

          类型:CAColor4B

          解释:设置TextField的文字颜色。set/get{}。


          TextEditAlign

          类型:eTextEditAlign

          解释:设置TextField的文本编辑对齐。set/get{}。


          CharCount

          类型:int

          解释:获取TextField的字符计数。get{}。

              

          Delegate

          类型:CATextFieldDelegate*

          解释:设置TextField的代理(设置代理才能被监听状态)。set/get{}。


          VertMargins

          类型:int

          解释:设置TextField的垂直边缘。set/get{}。


          CATextField 方法介绍

          inline void setKeyboardType (eKeyBoardType type);

          返回值:

          参数:

          类型参数名说明
          eKeyBoardTypetype键盘类型

          解释:设置键盘的类型

          enum eKeyBoardType{    KEY_BOARD_TYPE_NORMAL = 0,  //正常键盘    KEY_BOARD_TYPE_NUMBER,      //数字键盘    KEY_BOARD_TYPE_ALPHABET,    //字母键盘};

          inline int getKeyboardType ();

          返回值:inline int

          参数:

          解释:获取键盘类型(真机或模拟器上有效)


          inline void setKeyboardReturnType (eKeyBoardReturnType type);

          返回值:

          参数:

          类型参数名说明
          eKeyBoardReturnTypetype键盘类型

          解释:

          <p style="text-indent: 0em;">enum eKeyBoardReturnType<br>{<br>    KEY_BOARD_RETURN_DONE = 21, //确认键为完成<br>    KEY_BOARD_RETURN_SEARCH,    //确认键为搜索<br>    KEY_BOARD_RETURN_SEND,      //确认键为发送<br>    KEY_BOARD_RETURN_ENTER,     //确认键为进入<br>};<br></p>

          inline int getKeyboardReturnType ();

          返回值:inline int

          参数:

          解释:获取确认键的类型(真机或模拟器上有效) 


          virtual bool resignFirstResponder();

          返回值:bool

          参数:

          解释:隐藏键盘第一响应者状态


          virtual bool becomeFirstResponder();

          返回值:bool

          参数:

          解释:弹出键盘第一响应者状态


          virtual void resignResponder();

          返回值:void

          参数:

          解释:隐藏键盘状态


          static CATextField* createWithFrame(const DRect& frame);

          返回值:CATextField*

          参数:

          类型参数名说明
          const DRect& frame区域大小

          解释:创建,并指定其Frame


          static CATextField* createWithCenter(const DRect& rect);

          返回值:CATextField* 

          参数:

          类型参数名说明
          const DRect& rect中心点的位置及大小

          解释:创建,并指定其Center


          bool init();

          返回值:bool

          参数:

          解释:初始化


          virtual void setImageRect(const DRect& rect);

          返回值:void

          参数:

          类型参数名说明
          const DRect&rect大小

          解释:设置图像大小


          virtual void updateImageRect();

          返回值:void

          参数:

          解释:更新图像


          void setColor(const CAColor4B& var);

          返回值:void

          参数:

          类型参数名说明
          const CAColor4B&var颜色值

          解释:设置颜色


          const CAColor4B& getColor();

          返回值:CAColor4B& 

          参数:

          解释:获取颜色

          类说明

          CrossApp引擎的根类,主要是进行内存的管理,定义部分回调函数指针。引擎绝大部分类派生自CAObject,其共同遵从同一套内存管理方式。


          CAObject 属性(点击查看方法介绍)

          属性说明
          m_uID对象唯一id
          m_uReference引用计数器
          m_uAutoReleaseCount自动释放引用计数器
          UserData用户数据
          UserObject用户对象
          Tag标签
          TextTag文本标签


          CAObject方法(点击查看方法介绍)

          方法说明
          init初始化
          release减少对象的计数器
          retain增加对象的计数器
          autorelease设置自动管理方式
          copy复制对象
          isSingleReference实例化对象是否只有一个使用者
          retainCount返回对象当前计数器的值
          isEqual与指定object实例对象是否相同


          CrossApp内存管理简介

          CrossApp采用引用计数器的方式进行内存的管理,CAObject的派生类都采用这种方式管理对象。最基本的原则就是谁new/retain,谁就负责release,当我们创建一个object时,会自动添加一个计数器,每当对这个object进行引用时,都会使用retain方法进行计数器的加1操作;同样的当释放对这个object的引用时都会调用release方法进行计数器的减1操作,如果引用计数器m_uReference的值为0,就删除此object。

          此外,CrossApp还提供了另一种自动管理内存的方式,当我们不确定object在何时释放时,可以调用autorelease方法进行延迟释放object操作,此时object处于自动管理状态,object被加入到自动释放池中,系统会在每帧结束的时候自动对释放池中的所有object进行一次release操作,如果m_uReference的值为0,则删除当前object。


          CAObject 属性说明

          m_uID

          类型:unsigned int

          解释:CAObject的实例对象id,采用累加的方式,初值为零,每创建一个object,m_uID值加1,同时在创建一个object时会将当前对象的m_uReference初始化为1,将当前的m_uAutoReleaseCount初始化为0。


          m_uReference

          类型:unsigned int    

          解释:引用计数器,每创建一个object,计数器的值自动加1。

              

          m_uAutoReleaseCount

          类型:unsigned int

          解释:是否自动管理object,如果m_uAutoReleaseCount的值为0,非自动管理方式,当m_uAutoReleaseCount的值为非0,那么采用自动管理的方式。 

                   

          UserObject

          类型:CAObject*

          解释:用户对象。


          UserData

          类型:void*

          解释:用户数据。


          Tag

          类型:int

          解释:标签。


          TextTag

          类型:std::string

          解释:文本标签。


          CAObject 方法说明

          bool init();

          返回值:

          参数:

          解释:初始化


          void retain(void)

          返回值:void

          参数:

          解释:对引用计数器m_uReference的值加1。


          void release(void)

          返回值:void

          参数:

          解释:对引用计数器m_uReference的值减1,如果m_uReference的值为0,则删除此object。


          CAObject* autorelease(void)

          返回值:CAObject*

          参数:

          解释:将当前object设置为自动内存管理方式       

                  

          CAObject* copy(void);

          返回值:CAObject*

          参数:

          解释:复制对象


          unsigned int retainCount(void) const

          返回值:unsigned int

          参数:

          解释:返回当前引用计数器m_uReference的值


          bool isSingleReference(void) const

          返回值:bool

          参数:

          解释:通过与引用计数器的值做比较,返回object是否只有一个使用者。


          virtual bool isEqual(const CAObject* pObject)

          返回值:

          参数:

          类型
          参数名说明
          const CAObject*pObject对象

          解释:虚函数,判断当前对象与指定实例化对象是否相同


          类说明

          所有在屏幕上显示的对象的超类,定义了响应触摸事件的接口。


          基类

          CAObject


          CAResponder 属性(点击查看方法介绍)

          属性
          说明
          HaveNextResponder下一个响应,默认true
          TouchEnabled启用触摸,默认true
          ScrollEnabled启用滚动,默认true
          HorizontalScrollEnabled启用水平滚动,默认true
          VerticalScrollEnabled启用竖直滚动,默认true
          PriorityScroll滚动优先级,默认false,cascrollview以及其派生类型默认为true
          ReachBoundaryHandOverToSuperview到达边界交给父视图,默认true
          TouchEventScrollHandOverToSuperview触摸事件滚动交给superviewv,默认true
          MouseMovedEnabled鼠标移动启用,认false
          MouseScrollWheelEnabled鼠标滚轮启用,默认false
          ZLevel水平
          Touches触摸


          CAResponder 方法(点击查看方法介绍)

          方法 说明
          isFirstResponder调用者是否是首对象
          resignFirstResponder使调用者失去首对象状态
          becomeFirstResponder通知调用者,成为当前window中的首对象。
          nextResponder返回下一个接收事件的对象
          ccTouchBegan触摸事件开始时的回调函数
          ccTouchMoved触摸事件中触点移动时的回调函数
          ccTouchEnded触摸事件结束时的回调函数
          ccTouchCancelled触摸非正常结束时的回调函数。(例如:电话或锁屏)


          CAResponder 属性说明

                  HaveNextResponder

          Responder->setHaveNextResponder(bool var);


                  下一个响应,默认true 

                  TouchEnabled

          Responder->setTouchEnabled(bool var);

                  启用触摸,默认true

                  ScrollEnabled

          Responder->setScrollEnabled(bool var);


                  启用滚动,默认true

                  HorizontalScrollEnabled

          Responder->setHorizontalScrollEnabled(bool var);


                  启用水平滚动,默认true

                  VerticalScrollEnabled

          Responder->setVerticalScrollEnabled(bool var);


                  启用竖直滚动,默认true


                  PriorityScroll

          Responder->setPriorityScroll(bool var);


                  滚动优先级,默认false,cascrollview以及其派生类型默认为true

                  ReachBoundaryHandOverToSuperview

          Responder->setReachBoundaryHandOverToSuperview(bool var);


                  到达边界交给父视图,默认true

                  TouchEventScrollHandOverToSuperview

          Responder->setTouchEventScrollHandOverToSuperview(bool var);


                  触摸事件滚动交给superviewv,默认true

                  MouseMovedEnabled

          Responder->setMouseMovedEnabled(bool var);


                  鼠标移动启用,认false

                  MouseScrollWheelEnabled

          Responder->setMouseScrollWheelEnabled(bool var);


                  鼠标滚轮启用,默认false

                  ZLevel

          Responder->getZLevel();

                  水平

                  Touches

          Responder->getTouches();


                  触摸

          CAResponder 方法说明

                  bool isFirstResponder()  

               返回值:bool

               参数:

               解释:返回一个布尔值用于判断当前对象是否为首对象。

           

                  virtual bool resignFirstResponder()

               返回值:bool

               参数:

               解释:让调用对象在当前window中失去首对象状态

           

                  virtual bool becomeFirstResponder()

                  返回值:bool

                   参数:

                   解释:将调用者设置为首对象,返回bool值判断是否设置成功,设置为首对象的对象可以接收所有view的触摸事件。


                  virtual CAResponder* nextResponder()

                  返回值:CAResponder*

               参数:

                   解释:返回下一个接收事件的对象,如果没有则返回NULL。

           

                  virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)

                  返回值:bool

           参数:

          类型参数名说明
          CCTouch*pTouch触摸传递对象
          CCEvent*pEvent此参数待定

                   解释:触摸事件开始时的回调函数

           

                  virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent)

              返回值:bool

           参数:

          类型参数名说明
          CCTouch*pTouch触摸传递对象
          CCEvent*pEvent此参数待定

                   解释:触摸事件中触点移动时的回调函数


                  virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)

              返回值:bool

           参数:

          类型参数名说明
          CCTouch*pTouch触摸传递对象
          CCEvent*pEvent此参数待定

                   解释:触摸事件结束时的回调函数

              

                  virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent)

              返回值:bool

           参数:

          类型参数名说明
          CCTouch*pTouch触摸传递对象
          CCEvent*pEvent此参数待定

                   解释:触摸非正常结束时的回调函数。(例如:电话或锁屏)

          类说明

          拉动刷新view,为scrollView及其派生类提供拉动刷新操作。


          基类

          CAView


          CAPullToRefreshView 属性(点击查看方法介绍)

          属性说明
          PullToRefreshText拉动时的提示文本
          ReleaseToRefreshText释放拉动操作时的提示文本
          RefreshingText刷新时的提示文本
          LabelColor提示文本颜色
          PullToImage拉动提示图片
          LoadingView刷新动画
          LayoutLinearType布局类型
          PullToRefreshType拉动刷新的类型


          CAPullToRefreshView 方法(点击查看方法介绍)

          方法说明
          create创建,默认Frame为(0,0,0,0)
          init初始化


          CAPullToRefreshView 属性说明

          PullToRefreshText

          类型:string

          解释:下拉时的提示文本,get/set{}。


          ReleaseToRefreshText

          类型:string

          解释:释放拉动操作时的提示文本,get/set{}。


          RefreshingText

          类型:string

          解释:刷新时的提示文本,get/set{}。


          LabelColor

          类型:CAColor4B

          解释:所有提示文本的颜色,get/set{}。


          PullToImage

          类型:CAImage*

          解释:拉动操作时的提示图片,get/set{}。


          LoadingView

          类型:CAActivityIndicatorView*

          解释:加载动画,get/set{}。


          LayoutLinearType

          类型:CALayoutLinearType

          解释:布局类型,get/set{}。


          PullToRefreshType

          类型:CAPullToRefreshType

          解释:拉动刷新的类型,这里的类型实际指刷新视图的位置,get/set{}。


          CAPullToRefreshView 方法说明

          static CAPullToRefreshView* create(const CAPullToRefreshType& type)

          返回值:CAPullToRefreshView*

          参数:

          类型参数名说明
          const CAPullToRefreshType&type拉动刷新的类型

          解释:创建一个拉动刷新view,指明view的类型,type是一个枚举值。CAPullToRefreshType包括五种类型:类似于tableView和collectionView可以进行上拉和下拉刷新;listView的左拉和右拉刷新;完全自定义的拉动刷新。

          typedef enum{    CAPullToRefreshTypeHeader = 0,    CAPullToRefreshTypeFooter,    CAPullToRefreshTypeLeftHeader,    CAPullToRefreshTypeRightFooter,    CAPullToRefreshTypeCustom }CAPullToRefreshType;


          virtual bool
          init();

          返回值:bool

          参数:

          解释:初始化

          类说明

          CAButton按钮的基类,主要用于定义按钮的状态和回调事件,并响应按钮的触摸事件。按钮有普通、高亮、选中、禁止与全状态五种状态。有点击、重复点击,点击后在按钮范围内滑动、点击后再按钮外部滑动、点击并在按钮内部抬起、点击按下再任意地方抬起与特定值改变时七种按钮回调事件触发的条件。


          基类

          CAView


          CAControl 属性(点击查看方法介绍)

          属性说明
          ControlState按钮的状态
          ControlStateLocked控制状态锁定


          CAControl 方法(点击查看方法介绍)

          属性说明
          setControlStateNormal设置为正常状态
          setControlStateHighlighted设置为高亮状态
          setControlStateDisabled设置为不可选状态
          setControlStateSelected设置为选中状态
          init初始化


          CAControl 属性说明

          ControlState

          类型:CAControlState

          解释:按钮的状态,枚举类型,包括正常、高亮、不可选、选中和全状态五种状态。这里所谓的全状态,即我们对按钮进行操作时,为了方便,无须对按钮的各个状态进行设置,只需设置一个全状态,即可将当前的操作应用到按钮的各个状态,get/set{}。

          typedef enum{   CAControlStateNormal =   0,   CAControlStateHighlighted,   CAControlStateDisabled,   CAControlStateSelected,   CAControlStateAll}CAControlState;


          ControlStateLocked

          类型:bool

          解释:控制状态锁定


          CAControl 方法说明

          void setControlStateNormal()

          返回值:void

          参数:

          说明:设置按钮为正常状态,这也是按钮的默认状态。

           

          void setControlStateHighlighted()

          返回值:void

          参数:

          说明:设置按钮为高亮状态

           

          void setControlStateDisabled()

          返回值:void

          参数:

          说明:设置按钮为不可选状态

           

          void setControlStateSelected()

          返回值:void

          参数:

          说明:设置按钮为选中状态

           

          bool init();

          返回值:bool

          参数:

          解释:初始化

          类说明

          CAWindow主要的作用是作为所有view的载体、容器,分发触摸消息,协同viewController完成对应用程序的管理。应用程序通常只有一个window,即使存在多个window,也只能有一个window能够接收屏幕事件。应用程序启动时创建这个窗口,并往窗口中加入一或多个视图并显示出来,之后我们很少需要再次引用它。CAWindow是所有CAView的根,管理和协调应用程序的显示。


          基类

          CAView


          CAWindow 方法(点击查看方法介绍)

          方法说明
          init
          初始化
          presentModalViewController弹出一个新viewController
          dismissModalViewController隐藏新弹出的viewController


          CAWindow 方法说明

          bool init();

          返回值:bool

          参数:

          解释:初始化


          void presentModalViewController(CAViewController* controller, bool animated)

          返回值:void

          参数:

          类型参数名说明
          CAViewController*controller新弹出的viewController
          boolanimated是否播放弹出动画

          解释:生成一个新的viewController,并从底部将新生成的viewController从屏幕的底部弹出,覆盖原先的画面,可以自己实现新弹出的内容。


          void dismissModalViewController(bool animated)

          返回值:void

          参数:

          解释:将新生成的viewController隐藏。

          类说明

          指屏幕上添加的一个栏目,具有同按钮类似的标题、图片等属性,定义了接口,不能直接使用,其具体的实现形式交由子类完成。


          基类

          CAObject


          CABarItem 属性(点击查看方法介绍)

          属性说明
          TitlebarItem的标题
          ImagebarItem的图片
          TouchEnabledbarItem是否可触摸


          CABarItem 属性介绍

          Title

          类型:string

          解释:显示标题,默认为空,get/set{}。


          Image

          类型:CAImage*

          解释:设置显示图片,默认为空,get/set{}。


          TouchEnabled

          类型:bool

          解释:设置触摸状态的标志位,默认为true,is/set{}。

          类说明

          自定义导航栏按钮,辅助navigationBarItem的功能实现。


          基类

          CABarItem


          CABarButtonItem 属性(点击查看方法介绍)

          属性说明
          HighlightedImage高亮时的图像
          ItemWidth项目宽度
          CustomView自定义视图


          CABarButtonItem 方法(点击查看方法介绍)

          属性说明
          create创建,指定标题、图像和按钮点击时的图像
          init初始化,指定标题、图像和按钮点击时的图像,默认图像和按钮点击时的图像为NULL
          initWithTitle初始化标题,指定标题、图像和按钮点击时的图像,默认图像和按钮点击时的图像为NULL
          initWithImage初始化图像,指定图像和高亮时的图像,默认高亮时的图像为NULL
          initWithCustomView初始化图像,指定图像和按钮点击时的图像,默认按钮点击时的图像为NULL
          setTarget设置回调函数
          getTarget获取回调函数
          getSel获取SEL


          CABarButtonItem 属性说明

          HighlightedImage

          类型:CAImage*

          解释:点击按钮时,高亮状态的图片。set/get{}。


          ItemWidth

          类型:unsigned int

          解释:项目宽度,set/get{}。


          CustomView

          类型:CAView*

          解释:自定义视图,get{}。


          CABarButtonItem 方法说明

          static CABarButtonItem* create(const std::string& title, CAImage* image, CAImage* highlightedImage);

          返回值:CABarButtonItem*

          参数:

          类型参数名说明
          const std::string&title标题
          CAImage*image图像
          CAImage* highlightedImage

          按钮点击时的图像

          解释:创建,指定标题、图像和按钮点击时的图像


          bool init(const std::string& title, CAImage* image = NULL, CAImage* highlightedImage = NULL)

          返回值:bool

          参数:

          类型参数名说明
          const std::string&title标题
          CAImage*image图像
          CAImage* highlightedImage

          按钮点击时的图像

          解释:初始化,指定标题、图像和按钮点击时的图像,默认图像和按钮点击时的图像为NULL


          bool initWithTitle(const std::string& title, CAImage* image = NULL, CAImage* highlightedImage = NULL);

          返回值:bool

          参数:

          类型参数名说明
          const std::string&title标题
          CAImage*image图像
          CAImage* highlightedImage

          按钮点击时的图像

          解释:初始化标题,指定标题、图像和按钮点击时的图像,默认图像和按钮点击时的图像为NULL


          bool initWithImage(CAImage* image, CAImage* highlightedImage = NULL);

          返回值:bool

          参数:

          类型参数名说明
          CAImage*image图像
          CAImage* highlightedImage

          按钮点击时的图像

          解释:初始化图像,指定图像和按钮点击时的图像,默认按钮点击时的图像为NULL


          bool initWithCustomView(CAView* customView);

          返回值:bool

          参数:

          类型参数名说明
          CAView*customView自定义图像

          解释:初始化自定义图像,指定自定义图像


          void setTarget(CAObject* target, SEL_CAControl callfunc);

          返回值:void

          参数:

          类型参数名说明
          CAObject* target当前对象
          SEL_CAControl callfunc函数回调器

          解释:为按钮添加一个点击事件


          CAObject* getTarget();

          返回值:CAObject*

          参数:

          解释:获取回当前对象


          SEL_CAControl getSel();

          返回值:SEL_CAControl

          参数:

          解释:获取按钮点击事件的回调函数器

          类说明

          CrossApp中的任务调度,也就是通常所说的定时器。


          基类

          CAObject


          CAScheduler 方法(点击查看方法介绍)

          方法说明
          schedule启动定时器
          schedule方法重载,启动定时器
          unschedule移除定时器
          unscheduleAllForTarget移除指定对象的所有定时器
          unscheduleAll移除当前对象的所有定时器
          isScheduled是否存在指定对象的定时器
          getScheduler获取一个CAScheduler单例
          update更新
          pauseTarget暂停指定对象的定时器
          resumeTarget恢复指定对象的定时器
          isTargetPaused指定对象定时器是否被暂停
          pauseAllTargets暂停所有定时器
          pauseAllTargetsWithMinPriority暂停所有定时器,以最小优先 
          resumeTargets恢复对象集合的所有定时器


          CAScheduler 方法说明

          static void schedule(SEL_SCHEDULE pfnSelector, CAObject *pTarget, float fInterval,unsigned int repeat, float delay, bool bPaused)

          返回值:void

          参数:

          类型参数名说明
          SEL_SCHEDULEpfnSelector定时器的回调函数
          CAObject*pTarget定时器所属对象
          floatfInterval调度定时器的时间间隔
          unsignedrepeat除第一次外,调度的次数
          floatdelay第一次调度前的延迟时间
          boolbPaused定时器是否为暂停状态

          解释:启动定时器


          示例:

          progress = CAProgress::create();          progress->setFrame(CCRect(winRect.size.width*0.5-100,winRect.size.height*0.5+100,200,16));progress->setProgresstrackColor(ccYELLOW);this->getView()->addSubview(progress);CAScheduler::schedule(schedule_selector(FifthViewController::changeValue),this,1,3,4,false); void FifthViewController::changeValue(float interval){    float currentValue = progress->getProgress();    progress->setProgress(currentValue+0.1);}

          设置一个定时器,调度时间间隔为1秒,延迟4秒调度,除去第一次调度外,重复调度3次。每次调度,进度条的值增加百分之10,所以进度条的值在4次调度为百分之四十。


          static void schedule(SEL_SCHEDULE pfnSelector, CAObject *pTarget, float fInterval, bool bPaused = false);

          返回值:void

          参数:

          类型参数名说明
          SEL_SCHEDULEpfnSelector定时器的回调函数
          CAObject*pTarget定时器所属对象
          floatfInterval调度定时器的时间间隔
          boolbPaused定时器是否为暂停状态

          解释:方法重载,启动定时器


          static void unschedule(SEL_SCHEDULE pfnSelector, CAObject *pTarget);

          返回值:void

          参数:

          类型参数名说明
          SEL_SCHEDULEpfnSelector定时器的回调函数
          CAObject*pTarget定时器所属对象

          解释:移除定时器


          static void unscheduleAllForTarget(CAObject *pTarget);

          返回值:void

          参数:

          类型参数名说明
          CAObject*pTarget定时器所属对象

          解释:移除指定对象的所有定时器


          static void unscheduleAll(void);

          返回值:void

          参数:

          解释:移除当前对象的所有定时器


          static bool isScheduled(SEL_SCHEDULE pfnSelector, CAObject *pTarget);

          返回值:bool

          参数:

          类型参数名说明
          SEL_SCHEDULEpfnSelector定时器的回调函数
          CAObject*pTarget定时器所属对象

          解释:是否存在指定对象的定时器


          static CAScheduler* getScheduler();

          返回值:CAScheduler* 

          参数:

          解释:获取一个CAScheduler单例


          void update(float dt);

          返回值:void

          参数:

          类型参数名说明
          floatdt数据

          解释:更新定时器


          void pauseTarget(CAObject *pTarget);

          返回值:void

          参数:

          类型参数名说明
          CAObject*pTarget定时器所属对象

          解释:暂停指定对象的定时器


          void resumeTarget(CAObject *pTarget);

          返回值:void

          参数:

          类型参数名说明
          CAObject*pTarget定时器所属对象

          解释:恢复指定对象的定时器


          bool isTargetPaused(CAObject *pTarget);

          返回值:bool

          参数:

          类型参数名说明
          CAObject*pTarget定时器所属对象

          解释:指定对象定时器是否被暂停


          CCSet* pauseAllTargets();

          返回值:CCSet*

          参数:

          解释:暂停所有定时器


          CCSet* pauseAllTargetsWithMinPriority(int nMinPriority);

          返回值:CCSet*

          参数:

          类型参数名说明
          intnMinPriority最小优先

          解释:暂停所有定时器,以最小优先


          void resumeTargets(CCSet* targetsToResume);

          返回值:void

          参数:

          类型参数名说明
          CCSet*targetsToResume恢复目标

          解释:恢复对象集合的所有定时器

          类说明

          获取照相或相册图片


          CAMediaDelegate 方法(点击查看方法介绍)

          方法说明
          getSelectedImage获取图片



          CAMediaDelegate 方法说明

          virtual void getSelectedImage(CCImage *image) = 0

          返回值:void

          参数:CCImage *image

          类型参数名说明
          CCImage*image图像

          解释:需要使用相册,照相机功能时需要继承此类,重写getSelectedImage方法,在这个方法内,参数image就是从设备传递过来的图片。

          类说明

                  键盘代理类,用于声明返回键和菜单键两种按键事件响应的接口。


          CAKeypadDelegate 方法(点击查看方法介绍)

          方法说明
          keyBackClicked返回键的响应接口
          keyMenuClicked针对wophone和android的菜单键的响应接口


          CAKeypadDelegate 方法

          virtual void keyBackClicked() {};

          返回值:void

          参数:

          解释:返回键的响应接口


          virtual void keyMenuClicked() {};

          返回值:void

          参数:

          解释:针对wophone和android的菜单键的响应接口