【问题标题】:touchEvent for Grid(2D-Array)of Sprites using Corona sdk使用 Corona sdk 的 Sprite 网格(2D 数组)的 touchEvent
【发布时间】:2012-09-07 12:50:52
【问题描述】:

我有一个二维数组中的动画精灵网格,但是当为精灵对象放置 eventListener 时,它显示以下错误“Director ERROR: Failed to load module 'game' - Please check if the file is exists and这是正确的。”,当我删除触摸代码时,下一个场景会在网格中弹出动画火球(这很好),但我想为网格中的各个精灵实现触摸事件。请帮我。谢谢

代码如下:

模块(..., package.seeall) 函数new()

local localGroup = display.newGroup()

local gamebg=display.newImageRect("gameBG.png",_W,_H)
gamebg:setReferencePoint(display.centerReferencePoint)
gamebg.x=_W/2
gamebg.y=_H/2
swapButton = {} --A 2D Array
local instance = {}

require "sprite"


local tempX=130
local tempY=60

for i = 0, 6, 1 do
    swapButton[i]={}
    instance[i]={}

    for j=0,6,1 do      
        instance[i][j]=sprite.newSprite(sprite.newSpriteSet(sprite.newSpriteSheet("fireBall.png",36,36),1,40))
        instance[i][j].x=tempX
        instance[i][j].y=tempY
        instance[i][j]:prepare()
        instance[i][j]:play()

        instance[i][j]:addEventListener("touch",myTouchListener)
        swapButton[i][j]= display.newImage("circle.png",40,40)
        swapButton[i][j].x=tempX
        swapButton[i][j].y=tempY
        tempX=tempX+40


    end
    tempX=130
    tempY=tempY+40
end

function myTouchListener:touch(event)
if event.phase == "began" then
    display.getCurrentStage( ):setFocus( event.target );
    print(display.getCurrentStage( ))
 elseif event.phase=="moved" then
 print("moved")   
elseif event.phase == "ended" then
    display.getCurrentStage( ):setFocus( nil );
end



localGroup:insert(gamebg)


return localGroup

结束

谢谢

-赫曼斯

【问题讨论】:

    标签: arrays events touch coronasdk sprite


    【解决方案1】:

    您的侦听器缺少一个结束语句,并且它的实现本身是不确定的,因为您没有声明 myTouchListener。请尝试以下操作:

    module(..., package.seeall)
    function new()
    
        local localGroup = display.newGroup()
    
        local gamebg=display.newImageRect("gameBG.png",_W,_H)
        gamebg:setReferencePoint(display.centerReferencePoint)
        gamebg.x=_W/2
        gamebg.y=_H/2
        swapButton = {} --A 2D Array
        local instance = {}
    
        require "sprite"
    
    
        local tempX=130
        local tempY=60
    
        for i = 0, 6, 1 do
            swapButton[i]={}
            instance[i]={}
    
            for j=0,6,1 do
                instance[i][j]=sprite.newSprite(sprite.newSpriteSet(sprite.newSpriteSheet("fireBall.png",36,36),1,40))
                instance[i][j].x=tempX
                instance[i][j].y=tempY
                instance[i][j]:prepare()
                instance[i][j]:play()
    
                function myTouchListener(event)
                    if event.phase == "began" then
                        display.getCurrentStage( ):setFocus( event.target );
                        print(display.getCurrentStage( ))
                    elseif event.phase=="moved" then
                        print("moved")
                    elseif event.phase == "ended" then
                        display.getCurrentStage( ):setFocus( nil );
                    end
                end
    
                instance[i][j]:addEventListener("touch",myTouchListener)
                swapButton[i][j]= display.newImage("circle.png",40,40)
                swapButton[i][j].x=tempX
                swapButton[i][j].y=tempY
                tempX=tempX+40
            end
            tempX=130
            tempY=tempY+40
        end
    
        localGroup:insert(gamebg)
    
    
        return localGroup
    end
    

    【讨论】:

      猜你喜欢
      • 2015-09-18
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      相关资源
      最近更新 更多