在用Corona进行游戏或者应用开发中,经常会用到拖拽物品的功能,但是官方的示例中并没有说的很清楚。今天,我要告诉你如何在Corona里实现基本的拖拽,你会发现,其实它非常简单。
逻辑解释:
在用户开始触摸时(又称“began”触摸事件的阶段),您必须存储对象的当前位置。然后,在“move”事件的阶段,你拿事件的当前位置(event.x,event.y)减去事件的开始位置(event.xStart,event.yStart),也添加到对象的存储位置。最后,你以新计算的位置来改变对象的当前位置,那就是用户的手指来移动对象。
听起来拗口?下面是相关代码:
-- create objectlocal myObject = display.newRect( 0, 0, 100, 100 )myObject:setFillColor( 255 ) -- touch listener functionfunction myObject:touch( event ) if event.phase == "began" then self.markX = self.x -- store x location of object self.markY = self.y -- store y location of object elseif event.phase == "moved" then local x = (event.x - event.xStart) + self.markX local y = (event.y - event.yStart) + self.markY self.x, self.y = x, y -- move object based on calculations above end return trueend -- make 'myObject' listen for touch eventsmyObject:addEventListener( "touch", myObject ) 就是这样!这就是Corona中拖动的对象的全部。尽管本教程是有点短,它的用处是无限的,我发现我在许多不同的项目使用了相同的代码,所以在这里共享。