phaser3-rex-plugins
Version:
277 lines (258 loc) • 7.04 kB
TypeScript
// import * as Phaser from 'phaser';
import Sizer from '../sizer/Sizer';
import RoundRecrangle from '../../../plugins/roundrectangle';
export default ScrollBar;
declare namespace ScrollBar {
/**
* Input modes supported by the slider.
*/
type SliderInputTypes = 0 | 1 | -1 | 'drag' | 'pan' | 'click' | 'none';
/**
* Callback fired when scrollbar value changes.
*/
type ValueChangeCallbackType = (
/**
* New normalized value.
*/
newValue: number,
/**
* Previous normalized value.
*/
oldValue: number,
/**
* Scrollbar instance.
*/
ScrollBar: ScrollBar
) => void;
/**
* Configuration options for creating a scrollbar.
*/
interface IConfig extends Sizer.IConfig {
space?: {
/**
* Left outer space.
*/
left?: number,
/**
* Right outer space.
*/
right?: number,
/**
* Top outer space.
*/
top?: number,
/**
* Bottom outer space.
*/
bottom?: number,
},
/**
* Optional background game object.
*/
background?: Phaser.GameObjects.GameObject,
buttons?: {
/**
* Top button game object.
*/
top?: Phaser.GameObjects.GameObject,
/**
* Bottom button game object.
*/
bottom?: Phaser.GameObjects.GameObject,
/**
* Left button game object.
*/
left?: Phaser.GameObjects.GameObject,
/**
* Right button game object.
*/
right?: Phaser.GameObjects.GameObject,
/**
* Step value applied by button clicks.
*/
step?: number,
},
slider?: {
/**
* Slider background object or style config.
*/
background?: Phaser.GameObjects.GameObject | RoundRecrangle.IConfig,
/**
* Slider track object or style config.
*/
track?: Phaser.GameObjects.GameObject | RoundRecrangle.IConfig,
/**
* Slider indicator object or style config.
*/
indicator?: Phaser.GameObjects.GameObject | RoundRecrangle.IConfig,
/**
* Slider thumb object or style config.
*/
thumb?: Phaser.GameObjects.GameObject | RoundRecrangle.IConfig,
/**
* Slider input mode.
*/
input?: SliderInputTypes,
/**
* Slider gap size.
*/
gap?: number,
/**
* Slider tick interval.
*/
tick?: number,
easeValue?: {
/**
* Ease duration in milliseconds.
*/
duration?: number,
/**
* Ease function name.
*/
ease?: string
},
};
/**
* Callback fired when value changes.
*/
valuechangeCallback?: ValueChangeCallbackType,
/**
* Set to true to enable interaction.
*/
enable?: boolean,
}
}
/**
* Composite UI scrollbar with optional buttons and slider controls.
*/
declare class ScrollBar extends Sizer {
/**
* Create a scrollbar component.
*
* @param scene - Scene that owns this component.
* @param config - Optional scrollbar configuration.
*/
constructor(
scene: Phaser.Scene,
config?: ScrollBar.IConfig
);
/**
* Current normalized value.
*/
value: number;
/**
* Get value, optionally mapped to a custom range.
*
* @param min - Optional minimum of output range.
* @param max - Optional maximum of output range.
* @returns Current value.
*/
getValue(
min?: number,
max?: number
): number;
/**
* Set value, optionally by mapping from a custom range.
*
* @param value - Value to set.
* @param min - Optional minimum of input range.
* @param max - Optional maximum of input range.
* @returns This component instance.
*/
setValue(
value?: number,
min?: number,
max?: number
): this;
/**
* Add delta to current value.
*
* @param inc - Increment value.
* @param min - Optional minimum of input range.
* @param max - Optional maximum of input range.
* @returns This component instance.
*/
addValue(
inc?: number,
min?: number,
max?: number
): this;
/**
* Ease value to target.
*
* @param value - Target value.
* @param min - Optional minimum of input range.
* @param max - Optional maximum of input range.
* @returns This component instance.
*/
easeValueTo(
value?: number,
min?: number,
max?: number
): this;
/**
* Stop current value easing.
*
* @returns This component instance.
*/
stopEaseValue(): this;
/**
* Set ease duration.
*
* @param duration - Duration in milliseconds.
* @returns This component instance.
*/
setEaseValueDuration(duration: number): this;
/**
* Set ease function.
*
* @param ease - Ease function name.
* @returns This component instance.
*/
setEaseValueFunction(ease: string): this;
/**
* Enable or disable interaction.
*
* @param enable - True to enable interaction.
* @returns This component instance.
*/
setEnable(enable?: boolean): this;
/**
* Current enabled state.
*/
enable: boolean;
/**
* Set slider gap value.
*
* @param gap - Gap value.
* @param min - Optional minimum of input range.
* @param max - Optional maximum of input range.
* @returns This component instance.
*/
setGap(
gap?: number,
min?: number,
max?: number
): this;
/**
* Current gap value.
*/
gap: number;
/**
* Set slider tick interval.
*
* @param tick - Tick value.
* @param min - Optional minimum of input range.
* @param max - Optional maximum of input range.
* @returns This component instance.
*/
setTick(
tick?: number,
min?: number,
max?: number
): this;
/**
* Current tick interval.
*/
tick: number;
}