Commit graph

74 commits

Author SHA1 Message Date
photonstorm
a69e53f901 Copyright date change. 2015-02-25 03:36:23 +00:00
photonstorm
8483eac6aa Removing all use of _cache from all Game Objects. 2015-02-16 17:22:51 +00:00
photonstorm
9670c8aa86 InputHandler.enableDrag with a boundsRect set now takes into account the Sprites anchor when limiting the drag (thanks @unindented #1593)
InputHandler.enableDrag with a boundsSprite set now takes into account both the Sprites anchor and the boundsSprite anchor when limiting the drag.
2015-02-16 15:49:46 +00:00
photonstorm
ae198e9364 InputHandler was using the wrong property in checkBoundsSprite when fixedToCamera (thanks @yig #1613) 2015-02-14 19:10:06 +00:00
photonstorm
f55ba6755f jsdoc fix 2015-02-03 21:32:39 +00:00
photonstorm
3eba508382 Sprite.events.onDragStart has 2 new parameters x and y which is the position of the Sprite before the drag was started. The full list of parameters is: (sprite, pointer, x, y). This allows you to retain the position of the Sprite prior to dragging should dragFromCenter have been enabled (thanks @vulvulune #1583) 2015-02-03 21:32:39 +00:00
photonstorm
7003b65df6 Added missing properties to the InputHandler prototype, reducing hidden class modifications. 2015-02-03 20:28:18 +00:00
Paul
d15037e283 Event-Signal object count optimization
There are a bunch of signals added for Sprites; more when input is
enabled. However, very few of these signals are ever actually used. While
the previous performance update related to Signals addressed the size of
each Signal object, this update is to reduce the number of Signal objects
as used by the Events type.

As a comparison the "Particle: Random Sprite" demo creates 3200+ Signals;
with this change there less than 70 signals created when running the same
demo. (Each Event creates at 8 signals by default, and there is an Event
for each of the 400 particles.) While this is an idealized scenario, a
huge amount (of albeit small) object reduction should be expected.

It does this by creating a signal proxy property getter and a signal
dispatch proxy. When the event property (eg. `onEvent`) is accessed a new
Signal object is created (and cached in `_onEvent`) as required. This
ensures that no user code has to perform an existance-check on the event
property first: it just continues to use the signal property as normal.

When the Phaser game code needs to dispatch the event it uses
`event.onEvent$dispath(..)` instead of `event.onEvent.dispatch(..)`. This
special auto-generated method automatically takes care of checking for if
the Signal has been created and only dispatches the event if this is the
case. (If the game code used the `onEvent` property itself the event
deferal approach would be defeated.)

This approach is designed to require minimal changes, not negatively
affect performance, and reduce the number of Signal objects and
corresponding Signal/Event resource usage.

The only known user-code change is that code can add to signal (eg.
onInput) events even when input is not enabled - this will allow some
previously invalid code run without throwing an exception.
2014-11-30 21:39:25 -08:00
photonstorm
0a86a7ef51 Time.now can no longer be relied upon to contain a timestamp value. If the browser supports requestAnimationFrame then Time.now will contain the high resolution timer value that rAf generates. Otherwise it will contain the value of Date.now. If you require the actual time value (in milliseconds) then please use Time.time instead. Note that all Phaser sub-systems that used to rely on Time.now have been updated, so if you have any code that extends these please be sure to check it. 2014-11-08 20:01:10 +00:00
photonstorm
96fd0ade74 JSDoc fixes. 2014-10-21 22:43:42 +01:00
Bobby Wilson
0482684dc8 changed all typeof comparisons from == to === 2014-10-10 21:52:06 -06:00
photonstorm
2ee50d0c29 InputHandler now uses localToGlobal conversion for scaled responsive layers. 2014-09-29 12:27:28 +01:00
photonstorm
319146292b First pass at scale handling on drag. Enable with: sprite.input.scaleLayer = true; 2014-09-25 17:01:27 +01:00
photonstorm
20551f9129 Lots of jsdocs fixes ready for the new doc generator. 2014-09-16 17:35:08 +01:00
photonstorm
dd9e7e6297 Pointer.dirty is a new boolean that is set by the InputHandler. It tells the Pointer to re-check all interactive objects it may be over on the next update, regardless if it has moved position or not. This helps solve issues where you may have a Button that on click generates a pop-up window that now obscures the Button (thanks @jflowers45 #882) 2014-08-29 00:47:49 +01:00
photonstorm
83619ba81e InputHandler docs updated to avoid Pointer data-type confusion (#1097) 2014-08-28 04:07:24 +01:00
photonstorm
ccc8369f43 InputHandler.checkBoundsRect was incorrectly assigning a property in Sprites fixed to the camera being dragged left (thanks @CraigBeswetherick #1093) 2014-08-28 01:29:23 +01:00
photonstorm
aabdf6f97a Resolves issue with pixel perfect click / over detection on Sprites that used trimmed image atlases for animations or frames > 0. 2014-08-01 17:46:51 +01:00
photonstorm
64000dfcb6 Fixed small boolean check error. 2014-07-15 11:49:05 +01:00
photonstorm
f78a527ad5 Prevented objects with pixel perfect checks from over-riding other higher priority ID items (#983)
Rebuilt the way items are polled for Pointer events (drag, click, move). Now faster and more efficient, especially when some items in the stack require pixel perfect checks.
2014-07-15 11:20:57 +01:00
Jeroen Verfallie
01a761b77f Fixed pixel perfect dragging, this was still using the old property 'pixelPerfect' instead of the new 'pixelPerfectClick' 2014-07-11 09:58:38 +02:00
Lewis Lane
187387126d Fix checkPointerDown method
checkPointerDown method was a verbatim duplication of checkPointerOver - added pointer.isDown check to passed pointer and altered wording of associated docs to make it clearer what the method is doing.
2014-06-22 23:03:15 +01:00
photonstorm
b90bcc442c If an object was drag enabled with bringToTop, the onDragStop event wouldn't fire until the mouse was next moved (thanks @alpera, fix #813) 2014-05-14 02:42:55 +01:00
photonstorm
c94e842c75 InputManager.minPriorityID lets you set the minimum priority level an object needs to be to be checked by a Pointer. Useful for UI layer stacking. 2014-05-07 00:11:28 +01:00
photonstorm
54b71ddc23 Phaser.ArrayList is a new iterative object, similar in principal to a linked list but operating on a single array without modifying the object structure.
Input and Pointer now use the new ArrayList instead of a LinkedList, which resolve list item removable during callback issues.
Input.reset no longer resets every interactive item it knows of, because they are removed during the destroy phase and can now persist between States if needed.
2014-04-25 15:11:54 +01:00
photonstorm
0b1fb5a637 Destroying an object with an input handler during its onDown event would throw Signals dispatch errors (thanks @jflowers45, fix #746)
InputHandler._setHandCursor private var wasn't properly set, meaning the hand cursor could sometimes remain (during destroy sequence for example)
All Game Objects have a new property: destroyPhase (boolean) which is true if the object is in the process of being destroyed, otherwise false.
The PIXI.AbstractFilter is now included in the Phaser Pixi build by default, allowing for easier use of external Pixi Filters.
2014-04-22 01:43:22 +01:00
photonstorm
6979103634 Fix for #732 (Timer.onComplete not firing).
jsdoc updates across Math and InputHandler.
2014-04-16 18:50:54 +01:00
photonstorm
a01cc2e1ca Objects with an InputHandler now deactivate it when the object is removed from a Group but not destroyed (fix #672)
Lots of jsdoc fixes in Body and World.
Removed un-used events from World (such as onImpact).
2014-04-11 00:06:22 +01:00
Christian Wesselhoeft
61f18b675c Trim trailing whitespace. 2014-03-25 14:56:04 -07:00
photonstorm
5d40365b87 InputHandler.dragFromCenter will now work regardless of the anchor point of the Sprite. 2014-03-19 05:21:26 +00:00
photonstorm
11fdd62436 World.destroy incorrectly clashed with the Group.destroy method it over-rode, renamed to World.shutdown and updated StateManager accordingly.
World.shutdown now removes all children iteratively, calling destroy on each one, ultimately performing a soft reset of the World.
Objects with a scale.x or y of 0 are no longer considered valid for input (fix #602)
InputHandler will set the browser pointer back to default if destroyed while over (fix #602)
Group.destroy has a new parameter: `soft`. A soft destruction won't remove the Group from its parent or null game references. Default is `false`.
InputHandler.validForInput is a new method that checks if the handler and its owner should be considered for Pointer input handling or not.
Group.replace will now return the old child, the one that was replaced in the Group.
2014-03-19 00:54:49 +00:00
photonstorm
081c083176 InputHandler.enableSnap now correctly assigns the snap offset parameters (fixes #515) 2014-03-06 16:45:29 +00:00
photonstorm
442e6bb776 Events.onInputUp would be dispatched twice if the Sprite had drag enabled, now only dispatched once (thanks Overbryd, fixes #502)
Changed webfont URI back to //
2014-03-02 11:31:26 +00:00
photonstorm
251b819bdb Fixed InputHandler group check #463 2014-02-21 10:06:53 +00:00
photonstorm
f07c10e38e Fix typo for Phaser.InputHandler#pointerDragged for docs #451 2014-02-19 19:05:54 +00:00
photonstorm
ab5c07dfe8 Updated to Pixi 1.5 final.
InputHandler.pixelPerfectOver - performs a pixel perfect check to see if any pointer is over the current object (warning: very expensive!)
InputHandler.pixelPerfectClick - performs a pixel perfect check but only when the pointer touches/clicks on the current object.
2014-02-12 01:25:36 +00:00
photonstorm
da878b2181 Updated the Gruntfile. Also:
InputHandler.pixelPerfectOver - performs a pixel perfect check to see if any pointer is over the current object (warning: very expensive!)
InputHandler.pixelPerfectClick - performs a pixel perfect check but only when the pointer touches/clicks on the current object.
Previously using a Pixel Perfect check didn't work if the Sprite was rotated or had a non-zero anchor point, now works under all conditions + atlas frames.
2014-02-11 13:23:54 +00:00
photonstorm
ae74cb02dd Fixes #382 Error when using InputHandler#onInputUp & sprite destroys itself during the event. 2014-02-10 02:14:59 +00:00
photonstorm
bf13c7b569 Updated Sprite to use the new smaller, leaner code. Farewell insane cache objects and multiple point processing! 2014-02-07 18:44:58 +00:00
photonstorm
dd43d59cce InputManager.getLocalPosition(displayObject, pointer, output) will return the local coordinates of the specified displayObject and pointer.
InputManager.hitTest will test for pointer hits against a Sprite/Image, its hitArea (if set) or any of its children.
2014-02-07 18:01:58 +00:00
photonstorm
bc3a3fd43d You can now use the hitArea property on Sprites and Image objects. hitArea can be a geometry object (Rectangle, Circle, Polygon, Ellipse) and is used in pointerOver checks. 2014-02-07 17:14:10 +00:00
photonstorm
0896c2fac7 Updating copyright year and README. 2014-02-05 16:54:59 +00:00
photonstorm
d1cd1df9a5 Lots of fixes and updates to the Button class, InputHandler for snap offsets, Sound looping and Stage scaling. 2013-12-31 17:03:09 +00:00
photonstorm
ce4cf531d4 Added class constructors, fixed Stripshader, added relative Tween example and updated Tween source. 2013-12-30 16:54:00 +00:00
Richard Davey
923a10ee81 Input no longer sets cursor to default if already set to none 2013-12-26 00:52:01 +00:00
photonstorm
63d90a0176 Sprites that are fixedToCamera can now be input dragged regardless of world position. 2013-12-22 03:46:08 +00:00
photonstorm
42c0bed502 Fixed World.scale and Group.scale. 2013-12-03 02:13:57 +00:00
photonstorm
a9a46bfbbf Lots of documentation updates and new Loader examples. 2013-11-27 16:33:49 +00:00
photonstorm
141337bed9 Heavily optimised PixiShader. 2013-11-26 05:13:56 +00:00
photonstorm
13a2cc2feb Updating all files to adhere to the JSHint settings and fixing lots of documentation errors on the way. 2013-11-25 03:13:04 +00:00