mirror of
https://github.com/Tonejs/Tone.js
synced 2024-11-16 16:48:00 +00:00
5027277360
simplifies deep references to individual files
93 lines
1.9 KiB
JavaScript
93 lines
1.9 KiB
JavaScript
define(["../core/Tone", "../type/Ticks"], function(Tone){
|
|
|
|
/**
|
|
* @class Tone.TransportEvent is an internal class used by (Tone.Transport)[Transport]
|
|
* to schedule events. Do no invoke this class directly, it is
|
|
* handled from within Tone.Transport.
|
|
* @extends {Tone}
|
|
* @param {Object} options
|
|
*/
|
|
Tone.TransportEvent = function(Transport, options){
|
|
|
|
options = Tone.defaultArg(options, Tone.TransportEvent.defaults);
|
|
Tone.call(this);
|
|
|
|
/**
|
|
* Reference to the Transport that created it
|
|
* @type {Tone.Transport}
|
|
*/
|
|
this.Transport = Transport;
|
|
|
|
/**
|
|
* The unique id of the event
|
|
* @type {Number}
|
|
*/
|
|
this.id = Tone.TransportEvent._eventId++;
|
|
|
|
/**
|
|
* The time the event starts
|
|
* @type {Ticks}
|
|
*/
|
|
this.time = Tone.Ticks(options.time);
|
|
|
|
/**
|
|
* The callback to invoke
|
|
* @type {Function}
|
|
*/
|
|
this.callback = options.callback;
|
|
|
|
/**
|
|
* If the event should be removed after being created.
|
|
* @type {Boolean}
|
|
* @private
|
|
*/
|
|
this._once = options.once;
|
|
};
|
|
|
|
Tone.extend(Tone.TransportEvent);
|
|
|
|
/**
|
|
* The defaults
|
|
* @static
|
|
* @type {Object}
|
|
*/
|
|
Tone.TransportEvent.defaults = {
|
|
"once" : false,
|
|
"callback" : Tone.noOp,
|
|
};
|
|
|
|
/**
|
|
* Current ID counter
|
|
* @private
|
|
* @static
|
|
* @type {Number}
|
|
*/
|
|
Tone.TransportEvent._eventId = 0;
|
|
|
|
/**
|
|
* Invoke the event callback.
|
|
* @param {Time} time The AudioContext time in seconds of the event
|
|
*/
|
|
Tone.TransportEvent.prototype.invoke = function(time){
|
|
if (this.callback){
|
|
this.callback(time);
|
|
if (this._once && this.Transport){
|
|
this.Transport.clear(this.id);
|
|
}
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Clean up
|
|
* @return {Tone.TransportEvent} this
|
|
*/
|
|
Tone.TransportEvent.prototype.dispose = function(){
|
|
Tone.prototype.dispose.call(this);
|
|
this.Transport = null;
|
|
this.callback = null;
|
|
this.time = null;
|
|
return this;
|
|
};
|
|
|
|
return Tone.TransportEvent;
|
|
});
|