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)
Другие вопросы по тегам