cocos2d心得关于精灵帧缓存
在cocos2d中,精灵帧缓存CCSpriteFrameCache是用来存储精灵帧的。它没有特别的属性,只存储了一些用来管理CCSpriteFrame的方法。
以一个例子来说明,一般在又纹理图集的程序中,我们使用如下语句添加多个精灵帧,来构成精灵帧缓存:
CCSpriteFrameCache* frameCache = [CCSpriteFrameCache sharedSpriteFrameCache];
[frameCache addSpriteFramesWithFile:@"game-art.plist"];
其中该方法从plist属性文件中添加多个精灵帧。纹理将会被自动载入,纹理的扩展名则使用.png替代.plist。
在使用的过程中通过如下语句就可以:
CCSpriteFrame* bulletFrame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"bullet.png"];
该语句生成精灵帧。
CCSpriteBatchNode* batch = [CCSpriteBatchNode batchNodeWithTexture:bulletFrame.texture];
[selfaddChild:batch z:1tag:GameSceneNode TagBulletSpriteBatch];
然后在通过如上语句生成了CCSpriteBatchNode并添加进子节点。
最后还有一点想说明的:今天刚刚学到的:
导航栈是retain的,push进navigationcontroller之后,需要把已经push进去的controller release掉。
对delegate在@property的申明应该用assign而不应该用retain的,应该牢记。
个人对 ios delegate 的理解《转载》
之前一直对iOS的delegate不是很明白,一直在网上找例子看想了解清楚,但一直没理解。今天做项目的时候碰到了需要使用delegate的时候,没办法只能自己硬着头皮试试了。凭着之前对delegate的理解,自己慢慢琢磨现在算是得出一点经验吧,分享一下。

上图中,popover后面的是主view controller,popover里面装的是第二个viewcontroller,我们的目的是通过点击popover中的按钮在主view controller中实现对应的方法。
首先,先在第二个viewcontroller的.h头文件中申明我们的delegate:
@protocol MSelectToolViewControllerDelegate
- (void) TOOL_MEASURE_LINE;
- (void) TOOL_MEASURE_FREE_LINE;
@end
然后,设置一个可以set、get的变量:
@property (nonatomic, retain) id<MSelectToolViewControllerDelegate> delegate;
再申明popover中按钮对应的方法,(直接从xib文件连线就可以完成的):
- (IBAction)measureLineTool:(id)sender;
- (IBAction)measureFreeLineTool:(id)sender;
然后直接在第二个viewcontroller的.m实现文件中具体实现按钮的方法:
<pre class="brush:objc; toolbar: true; auto-links: false;">
- (IBAction)measureLineTool:(id)sender {
[delegate TOOL_MEASURE_LINE];
}
- (IBAction)measureFreeLineTool:(id)sender {
[delegate TOOL_MEASURE_FREE_LINE];
}
本例中是直接调用先前delegate申明的方法。
接下来的工作在主viewcontroller中完成了。。。。
在主view controller的.h头文件中import进来第二个view controller的.h头文件
并在主viewcontroller要遵守的协议中加入之前定义的delegate的名称
@interface MotiConnectViewController : UIViewController<UIScrollViewDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIPopoverControllerDelegate, MSelectToolViewControllerDelegate>
最后在主viewcontroller中设置Delegate的委托对象并实现Delegate中定义的方法,类似这样:
<pre class="brush:objc; toolbar: true; auto-links: false;">
MSelectToolViewController *mSelectToolViewController = [[MSelectToolViewController alloc] initWithNibName:nil bundle:nil];
mSelectToolViewController.delegate = self;
- (void)TOOL_MEASURE_LINE
{
//在这里该干嘛干嘛,填入你想要实现的代码
}
- (void)TOOL_MEASURE_FREE_LINE
{
//在这里该干嘛干嘛,填入你想要实现的代码
}
cocos2d心得关于精灵帧缓存的更多相关文章
- 【Cocos2d-x 3.x】 精灵帧缓存和纹理缓存
转自泰然网(Cocos2d-x 3.x官方文档):精灵帧缓存:http://www.tairan.com/archives/6378/ 纹理缓存: http://www.tairan.com/ar ...
- SpriteFrameCache 精灵帧缓存
//获取精灵帧缓存的单例对象 auto spriteFrameCache = SpriteFrameCache::getInstance(); //从plist文件添加多个精灵帧 spriteFra ...
- cocos2d-x中描述精灵帧图片的plist和json文件各个key的含义
最近在研究cocos,互联网行业中,手游业最近的表现是非常的火,加上本身对游戏有浓厚兴趣,所以便染指了游戏引擎~ 这次的废话就这么简短吧,因为这次记录的东西本身就很少. 在cocos中,为精灵帧添加缓 ...
- COCOS2D中对精灵的操作、对图片的各种操作
内容简要: 1.初始化 2.创建无图的精灵 3.设置精灵贴图大小 4.添加入层中 5.对精灵进行缩放 6.对精灵宽或高进行缩放 7.旋转精灵 8.设置精灵透明度 9.精灵的镜像反转 10.设 ...
- OpenGL帧缓存对象(FBO:Frame Buffer Object)(转载)
原文地址http://www.songho.ca/opengl/gl_fbo.html 但有改动. OpenGL Frame BufferObject(FBO) Overview: 在OpenGL渲染 ...
- CSharpGL(42)借助帧缓存实现渲染到纹理(RenderToTexture)
CSharpGL(42)借助帧缓存实现渲染到纹理(RenderToTexture) 渲染到纹理(Render To Texture)是实现很多OpenGL高级效果的一个基础.本文记录了如何用CShar ...
- SpriteBuilder中如何平均拉伸精灵帧动画的距离
首先要在Timeline中选中所有的精灵帧,可以通过如下2种的任意一种办法达成: 1按下Shift键的同时鼠标单击它们 2鼠标在Timeline空白区拖拽直到拉出的矩形包围住所有精灵帧方块后放开鼠标. ...
- 关于精灵帧(Sprite Frame)的尺寸大小
一个对象的精灵帧(Sprite Frame)有若干关于大小的尺寸. 比较容易混淆,这里记录下来区别: CCSpriteFrame *spriteFrame = self.spriteFrame; CG ...
- OpenGL读取帧缓存数据
https://blog.csdn.net/niu2212035673/article/details/80251949 简述有些时候我们可能需要获取渲染后的图像数据,比较常用的函数是glReadPi ...
随机推荐
- __getitem__,__setitem__,__delitem__
__getitem__.__setitem__.__delitem__ 总结: __getitem__,__setitem_,__delitem__ : obj[‘属性’]的方式去操作属性时触发的方法 ...
- Coder(线段树)
求一部分和的线段树,因为是对5取余,所以给定一段区间a-b,假设其位置会有变化,最多会有5种和,那么就可以保留这五种和,在用lz进行延迟标记时,保存位置变化了多少也就知道了该从当前和转到哪一个和. 当 ...
- Spring Boot运行原理
概述 本文主要写了下Spring Boot运行原理,还有一个小例子. Spring4.x提供了基于条件来配置Bean的能力,而Spring Boot的实现也是基于这一原理的. Spring Boot关 ...
- Objective-C Protocols
Objective-C allows you to define protocols, which declare the methods expected to be used for a part ...
- ubuntu中使用eclipse开发android,logcat显示问题
〜/工作区/ .metadata / .plugins / org.eclipse.core.runtime / .settings / com.android.ide.eclipse.ddms.pr ...
- Lucene全文检索技术学习
---------------------------------------------------------------------------------------------------- ...
- cocoapods学习
1.安装 http://stackoverflow.com/questions/16459028/rvm-install-error-running-requirements-osx-port-ins ...
- ubuntu 14.04 配置java 1.8环境变量
从官网上下载jdk 源文件,并解压 root@hett-PowerEdge-T30:/usr/local/src# tar -xzvf jdk-8u151-linux-x64.tar.gz 解压完成之 ...
- Java面试题全集(下)
这部分主要是开源Java EE框架方面的内容,包括hibernate.MyBatis.spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题, ...
- Gym 100342I Travel Agency (Tarjan)
题意读懂了就好做了,就是求一下点双连通分量.维护一下一颗子树的结点数,对于一个结点当u是割点的时候, 统计一下u分割的连通分量v,每得到一个连通分量的结点数cnt(v)和之前连通分量结点数sum相乘一 ...