cocos2d-x自己写的一个scrollview有待完善-创新互联

直接上代码,根据cocos2d-x 扩展库中的代码改编的。

创新互联作为成都网站建设公司,专注成都网站建设、网站设计,有关成都企业网站定制方案、改版、费用等问题,行业涉及成都封阳台等多个领域,已为上千家企业服务,得到了客户的尊重与认可。
  1. //
  2. //  MScrollView.h
  3. //  Test ScrollView
  4. //
  5. //  Created by Za aa on 13-4-25.
  6. //
  7. //
  8. #ifndef _MScrollView_h
  9. #define _MScrollView_h
  10. #include "cocos2d.h"
  11. usingnamespace
  12. //触摸误差
  13. constint
  14. //设置图片修正时的移动速度
  15. constfloat
  16. classpublic
  17. public
  18. virtualbool
  19. //复写绘图函数,每帧调用,添加了区域剔除
  20. void
  21. //CREATE_FUNC(MScrollView);
  22. //自定义--------
  23. //从多个精灵创建
  24. staticfloat
  25. //修改剔除区域
  26. voidfloatfloat
  27. //修改响应区域
  28. void
  29. //根据间距初始化子层精灵
  30. boolfloat
  31. //修正动画的函数
  32. void
  33. //拖动精灵,跟随手指移动改变位置
  34. voidfloat
  35. //滚动到某一页的函数
  36. voidfloat
  37. //页面滚动动画,moveto 动画
  38. voidfloat
  39. //updata,用于如果拖动就停止moveto 动作
  40. voidfloat
  41. // 添加一个回调函数,用于停止动画
  42. void
  43. //重写触屏相关函数----                      
  44. virtualvoid
  45. virtualbool
  46. virtualvoid
  47. virtualvoid
  48. virtualvoid
  49. private
  50. //是否按下后移动
  51. bool
  52. //按下的点
  53. //抬起点
  54. //当前的触电
  55. //子层容器,用于滚动显示
  56. //保存所有精灵
  57. //总页数
  58. int
  59. //当前页数
  60. int
  61. //偏移动画的时间
  62. float
  63. //显示区域
  64. //  CCRect m_view;
  65. //显示区域,区域外的将被剪切
  66. //接收事件的区域
  67. //点击后的回调函数
  68. #endif

  1. //
  2. //  MScrollView.cpp
  3. //  Test ScrollView
  4. //
  5. //  Created by Za aa on 13-4-25.
  6. //
  7. //
  8. #include "MScrollView.h"
  9. //清空数组
  10. float
  11. new
  12. if
  13. //创建array,用于保存所有sprite
  14. //-----------------------------------------------
  15. //将省略的sprite添加进m_spriteArray 和 mscrollview中
  16. //----------------------------------------------
  17. //定义一个params变量,实际是一个指针,用于定位可变行参变量 
  18. va_list
  19. //执行本宏后,params指向第一个可变信参,p_w_picpathSprite为最后一个确定行参 
  20. //定义一个ccsprite 接收参数
  21. whiletrue
  22. if
  23. //添加进数组和层-----
  24. //去下一个值
  25. else
  26. break
  27. //清空
  28. //排列ccprite
  29. ////////////添加完成////////
  30. return
  31. else
  32. delete
  33. return
  34. bool
  35. //////////////////////////////
  36. // 1. super init first
  37. // if ( !CCLayerColor::init() )
  38. if
  39. returnfalse
  40. //开启触屏响应
  41. thistrue
  42. //添加显示容器
  43. this
  44. //修改响应区域,默认是全屏
  45. //修改显示区域,默认为全屏
  46. this
  47. //修改剪切区域,默认为全屏
  48. //默认回调函数为空
  49. returntrue
  50. void
  51. if
  52. return
  53. if
  54. this
  55. this
  56. //默认情况下,剪裁是禁用的
  57. //启用剪裁测试
  58. floatthis//当前layer缩放的倍数
  59. //获取缩放倍率
  60. thisthis
  61. //默认不设置Scissor的大小是整个视图的大小
  62. //子节点处理
  63. if
  64. int
  65. for
  66. if
  67. else
  68. break
  69. this
  70. for
  71. else
  72. this
  73. //禁用剪裁测试
  74. if
  75. this
  76. //
  77. voidfloatfloat
  78. //TODO: 载显示容器中排列精灵
  79. boolfloat
  80. //用于判读是否有元素
  81. ifreturnfalse
  82. ///////////修改各个元素的位置
  83. //初始化当前页
  84. //初始化总页数
  85. float
  86. float
  87. //获取一个中心点
  88. this
  89. this
  90. float
  91. forint
  92. //TODO: 滚动修正
  93. void
  94. int
  95. //判断移动的方向
  96. float
  97. if
  98. // 向左移动
  99. "zuo "
  100. else
  101. //向→移动
  102. "you"
  103. if
  104. "_page is : %d"
  105. " page is : %d"
  106. " curpage is : %d"
  107. //TODO: 拖动精灵,跟随手指移动改变位置
  108. voidfloat
  109. thisthis
  110. //TODO: 滚动到某一页的动画
  111. voidfloat
  112. ifreturn
  113. //获得当前页的精灵
  114. this
  115. //多移动一小段距离让sprite载正中间
  116. float
  117. //获取要到达的点
  118. this
  119. //计算移动到点的时间
  120. float
  121. float
  122. //滚动到指定点
  123. //页面滚动动画,moveto 动画
  124. voidfloat
  125. //如果是拖动就停止这个动作
  126. if
  127. this
  128. return
  129. ///////////////
  130. //创建移动动画
  131. //////////////
  132. //添加一个回调函数
  133. this
  134. //运行moveto动画
  135. //开启拖动判读
  136. this
  137. //updata,用于如果拖动就停止moveto 动作
  138. voidfloat
  139. if
  140. this
  141. return
  142. // // 添加一个回调函数,用于停止动画
  143. void
  144. //   this->unschedule(schedule_selector(MoveToAnimation));
  145. this
  146. //消息注册
  147. void
  148. thisfalse
  149. bool
  150. ifthisreturnfalse
  151. //记录按下的点
  152. ifreturnfalse
  153. true
  154. "CCtouchBegan"
  155. // 
  156. returntrue
  157. void
  158. "ccTouchMoved"
  159. ifthisreturn
  160. if
  161. false
  162. return
  163. //如果不是按下后移动
  164. if
  165. false
  166. else
  167. // CCLog("ccTouchMoved,x is %f::y is %f",x,y);
  168. void
  169. ifthisreturn
  170. iffalsereturn
  171. //判定是点击还是滑动,如果是点击执行点击函数,如果是滑动执行调整动画
  172. float
  173. if
  174. //触发点击事件
  175. "touchclick"
  176. else
  177. //  滑动纠正
  178. //触发滑动动画
  179. void

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页标题:cocos2d-x自己写的一个scrollview有待完善-创新互联
浏览路径:http://pwwzsj.com/article/dgeede.html