在cocos2d中實現真正意思上的圖片放大和縮小


在編寫程序的時候我們常常使用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 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM