![个人头像照片](https://ucc.alicdn.com/avatar/img_eb9d2870986a381ed44d6f4a5e2a1ae3.jpg)
国内著名iOS/Cocos技术作家,iOS技术顾问,Cocos最有价值专家(CVP),智捷课堂首席培训专家。担任51CTO社区iOS技术顾问。 著有多部移动开发畅销书。
<span style="font-size:14px;">Cocos2d-JS中的键盘事件与触摸事件不同,它没有空间方面信息。键盘事件不仅可以响应键盘,还可以响应设备的菜单。<br>键盘事件是EventKeyboard,对应的键盘事件监听器(cc.EventListener.KEYBOARD),键盘事件响应属性:<br>onKeyPressed。当键按下时回调该属性所指定函数。<br>onK
<span style="font-size:14px;">与动作密不可分的还有动画,动画又可以分为场景过渡动画和帧动画。场景过渡动画我们在以往介绍过,这一个我们只介绍帧动画。<br>帧动画<br>帧动画就是按一定时间间隔、一定的顺序、一帧一帧地显示帧图片。我们的美工要为精灵的运动绘制每一帧图片,因此帧动画会由很多帧组成,按照一定的顺序切换这些图片就可以了。<br>在Cocos2d-JS中播放
<span style="font-size:14px;">本节我们会通过一个实例介绍纹理对象创建Sprite对象使用,这个实例如图5-2所示,其中地面上的草是放在背景(如下图所示)中的,场景中的两棵树是从后图所示的“树”纹理图片中截取出来的,图5-5所示是树的纹理坐标,注意它的坐标原点在左上角。<br></span><div style="text-align: center;"><img
<span style="font-size:14px;">精灵类是cc.Sprite,它的类图如下图所示。cc.Sprite类直接继承了cc.Node类,具有cc.Node基本特征。<br></span><div style="text-align: center;"><img src="http://img.blog.csdn.net/20150325174954171" alt=""><
<span style="font-size:14px;">精灵菜单的菜单项类是cc.MenuItemSprite,图片菜单的菜单项类是cc.MenuItemImage。由于cc.MenuItemImage继承于cc.MenuItemSprite,所以图片菜单也属于精灵菜单。为什么叫精灵菜单呢?那是因为这些菜单项具有精灵的特点,我们可以让精灵动起来,具体使用时候是把一个精灵放置到菜单中作为菜单
<span style="font-size:14px;">我们要想编写和运行JavaScript脚本,则需要:JavaScript编辑工具和JavaScript运行测试环境。下面我们分别介绍一下。<br>JavaScript编辑工具<br>JavaScript编辑工具最简单的可以使用一些文本编辑工具,但是它们往往缺少语法提示,有的语法关键字还没有高亮显示,最重要的是它们大部分不支持调试。考虑
<span style="font-size:14px;">《iOS开发指南》要改iOS8版本了,听听您的意见?参加问卷同学均可获得智捷课堂50元代金卡一张,同时抽取一名同学赠送即将出版的基于iOS8的《iOS开发指南》一本,欢迎大家填写问卷<br>http://www.diaochapai.com/survey/17a0cd7b-ef61-40ec-b51f-4e85acdd9fb5 </s
<span style="font-size:14px;">开发Windows Phone需要两个工具:Windows Phone SDK 8.0和Visual Studio集成开发工具。我们购买的Visual Studio Ultimate 2012不包括Windows Phone SDK,由于Visual Studio Ultimate 2012是收费软件,如果广大读者没有授权,也可以使用
<span style="font-size:14px;">首选我们讨论一下SQLite3数据库移植问题。我们在第14章节介绍了在Win32平台使用SQLite3数据库,我们介绍了两种配置环境的方法:一种是使用Cocos2d-x提供的SQLite3库配置,另一种是从SQLite官网下载源代码拷贝的工程中。第一种方法配置起来比较麻烦,关键是Cocos2d-x提供的SQLite3库只是Win32没
<span style="font-size:14px;">Android平台版本和设备碎片化很严重,因此从Win32平台移植到Android平台会有很多问题,下面是我们归纳的从Win32平台移植到Android平台遇到的一些问题。<br>在Android平台中文乱码并不是一个问题,或者说在Android平台是不应该出现中文乱码的。这个问题究其根本是因为我们在Windows下采用开发Andro
<span style="font-size:14px;">如果对命令行望而生畏,我们可以借助于安装有ADT插件的Eclipse工具实现交叉编译。<br>使用Eclipse进行交叉编译,首先需要将要编译的工程导入到Eclipse的Workspace中,Workspace是多个工程的集合。具体步骤是启动Eclipse后,选择菜单File→New→Project,弹出如图21-18所示的新建工程对
<h2><span style="FONT-WEIGHT: normal"><span style="font-size:14px;">那么在<span style="font-family:'Times New Roman';">Windows</span><span style="font-family:宋体;">下</span>有什么好的内存泄漏检测工具呢?微软提供<span style
<span style="font-size:14px;">说到Windows平台,我们很快就想到了Visual Studio 2012,然而Visual Studio 2012在这方面没有很好的工具。如果我们只是想知道大体上内存、CPU等在某一事件前后变化情况,我们可以使用Windows任务管理器。<br>Windows任务管理器对于很多用户都不陌生,自从有Windows操作系统以来,这个工
<span style="font-size:14px;">Instruments是动态分析工具,它与Xcode集成在一起,可以在Xcode中通过菜单Product→Profile启动。启动如图所示,Instruments有很多跟踪模板可以动态分析和跟踪内存、CPU和文件系统。<br><br></span><div style="TEXT-ALIGN: center"><img alt=""
<span style="font-size:14px;">Cocos2d-x 3.x将与网络通信相关的类集成到libNetwork类库工程中,这其中包括了HttpClient类。我们需要在Visual Studio解决方案中添加libNetwork类库工程。<br>为了能够在Visual Studio 2012下HttpClient开发,我们需要设置内容如下:<br>在解决方案中添加libN
<span style="font-size:14px;">我们介绍一下win32中Visual Studio下libcurl库开发环境设置。<br>Cocos2d-x引擎其实已经带有为Win32下访问libcurl库,Cocos2d-x 3.x中libcurl库文件所在位置是<工程目录>\cocos2d\external\curl\prebuilt\win32目录中,头文件在&l
<span style="font-size:14px;">由于我们介绍的内容都是基于微软的Visual Studio下开发的Win32平台,所以下边我们介绍Visual Studio下SQLite数据库开发环境设置。具体而言我们有两种方式可以在Visual Studio中SQLite数据库:使用SQLite源代码文件和使用Cocos2d-x提供的库文件。<br>1、使用SQLite源代码文件
<span style="font-size:14px;">UserDefault可以实现数据的存储,但是它的使用不能泛滥,具体讲一般情况下不会使用它保存大量的数据,它没有SQL语句那样的灵活。UserDefault除了保存游戏设置外,还有可以长期保持游戏精灵等对象的状态。<br><br><br>我们通过一个实例介绍一下在游戏项目中如何使用UserDefault。如图所示,在Setting场景
<h3><span style="FONT-WEIGHT: normal"><span style="font-size:14px;">Vector<T> 是Cocos2d-x 3.x<span style="font-family:宋体;">推出的列表容器,</span>因此它所能容纳的是<span style="font-family:'Times New Roman';">R
<span style="font-size:14px;">__Array类在Cocos2d-x 2.x时代它就是CCArray类。它是模仿Objective-C中的NSArray类而设计的,通过引用计数管理内存。__Array继承于Ref类,因此它所能容纳的是Ref及子类所创建的对象指针。<br><br><br>1、创建__Array对象<br>创建__Array对象有很多函数,下面是总结常
<span style="font-size:14px;">下面我们将使用Box2D物理引擎技术进行重构。使得关节能够掌握如何在Box2D使用关节约束。<br>HelloWorldScene.cpp中与使用关节的相关代码如下:<br></span><pre code_snippet_id="547144" snippet_file_name="blog_20141209_1_6975673"
<span style="font-size:14px;">我们通过一个实例介绍一下,在Cocos2d-x 3.x中使用Box2D物理引擎的开发过程,熟悉这些API的使用。这个实例运行后的场景如图所示,当场景启动后,玩家可以触摸点击屏幕,每次触摸时候,就会在触摸点生成一个新的精灵,精灵的运行自由落体运动。<br> <br><br><img alt="" src="http://img.blo
<span style="font-size:14px;">Cocos2d-x 3.x默认情况下采用的物理引擎是Chipmunk,如果我们要使用Box2D引擎,需要进行一些设置和调整,而且不同的开发平台下这些设置也有所不同。由于本书在此之前介绍的都是基于微软的Visual Studio 2012下开发的Win32平台,所以这一节我们介绍Visual Studio 2012下Box2D开发环境设
<p></p> <h3><span style="FONT-WEIGHT: normal"><span style="font-size:14px;">在游戏中我们可以通过关节约束两个物体的运动。我们通过一个距离关节实例,介绍一下如何在使用关节。</span></span></h3> <p></p> <p><span style="font-size:14px;">这个实例的运行后的场景如图所
<span style="font-size:14px;">我们通过一个实例介绍一下,在Cocos2d-x 3.x中使用物理引擎的开发过程,熟悉这些API的使用。这个实例的运行后的场景,当场景启动后,玩家可以触摸点击屏幕,每次触摸时候,就会在触摸点生成一个新的精灵,精灵的运行是自由落体运动。<br><br><img alt="" src="http://img.blog.csdn.net/20
<h2><span style="FONT-WEIGHT: normal"><span style="font-size:14px;">除了使用</span><span style="font-family:'Times New Roman';font-size:14px;">Cocos2d-x</span><span style="font-family:宋体;font-size:14px;
<h2><span style="font-size:14px;FONT-WEIGHT: normal">从类图中我们可以看到,Cocos2d-x中有内置的11粒子,这些粒子的属性都是预先定义好的,我们也可以在程序代码中单独修改某些属性,我们在上一节的实例中都已经实现了这些属性的设置。</span></h2> <h3><span style="font-size:14px;FONT-WEIGH
<span style="font-size:14px;">循环语句能够使程序代码重复执行。Swift编程语言支持4种循环构造类型:while、do while、for和for in。for和while循环是在执行循环体之前测试循环条件,而do while是在执行循环体之后测试循环条件。这就意味着for和while循环可能连一次循环体都未执行,而do while将至少执行一次循环体。for i
<span style="font-size:14px;">在Foundation框架中提供一种字典集合,它是由“键-值”对构成的集合。键集合不能重复,值集合没有特殊要求。键和值集合中的元素可以是任何对象,但是不能是nil。Foundation框架字典类也分为NSDictionary不可变字典和NSMutableDictionary可变字典。<br>一、NSDictionary类<br></s
<span style="font-size:14px;">Swift中的闭包表达式很灵活,其标准语法格式如下:<br>{ (参数列表) ->返回值类型 in<br> 语句组<br>}<br>其中,参数列表与函数中的参数列表形式一样,返回值类型类似于函数中的返回值类型,但不同的是后面有in关键字。<br>Swift提供了多种闭包简化写法,这一节我们将介绍几种不同的形式。<br>1.
<span style="font-size:14px;">具体而言,Swift中的ARC内存管理是对引用类型的管理,即对类所创建的对象采用ARC管理。而对于值类型,如整型、浮点型、布尔型、字符串、元组、集合、枚举和结构体等,是由处理器自动管理的,程序员不需要管理它们的内存。<br>一、引用计数<br>每个Swift类创建的对象都有一个内部计数器,这个计数器跟踪对象的引用次数,称为引用计数(R
<span style="font-size:14px;">继承会发生在子类和父类中,如图所示,是一系列类的继承关系类图,Person是类层次结构中的根类,Student是Person的直接子类,Worker是Person的直接子类。<br>这个继承关系类图的具体实现代码如下:<br></span><pre code_snippet_id="464187" snippet_file_name=
<span style="font-size:14px;">在介绍静态属性之前,我们先来看一个类的设计,有一个Account(银行账户)类,假设它有3个属性:amount(账户金额)、interestRate(利率)和owner(账户名)。在这3个属性中,amount和owner会因人而异,不同的账户这些内容是不同的,而所有账户的interestRate都是相同的。<br>amount和own
<span style="font-size:14px;">与静态属性类似,Swift中还定义了静态方法,也称为类型方法,所谓“类型”是指枚举、结构体和类。静态方法定义的方法也是与静态属性类似的,枚举和结构体的静态方法使用的关键字是static,类的静态方法使用的关键字是class。<br>一、结构体中静态方法<br>下面我们先看一个结构体静态方法的示例,代码如下:<br></span><pr
<span style="font-size:14px;">在面向过程的编程语言(如C语言)中,结构体用得比较多,但是面向对象之后,如在C++和Objective-C中,结构体已经很少使用了。这是因为结构体能够做的事情,类完全可以取而代之。<br>而Swift语言却非常重视结构体,把结构体作为实现面向对象的重要手段。Swift中的结构体与C++和Objective-C中的结构体有很大的差别,C
<span style="font-size:14px;">与函数一样,方法也存在重载,其重载的方式与函数一致。那么作为构造器的特殊方法,是否也存在重载呢?答案是肯定的。<br>一、构造器重载概念<br>Swift中函数重载的条件也适用于构造器,条件如下:<br>函数有相同的名字;<br>参数列表不同或返回值类型不同,或外部参数名不同;<br>Swift中的构造器可以满足以下两个条件,代码如下
<span style="font-size:14px;"><strong>时间轴(倒叙)</strong><br>2014年8月底<br>在图灵出版社的大力支持下,全球第一本全面、系统、科学的,包含本人多年经验的呕心沥血之作《Swift开发指南》(配有同步视频课程和同步练习)全线重磅推出<br>2014年7月5日<br>苹果宣布Swift语言二十天后,《Swift开发指南》第一稿交予图灵出版
<p><span style="font-size:14px;">Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课</span></p> <p><span style="font-size:14px;">本课程采用QQ群直播方式进行直播,价值99元视频课程免费直播。完整的基于Swift项目实战,手把手教你做一个Swift版iPhone计算器。(直播过程也有惊喜!)<b
<p><span style="font-size:14px;">如果已经有了一个老的iOS应用,它是使用Objective-C编写的,而它的一些新功能需要采用Swift来编写,这时就可以从Objective-C调用Swift。</span></p> <p><span style="font-size:14px;">Objective-C调用Swift时不需要桥接头文件,而是需要Xcode生成
<p><span style="font-size:14px;">Swift调用Objective-C需要一个名为“<工程名>-Bridging-Header.h”的桥接头文件,如下图所示。桥接头文件的作用是为Swift调用Objective-C对象搭建一个桥,它的命名必须是“<工程名>- Bridging-Header.h”,我们需要在桥接头文件中引入Objectiv
<span style="font-size:14px;">Swift程序有两类注释:单行注释(//)和多行注释(/*...*/)。注释方法与C、C++和Objective-C语言都是类似的,下面详细介绍一下。<br>1. 单行注释<br>单行注释可以注释整行或者一行中的一部分,一般不用于连续多行的注释文本。当然,它也可以用来注释连续多行的代码段。以下是两种注释风格的例子:<br></span
<div style="font-family: 'lucida Grande', Verdana; line-height: 23.799999237060547px; color: rgb(51, 51, 51);"> <p><span style="font-size:14px;">从控制台输出“HelloWorld”是我学习C语言的第一步,也是我人生中非常重要的一步。多年后的今天,我仍
<h3><span style="font-size:14px;FONT-WEIGHT: normal">基本动作和组合动作实现了针对精灵的各种运动和动画效果的改变。但这样的改变速度匀速的、线性的。通过ActionEase及其的派生类和Speed 类我们可以使精灵以非匀速或非线性速度运动,这样看起了效果更加逼真。</span></h3> <p><span style="font-size:14
<h3><span style="font-size:14px;font-weight: normal;">动作往往不是单一,而是复杂的组合。我们可以按照一定的次序将上述基本动作组合起来,形成连贯的一套组合动作。组合动作包括以下几类:顺序、并列、有限次数重复、无限次数重复、反动作和动画。动画我们会在下一节介绍,本节我们重点顺序、并列、有限次数重复、无限次数重复和反动</span></h3> <
<div> <p><span style="font-size:14px;">协议是为方法、属性等定义一套规范,没有具体的实</span><span style="font-size:14px;">现。</span></p> <p><span style="font-size:14px;">协议能够被类、结构体等具体实现(或遵守)。</span></p> <p><span style="fon
<p><span style="font-size: 14px;">在现有类和结构体的类型基础上,扩展新的功能。 语法:</span></p> <p></p> <pre name="code" class="html">extension SomeType{ // new functionality to add to SomeType goes here } An extension can
<div> <p><span style="font-size:14px;">为了初始化结构体和类等类型的实例属性。</span></p> <p><span style="font-size:14px;">默认构造器</span></p> <p><span style="font-size:14px;"></span></p> <pre name="code" class="html">str
<p><span style="font-size:14px;">还记得字典吗?</span></p> <p><br></p> <p><span style="font-size:14px;"></span></p> <pre code_snippet_id="411200" snippet_file_name="blog_20140630_1_9690323" name="code" cla
<p><span style="font-size:14px;">Swift 中的方法是与特定类型(类和结构体)相关的函 数。</span></p> <p><span style="font-size:14px;">实例方法 隶属于某个特定类型(类或结构体)实例函数。 class Counter{</span></p> <p><span style="font-size:14px;"><br>
<div> <p><span style="font-size:14px;">属性的存储</span></p> <p><span style="font-size:14px;"> </span></p> <p><span style="font-size:14px;">属性的主要作用是存储数据,可以常量属性和变量属 性;</span></p> <p><span style="font-size