ソースを参照

Add the 'finished' signal to AnimatedSprite

(cherry picked from commit f6262fde11cac8b7d1a3d299042c1af6b321cf24)
Wilhem Barbier 8 年 前
コミット
0b6d4e92b5
2 ファイル変更9 行追加0 行削除
  1. 5 0
      doc/base/classes.xml
  2. 4 0
      scene/2d/animated_sprite.cpp

+ 5 - 0
doc/base/classes.xml

@@ -2503,6 +2503,11 @@
 				Emitted when frame is changed.
 			</description>
 		</signal>
+		<signal name="finished">
+			<description>
+				Emitted when the animation is finished (when it plays the last frame). If the animation is looping, this signal is emitted everytime the last frame is drawn, before looping.
+			</description>
+		</signal>
 	</signals>
 	<constants>
 	</constants>

+ 4 - 0
scene/2d/animated_sprite.cpp

@@ -362,6 +362,9 @@ void AnimatedSprite::_notification(int p_what) {
 						}
 					} else {
 						frame++;
+						if (frame==fc-1) {
+							emit_signal(SceneStringNames::get_singleton()->finished);
+						}
 					}
 
 					update();
@@ -696,6 +699,7 @@ void AnimatedSprite::_bind_methods() {
 	ObjectTypeDB::bind_method(_MD("_res_changed"),&AnimatedSprite::_res_changed);
 
 	ADD_SIGNAL(MethodInfo("frame_changed"));
+	ADD_SIGNAL(MethodInfo("finished"));
 
 	ADD_PROPERTYNZ( PropertyInfo( Variant::OBJECT, "frames",PROPERTY_HINT_RESOURCE_TYPE,"SpriteFrames"), _SCS("set_sprite_frames"),_SCS("get_sprite_frames"));
 	ADD_PROPERTY( PropertyInfo( Variant::STRING, "animation"), _SCS("set_animation"),_SCS("get_animation"));