http://www.cnblogs.com/dinghing154/archive/2012/08/05/2623970.html

在编写程序的时候我们常常使用self.scale来让我们使用的图片放大和缩小,但这种变化并没有真正意义上让我们的图片的大小发生改变,当我们要对这种图片进行点击或其他操作的时候常常会发生错误,这里我使用另外一种方法实现这个效果,完成真正意义上的图片放大和缩小。

这里附上主要代码:

 1 - (void) onItem2:(id)sender
2 {
3 CGSize size = _sprt2.contentSize;
4 NSLog(@"\n before modified: image2: width:%f height:%f", size.width, size.height);
5 CCRenderTexture *aRenderTexture = [CCRenderTexture renderTextureWithWidth:1024 height:768];
6 [aRenderTexture begin];
7 [self visit];
8 [aRenderTexture end];
9 CCSprite *sp = [CCSprite spriteWithTexture:aRenderTexture.sprite.texture];
10 [sp setFlipY:YES];
11 [self removeAllChildrenWithCleanup:YES];
12
13 UIImage *image = [self convertSpriteToImage:sp];
14 UIImage *newImage = [self scaleFromImage:image toSize:CGSizeMake(512, 384)];
15 NSData *data = UIImagePNGRepresentation(newImage);
16 [data writeToFile:@"lll.png" atomically:YES];
17
18 CCSprite *tp = [self convertDataToSprite:data];
19 [self addChild:tp];
20 [tp setPosition:ccp(512, 384)];
21 }

这部分使我们对一张图片纹理进行操作。

接下来我们就对精灵进行放大(缩小)操作,并将处理后的精灵存储。实现真正意义上的图片大小的改变。

 1 //CCSprite转换为UIImage
2 - (UIImage *) convertSpriteToImage:(CCSprite *)sprt
3 {
4 CCRenderTexture *render = [CCRenderTexture renderTextureWithWidth:[sprt contentSize].width
5 height:[sprt contentSize].height];
6 [render begin];
7 [sprt visit];
8 [render end];
9 return [UIImage imageWithData:[render getUIImageAsDataFromBuffer:kCCImageFormatPNG]];
10 }
11
12 //UIImage放大(缩小)到指定大小
13 - (UIImage *) scaleFromImage:(UIImage *)image toSize:(CGSize)size
14 {
15 UIGraphicsBeginImageContext(size);
16 [image drawInRect:CGRectMake(0, 0, size.width, size.height)];
17 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
18 UIGraphicsEndImageContext();
19 return newImage;
20 }
21 //UIImage转化为NSData
22 - (NSData *) convertUIImageToData:(UIImage *)image
23 {
24 return UIImagePNGRepresentation(image);
25 }

在cocos2d中实现真正意思上的图片放大和缩小的更多相关文章

  1. img 鼠标滑上后图片放大,滑下后图片复原

    <style type="text/css">img{ -webkit-transition: ease .2s; transition: ease .2s; -web ...

  2. robotframework上的字体放大和缩小是ctr++和ctl--

  3. vue富文本编辑器vue-quill-editor使用总结(包含图片上传,拖拽,放大和缩小)

    vue-quill-editor是vue很好的富文本编辑器,富文本的功能基本上都支持,样式是黑白色,简洁大方. 第一步下载 vue-quill-editor: npm i vue-quill-edit ...

  4. cocos2d中如何使用图片纹理图集的加载来实现一个动画的功能

    cocos2d中要实现一个动画,一般采用纹理图集的方式,也就是说把几个连续动作的图片挨个显示切换这样就是动画 一: 首先先看下今天要实现的具体的目的,打飞机的时间屏幕上会有一个喷火的小飞机,飞机的尾部 ...

  5. Cocos2D iOS之旅:如何写一个敲地鼠游戏(二):Cocos2D中的高清支持

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  6. Cocos2D中图片加-hd后缀的说明

    你可能注意到实际上游戏中的sprite都有2张图片,它都对应该精灵,并包含在资源包中(resource pack): player.png(27x40 pixels)和player-hd.png(do ...

  7. Cocos2d中update与fixedUpdate的区别(五)

    在真实情况中update:和fixedUpdate方法如何去调用? 由上所述,所以update方法在每帧被调用1次,从而给你一个机会去更新你的游戏对象的状态在其绘制之前.而fixedUpdate:方法 ...

  8. Cocos2d中update与fixedUpdate的区别(一)

    原文链接 关于这个问题cocos2d中的fixedUpdate:(或者是Unity中的FixedUpdate)在不同论坛中出现略显频繁.它被回答过很多次了,不管如何,每次一些童鞋在得到答案后还是有一些 ...

  9. cocos2d 中使用jni Java 调用 C++ 方法

    1.首先是LoadLibrary cocos2d中的C++代码会编译成一个.so文件.放在安卓文件夹下的libs/armeabi 下,然后java会load进来,这步我们不用做了,由于cocos2d已 ...

随机推荐

  1. 解决VM-tools安装后,仍然无法与虚拟机复制

    重新安装,不同是运行这个: vmware-install.real.pl 并执行 sudo apt-get install open-vm-tools-desktop 重启

  2. 状压DP详解(位运算)

    前言: 状压DP是一种非常暴力的做法(有一些可以排除某些状态的除外),例如dp[S][v]中,S可以代表已经访问过的顶点的集合,v可以代表当前所在的顶点为v.S代表的就是一种状态(二进制表示),比如 ...

  3. 1、spring boot入门

    1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,martin fowler 微服务: ...

  4. cf978E Bus Video System

    The busses in Berland are equipped with a video surveillance system. The system records information ...

  5. python基础之入门基础

    编程语言分类 机器语言 使用二进制代码直接编程,直接与硬件交互,执行速度非常快,灵活,但是开发难度高,开发效率低下,缺乏移植性. 汇编语言 对机器语言指令进行了英文封装,较机器语言容易记忆,直接与硬件 ...

  6. TouTiao开源项目 分析笔记13 最后一个订阅号的实现主页面

    1.实现订阅号的基础类 1.1.本地订阅号的Bean类==>MediaChannelBean public class MediaChannelBean implements Parcelabl ...

  7. 1 web应用

    web应用 Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端/服 ...

  8. BP神经网络的手写数字识别

    BP神经网络的手写数字识别 ANN 人工神经网络算法在实践中往往给人难以琢磨的印象,有句老话叫“出来混总是要还的”,大概是由于具有很强的非线性模拟和处理能力,因此作为代价上帝让它“黑盒”化了.作为一种 ...

  9. 利用插件对某些网页执行javascript代码

    说明 javascript在浏览器地址栏中可以运行,也可以按F12在控制台中运行,还可以写一个插件让javascript针对某些网页执行,可以使用chrome浏览器的Content scripts,C ...

  10. 《Cracking the Coding Interview》——第9章:递归和动态规划——题目9

    2014-03-20 04:08 题目:八皇后问题. 解法:DFS解决. 代码: // 9.9 Eight-Queen Problem, need I say more? #include <c ...