Spinner
Introduction¶
Loading animations on shape.
- Author: Rex
- Game object
Live demos¶
- Spinners
- Custom spinner
- Loading animation
Usage¶
Install plugin¶
Load minify file¶
- Load plugin (minify file) in preload stage
scene.load.scenePlugin( "rexspinnerplugin", "https://raw.githubusercontent.com/rexrainbow/phaser3-rex-notes/master/dist/rexspinnerplugin.min.js", "rexSpinner", "rexSpinner" ); - Add spinner object
var aio = scene.rexSpinner.add.aio(config); var arrow = scene.rexSpinner.add.arrow(config); var downArrow = scene.rexSpinner.add.downArrow(config); var leftArrow = scene.rexSpinner.add.leftArrow(config); var rightArrow = scene.rexSpinner.add.rightArrow(config); var upArrow = scene.rexSpinner.add.upArrow(config); var audio = scene.rexSpinner.add.audio(config); var ball = scene.rexSpinner.add.ball(config); var bars = scene.rexSpinner.add.bars(config); var box = scene.rexSpinner.add.box(config); var clock = scene.rexSpinner.add.clock(config); var cube = scene.rexSpinner.add.cube(config); var dots = scene.rexSpinner.add.dots(config); var facebook = scene.rexSpinner.add.facebook(config); var grid = scene.rexSpinner.add.grid(config); var hearts = scene.rexSpinner.add.hearts(config); var ios = scene.rexSpinner.add.ios(config); var orbit = scene.rexSpinner.add.orbit(config); var oval = scene.rexSpinner.add.oval(config); var pie = scene.rexSpinner.add.pie(config); var puff = scene.rexSpinner.add.puff(config); var radio = scene.rexSpinner.add.radio(config); var rings = scene.rexSpinner.add.rings(config); var spinner = scene.rexSpinner.add.spinner(config);
Import plugin¶
- Install rex plugins from npm
npm i phaser4-rex-plugins - Install plugin in configuration of game
import SpinnerPlugin from "phaser4-rex-plugins/templates/spinner/spinner-plugin.js"; var config = { // ... plugins: { scene: [ { key: "rexSpinner", plugin: SpinnerPlugin, mapping: "rexSpinner", }, // ... ], }, // ... }; var game = new Phaser.Game(config); - Add spinner object
var aio = scene.rexSpinner.add.aio(config); var arrow = scene.rexSpinner.add.arrow(config); var downArrow = scene.rexSpinner.add.downArrow(config); var leftArrow = scene.rexSpinner.add.leftArrow(config); var rightArrow = scene.rexSpinner.add.rightArrow(config); var upArrow = scene.rexSpinner.add.upArrow(config); var audio = scene.rexSpinner.add.audio(config); var ball = scene.rexSpinner.add.ball(config); var bars = scene.rexSpinner.add.bars(config); var box = scene.rexSpinner.add.box(config); var clock = scene.rexSpinner.add.clock(config); var cube = scene.rexSpinner.add.cube(config); var dots = scene.rexSpinner.add.dots(config); var facebook = scene.rexSpinner.add.facebook(config); var grid = scene.rexSpinner.add.grid(config); var hearts = scene.rexSpinner.add.hearts(config); var ios = scene.rexSpinner.add.ios(config); var orbit = scene.rexSpinner.add.orbit(config); var oval = scene.rexSpinner.add.oval(config); var pie = scene.rexSpinner.add.pie(config); var puff = scene.rexSpinner.add.puff(config); var radio = scene.rexSpinner.add.radio(config); var rings = scene.rexSpinner.add.rings(config); var spinner = scene.rexSpinner.add.spinner(config);
Import class¶
- Install rex plugins from npm
npm i phaser4-rex-plugins - Import class
import { AIO, Arrow, Audio, Ball, Bars, Box, Clock, Cube, Custom, Dots, Facebook, Grid, Hearts, Ios, Orbit, Oval, Puff, Radio, Rings, Spinner } from "phaser4-rex-plugins/templates/spinner/spinner-components.js"; - Add spinner object
var spinner = new Audio(scene, config); scene.add.existing(spinner);
Add spinner object¶
General¶
var spinner = scene.rexSpinner.add.audio({
// x: 0,
// y: 0,
// width: 64,
// height: 64,
// color: 0xffffff,
// duration: 1000,
// start: true,
// delay: 0,
// repeatDelay: 0,
});
x,y: Position of this object.width,height: Size of this object.color: Fill color, or stroke color. Default value is0xffffffduration: Duration of animation.start: Start animation when object created.false: Don't play animation at beginning.delay: Delay time in ms before running.repeatDelay: Delay time between 2 periods.
Arrow¶
var spinner = scene.rexSpinner.add.audio({
// ...
// direction: 'down'
});
direction:0,'right': Arrow from left to right.1,'down': Arrow from up to down. Default behavior.2,'left': Arrow from right to left.3,'up': Arrow from down to up.
AIO¶
All-in-one
var spinner = scene.rexSpinner.add.aio({
// ...
// animationMode: undefined
});
animationMode:undefined: Play random spinner animation.'leftArrow': Play leftArrow spinner animation.'rightArrow': Play rightArrow spinner animation.'upArrow': Play upArrow spinner animation.'downArrow': Play dowbArrow spinner animation.'audio': Play audio spinner animation.'ball': Play ball spinner animation.'bars': Play bars spinner animation.'box': Play box spinner animation.'clock': Play clock spinner animation.'cube': Play cube spinner animation.'dots': Play dots spinner animation.'facebook': Play facebook spinner animation.'grid': Play grid spinner animation.'hearts': Play hearts spinner animation.'ios': Play ios spinner animation.'oribit': Play oribit spinner animation.'oval': Play oval spinner animation.'pie': Play pie spinner animation.'puff': Play puff spinner animation.'radio': Play radio spinner animation.'rings': Play rings spinner animation.'spinner': Play spinner spinner animation.
Play animation¶
Start¶
- Start playing, won't restart when playing
spinner.start(); - Restart with new duration
spinner.start(duration);
Pause¶
spinner.pause();
Resume¶
spinner.resume();
Stop¶
spinner.stop();
Play animation manually¶
- Set
starttofalsein config - Set progress manually
or
spinner.setValue(t);spinner.value = t;t:0~1
Is running¶
var isRunning = spinner.isRunning;
Color¶
- Get
var color = spinner.color; - Set
or
spinner.setColor(color);spinner.color = color;color: Fill color, or stroke color, in number.
Alpha¶
- Get
var alpha = spinner.alpha; - Set
spinner.setAlpha(alpha); // spinner.alpha = alpha;
Duration¶
- Get
var duration = spinner.duration; - Set, will apply to next animation playing.
or
spinner.setDuration(duration);spinner.duration = duration;
Ease¶
- Get
var ease = spinner.ease; - Set, will apply to next animation playing.
or
spinner.setEasen(ease);spinner.ease = ease;
Set animation mode¶
AIO-spinner only
aioSpinner.setAnimationMode(mode);
mode:undefined: Play random spinner animation.'leftArrow': Play leftArrow spinner animation.'rightArrow': Play rightArrow spinner animation.'upArrow': Play upArrow spinner animation.'downArrow': Play dowbArrow spinner animation.'audio': Play audio spinner animation.'ball': Play ball spinner animation.'bars': Play bars spinner animation.'box': Play box spinner animation.'clock': Play clock spinner animation.'cube': Play cube spinner animation.'dots': Play dots spinner animation.'facebook': Play facebook spinner animation.'grid': Play grid spinner animation.'hearts': Play hearts spinner animation.'ios': Play ios spinner animation.'oribit': Play oribit spinner animation.'oval': Play oval spinner animation.'pie': Play pie spinner animation.'puff': Play puff spinner animation.'radio': Play radio spinner animation.'rings': Play rings spinner animation.'spinner': Play spinner spinner animation.
aioSpinner.setRandomAnimationMode();
Custom spinner¶
var customSpinner = scene.rexSpinner.add.custom({
// x: 0,
// y: 0,
// width: 64,
// height: 64,
// color: 0xffffff,
// duration: 1000,
// start: true,
create: {
// shapeType: [name0, name1, ...],
// shapeType: number,
// shapeType: name,
},
// create: function() {
//
// },
update: function() {
},
})
create: Callback to create shapes- A plain object with
shapeType: name, orshapeType: numbershapeType:'arc': Create Arc shape.'circle': Create Circle shape.'ellipse': Create Ellipse shape.'line': Create Line shape.'lines': Create Lines shape.'rectangle': Create Rectangle shape.'roundRectangle': Create Round rectangle shape.'triangle': Create Triangle shape.
nameArray: An array of unique string name for each shape.name: An unique string name of this shape.number: Amount of shapes to create.
- A callback
function() { // this : This spinner game object var shape = this.createShape(shapeType, name); this.addShape(shape); }this.createShape(shapeType, name): Crate a shape instance, with an unique name.this.addShape(shape): Add this shape instance to this custom spinner.
- A plain object with
update: Callback when porgressingfunction() { // this : This spinner game object var centerX = this.centerX; var centerY = this.centerY; var radius = this.radius; var color = this.color; var shapes = this.getShapes(); var shape = this.getShape(name); var t = this.value; // ... }this.value: Progress,0~1.- Position :
this.centerX,this.centerY: Center position of this spinner. The coordinate of top-left point is(0,0)this.radius: Minimun value ofthis.centerX,this.centerY, to draw shape at square.
- Color :
this.color: Color property of this spinner.
- Shape instances : Change properties of shape instances.
this.getShapes(): Return all shapes in an array.this.getShape(name): Return a shape by the unique string name.
Shape class¶
See Shape class
Prompt¶
Prompt for generating customize logic Demo
Other properties¶
See game object
Create mask¶
See mask
Shader effects¶
Support internal and external filters