H5游戏开发代码

[javascript]

<span style="font-family: Arial, sans-serif; background-color: rgb(255, 255, 255);">

1.移动端页面布局,使用相对的数值,不要使用绝对数值,推荐使用%vwvhremem</span>  

布局的时候,如果一个元素你想让他的宽高保持一定比例,而不随屏幕变化,宽高设置的时候,使用同一个单位都是CSS3的单位,低版本不兼容

    2.兼容性:苹果设备微信强制使用的是os的浏览器safar,页面访问的体验远大于安卓;安卓情况比较乱套:知乎上有人说是微信6.0.2以上是强制使用的QQX5浏览器,但是实际情况来看(公司范围),一部分手机如(魅族,小米,一加,三星,LG等)使用的是X5内核,另一部分如(nexus,国靖的小米)使用的是chrome的内核, 由此来看,安卓上的访问情况大部分不容乐观,会不支持某些属性和出现一些异常。

    3.经验之谈:UI给出的设计图越来越美观了,但是对于前端的要求就变高了,写页面之前,良好的页面结构设计可以极大地丰富了兼容性和扩展性,这个东西没有对错之分,只有好和更好。

    4.移动端的动画:这次我使用的是jquery.animate,出现情况,ios上各个设备均正常,但是安卓方面X5内核的动画卡顿严重。查阅资料,移动端的动画大部分使用CSS3zepto.js,尽量不使用jquery的,对于移动端的游戏动画,流行canvas

    5.touch事件:安卓支持click事件,但是ios不支持,推荐使用touch事件;

touch事件基本类型:touchstart,touchmove,touchend,

对于之前需求中的判定向上滑动,向左滑动,向右滑动等推荐使用以下代码进行处理:

  

1. //返回角度  

2. function GetSlideAngle(dx, dy) {  

3.     return Math.atan2(dy, dx) * 180 / Math.PI;  

4. }  

5. //根据起点和终点返回方向 1:向上,2:向下,3:向左,4:向右,0:未滑动  

6. function GetSlideDirection(startX, startY, endX, endY) {  

7.     var dy = startY - endY;  

8.     var dx = endX - startX;  

9.     var result = 0;  

10.     //如果滑动距离太短  

11.     if (Math.abs(dx) < 2 && Math.abs(dy) < 2) {  

12.         return result;  

13.     }  

14.     var angle = GetSlideAngle(dx, dy);  

15.     if (angle >= -45 && angle < 45) {  

16.         result = 4;  

17.     } else if (angle >= 45 && angle < 135) {  

18.         result = 1;  

19.     } else if (angle >= -135 && angle < -45) {  

20.         result = 2;  

21.     }  

22.     else if ((angle >= 135 && angle <= 180) || (angle >= -180 && angle < -135)) {  

23.         result = 3;  

24.     }  

25.     return result;  

26. }  

27. //滑动处理  

28. var startX, startY;  

29. document.addEventListener('touchstart', function (ev) {  

30.     startX = ev.touches[0].pageX;  

31.     startY = ev.touches[0].pageY;  

32. }, false);  

33. document.addEventListener('touchend', function (ev) {  

34.     var endX, endY;  

35.     endX = ev.changedTouches[0].pageX;  

36.     endY = ev.changedTouches[0].pageY;  

37.     var direction = GetSlideDirection(startX, startY, endX, endY);  

38.     switch (direction) {  

39.         case 0:  

40.             alert("没滑动");  

41.             break;  

42.         case 1:  

43.             alert("向上");  

44.             break;  

45.         case 2:  

46.             alert("向下");  

47.             break;  

48.         case 3:  

49.             alert("向左");  

50.             break;  

51.         case 4:  

52.             alert("向右");  

53.             break;  

54.         default:  

55.     }  

56. }, false);  


    6.禁止滑屏:手指按住页面进行滑动,页面的动画会停止,但是松手之后,动画已经完成,影响了用户体验,在某些情况下(页面只有一屏),应该禁止手指滑动,代码:

1. //禁止页面滚动  

2. function forbidPageScroll(){  

3.     var stop=0;  

4.     document.addEventListener("touchmove",function(e){  

5.         if(stop==0){  

6.             e.preventDefault();  

7.             e.stopPropagation();  

8.         }  

9.     },false);  

10. }  

 

    7.音频:audio标签的自动播放autoplayiOS不支持,并给出理由这会导致用户的流量被偷取所以ios设备上禁止了自动播放功能,可以绑定touchmove事件,用户点击屏幕任何一处都可以触发音频播放。安卓支持自动播放。

    8.推荐一个打乱数组顺序的简单的方法:

1. var boss = [1,2,3,4,5,6,7,8];  

2. //打乱顺序  

3. boss = boss.sort(function(){ return 0.5 - Math.random() });  

 


the end

评论(0)