function4.js 5.4 KB

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