在日冕中拖动loqSprite对象

时间:2012-10-11 09:37:30

标签: lua corona

我是新手使用loqSprite,我试图拖动一个loqSprite精灵对象,但它没有完成,但它只调用一次侦听器,然后它的触摸列表器都没有被调用,甚至它没有给出任何错误,精灵在玩。另外我认为我的拖动/监听器功能可能是错误的但是当我在inbult电晕的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

1 个答案:

答案 0 :(得分:0)

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

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