Skip to content

Commit

Permalink
Adding demo for two-press delayed (multi-hot-key) behavior, and added…
Browse files Browse the repository at this point in the history
… modifierKeys docs, see phetsims/scenery#1621
  • Loading branch information
jonathanolson committed Mar 28, 2024
1 parent 904cd2a commit 4812e57
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions js/wilder/view/WilderScreenView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ import { globalHotkeyRegistry, Hotkey, Text } from '../../../../scenery/js/impor
import BooleanProperty from '../../../../axon/js/BooleanProperty.js';
import ABSwitch from '../../../../sun/js/ABSwitch.js';
import PhetFont from '../../../../scenery-phet/js/PhetFont.js';
import NumberProperty from '../../../../axon/js/NumberProperty.js';
import stepTimer from '../../../../axon/js/stepTimer.js';
import DerivedProperty from '../../../../axon/js/DerivedProperty.js';

type WilderScreenViewOptions = PickRequired<PhetioObjectOptions, 'tandem'>;

Expand Down Expand Up @@ -90,6 +93,32 @@ class WilderScreenView extends ScreenView {
enabledProperty: extraEnabledProperty
} ) );

// Demo for delayed "combo" hotkeys. Press 'o' and then 'p' within 500ms to trigger the 'p' hotkey.
const lastOPressTimeProperty = new NumberProperty( 0 );
const currentTimeProperty = new NumberProperty( Date.now() );
stepTimer.addListener( dt => {
currentTimeProperty.value = Date.now();
} );
globalHotkeyRegistry.add( new Hotkey( {
key: 'o',
fire: () => {
console.log( 'fire: o (first key)' );
lastOPressTimeProperty.value = Date.now();
}
} ) );
globalHotkeyRegistry.add( new Hotkey( {
key: 'p',
fire: () => {
console.log( 'fire: p' );
},
enabledProperty: new DerivedProperty( [
lastOPressTimeProperty,
currentTimeProperty
], ( lastOPressTime, currentTime ) => {
return lastOPressTime + 500 > currentTime;
} )
} ) );

resetAllButton.addInputListener( {
hotkeys: [
new Hotkey( {
Expand Down

0 comments on commit 4812e57

Please sign in to comment.