0

3 つの異なる表示オブジェクトからタップを印刷しようとしていますが、タップされた複数のオブジェクトがターミナルに印刷されます。独自の特定の機能が必要ですが、現時点ではそれは不可能です。私は何をすべきか?コロナとLUAは初めてです。

-- ボブラーディスプレイオブジェクター

local sport1 = display.newImage("images/sport1.png")

sport1.id = "mySport1"

スポーツ1.x = 120

スポーツ1.y = 90

スポーツ1:スケール(1,1)

local gossip1 = display.newImage("images/gossip1.png")

gossip1.id = "myGossip1"

gossip1.x = 400

gossip1.y = 120

gossip1:scale(1,1)

local kultur1 = display.newImage("images/kultur1.png")

kultur1.id = "myKultur1"

文化1.x = 250

文化1.y = 200

kultur1:scale(1,1)

ローカル関数 onSport1Tap( self, event )

print(self.id ..「タップされました。」)

終わり

ローカル関数 onGossip1Tap(self, event)

print(self.id ..「タップされました。」)

終わり

ローカル関数 onKultur1Tap( self, event )

print(self.id ..「タップされました。」)

終わり

-- addEVENTLISTENER をタップします

sport1.tap = onSport1Tap

sport1:addEventListener( "タップ", スポーツ1 )

gossip1.tap = onGossip1Tap

gossip1:addEventListener( "タップ", gossip1 )

kultur1.tap = onKultur1Tap

kultur1:addEventListener( "タップ", kultur1 )

4

2 に答える 2

1

次のことを行うことをお勧めします。

  1. タップ/タッチ イベントには、この関数を使用します。

    function sport1:touch(e)
        if e.phase == "ended" then
            print(self.id.." was tapped")
        end
    end
    
  2. 特にオブジェクトを追加する予定がある場合は、テーブルを使用してオブジェクトをより効果的に作成します。

次に例を示します。

ローカル オブジェクト = {}

object[ 1 ] = {id = mySport1, x = 120, y = 90} -- ちなみに、スケールはデフォルトで (1,1) です

オブジェクト[2] = {...}

オブジェクト[3] = {...}

次に、 for ループを使用して、それらすべての情報を簡単に作成できます。

i = 1 の場合、#objects は

local object[i].img = display.newImage("images/"..object[i].id..".png")

オブジェクト[i].img.x、オブジェクト[i].img.y = オブジェクト[i].x、オブジェクト[i].y

ローカル シェイプ = object[i].img

関数形状:touch(e)

e.phase ==「終了」の場合

print(object[i].id.."タップされました")

終わり

shape:addEventListener("タッチ")

終わり

これが高度すぎないことを願っています...テーブルの有効性を理解するのに少し時間がかかりましたが、作成する必要のあるパラメーターやオブジェクトがたくさんある場合は非常に効果的です。タッチ機能に関しては、私は実際にタップを使ったことはありません。タッチの方が優れていて使いやすいと思っているだけです。

于 2013-05-02T04:36:35.523 に答える