4

我是使用 loqSprite 的新手,我正在尝试拖动一个 loqSprite sprite 对象,但它没有完成,但是它只调用它的侦听器一次,然后在没有调用它的触摸侦听器甚至没有给出任何错误之后,精灵正在播放. 我还认为我的拖动/侦听器功能可能有问题,但是当我在 inbult corona 的 Sprite 对象上尝试相同的拖动(movePen() 函数)时,它工作正常。我想念什么我不知道。谁能帮助我....下面是代码片段。谢谢

local function movePen(event)
   local targetObj= event.target;

        if event.phase == 'began' then
            display.getCurrentStage():setFocus(targetObj);
            targetObj.isFocus = true;
            targetObj.y = event.y;
        elseif event.phase == 'moved' then
            targetObj.x = event.x;
            targetObj.y = event.y;
        elseif event.phase == 'ended' then
           display.getCurrentStage():setFocus(nil);
           targetObj.isFocus = false;
        end
        return true;
end  --end of touch/move function

local spriteFactoryForPen = loqsprite.newFactory('penAnimation')
local penSpriteAnim = spriteFactoryForPen:newSpriteGroup('pen_write')
penSpriteAnim.x = 100
penSpriteAnim.y = 200

local function spriteEvent (e)  --listener to play in loop 
  if(e.phase == "end") then
    penSpriteAnim:play()
  end
end -- end of sprit event function

penSpriteAnim:addEventListener("touch", movePen); -- adding listener to move pen object
penSpriteAnim:addEventListener("sprite", spriteEvent) -- adding listener to play in loop
penSpriteAnim:play('pen_write') -- playing pen Sprite
4

1 回答 1

0

首先,无需在循环中调用 penSpriteAnim:play()。因为它会自动循环播放,直到你不调用 penSpriteAnim:pause() 函数。

对于您的触摸侦听器,您应该在页面顶部声明所有局部变量。我不确定这一点,但希望这会奏效。因为lua是从上到下编译的。

于 2014-03-11T10:21:58.307 回答