Livecode播放器:如何捕获“dragStop”消息

时间:2017-01-06 13:25:47

标签: livecode

在播放器中,我想允许用户手动拖动选择的边界(开始时间和结束时间)。 我可以使用 dragStart 消息来捕获用户是否开始拖动,但我无法获取元素的最终位置,因为我不知道用户何时停止拖动。

我尝试过这样的事情:

on dragStart
   repeat until the mouse is up
       /*unfortunately, this part freeze the player*/
   end repeat
   put the timeScale of me into sr
   put the endTime of me into endT
   put endT/sr
end dragStart

但是播放器被wait命令冻结了。所以用户无法移动边界,我无法获得“endTime”的最终位置。

如何等到鼠标开启,但没有冻结播放器?

2 个答案:

答案 0 :(得分:1)

有许多方法可以摆脱阻塞循环,等待#34;使用消息"或者在处理程序中及时发送消息,该处理程序在间隔期间释放引擎。但最基本的可能就是这样,如果你想尝试一下。在新卡上创建一个按钮和一个字段。在按钮脚本中:

on dragStart
put the loc of me into line 1 of fld 1
end dragStart

on mouseMove
if the mouseLoc is within the rect of me and the mouse is down then
set the loc of me to the mouseLoc
end if
end mouseMove

on mouseup
 put the loc of me into line 2 of fld 1
end mouse up

现在这已经过头了,但至少展示了如何使用小型处理程序来处理小问题。

答案 1 :(得分:0)

这最终可以通过一个非常简单的代码实现(通常使用livecode):

on selectionchanged
     put the timeScale of me into sr
     put the endTime of me into endT
     put endT/sr into fld 1
end selectionchanged