3

これは本当の初心者の質問だと思いますが、

しかし、私は次のコードを持っています:

local function createCircle()
[...]
circle = display.newCircle( positionX, positionY, circleRadius )
[...]
end

function circle:touch( event )
   if event.phase == "ended" then
      scaleCircle(self,scaleUp)
   end
   return true;
end
circle:addEventListener("touch", circle)

重要なことに集中するために、少しクリーンアップしました。

今の私の問題は、1つの円に触れて拡大縮小できることです。ただし、これは1つの円に対してのみ機能します(3つまたは4つの円のように作成したい)。そして、私はそれが作成された最後のサークルに対してのみ機能すると思います。

ここでの主な問題は、「createCircle()」で作成したすべての円の名前が「circle」であるということだと思います。したがって、evenListenerは、私が作成した「サークル」に対してのみ機能します。

作成した他のサークルを選択する方法はありますか?

ありがとうございました :)

4

2 に答える 2

1

これが私がそれを解決した方法です:

local function createCircle()
  --[[ MORE CODE ]]--
   table.insert(circleTable, display.newCircle( positionX, positionY, circleRadius ) )
   --[[ MORE CODE ]]--
end

function onObjectTouch(event)
   local self = event.target
   if event.phase == "ended" then
        --[[ MORE CODE ]]--
   end
   return true;
end

local function addTouchListeners()
   for _, circle in ipairs(circleTable) do
      circle:addEventListener("touch", onObjectTouch)
   end
end

createCircle()
addTouchListeners()

DreamEatersソリューションも機能するはずです。しかし、createCircle()関数の呼び出しで別の間違いがありました。TouchListenersの関数を作成し、createCircle()関数の後で呼び出すことで、これを解決しました。

これが同様の問題を抱えている他の人々に役立つことを願っています。

于 2013-02-26T18:06:19.727 に答える
1

テーブルを使用する必要があります。例:

circles = {}
local function createCircle()
  --[[ MORE CODE ]]--
  table.insert( circles, display.newCircle( positionX, positionY, circleRadius ) )
  --[[ MORE CODE ]]--
end
function circle:touch( event )
   if event.phase == "ended" then
      scaleCircle(self,scaleUp)
   end
   return true;
end
for _, circle in ipairs( circles ) do
  circle:addEventListener("touch", circle)
end
于 2013-02-25T16:00:03.223 に答える