プレーヤーがタップできるさまざまなレベルを含む単一の png 画像を画面に表示しています。次を使用してイメージを作成します。
local levelsImage = display.newImage("assets/levelmap-levels.png", 0, 0, true)
次に、次のように各レベルの上に円を重ねます (レベルは、各レベルの座標とタップ半径を含むテーブルです)。
for i,level in ipairs(levels) do
local levelTapCircle = display.newCircle(level.x, level.y, level.tapRadius)
levelTapCircle.level=level -- attach the level info to the object so we know which level was tapped
levelTapCircle.alpha=0.3
myGroup:insert(levelTapCircle)
end
次のようにタップ イベント ハンドラをアタッチします。
levelTapCircle:addEventListener("tap", levelTapped)
levelTapped 関数では、単純にタップ座標を出力コンソールに出力して、イベント ハンドラーが呼び出されたことを証明します。
円が表示されている場合 (つまり、alpha>0 の場合)、イベントが発生し、levelTapped 関数が呼び出されます。ただし、円を非表示にするためにアルファ値を 0 に変更すると、タップ イベントは呼び出されません。
levelTapCircle.alpha=0
以下を使用して円を非表示にすることもできますが、タップ イベント ハンドラーが呼び出されないことにもなります。
levelTapCircle.isVisible = false
私の質問は:
非表示の displayObjects (この場合は円) からタップ イベントを受け取ることは可能ですか? そうでない場合、実際に円を表示せずに、画像上の特定の円形領域からタップ イベントを受け取るにはどうすればよいですか?