Gideros GTween слушатель событий
Я пробую пример GTween по следующей ссылке
Пример не работает "из коробки", поэтому я покопался в исходном коде GTween и добавил следующие строки в мой пример, чтобы разрешить диспетчеризацию событий.
local tween = GTween.new(jewel, 2, animProperties, gtweenProperties)
tween.suppressEvents = false -- New Line #1
tween.dispatchEvents = true -- New Line #2
tween:addEventListener('complete', function()
stage:removeChild(jewel)
jewel = nil
end)
Однако приложение вылетает. Я попытался прокомментировать следующую строку в gtween.lua
self:dispatchEvent(Event.new(name))
и приложение не падает, однако обратные вызовы не вызываются (очевидно, с чего бы это?)
Это трассировка стека из приложения.
gtween.lua:445: attempt to call method 'dispatchEvent' (a boolean value)
stack traceback:
gtween.lua:445: in function 'dispatchEvt'
gtween.lua:255: in function 'setPosition'
gtween.lua:86: in function <gtween.lua:74>
Любые указатели будут с благодарностью. Благодарю.
PS: я не уверен, что это ошибка на Gideros.
1 ответ
Я только что попробовал использовать последнюю версию gideros (обратите внимание, что она была отредактирована 10 дней назад) и использую этот пример (я взял образец по вашей ссылке и добавил определение спрайта, также включил файл изображения в проект), и он работает (обратный вызов называется):
local animate = {}
animate.y = 100
animate.x = 100
animate.alpha = 0.5
animate.scaleX = 0.5
animate.scaleY = 0.5
animate.rotation = math.random(0, 360)
local properties = {}
properties.delay = 0
properties.ease = easing.inElastic
properties.dispatchEvents = true
local sprite = Bitmap.new(Texture.new("box.png")) -- ADD THIS
stage:addChild(sprite) -- ADD THIS
local tween = GTween.new(sprite, 10, animate, properties)
tween:addEventListener("complete", function()
stage:removeChild(sprite)
sprite = nil
end)