【发布时间】:2017-02-16 02:48:06
【问题描述】:
我有一个名为ob1 的表格,其中包含 10 个图像(这些图像是随机创建并水平移动的),我在屏幕中间有一个栏,我已经为两者启用了物理并实现了碰撞事件侦听器以删除 @987654322 @image 当它们与 bar 碰撞时,但问题是当 3-4 个图像接近 bar 并且当第一个 ob1 与 bar 随机碰撞时,ob1 对象被删除但不是当前的 ob1 对象,怎么能我得到了当前碰撞的ob1对象的ID?
代码是
local ob1={}
for i=1,obslimit do
ob1[i]=display.newImage( "images/ob1.png", 250,250)
ob1[i].isVisible=false
ob1[i].isAlive=false
physics.addBody( ob1[i], "dynamic", {friction=1,bounce=0.0})
ob1[i].gravityScale=0
ob1[i].isBodyActive=false
end
--function to deal ob1 collision
local function ob1cols( self,event )
if(event.phase=="began") then
--print(self.myName..event.other.myName)
local ob1_elem = require("mydata")
--ob1_elem.new.isBodyActive=false
ob1_elem.new.isVisible=false
ob1_elem.new.isAlive=false
end
end
--function to deal ob1 group pooling
local function getob1()
--calling ob1 from pool
for i=1, #ob1 do
if not ob1[i].isAlive then
--print( "got one" )
return ob1[i]
end
end
return nil
end
--function to deal obstacle spawning
local function obdecide(event)
if (mytime==100) then
--local ob1_elem = getob1()
local ob1_elem = require("mydata")
ob1_elem.new=getob1()
if (ob1_elem.new~=nil) then
ob1_elem.new.isVisible=true
ob1_elem.new.isAlive=true
ob1_elem.new.isBodyActive=true
ob1_elem.new.x=math.random( 200,350 )
--trying to add event listner for every object
ob1_elem.new.myName="cactus"
ob1_elem.new:setLinearVelocity( -20, 0 )
ob1_elem.new.collision=ob1cols
ob1_elem.new:addEventListener( "collision", ob1_elem.new)
end
elseif (mytime>100) then
mytime=0
end
end
【问题讨论】: