0

プレーヤーがタップできるさまざまなレベルを含む単一の 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 (この場合は円) からタップ イベントを受け取ることは可能ですか? そうでない場合、実際に円を表示せずに、画像上の特定の円形領域からタップ イベントを受け取るにはどうすればよいですか?

4

2 に答える 2

1

設定したalpha=0場合isVisible=false、タップやタッチ機能も無効になります。

2 つの方法でこの問題を処理できます。

最初の1つlevelTapCircle:setFillColor(255,255,255,0)

また

levelTapCircle.alpha=0.01
于 2013-10-16T04:53:07.157 に答える