UI 界面一般是游戏里比较独立的地方,因为游戏引擎一般都比较注意基础的功能封装,很少会关注UI,但是 UI 确是玩家第一眼看到的效果,因此能否实现一个美观的UI对于提升游戏的整体美观有着很大的帮助。

幸运的是cocos2d-x意识到了这个问题,自从2.0版本之后逐步加入了几个常用控件,在这里我们详细说一下 CCScrollView 。

CCScrollView 经常被用在场景选择界面里,以《捕鱼达人》为例,几个场景各个占据一个屏幕的宽度,滑动即可切换不同的场景。

   

CCScrollView 类文件位于 cocos2d-x 目录下的 extensions\GUI\ccscrollview ,默认新项目是没有添加对它的引用的,如果项目要使用的话需要手动添加对 libExtensions 的引用,具体的方法参加上篇。

看源码可知,CCScrollView 继承自 CCLayer ,它内部维护了一个CCNode* 类型的Container,它的实现原理是将要展示的元素都添加到Container里,然后在响应触摸事件的代码里不断的修改 Container的位置,

这样便达到了滑动展示的效果。

使用方法: 

;

CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
       CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

CCLayer *pLayer = CCLayer::create();

] = {};
       ; i <= ; ++ i)
       {
           memset(helpstr, , , visibleSize.height / ));

pSprite->setPosition(ccp(visibleSize.width * (i-));
           pLayer->addChild(pSprite);
       }
       
       m_pScrollView = CCScrollView::create(CCSizeMake(visibleSize.width, visibleSize.height), pLayer);
       m_pScrollView->setContentOffset(CCPointZero);
       , visibleSize.height));

, , , )),, , , )),; i <= ; ++ i)
       {
           CCSprite *pPoint = CCSprite::createWithSpriteFrameName( * pPoint->getContentSize().width)/ + pPoint->getContentSize().width * (i-), origin.y + ));
           );
        pPoint->setDisplayFrame(pCache->spriteFrameByName();

)
    {
        m_nCurPage ++;
    }
    )
    {
        m_nCurPage = ;
    }
    )
    {
        m_nCurPage = ;
    }

pPoint = (CCSprite *)), );
    m_pScrollView->setContentOffset(adjustPos, ;
    ;

};

我们可以通过 setDelegate 方法传入接受响应的对象,每当滑动或者放大的时候,就会调用响应的方法。可以在接受委托的对象里实现各种效果。

示例代码下载:

http://download.csdn.net/detail/u010810951/6441983

参考文章:

http://codingnow.cn/cocos2d-x/1024.html

欢迎有兴趣的童鞋加入Cocos2d-x 开发群  qq: 264152376

最新文章

  1. ASP.NET Core 性能对比评测(ASP.NET,Python,Java,NodeJS)
  2. Mysql操作初级
  3. 【WebGoat习题解析】AJAX Security-&gt;Insecure Client Storage
  4. 阿里云搭建LAMP环境详细教程
  5. c 从语言中的内存管理
  6. memcached 入门
  7. ByteArrayInputStream 和 ByteArrayOutputStream
  8. HDU 1230 火星A+B
  9. linux下c/c++方式访问curl的帮助手册
  10. iOS JsonModel
  11. 基于Flex的HTTPService(GET和POST)
  12. Less 编译工具
  13. java.lang.OutOfMemoryError: PermGen space有效解决方法
  14. Java-ServletContextAttributeListener
  15. php对接微信小程序支付
  16. Python_tkinter(5)_GUI工具
  17. 【sping揭秘】15、afterreturning
  18. 协程 coroutine
  19. debian文本配置网络备忘:/etc/network/interfaces
  20. js上传插件uploadify自动检测不到flash控件的问题

热门文章

  1. 利用HTML5的History API实现无刷新跳转页面初探
  2. Architectural Model - SNMP Tutorial
  3. 如何学好JAVA编程
  4. Windows中创建桌面快捷方式
  5. MYSQL存储过程、游标、触发器
  6. [Unity3d]调试问题之UI/Image不显示
  7. Protecting against XML Entity Expansion attacks
  8. 2015.4.20 Canvas Jquery 移动端 JavaScript
  9. rqnoj343 mty的考验
  10. Spring中集合类型属性注入