ソースを参照

Added support for isPressed/isReleased on SDL and Flash (#311)

Pascal Peridont 7 年 前
コミット
c1b69c02c9
1 ファイル変更12 行追加1 行削除
  1. 12 1
      hxd/Pad.hx

+ 12 - 1
hxd/Pad.hx

@@ -249,6 +249,11 @@ class Pad {
 						break;
 						break;
 					}
 					}
 			});
 			});
+			flash.Lib.current.addEventListener(flash.events.Event.EXIT_FRAME, function(_){
+				for( p in pads )
+					for( i in 0...p.buttons.length )
+						p.prevButtons[i] = p.buttons[i];
+			});
 			var count = flash.ui.GameInput.numDevices; // necessary to trigger added
 			var count = flash.ui.GameInput.numDevices; // necessary to trigger added
 		}
 		}
 		#elseif hlsdl
 		#elseif hlsdl
@@ -257,6 +262,7 @@ class Pad {
 			var c = @:privateAccess GameController.gctrlCount();
 			var c = @:privateAccess GameController.gctrlCount();
 			for( idx in 0...c )
 			for( idx in 0...c )
 				initPad( idx );
 				initPad( idx );
+			haxe.MainLoop.add(syncPads);
 		}
 		}
 		#elseif (hldx || usesys)
 		#elseif (hldx || usesys)
 		if( !initDone ){
 		if( !initDone ){
@@ -349,7 +355,12 @@ class Pad {
 					p._setAxis( e.button, e.value );
 					p._setAxis( e.button, e.value );
 			default:
 			default:
 		}
 		}
-
+	}
+	
+	static function syncPads(){
+		for( p in pads )
+			for( i in 0...p.buttons.length )
+				p.prevButtons[i] = p.buttons[i];
 	}
 	}
 
 
 	#elseif (hldx || usesys)
 	#elseif (hldx || usesys)