
Cocos2D苹果游戏开发
和大熊猫猪侯佩一起用cocos2D熬制苹果游戏酱,多个游戏demo让我们High起来!
大熊猫侯佩
一枚贪吃路痴还未秃码农。优快云 博客专家,iOS 与 Swift 版块版主,热爱苹果开发。
人生看淡,不服就干!
展开
-
Cocoa层粒子发射器动画添加多个cell的一种重构
在iOS动画之旅第19章中最后的挑战中需要我们在雪花例子发生器中添加多个雪花贴图,也就是多个cell,因为我们不可能将每个cell的参数都重新写一遍,所以有必要写一个helper方法来做这件事:func getCellByImgName(name:String)->CAEmitterCell{}将原来viewDidLoad方法中与cell相关的代码拷贝进来,但除了几处小的修改:let emitter原创 2016-06-08 14:11:04 · 1070 阅读 · 0 评论 -
Cocoa中层(layer)坐标系的极简理解
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)Cocoa层的坐标系一直理解的不清晰,现在把它整理总结一下:1: layer在super layer中的位置由frame属性来确定,而bounds属性的原点永远是(0,0),因为bounds相对的layer自己.2: layer还有一个po原创 2016-06-06 08:04:40 · 5194 阅读 · 0 评论 -
(NO.00001)iOS游戏SpeedBoy Lite成形记(八)
前一篇提到,如果要想动态修改选手的速度需要在update方法中添加代码.因为update方法在游戏每一帧都会调用,所以我们不可能修改的太频繁.否则一来对性能有影响,而来玩家表现的极不自然,像抽风一样.所以我决定,在一场比赛中每位选手的速度最多只能修改5次,先在GameScene中添加如下静态变量与常量:static const NSInteger MaxChanged = 5;static NSI原创 2015-10-20 18:23:54 · 738 阅读 · 0 评论 -
cocos2dv2项目转换为ARC支持的项目
原帖地址:http://www.cnblogs.com/liufan9/archive/2013/04/08/3006580.html转载 2015-09-05 17:17:17 · 839 阅读 · 0 评论 -
Cocos2D-ObjC:在RPG游戏中混合Swift代码
我之前写过一个RPG游戏<<熊猫之魂 SoulOfPanda>>编译器使用的是SpriteBuilder,很好很强大!全部代码都由Objc完成,现在想尝试一下在其中混入Swift代码.我的目的很简单,用Swift写一个GCMan9类,派生自Objc中的GameCharacter类,最后在Objc中使用GCMan9这个类.GameCharacter类是游戏人物的基类,我从中派生了十几个子类分别表示游戏原创 2016-07-09 08:16:07 · 2557 阅读 · 0 评论 -
CCSpriteBatchNode中存放元素的一点理解
该对象只能包含基于CCSprite的对象,并且该要求适用于一切子孙对象.即加入CCSpriteBatchNode的任何对象都必须是CCSprite或其子类.比如CCSpriteBatchNode包含Fire对象,而Fire对象继承于CCSprite类;如果Fire有子对象,则要求他们也必须继承于CCSprite,依次类推.不过貌似最新的Cocos2D中该类用的地方越来越少了,而且在SpriteKit原创 2016-06-12 14:57:05 · 2785 阅读 · 0 评论 -
Cocos2D与SpriteBuilder的问题在哪提问
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)我们知道Cocos2D的教程中文版的非常少,注意我没有说Cocos2D-X哦 ;]不过国外还是有不少人用Cocos2D的,在此本猫将自己积累的一些Cocos2D比较活跃的论坛地址贴出来,以便大家交流和提问:首先是SpriteBuilder的论坛:http:/原创 2016-06-03 19:42:54 · 4480 阅读 · 1 评论 -
Cocos2D在新版Swift中常量枚举值引用代码的修改
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)我们知道在SpriteBuilder中是无法直接给一个CCB文件的root节点修改位置类型和位置值.我们只有在代码中修改上述属性.但是在旧版的Swift中对于Objc中的常量枚举值会提示找不到,你可以在这个讨论帖子中了解到详情:https://github.原创 2016-04-14 07:36:08 · 1114 阅读 · 0 评论 -
Cocos2D中节点Z序的计算规则
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!在Cocos2D中节点Z-order计算规则如下:子节点总是渲染翻译 2016-04-11 14:25:32 · 3355 阅读 · 0 评论 -
Cocos2D:变换(transforms)在图形编程中扮演的角色
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!变换(Transforms)是所有图形引擎最基本的一部分,当然Co翻译 2016-04-11 12:24:13 · 1230 阅读 · 3 评论 -
早期Swift中Cocos2D初始化代码的重构
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)我们知道在早期的Swift中在子类里只能调用超类的designated初始化器,这是Swift早期版本的一个限制,所以譬如完成CCSprite子类的init工作,我们就得多写一些代码:init(type:FallingObjectType){原创 2016-04-10 19:37:08 · 2373 阅读 · 0 评论 -
重载Cocos2D生存期的方法
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途。同时,转载时不要移除本申明。 如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!正如Cocos2D 3.1中如果在重载这些生存期方法中不调翻译 2016-04-09 21:36:40 · 2971 阅读 · 0 评论 -
Cocos2D实现上下滚动式状态窗口
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)有时候要显示的内容太多,我们无法在iOS设备的小屏幕上显示出来,这时候我们可以将内容划分为多个子窗口,依次显示对应的窗口.在SpritBuilder中新建一个类型为Node的CCB文件,调整样式如下:我这里划分了2个子窗口,用中间的箭头分割.注意下面的子窗口原创 2016-02-02 07:40:34 · 2610 阅读 · 0 评论 -
(NO.00005)iOS实现炸弹人游戏(十一):怪物之火精灵
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)从本篇开始我们一次介绍一下游戏中敌人的制作过程.看过第一篇的小伙伴都知道,在炸弹人游戏中一共准备实现4种敌人.不同的怪物要有不同的特点,否则如果只是外形发生变化其余行为都一样的话,也就没有什么意思了.我们本篇先介绍第一种,也是最普通的火焰精灵FireSpri原创 2016-02-01 12:43:23 · 1578 阅读 · 0 评论 -
(NO.00005)iOS实现炸弹人游戏(十):游戏主角(三)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)下面我们来看游戏主角类里面几个播放特殊动画的方法,首先从runWinAnimation开始://运行精灵庆祝时的动画-(void)runWinAnimation{ CCActionJumpBy *jump = [CCActionJumpBy act原创 2016-02-01 10:49:54 · 1528 阅读 · 0 评论 -
(NO.00005)iOS实现炸弹人游戏(九):游戏主角(二)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)上篇介绍了游戏主角的初始化方法,下面我们一次来实现主角的其他方法,首先来看看runAnimation方法,我们使用这个方法来播放主角的动画:-(void)runAnimation:(CCAnimation*)animation{ if (_curAn原创 2016-02-01 10:29:53 · 1549 阅读 · 0 评论 -
(NO.00005)iOS实现炸弹人游戏(八):游戏主角(一)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)最近一直在做另一个RPG游戏,所以本系列迟迟没有更新,上一篇博文的地址在: (NO.00005)iOS实现炸弹人游戏(七):游戏数据的序列化表示本篇接着上篇介绍炸弹人游戏中的游戏主角的基本构成,游戏主角自然是我们的炸弹人了.因为主角会在游戏场景中各个方向行走原创 2016-02-01 10:06:13 · 1636 阅读 · 0 评论 -
Cocos2D v3.4.9粒子效果不能显示的原因分析及解决办法
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)在游戏App中为了衬托气氛我们往往使用一些特殊的图形效果,粒子效果无疑是其中最为常用,也最为方便的一种.正常使用下,粒子效果的确很稳定,但是本猫最近在RPG游戏里却遇到了粒子效果不能显示的问题,调试着实花了一些功夫.现将问题现象,分析以及解决方法记录下来和大原创 2016-01-31 10:34:05 · 3695 阅读 · 0 评论 -
如何在SpriteBuilder中设置对象的通用属性
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)我们知道在SpriteBuilder中可以为对象设置自定义类从而可以进行特殊属性的赋值.比如我们需要在物理世界中设置重力值,在代码中改来改去略显麻烦,我们可以直接在自定义的属性中设置重力值.但是一般情况下,我们可能还想设置一些内置对象的属性,比如CCNode原创 2016-01-28 09:44:01 · 911 阅读 · 0 评论 -
Cocos2D中Action的进阶使用技巧(二)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)上回说到解决办法是使用CCTargetedAction类.CCTargetedAction是一个很神奇的类,它本身没有什么动作效果,但是它可以把一个动作和一个特定目标绑定起来,并且返回一个新的Action,我们就可以按需要操作这个新的动作了.不过该类在Coc原创 2016-01-23 11:12:03 · 1776 阅读 · 0 评论 -
Cocos2D中Action的进阶使用技巧(一)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)大家对Cocos2d中动作的使用大概都很清楚了,其实本身action的概念也不复杂.但是在某些情况下,一般的动作不能满足我们需求的时候,我们就必须使用更高级的Action方法来解决问题.比如,串行化(不是序列化哦,这是两个完全不同的概念)不同Action的执原创 2016-01-23 09:52:17 · 1615 阅读 · 0 评论 -
Cocos2D创建多彩文本显示标签
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)Cocos2D中默认的CCLableTTF类从源代码里看是支持多彩以及粗体之类的字符显示属性的,但可惜的是在最新的几版的cocos2D里,只能使用单色属性,否则App就会崩溃.在Github中cocos2D的源代码里,可以看到各位大牛已经发现了这个问题,但是原创 2016-01-19 11:05:15 · 1505 阅读 · 0 评论 -
Cocos2D结合CoreGraphics实现RPG人物中空黑洞吸入效果
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)之前的博文中我们实现了RPG人物的复古效果.现在我们再完点high的,我们准备实现这么一种效果:人物从中心点开始形成一个空洞,洞的边缘产生一种吸入变形效果.有了上一篇的铺垫,我们可以很快搞定它.首先看一下Apple对其CIHoleDistortion滤镜的说原创 2016-01-12 16:33:06 · 3373 阅读 · 0 评论 -
iOS关于图片点到像素转换之杂谈
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)不管是以什么方法生成的图片,是从磁盘上读取的,还是从其他对象中取得,或是从当前显存中获取的.不管是什么类似的图片,是UIImage还是CGImage.它们的显示尺寸分为2种:一种以点为单位,另一种以像素为单位.如果你在绘制,缩放或是截取图片时发现生成后的图片原创 2016-01-12 10:14:51 · 3164 阅读 · 0 评论 -
由源代码编译SpriteBuilder最新版本1.5.0搭配最新的Cocos2D 3.4.9
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)大家知道SpriteBuilder版本停留在1.4.9已经很久了:而且里面搭配的Cocos2D版本也不是最新的3.4.9版.在2015年年末,KAMIKAZE决定将SpriteBuilder从原来”万年”不更新的1.4.9版本更新到1.5.0版本,他的原文是原创 2016-01-11 08:30:34 · 2450 阅读 · 0 评论 -
Cocos2D添加精灵纹理滤镜实现图像复古效果的转换
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)大家知道Cocos2d本身是一个非常强悍的2d游戏引擎,其中自带了很多使用的图像处理功能,但是别忘了Apple自带的Core Graphics里也有很多强大的图像处理功能,比如滤镜 CIFilter.Apple在iOS上提供了近百种不同的滤镜效果,可以用来方原创 2016-01-08 14:47:32 · 2385 阅读 · 0 评论 -
Cocos2D瓦块地图高清屏(retina)显示比例问题的解决
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)在Cocos2D的游戏编程里,常用到瓦块地图.而cocos2D 3.4.9中在高清屏下地图的显示模式总是处在普清屏的状态,如下图所示:可以看到地图中每一个瓦块相当模糊,这在retina屏中是不能接受的,在国内和国外论坛上都找了一番没有满意的解决办法.后来自己原创 2016-01-08 12:42:31 · 1575 阅读 · 0 评论 -
Cocos2D实现RPG队伍菜单任意调整角色顺序的效果
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)前一篇我们实现了队伍实现拖尾效果,但是在实际游戏中我们往往需要根据不同的角色能力,角色职业对角色队伍进行排序,而且希望排序后的效果能立即在游戏地图场景中反应出来,所以在本篇博文中我们就来看看如何实现调整角色顺序并且立即在地图中显示的功能.可以看到我们在将角色原创 2016-01-04 12:09:03 · 2974 阅读 · 2 评论 -
Cocos2D实现RPG游戏人物地图行走的跟随效果
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)在一些RPG游戏中,人物队列在地图中行走的时候有时需要实现一个跟随效果,比如大家都玩过的FC游戏<<吞食天地>>.效果为当队列只有一个人时,Ta可以自由在地图中行走,当队列多于一人时,我们让其他角色跟随在游戏主角之后行走,达到一种”萌萌的”拖尾效果.如上图,原创 2016-01-04 09:43:51 · 6207 阅读 · 3 评论 -
Cocos2D在Xcode7和iOS 9.2上IMP调用出错
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)原来的代码一直在Xcode6.4上和iOS 8.4上运行,没有什么问题.但是在转至Xcode7.2上在iOS9.2上运行后,以下方法中出现错误://执行一个可变方法-(id)invokeSelectorNamed:(NSString *)selectorN原创 2016-01-04 09:22:55 · 1879 阅读 · 0 评论 -
Cocos2D两个方法的重构一例
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)在RPG游戏项目的GameSpace类中原来有一个方法:-(instancetype)initWithGameScene:(GameScene *)gameScene mapName:(NSString*)mapName;功能主要为用指定的地图初始化游戏空间原创 2016-01-04 09:08:45 · 1313 阅读 · 0 评论 -
Cocos2D游戏项目CCTableView在Xcode7.2下的无法滚动问题
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)一个RPG游戏转换到Xcode7.2下发现一个问题,原来可以上下滚动的CCTableView控件现在不可以滚动了.控制台中可以看到输出的警告:WARNING: A Gesture recognizer (<CCTapDownGestureRecognizer原创 2015-12-26 21:21:44 · 1469 阅读 · 0 评论 -
Xcode7 真机免证书调试Cocos2D游戏
经过一番实验,现在终于可以在Xcode7上免证书真机调试了:以上是在iPhone 6 plus上运行的效果,可以明显看到视野大了许多.因为时间关系,我简单说说每一步的操作,在网上也不怎么能搜到,可能太过于简单,大家都懒得说吧 ;)我用的是Xcod7.2 , OS X 10.11 ,设备为 iphone6p(iOS 9.2),另外一台是4s,系统为7.1.2已越.在Xcode中新增账户首先打开Xcod原创 2015-12-25 22:22:31 · 3212 阅读 · 9 评论 -
SpriteBuilder&Cocos2D使用CCEffect特效实现天黑天亮过度效果
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)在动作或RPG类游戏中我们有时需要天黑和天亮过度的效果来完成场景的过度,有很多种方法比如用场景切换的过渡类来实现.但是在这里我们使用另外的方法:CCEffect特效节点来实现.打开SpriteBuilder,在CCB场景中添加一个CCEffectNode节点原创 2015-12-25 15:57:52 · 1806 阅读 · 0 评论 -
(NO.00005)iOS实现炸弹人游戏(七):游戏数据的序列化表示
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)用plist列表文件来表示游戏数据因为在这个炸弹人游戏中有很多不同的关卡,难度依次上升,所以对于每个关卡的数据我们必须存放在某个地方,有很多种保存方法,这里我们选择使用plist列表文件来保存每个关卡的数据.选择Resources目录,在其中新建一个plist原创 2015-12-24 15:39:42 · 2018 阅读 · 0 评论 -
(NO.00005)iOS实现炸弹人游戏(六):游戏数据的初始化(三)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)现在我们来看看实际初始化地图的randomCreateMap方法://在空白地图上根据当前关卡数据随机创建一个关卡地图//地图总共瓦块为30x10 = 300块,抛去不能移动的Wall(48块)还剩252块空格.//还要减去player和敌人占去的空格.玩原创 2015-12-24 15:17:24 · 1707 阅读 · 0 评论 -
(NO.00005)iOS实现炸弹人游戏(五):游戏数据的初始化(二)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)我们现在来依次看一下上篇中提到的各个方法,首先介绍的是updateStateLabel方法:#pragma mark MainScene游戏相关辅助方法//更新主角状态标签,格式为:神速 无敌 爆裂 穿墙 穿弹 遥控-(void)updateStateLab原创 2015-12-24 14:55:18 · 1868 阅读 · 2 评论 -
(NO.00005)iOS实现炸弹人游戏(四):游戏数据的初始化(一)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)上一篇我们初步看了一下MainScene类的初始化方法里都做了神马事,其中随机化地图是在initGameDataFromGD方法里做的,我们就来深入看看这个方法.该方法是一个比较长的方法,里面又调用了若干其他方法,我把其中主要的代码在下面列出来://用游戏数据原创 2015-12-24 14:41:49 · 1881 阅读 · 0 评论 -
SpriteBuilder中使用GUI界面快速搭建RPG游戏中的地图名显示动画
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)在RPG游戏中我们在进入一个新的场景时,比如一个房间,一个村庄,或野外场景等,如果能在屏幕上显示场景地图的名字就很人性化了,这样可以让玩家立即知道现在在哪里.下面就让本猫带领大家用SpriteBuilder快速制作这么一个显示地图的小动画 ;)首先,打开Spr原创 2015-12-24 07:51:51 · 1861 阅读 · 2 评论 -
(NO.00005)iOS实现炸弹人游戏(三):从主场景类谈起
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)我又粗粗看了下整个项目的代码,比较多:不少类都与其他类有着千丝万缕的联系,所以在后面交代某个类的时候可能会遇到一些其他类中的代码,这个大家先看名会意吧.如果实在不明白的,都是我叙述的原因,和大家的理解力没有任何关系 ;).大家可以随时在博文后面直接跟帖发消息给原创 2015-12-23 20:00:16 · 3837 阅读 · 2 评论