`
tank2308635
  • 浏览: 192045 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)解决滚屏背景/拼接地图有黑边(缝隙)以及禁止游戏中自动锁屏问题!

 
阅读更多

 

 Himi  原创, 欢迎转载,转载请在明显处注明! 谢谢。

 

 

 

 

 

 

           原文地址:http://blog.csdn.net/xiaominghimi/article/details/6926913


     本章节主要为大家介绍在游戏开发过程中经常遇到的两个问题;

     1. 解决滚屏背景或拼接地图有黑边!

      对于游戏开发中,背景(游戏地图)是必要的元素之一,那么对于大部分游戏的背景都是动态,或者不断移动的;例如RPG中的背景随着人物、主角而移动,那么一般情况下背景都是由地图编辑器(图块)拼出来的,要不就是直接一整张大图去显示,在或者就是将一张大图进行裁减成N张,然后再进行拼接完成等等;

      那么对于背景(地图)元素中存在的重复图块很少的话基本上就没有利用地图编辑器的必要了;在这里Himi不来介绍如何在cocos2d中使用地图编辑器做背景地图 ,而是介绍在cocos2d中制作滚动地图时利用拼接地图方式遇到的黑边问题;

     如下图所示,背景是由3张图片拼接而成,如下3张图:

                                               

     然后Himi将此3张作为3个精灵然后顺次绘制在屏幕上代码如下: 

 

  1. //将三张图拼成一张完整背景   
  2.         CGSize screenSize =[[CCDirector sharedDirector]winSize];  
  3.         CCSprite *bgTile1 =[CCSprite spriteWithFile:@"himi_01.png"];  
  4.         bgTile1.position=ccp(bgTile1.contentSize.width*0.5,screenSize.height*0.5);  
  5.         CCSprite *bgTile2 =[CCSprite spriteWithFile:@"himi_02.png"];  
  6.         bgTile2.position=ccp(bgTile1.position.x+bgTile1.contentSize.width,bgTile1.position.y);  
  7.         CCSprite *bgTile3 =[CCSprite spriteWithFile:@"himi_03.png"];  
  8.         bgTile3.position=ccp(bgTile2.position.x+bgTile2.contentSize.width,bgTile2.position.y);  
  9.         [self addChild:bgTile1 z:0 tag:11];  
  10.         [self addChild:bgTile2 z:0 tag:22];  
  11.         [self addChild:bgTile3 z:0 tag:33];  

 

此时运行的截图如下:

               


    从上图童鞋们就可以看到拼接有裂缝,那么接着让3个精灵从左向右不断的x轴+1进行移动,代码如下:

 

  1. //----init函数中   
  2.        //每0.1秒刷新函数move  
  3.         [self schedule:@selector(move) interval:0.1];  
  4. //move函数  
  5. -(void)move{  
  6.     CCSprite *tempSprite =(CCSprite*)[self getChildByTag:11];  
  7.     tempSprite.position=ccpAdd(tempSprite.position, ccp(1,0));  
  8.     tempSprite =(CCSprite*)[self getChildByTag:22];  
  9.     tempSprite.position=ccpAdd(tempSprite.position, ccp(1,0));  
  10.     tempSprite =(CCSprite*)[self getChildByTag:33];  
  11.     tempSprite.position=ccpAdd(tempSprite.position, ccp(1,0));  
  12. }  


运行截图如下:

 

              


     这时当移动到一定距离时候会发现刚才的缝隙消失了,是消失了,通过以上两张运行效果图可以说明:

     在cocos2d中如图你使用拼接背景地图的方式去做的话,每处拼接处在移动时都会时不时的出现黑边(裂缝),至于如何解决我想童鞋们第一想法就是在裁图的时候多切出一像素的方法,第一张比如原来是100,故意裁出101,第二张绘制的时候X轴前一个像素...以此类推,还有些童鞋认为是美工的原因,可能在裁图的时候有透明像素的存在造成,当然美工裁图的不仔细确实是个不可排除的原因,但是最终解决的方案应该是将精灵设置贴图无锯齿的属性,这样就可以完美解决此问题,设置精灵贴图无锯齿方法如下:

 

  1. [CCSprite.texture setAliasTexParameters];  


    我们将这句添加上之后再次运行,代码更改如下:

 

 

  1. //将三张图拼成一张完整背景   
  2. CGSize screenSize =[[CCDirector sharedDirector]winSize];  
  3. CCSprite *bgTile1 =[CCSprite spriteWithFile:@"himi_01.png"];  
  4. bgTile1.position=ccp(bgTile1.contentSize.width*0.5,screenSize.height*0.5);  
  5. CCSprite *bgTile2 =[CCSprite spriteWithFile:@"himi_02.png"];  
  6. bgTile2.position=ccp(bgTile1.position.x+bgTile1.contentSize.width,bgTile1.position.y);  
  7. CCSprite *bgTile3 =[CCSprite spriteWithFile:@"himi_03.png"];  
  8. bgTile3.position=ccp(bgTile2.position.x+bgTile2.contentSize.width,bgTile2.position.y);  
  9. //让3个精灵都设置贴图无锯齿  
  10. [bgTile1.texture setAliasTexParameters];  
  11. [bgTile2.texture setAliasTexParameters];  
  12. [bgTile3.texture setAliasTexParameters];  
  13. [self addChild:bgTile1 z:0 tag:11];  
  14. [self addChild:bgTile2 z:0 tag:22];  
  15. [self addChild:bgTile3 z:0 tag:33];  

 

再次运行效果图如下:

               

  OK,完美解决;


 2.下面介绍第二个问题:如何禁止手机自动锁屏的问题;

     对于手机自动锁屏的问题一般都是在项目尾声的时候发现由于手机自动锁屏所带来的各种问题,例如,在cocos2d中我们调用暂停游戏的函数后,如果用户无操作,手机自动锁屏后,解锁再次进入游戏就会发现游戏不处于暂停了,(如果你有暂停界面的话,你将看到你暂停界面存在,而后面的游戏照常运行- -)

    那么这里Himi给出在应用中禁止手机自动锁屏的代码,如下:

 

  1. [[UIApplication sharedApplication] setIdleTimerDisabled:YES];  


 

     OK,本章介绍的知识点虽然很少解决的方法也很简单,但是也是游戏中最容易遇到的两个问题;

 

     那么这里肯定会有不少童鞋认为本身一句代码的事情非写这么多进行说明,嗯 ,确实写的过于详细,但是Himi之所以写这么详细主要还是想让还没有遇到此类问题的童鞋清晰化此类问题出现的原因,这样能让更多童鞋减少以后遇到此问题的疑问~

分享到:
评论

相关推荐

    自动滚屏(HTML经典用例)

    自动滚屏是一种常见的网页效果,是通过使用JavaScript脚本语言来实现的。下面将详细介绍自动滚屏的实现原理、优点和使用方法。 实现原理: 自动滚屏的实现原理是通过使用JavaScript脚本语言来控制网页的滚动条。...

    RichEdit控件删除行和自动滚屏

    本篇文章将详细讲解如何在 RichEdit 控件中实现删除行的操作,并结合自动滚屏功能,使得用户在进行操作时能够有良好的交互体验。 首先,我们需要了解RichEdit控件的基本用法。RichEdit控件是Microsoft提供的MFC...

    js实现页面自动滚屏效果

    在本主题中,我们将探讨如何使用JavaScript实现页面的自动滚屏效果,并且能够根据用户的单击、双击事件进行控制,以及将该功能绑定到特定的HTML元素上。 一、基本原理 页面滚动效果通常涉及到改变`window`对象的`...

    双击自动滚屏

    标题“双击自动滚屏”指的是一个功能,它允许用户在使用某些软件或应用程序时,通过双击鼠标来实现屏幕内容的自动滚动。这个功能常见于文本编辑器、代码阅读器或者网页浏览器等,旨在提高用户的浏览效率。下面将详细...

    滚屏动作类游戏——坦克大战

    在安卓游戏开发领域,滚屏动作类游戏是一种深受玩家喜爱的游戏类型,而“坦克大战”则是这类游戏的经典代表。本文将深入探讨如何构建一个类似“坦克大战”的滚屏动作游戏,涉及的技术点包括游戏设计、图形渲染、用户...

    Flash游戏中人物走动与场景自动滚屏AS3.0代码

    在Flash游戏开发中,人物走动与场景自动滚屏是两个关键的技术点,尤其是在2D横版卷轴游戏中。本文将深入探讨如何使用ActionScript 3.0(AS3.0)来实现这一功能。 首先,我们要理解AS3.0的基础。ActionScript是一种...

    JS控制页面背景色、字体、滚屏速度

    JS控制页面背景色切换、显示字体、滚屏速度

    VB 自动滚屏功能

    在VB(Visual Basic)编程环境中,自动滚屏功能是一项实用的技术,它允许程序窗口或控件根据用户需求或编程逻辑自动滚动内容。这个功能在设计用户界面时特别有用,特别是对于那些显示大量数据或者需要实时更新信息的...

    J2me游戏滚屏思想

    滚屏主要是指在游戏场景中,随着主角的移动,地图背景随之平滑滚动,营造出动态的视觉效果。本文主要探讨了几种常见的地图滚动算法以及经典的卡马克卷轴算法。 首先,无缝图片滚动画法是一种简单而直观的方法。它...

    FineReport中如何实现自动滚屏效果

    对于一些特殊的模板,可能为了展示的更加丰富、全面会在一个页面放置很多图表。表格等内容。由于内容过多,超出了浏览器窗口的大小...这样我们就需要用到JS滚屏效果来解决,这里主要介绍在FineReport中的具体制作方法。

    Html 双击自动滚屏代码

    - **兼容性问题**:上述代码在现代浏览器中通常可以正常工作,但在某些老旧版本的浏览器中可能存在问题。 - **用户体验**:虽然自动滚动效果很酷炫,但过度使用可能会让用户感到困惑。因此,在实际应用中应该考虑到...

    滚屏地图碰撞检测人物移动12121

    在游戏开发中,滚屏地图碰撞检测和人物移动是至关重要的技术环节,它们涉及到游戏的交互性和玩家体验。本文将详细解析这些知识点,并提供相关的Java类文件可能涉及的功能。 首先,"滚屏地图"是一种常见的游戏场景...

    自动滚屏软件

    自动滚屏软件,Window用。假如某个窗体太大,或者超出了显示器的边界而无法用鼠标键盘操作挪回来,那么可以试试这款自动滚屏软件(插件)。只要用鼠标的光标向(窗口超出部分)屏幕边界挪动,那么超出屏幕显示范围的...

    页面自动刷新无限循环滚屏

    在IT领域,页面自动刷新和无限循环滚屏是两种常见的网页动态效果,它们可以用于实时数据更新、展示滚动信息或创建独特的用户体验。本篇将详细解释这两种技术,并提供基于jQuery的实现方法。 **一、页面自动刷新** ...

    如何实现自动滚屏功能

    在VB.NET中实现自动滚屏功能,主要是通过模拟鼠标的滚动动作来达到目的。这个功能在许多场景下都非常实用,比如自动化测试、监控程序或者演示文稿中。下面将详细介绍如何利用VB.NET来编写自动滚屏的代码。 首先,...

    CTG Plugins 1.7.1 Chrome扩展插件 - 自动滚屏/自动点击/显示密码/密码生成等

    • 自动滚屏 • 重点 • 暂停所有标签 • 显示密码 • YouTube - 提取字幕 • 密码生成器 • 自动点击 CTG Plugins 插件简介: 这是来自Chrome商店的 CTG Plugins 浏览器插件,您可以在当前页面下载它的最新版本...

    android滚屏动作游戏——太空保卫战

    滚屏动作游戏通常包含丰富的图形动画、玩家控制、敌人AI、碰撞检测、音效集成以及游戏进度保存等多个方面。以下是这些知识点的详细说明: 1. **Android SDK与环境搭建**:首先,开发者需要熟悉Android Studio,这是...

    滚屏动作游戏——太空保卫战

    《滚屏动作游戏——太空保卫战》是一款基于Android平台的经典游戏,它为初学者提供了学习Android游戏开发的宝贵资源。这款游戏的设计理念是让玩家扮演太空守卫者,抵御一波又一波的外星入侵,通过滚动屏幕来操控飞机...

    自动滚屏工具 看电子图书的好工具

    自动滚屏工具,自动滚屏,看电子图书的好工具。

    android 自动滚屏源码

    综上所述,这个"android 自动滚屏源码"项目涵盖了Android中实现广告滚屏的关键技术和实践,对于开发者来说,无论是学习还是快速集成进项目都是非常有价值的。只需根据自己的需求进行适当的定制和调整,就可以为你的...

Global site tag (gtag.js) - Google Analytics