0

2D-Array にアニメーション化されたスプライトのグリッドがありますが、スプライト オブジェクトの eventListener を配置すると、次のエラーが表示されます。 ."、タッチのコードを削除すると、グリッド内のアニメーション化された火の玉で次のシーンがポップアップしますが (これは素晴らしいことです)、グリッド内の個々のスプライトにタッチイベントを実装したかったのです。私を助けてください。ありがとう

コードは次のとおりです。

module(..., 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

終わり

ありがとう

-ヘマンス

4

1 に答える 1

0

リスナーの end ステートメントがありません。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
于 2012-09-07T14:00:10.790 に答える