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