Преглед на файлове

Merge pull request #17664 from mrdoob/mrdoob-patch-1

Audio: Add setLoopStart() and setLoopEnd()
Mr.doob преди 5 години
родител
ревизия
0841f193f5
променени са 4 файла, в които са добавени 43 реда и са изтрити 1 реда
  1. 10 0
      docs/api/en/audio/Audio.html
  2. 10 0
      docs/api/zh/audio/Audio.html
  3. 3 1
      src/audio/Audio.d.ts
  4. 20 0
      src/audio/Audio.js

+ 10 - 0
docs/api/en/audio/Audio.html

@@ -188,6 +188,16 @@
 		(whether playback should loop).
 		</p>
 
+		<h3>[method:Audio setLoopStart]( [param:Float value] )</h3>
+		<p>
+		Set [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loopStart source.loopStart] to *value*.
+		</p>
+
+		<h3>[method:Audio setLoopEnd]( [param:Float value] )</h3>
+		<p>
+		Set [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loopEnd source.loopEnd] to *value*.
+		</p>
+
 		<h3>[method:Audio setMediaElementSource]( mediaElement )</h3>
 		<p>
 		Applies the given object of type [link:https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement HTMLMediaElement] as the source of this audio.<br />

+ 10 - 0
docs/api/zh/audio/Audio.html

@@ -184,6 +184,16 @@
 		(是否循环播放).
 		</p>
 
+		<h3>[method:Audio setLoopStart]( [param:Float value] )</h3>
+		<p>
+		Set [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loopStart source.loopStart] to *value*.
+		</p>
+
+		<h3>[method:Audio setLoopEnd]( [param:Float value] )</h3>
+		<p>
+		Set [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loopEnd source.loopEnd] to *value*.
+		</p>
+
 		<h3>[method:Audio setMediaElementSource]( mediaElement )</h3>
 		<p>
 		应用[link:https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement HTMLMediaElement]类型对象作为音源.<br />

+ 3 - 1
src/audio/Audio.d.ts

@@ -45,7 +45,9 @@ export class Audio extends Object3D {
 	setPlaybackRate( value: number ): this;
 	getPlaybackRate(): number;
 	getLoop(): boolean;
-	setLoop( value: boolean ): void;
+	setLoop( value: boolean ): this;
+	setLoopStart( value: number ): this;
+	setLoopEnd( value: number ): this;
 	getVolume(): number;
 	setVolume( value: number ): this;
 	/**

+ 20 - 0
src/audio/Audio.js

@@ -22,6 +22,8 @@ function Audio( listener ) {
 	this.buffer = null;
 	this.detune = 0;
 	this.loop = false;
+	this.loopStart = 0;
+	this.loopEnd = 0;
 	this.startTime = 0;
 	this.offset = 0;
 	this.duration = undefined;
@@ -108,6 +110,8 @@ Audio.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 		source.buffer = this.buffer;
 		source.loop = this.loop;
+		source.loopStart = this.loopStart;
+		source.loopEnd = this.loopEnd;
 		source.onended = this.onEnded.bind( this );
 		this.startTime = this.context.currentTime;
 		source.start( this.startTime, this.offset, this.duration );
@@ -338,6 +342,22 @@ Audio.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 	},
 
+	setLoopStart: function ( value ) {
+
+		this.loopStart = value;
+
+		return this;
+
+	},
+
+	setLoopEnd: function ( value ) {
+
+		this.loopEnd = value;
+
+		return this;
+
+	},
+
 	getVolume: function () {
 
 		return this.gain.gain.value;