mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-21 01:36:02 +08:00
[flutter] Wrap Event, add animation state wider listener support.
This commit is contained in:
parent
d4ef1b7a35
commit
8c9356ae1d
@ -78,6 +78,11 @@ class AnimationStateEvents extends StatelessWidget {
|
|||||||
controller.animationState?.addAnimation(0, "run", true, 2)?.setListener((event) {
|
controller.animationState?.addAnimation(0, "run", true, 2)?.setListener((event) {
|
||||||
print("Run animation event ${event.type}");
|
print("Run animation event ${event.type}");
|
||||||
});
|
});
|
||||||
|
controller.animationState?.setListener((event) {
|
||||||
|
if (event.type == EventType.Event) {
|
||||||
|
print("User event: { intValue: ${event.event?.getIntValue()}, floatValue: intValue: ${event.event?.getFloatValue()}, stringValue: ${event.event?.getStringValue()} }");
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
|
|||||||
@ -709,7 +709,7 @@ class TrackEntry {
|
|||||||
return _bindings.spine_track_entry_get_track_complete(_entry);
|
return _bindings.spine_track_entry_get_track_complete(_entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setListener(AnimationStateListener listener) {
|
void setListener(AnimationStateListener? listener) {
|
||||||
_state._setTrackEntryListener(_entry, listener);
|
_state._setTrackEntryListener(_entry, listener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -723,10 +723,45 @@ enum EventType {
|
|||||||
Event
|
Event
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class EventData {
|
||||||
|
final spine_event_data _data;
|
||||||
|
|
||||||
|
EventData(this._data);
|
||||||
|
}
|
||||||
|
|
||||||
class Event {
|
class Event {
|
||||||
final spine_event _event;
|
final spine_event _event;
|
||||||
|
|
||||||
Event(this._event);
|
Event(this._event);
|
||||||
|
|
||||||
|
EventData getData() {
|
||||||
|
return EventData(_bindings.spine_event_get_data(_event));
|
||||||
|
}
|
||||||
|
|
||||||
|
double getTime() {
|
||||||
|
return _bindings.spine_event_get_time(_event);
|
||||||
|
}
|
||||||
|
|
||||||
|
int getIntValue() {
|
||||||
|
return _bindings.spine_event_get_int_value(_event);
|
||||||
|
}
|
||||||
|
|
||||||
|
double getFloatValue() {
|
||||||
|
return _bindings.spine_event_get_float_value(_event);
|
||||||
|
}
|
||||||
|
|
||||||
|
String getStringValue() {
|
||||||
|
final Pointer<Utf8> value = _bindings.spine_event_get_string_value(_event).cast();
|
||||||
|
return value.toDartString();
|
||||||
|
}
|
||||||
|
|
||||||
|
double getVolume() {
|
||||||
|
return _bindings.spine_event_get_volume(_event);
|
||||||
|
}
|
||||||
|
|
||||||
|
double getBalance() {
|
||||||
|
return _bindings.spine_event_get_balance(_event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class AnimationStateEvent {
|
class AnimationStateEvent {
|
||||||
@ -747,8 +782,9 @@ class AnimationState {
|
|||||||
|
|
||||||
AnimationState(this._state, this._events): _trackEntryListeners = {};
|
AnimationState(this._state, this._events): _trackEntryListeners = {};
|
||||||
|
|
||||||
void _setTrackEntryListener(spine_track_entry entry, AnimationStateListener listener) {
|
void _setTrackEntryListener(spine_track_entry entry, AnimationStateListener? listener) {
|
||||||
_trackEntryListeners[entry] = listener;
|
if (listener == null) _trackEntryListeners.remove(entry);
|
||||||
|
else _trackEntryListeners[entry] = listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Increments the track entry times, setting queued animations as current if needed
|
/// Increments the track entry times, setting queued animations as current if needed
|
||||||
@ -886,6 +922,10 @@ class AnimationState {
|
|||||||
void setTimeScale(double timeScale) {
|
void setTimeScale(double timeScale) {
|
||||||
_bindings.spine_animation_state_set_time_scale(_state, timeScale);
|
_bindings.spine_animation_state_set_time_scale(_state, timeScale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setListener(AnimationStateListener? listener) {
|
||||||
|
_stateListener = listener;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class SkeletonDrawable {
|
class SkeletonDrawable {
|
||||||
|
|||||||
@ -1934,6 +1934,104 @@ class SpineFlutterBindings {
|
|||||||
'spine_skeleton_set_scale_y');
|
'spine_skeleton_set_scale_y');
|
||||||
late final _spine_skeleton_set_scale_y = _spine_skeleton_set_scale_yPtr
|
late final _spine_skeleton_set_scale_y = _spine_skeleton_set_scale_yPtr
|
||||||
.asFunction<void Function(spine_skeleton, double)>();
|
.asFunction<void Function(spine_skeleton, double)>();
|
||||||
|
|
||||||
|
spine_event_data spine_event_get_data(
|
||||||
|
spine_event event,
|
||||||
|
) {
|
||||||
|
return _spine_event_get_data(
|
||||||
|
event,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
late final _spine_event_get_dataPtr =
|
||||||
|
_lookup<ffi.NativeFunction<spine_event_data Function(spine_event)>>(
|
||||||
|
'spine_event_get_data');
|
||||||
|
late final _spine_event_get_data = _spine_event_get_dataPtr
|
||||||
|
.asFunction<spine_event_data Function(spine_event)>();
|
||||||
|
|
||||||
|
double spine_event_get_time(
|
||||||
|
spine_event event,
|
||||||
|
) {
|
||||||
|
return _spine_event_get_time(
|
||||||
|
event,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
late final _spine_event_get_timePtr =
|
||||||
|
_lookup<ffi.NativeFunction<ffi.Float Function(spine_event)>>(
|
||||||
|
'spine_event_get_time');
|
||||||
|
late final _spine_event_get_time =
|
||||||
|
_spine_event_get_timePtr.asFunction<double Function(spine_event)>();
|
||||||
|
|
||||||
|
int spine_event_get_int_value(
|
||||||
|
spine_event event,
|
||||||
|
) {
|
||||||
|
return _spine_event_get_int_value(
|
||||||
|
event,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
late final _spine_event_get_int_valuePtr =
|
||||||
|
_lookup<ffi.NativeFunction<ffi.Int32 Function(spine_event)>>(
|
||||||
|
'spine_event_get_int_value');
|
||||||
|
late final _spine_event_get_int_value =
|
||||||
|
_spine_event_get_int_valuePtr.asFunction<int Function(spine_event)>();
|
||||||
|
|
||||||
|
double spine_event_get_float_value(
|
||||||
|
spine_event event,
|
||||||
|
) {
|
||||||
|
return _spine_event_get_float_value(
|
||||||
|
event,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
late final _spine_event_get_float_valuePtr =
|
||||||
|
_lookup<ffi.NativeFunction<ffi.Float Function(spine_event)>>(
|
||||||
|
'spine_event_get_float_value');
|
||||||
|
late final _spine_event_get_float_value = _spine_event_get_float_valuePtr
|
||||||
|
.asFunction<double Function(spine_event)>();
|
||||||
|
|
||||||
|
ffi.Pointer<ffi.Int8> spine_event_get_string_value(
|
||||||
|
spine_event event,
|
||||||
|
) {
|
||||||
|
return _spine_event_get_string_value(
|
||||||
|
event,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
late final _spine_event_get_string_valuePtr =
|
||||||
|
_lookup<ffi.NativeFunction<ffi.Pointer<ffi.Int8> Function(spine_event)>>(
|
||||||
|
'spine_event_get_string_value');
|
||||||
|
late final _spine_event_get_string_value = _spine_event_get_string_valuePtr
|
||||||
|
.asFunction<ffi.Pointer<ffi.Int8> Function(spine_event)>();
|
||||||
|
|
||||||
|
double spine_event_get_volume(
|
||||||
|
spine_event event,
|
||||||
|
) {
|
||||||
|
return _spine_event_get_volume(
|
||||||
|
event,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
late final _spine_event_get_volumePtr =
|
||||||
|
_lookup<ffi.NativeFunction<ffi.Float Function(spine_event)>>(
|
||||||
|
'spine_event_get_volume');
|
||||||
|
late final _spine_event_get_volume =
|
||||||
|
_spine_event_get_volumePtr.asFunction<double Function(spine_event)>();
|
||||||
|
|
||||||
|
double spine_event_get_balance(
|
||||||
|
spine_event event,
|
||||||
|
) {
|
||||||
|
return _spine_event_get_balance(
|
||||||
|
event,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
late final _spine_event_get_balancePtr =
|
||||||
|
_lookup<ffi.NativeFunction<ffi.Float Function(spine_event)>>(
|
||||||
|
'spine_event_get_balance');
|
||||||
|
late final _spine_event_get_balance =
|
||||||
|
_spine_event_get_balancePtr.asFunction<double Function(spine_event)>();
|
||||||
}
|
}
|
||||||
|
|
||||||
class spine_atlas extends ffi.Struct {
|
class spine_atlas extends ffi.Struct {
|
||||||
@ -2055,3 +2153,4 @@ typedef spine_attachment = ffi.Pointer<ffi.Void>;
|
|||||||
typedef spine_ik_constraint = ffi.Pointer<ffi.Void>;
|
typedef spine_ik_constraint = ffi.Pointer<ffi.Void>;
|
||||||
typedef spine_transform_constraint = ffi.Pointer<ffi.Void>;
|
typedef spine_transform_constraint = ffi.Pointer<ffi.Void>;
|
||||||
typedef spine_path_constraint = ffi.Pointer<ffi.Void>;
|
typedef spine_path_constraint = ffi.Pointer<ffi.Void>;
|
||||||
|
typedef spine_event_data = ffi.Pointer<ffi.Void>;
|
||||||
|
|||||||
@ -375,7 +375,7 @@ FFI_PLUGIN_EXPORT spine_event spine_animation_state_events_get_event(spine_anima
|
|||||||
if (events == nullptr) return nullptr;
|
if (events == nullptr) return nullptr;
|
||||||
EventListener *_events = (EventListener*)events;
|
EventListener *_events = (EventListener*)events;
|
||||||
if (index >= _events->events.size()) return nullptr;
|
if (index >= _events->events.size()) return nullptr;
|
||||||
return (spine_track_entry)_events->events[index].entry;
|
return (spine_track_entry)_events->events[index].event;
|
||||||
}
|
}
|
||||||
|
|
||||||
FFI_PLUGIN_EXPORT void spine_animation_state_events_reset(spine_animation_state_events events) {
|
FFI_PLUGIN_EXPORT void spine_animation_state_events_reset(spine_animation_state_events events) {
|
||||||
@ -926,3 +926,45 @@ FFI_PLUGIN_EXPORT void spine_skeleton_set_scale_y(spine_skeleton skeleton, float
|
|||||||
Skeleton *_skeleton = (Skeleton*)skeleton;
|
Skeleton *_skeleton = (Skeleton*)skeleton;
|
||||||
_skeleton->setScaleY(scaleY);
|
_skeleton->setScaleY(scaleY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FFI_PLUGIN_EXPORT spine_event_data spine_event_get_data(spine_event event) {
|
||||||
|
if (event == nullptr) return nullptr;
|
||||||
|
Event *_event = (Event*)event;
|
||||||
|
return (spine_event_data)&_event->getData();
|
||||||
|
}
|
||||||
|
|
||||||
|
FFI_PLUGIN_EXPORT float spine_event_get_time(spine_event event) {
|
||||||
|
if (event == nullptr) return 0;
|
||||||
|
Event *_event = (Event*)event;
|
||||||
|
return _event->getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
FFI_PLUGIN_EXPORT int spine_event_get_int_value(spine_event event) {
|
||||||
|
if (event == nullptr) return 0;
|
||||||
|
Event *_event = (Event*)event;
|
||||||
|
return _event->getIntValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
FFI_PLUGIN_EXPORT float spine_event_get_float_value(spine_event event) {
|
||||||
|
if (event == nullptr) return 0;
|
||||||
|
Event *_event = (Event*)event;
|
||||||
|
return _event->getFloatValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
FFI_PLUGIN_EXPORT const char* spine_event_get_string_value(spine_event event) {
|
||||||
|
if (event == nullptr) return nullptr;
|
||||||
|
Event *_event = (Event*)event;
|
||||||
|
return _event->getStringValue().buffer();
|
||||||
|
}
|
||||||
|
|
||||||
|
FFI_PLUGIN_EXPORT float spine_event_get_volume(spine_event event) {
|
||||||
|
if (event == nullptr) return 0;
|
||||||
|
Event *_event = (Event*)event;
|
||||||
|
return _event->getVolume();
|
||||||
|
}
|
||||||
|
|
||||||
|
FFI_PLUGIN_EXPORT float spine_event_get_balance(spine_event event) {
|
||||||
|
if (event == nullptr) return 0;
|
||||||
|
Event *_event = (Event*)event;
|
||||||
|
return _event->getBalance();
|
||||||
|
}
|
||||||
@ -232,3 +232,11 @@ FFI_PLUGIN_EXPORT float spine_skeleton_get_scale_x(spine_skeleton skeleton);
|
|||||||
FFI_PLUGIN_EXPORT void spine_skeleton_set_scale_x(spine_skeleton skeleton, float scaleX);
|
FFI_PLUGIN_EXPORT void spine_skeleton_set_scale_x(spine_skeleton skeleton, float scaleX);
|
||||||
FFI_PLUGIN_EXPORT float spine_skeleton_get_scale_y(spine_skeleton skeleton);
|
FFI_PLUGIN_EXPORT float spine_skeleton_get_scale_y(spine_skeleton skeleton);
|
||||||
FFI_PLUGIN_EXPORT void spine_skeleton_set_scale_y(spine_skeleton skeleton, float scaleY);
|
FFI_PLUGIN_EXPORT void spine_skeleton_set_scale_y(spine_skeleton skeleton, float scaleY);
|
||||||
|
|
||||||
|
FFI_PLUGIN_EXPORT spine_event_data spine_event_get_data(spine_event event);
|
||||||
|
FFI_PLUGIN_EXPORT float spine_event_get_time(spine_event event);
|
||||||
|
FFI_PLUGIN_EXPORT int spine_event_get_int_value(spine_event event);
|
||||||
|
FFI_PLUGIN_EXPORT float spine_event_get_float_value(spine_event event);
|
||||||
|
FFI_PLUGIN_EXPORT const char* spine_event_get_string_value(spine_event event);
|
||||||
|
FFI_PLUGIN_EXPORT float spine_event_get_volume(spine_event event);
|
||||||
|
FFI_PLUGIN_EXPORT float spine_event_get_balance(spine_event event);
|
||||||
Loading…
x
Reference in New Issue
Block a user