Я давний пользователь ActionScript 2, теперь начинаю работать с ActionScript 3. Единственное, чего мне не хватает, - это простого способа дублировать функциональность MovieClip.onReleaseOutside в AS2. Почти всегда необходимо реализовать это событие, в противном случае вы получите забавные ошибки, такие как flash думает, что ваша мышь не работает, когда она действительно работает.
Согласно руководству по миграции AS2 в AS3 , я должен использовать для этого flash.display.InteractiveObject.setCapture()
, но, насколько я могу судить, его не существует. Я думаю, что этот документ устарел или неверен. Я нашел несколько постов в сети о том, как дублировать эту функцию, но у них есть свои проблемы:
- Этот срабатывает onReleaseOutside, даже если не было соответствующего события onPress.
- Этот кажется очень неэффективным, вы будете добавлять и удалять прослушиватель событий каждый раз, когда щелкаете мышью в любом месте вашего приложения.
Должен быть более простой способ, не говорите мне, что 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, если вы нажмете на квадрат, перетащите мышку за его пределы и отпустите кнопку мыши, квадрат не будет вращаться и будет зависать.