linearMotion handle looped sound
This commit is contained in:
@@ -364,6 +364,9 @@
|
||||
(unless waitForEnd (cc)))
|
||||
|
||||
(method :Void stopSound [:FlxSound sound]
|
||||
(when (flxMovie.loopingOnCompletes.exists sound)
|
||||
((dictGet flxMovie.loopingOnCompletes sound))
|
||||
(flxMovie.loopingOnCompletes.remove sound))
|
||||
(currentSounds.remove sound)
|
||||
(sound.stop))
|
||||
|
||||
|
@@ -31,7 +31,7 @@ class FlxMovie extends Movie<FlxSprite, ActorFlxSprite, FlxSound, String, FlxSpr
|
||||
public var screenCamera:FlxCamera;
|
||||
|
||||
public var tweens:Array<FlxTween> = [];
|
||||
|
||||
public var loopingOnCompletes:Map<FlxSound,Void->Void> = [];
|
||||
public var STAGE_LEFT_X:Float;
|
||||
public var STAGE_RIGHT_X:Float;
|
||||
public var ACTOR_WIDTH:Int;
|
||||
|
@@ -18,14 +18,22 @@
|
||||
(when cc (cc))
|
||||
}))
|
||||
|
||||
(method linearMotion [:FlxSprite sprite :Float destX :Float destY :Float speed &opt :Void->Void cc]
|
||||
(method linearMotion [:FlxSprite sprite :Float destX :Float destY :Float speed &opt :Void->Void cc :String soundLoop :Float volumeMod]
|
||||
(when soundLoop
|
||||
(let [oldCC cc]
|
||||
(set cc
|
||||
(makeCC
|
||||
(stopSound soundLoop (makeCC null))
|
||||
(when oldCC
|
||||
(oldCC)))))
|
||||
(loopSound soundLoop (makeCC null) volumeMod))
|
||||
(tween
|
||||
(FlxTween.linearMotion sprite sprite.x sprite.y destX destY speed false (tweenOpts cc))))
|
||||
(defAlias &ident FlxTween.linearMotion CHANGE_TO_MOVIE_LINEARMOTION)
|
||||
|
||||
(method linearMotionTo [:FlxSprite sprite :String positionKey :Float speed &opt :Void->Void cc]
|
||||
(method linearMotionTo [:FlxSprite sprite :String positionKey :Float speed &opt :Void->Void cc :String soundLoop :Float volumeMod]
|
||||
(let [position (resolvePosition positionKey)]
|
||||
(linearMotion sprite position.x position.y speed cc)))
|
||||
(linearMotion sprite position.x position.y speed cc soundLoop volumeMod)))
|
||||
|
||||
(method newFlxSet [name assetPath]
|
||||
(let [setSprite (new FlxSprite 0 0)]
|
||||
@@ -86,8 +94,12 @@
|
||||
|
||||
(method loopSound [name :Void->Void cc &opt :Float volumeMod]
|
||||
(playSound name (makeCC null) volumeMod false)
|
||||
(let [cs flxDirector.currentSounds]
|
||||
(set .looped (nth cs (- cs.length 1)) true))
|
||||
(let [cs flxDirector.currentSounds
|
||||
sound (nth cs (- cs.length 1))
|
||||
onComplete sound.onComplete]
|
||||
(dictSet loopingOnCompletes sound onComplete)
|
||||
(set sound.onComplete null)
|
||||
(set sound.looped true))
|
||||
(cc))
|
||||
|
||||
(preload
|
||||
|
Reference in New Issue
Block a user