正如前面FKBaseBoard类的代码中所看到的,当程序需要创建N个FKPiece对象时,程序会直接调用getPlayImages()函数去获取图片,该函数将会随机从项目包下取得N张图片。
为了让getPlayImages()函数从项目包下随机取得N张图片,程序的实现思路可分为如下几步。

① 使用NSBundle的方法获取项目包下所有以p_开头的图片(假设约定所有的图片都以p_开头),并将这些图片名添加到一个NSMutableArray集合中。

② 从第1步得到的NSMutableArray集合中随机“抽取”N/2个图片ID。

③ 将第2步得到的N/2个图片ID全部复制一份,这样就得到了N个图片ID,而且每个图片ID都可以找到与之配对的。

④ 将第3步得到的N个图片ID再次“随机打乱”,并根据图片ID加载相应的UIImage对象,最后把图片ID及对应的UIImage封装成FKPieceImage后返回。

下面是这些工具函数所在的C文件。

程序清单:codes/13/Link/Link/sources/util/FKImageUtil.h

——————本文节选自《疯狂ios讲义(上)》

疯狂ios讲义疯狂连载之加载界面的图片相关推荐

  1. 疯狂ios讲义疯狂连载之显示动画

    UIImage专门用于显示各种位图该类支持表12.1所示的各种图片格式. 当系统内存紧张时UIImage会将图片数据从UIImage对象中清理出去来以节省系统内存这里的清理行为只是清理UIImage内 ...

  2. 疯狂ios讲义疯狂连载之游戏的状态数据模型

    对游戏玩家而言在游戏界面上看到的"元素"千差万别.变化多端但对游戏开发者而言游戏界面上的元素在底层都是一些数据不同的数据所绘制的图片有所不同.因此建立游戏的状态数据模型是实现游戏逻 ...

  3. 疯狂ios讲义疯狂连载之日期选择器(UIDatePicker)

    UIDatePicker是一个可以用来选择日期和时间的控件.除此之外,它也可作为倒计时控件. 日期选择器(UIDatePicker)继承了UIControl,因此UIDatePicker可以作为活动控 ...

  4. 疯狂ios讲义疯狂连载之实现游戏视图控制器

    前面已经给出了游戏界面的布局文件,该布局文件需要使用一个视图控制器来负责显示.除此之外,视图控制器还需要为游戏界面的按钮事件提供事件监听器. 下面是该程序的视图控制器类的代码. 程序清单:codes/ ...

  5. 疯狂ios讲义疯狂连载之实现游戏逻辑(2)

    13.6.5 定义获取通道的工具方法 这里所谓的通道指的是一个方块上.下.左.右4个方向上的空白方块图13.10显示了一个方块四周的通道. 图13.10 方块四周的通道 下面是获取某个坐标点四周通道的 ...

  6. 疯狂ios讲义之实例:通过旋转手势旋转图片

    实例:通过旋转手势旋转图片 本实例将会对前面的实例进行改进,在前面实例的基础上增加一个旋转手势处理器,从而让该应用既可根据用户捏合手势对图片进行缩放,也可根据用户旋转手势对图片进行旋转. 复制上面的应 ...

  7. 疯狂iOS 讲义(上) Objective-C 2.0与iPhone/iPad应用开发基础(国内首部iOS 7相关著作,小伙伴们,学好iPhone/iPad应用开发,我们一起做土豪吧)

    疯狂iOS 讲义(上) Objective-C 2.0与iPhone/iPad应用开发基础(国内首部iOS 7相关著作,小伙伴们,学好iPhone/iPad应用开发,我们一起做土豪吧) 李刚 编 IS ...

  8. 疯狂iOS 讲义(上) Objective-C 2.0与iPhone/iPad应用开发基础

    疯狂iOS 讲义(上)Objective-C 2.0与iPhone/iPad应用开发基础(国内首部iOS 7相关著作,小伙伴们,学好iPhone/iPad应用开发,我们一起做土豪吧) 李刚编 ISBN ...

  9. 疯狂ios讲义之网页控件(UIWebView)

    通过使用UIWebView控件,可以实现一个内置的浏览器(类似于Safari),而且可以直接将这个浏览器内嵌到应用的任意位置,因此非常方便. UIWebView直接继承了UIView基类,一般不可以与 ...

最新文章

  1. 维秘天使超模美女Romee Strijd性感运动照片
  2. Yolo-v2_ Windows平台下如何配置darknet-yolov2?(安装CUDA)
  3. #10 Linux硬盘管理
  4. MySQL - 行锁 表锁 乐观锁 悲观锁 读锁 写锁
  5. 机器人正改变着全球工业,仅中国去年就买了9万台
  6. Mobile Widget是一种新的手机应用形式吗
  7. Daily Scrum8, Oct. 12th
  8. 项目搭建 windows_08. SpringCloud实战项目-配置Git
  9. 计算机与科学a,[第一单元] 计算机与计算机科学-课文A参考译文
  10. OpenSSL密码库算法笔记——第3.2章 模乘与模平方
  11. 论文纠错和管理文献工具
  12. 阿里巴巴《Java开发手册(黄山版)》阅读笔记
  13. GRE所有填空真题 TC300RC240 高频词分享
  14. 【Matlab符号积分和符号微分的实现方法】积分微分
  15. 微信小程序开发者工具使用vant组件
  16. R语言 数据正态化+标准化
  17. token防止表单重复提交
  18. CSS Grid 布局
  19. 【Labview】G语言
  20. java内部类的OC实现方法

热门文章

  1. unity 实现手机振动_Unity 手机震动插件Vibration
  2. window.location.href如何多次请求_RabbitMQ如何保证幂等性?
  3. oracle 的目录是空的,oracle sqlplus在@命令路径中有空格的问题
  4. Python基础之条件判断
  5. linux下netty接收不到服务,Netty 发送消息失败或者接收消息失败的可能原因
  6. Win2008 R2 IIS7 PHP 5.4 环境搭建图文教程
  7. Python引起的混乱解决之道——感悟
  8. VNC轻松连接远程Linux桌面
  9. 信息安全系统设计基础第六周学习总结—20135227黄晓妍
  10. CLLocationManager 位置定位