我是 ActionScript 2 的长期用户,现在开始使用 ActionScript 3。我缺少的一件事是复制 AS2 的 MovieClip.onReleaseOutside 功能的简单方法。几乎总是有必要实现这个事件,否则你会得到一些有趣的错误,比如 flash 认为你的鼠标在真正启动时已经关闭。
根据AS2 to AS3 Migration Guide,我应该使用flash.display.InteractiveObject.setCapture()
它,但据我所知它并不存在。我猜这个文件已经过时或不正确。我在网上找到了一些关于如何复制此功能的帖子,但它们都有自己的问题:
- 即使没有相应的 onPress 事件,这个也会触发 onReleaseOutside。
- 这似乎非常低效,每次在应用程序内的任何位置单击鼠标时,您都将添加和删除一个事件侦听器。
必须有更简单的方法,不要告诉我Adobe在重写Actionscript时忘记了这一点?
示例 AS2 代码:
// Assume myMC is a simple square or something on the stage
myMC.onPress = function() {
this._rotation = 45;
}
myMC.onRelease = myMC.onReleaseOutside = function() {
this._rotation = 0;
}
如果没有 onReleaseOutside 处理程序,如果您按下方形,将鼠标拖到方形之外,然后释放鼠标,则方形不会停止旋转,并且似乎被卡住了。