function10.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. function FingerComponent(obj_list,sync_obj){
  2. this.TRANSFORM_PREFIXED = this.getVendorPrefixed(["transform", "msTransform", "MozTransform", "webkitTransform", "OTransform"]);
  3. this.boxList = [];
  4. this.flag=false;
  5. var temp = this.assignBox(sync_obj);
  6. this.boxList.push(temp);
  7. for(var i = 0,objId;objId=obj_list[i];i++){
  8. temp = this.assignBox(objId);
  9. this.boxList.push(temp);
  10. this.listen(temp);
  11. }
  12. var _this=this;
  13. var loop=function(){
  14. for(var i=0; i<_this.boxList.length; i++) {
  15. _this.transform(_this.boxList[i]);
  16. }
  17. requestAnimationFrame(loop);
  18. };
  19. loop();
  20. }
  21. function nextPage(code,num){
  22. saveRecord(code);
  23. setTimeout(1500,location.replace(num+'.php'));
  24. }
  25. function dragPic(){
  26. dragTime = Math.floor(Date.now() / 1000);
  27. }
  28. FingerComponent.prototype.checkRes=function() {
  29. check.style.display = "inline";
  30. //check.style.top = -200;
  31. //check.style.left = 630;
  32. saveRecord(250);
  33. var arrow=this.boxList[0];
  34. var degx=Math.abs(arrow.degx);
  35. var degy=Math.abs(arrow.degy);
  36. var x=degx >=0 && degx <=30;
  37. var y=degy >= 160 && degx <=200 ;
  38. saveRecordr(0,degx,0,0,0);
  39. saveRecordr(0,0,degy,0,0);
  40. return x && y;
  41. }
  42. FingerComponent.prototype.assignBox=function(picS) {
  43. var pic = document.getElementById(picS);
  44. //console.log(pic);
  45. return {
  46. element: pic,
  47. isUpdated: true,
  48. x: 0,
  49. y: 0,
  50. z: 0,
  51. rad: 0,
  52. scale: 1,
  53. rafId: 0,
  54. degx: 0,
  55. degy: 0
  56. }
  57. }
  58. FingerComponent.prototype.listen=function(pBoxO) {
  59. var finger = new Fingers(pBoxO.element);
  60. var flag=false;
  61. var _this=this;
  62. /*finger.addGesture(Fingers.gesture.Drag, null).addHandler(function(pEventType, pData, pFingers) {
  63. if(pEventType === Fingers.Gesture.EVENT_TYPE.move) {
  64. //pBoxO.x += pFingers[0].getDeltaX();
  65. //pBoxO.y += pFingers[0].getDeltaY();
  66. var x=pFingers[0].getDeltaX();
  67. var y=pFingers[0].getDeltaY();
  68. //console.log("X:"+x+" Y:"+y);
  69. var temp=pBoxO.rad+y/3;
  70. if(temp>=-73 && temp<=17)
  71. pBoxO.rad = temp;//(y/100);
  72. pBoxO.isUpdated = true;
  73. }
  74. else if(pEventType === Fingers.Gesture.EVENT_TYPE.start) {
  75. //topZIndex++;
  76. //pBoxO.zIndex = topZIndex;
  77. //pBoxO.isUpdated = true;
  78. }
  79. });*/
  80. /*finger.addGesture(Fingers.gesture.Hold, { nbFingers: 1}).addHandler(function(pEventType,pData){
  81. if(pEventType === Fingers.Gesture.EVENT_TYPE.instant)
  82. flag = true ;
  83. });*/
  84. finger.addGesture(Fingers.gesture.Drag, null).addHandler(function(pEventType, pData, pFingers) {
  85. if(pEventType === Fingers.Gesture.EVENT_TYPE.move) {
  86. for(var i=0,obj; obj=_this.boxList[i]; i++) {
  87. obj.degx += pFingers[0].getDeltaY() ;
  88. if(obj.degx>=360)
  89. obj.degx-=360;
  90. else if(obj.degx<=-360)
  91. obj.degx+=360;
  92. obj.degy += pFingers[0].getDeltaX() ;
  93. if(obj.degy>=360)
  94. obj.degy-=360;
  95. else if(obj.degy<=-360)
  96. obj.degy+=360;
  97. obj.isUpdated = true;
  98. //pBoxO.isUpdated = true;
  99. //obj.rad += pData.deltaRotation;
  100. //obj.scale += pData.deltaScale;
  101. //saveRecordr(0,obj.degx,0,0,0);
  102. //saveRecordr(0,0,obj.degy,0,0);
  103. }
  104. }
  105. });
  106. finger.addGesture(Fingers.gesture.Transform, null).addHandler(function(pEventType, pData, pFingers) {
  107. if(pEventType === Fingers.Gesture.EVENT_TYPE.move) {
  108. for(var i=0,obj; obj=_this.boxList[i]; i++) {
  109. obj.rad += pData.deltaRotation;
  110. //obj.scale += pData.deltaScale;
  111. obj.scale = Math.max(0.5, Math.min(2, obj.scale * pData.deltaScale));
  112. obj.isUpdated = true;
  113. if (obj.scale>1)
  114. {
  115. saveRecordr(301,0,0,0,obj.scale);
  116. }
  117. if(obj.scale < 1)
  118. {
  119. saveRecordr(302,0,0,0,obj.scale);
  120. }
  121. }
  122. }
  123. });
  124. pBoxO.fingers = finger ;
  125. }
  126. FingerComponent.prototype.transform=function(pBoxO) {
  127. if(pBoxO.isUpdated) {
  128. pBoxO.element.style[this.TRANSFORM_PREFIXED] = "translateZ(0) " +
  129. "translate(" + pBoxO.x + "px, " + pBoxO.y + "px) " +
  130. "scale(" + pBoxO.scale + ") " +//+ "rotate3d(0,0,0," + pBoxO.rad + "rad) ";
  131. "rotate(" + pBoxO.rad + "rad) "+
  132. "rotateY("+pBoxO.degy+"deg)" +
  133. "rotateX("+pBoxO.degx+"deg)";
  134. pBoxO.element.style.zIndex = pBoxO.zIndex;
  135. pBoxO.isUpdated = true;
  136. }
  137. }
  138. FingerComponent.prototype.loop=function(){
  139. var x=this.loop();
  140. for(var i=0; i<this.boxList.length; i++) {
  141. this.transform(this.boxList[i]);
  142. }
  143. requestAnimationFrame(x);
  144. }
  145. FingerComponent.prototype.getVendorPrefixed=function(pArrayOfPrefixes) {
  146. var result = null;
  147. for (var i=0; i<pArrayOfPrefixes.length; i++) {
  148. if (document.body.style[pArrayOfPrefixes[i]] !== undefined) {
  149. result = pArrayOfPrefixes[i];
  150. break;
  151. }
  152. }
  153. return result;
  154. }
  155. function saveRecord(code){
  156. xmlhttp = new XMLHttpRequest();
  157. xmlhttp.onreadystatechange = function() {
  158. if (xmlhttp.readyState==4) {
  159. if(xmlhttp.status==200) {
  160. xmlhttp.abort();
  161. }
  162. }
  163. };
  164. xmlhttp.open("POST","saveRecord.php",true);
  165. xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  166. xmlhttp.send("codenum=" + code + "&time=" + Math.floor(Date.now() / 1000));
  167. }
  168. function saveRecords(code,time){
  169. xmlhttp = new XMLHttpRequest();
  170. xmlhttp.onreadystatechange = function() {
  171. if (xmlhttp.readyState==4) {
  172. if(xmlhttp.status==200) {
  173. xmlhttp.abort();
  174. }
  175. }
  176. };
  177. xmlhttp.open("POST","saveRecord.php",true);
  178. xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  179. xmlhttp.send("codenum=" + code + "&dragtime=" + time);
  180. }
  181. function saveRecordr(code,rotX,rotY,rotZ,rotS){
  182. xmlhttp = new XMLHttpRequest();
  183. xmlhttp.onreadystatechange = function() {
  184. if (xmlhttp.readyState==4) {
  185. if(xmlhttp.status==200) {
  186. xmlhttp.abort();
  187. }
  188. }
  189. };
  190. xmlhttp.open("POST","saveRecord.php",true);
  191. xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  192. xmlhttp.send("codenum=" + code + "&time=" + Math.floor(Date.now() / 1000) + "&rotx="+rotX+"&roty="+rotY+"&rotz="+rotZ+"&scale="+rotS);
  193. }