私は ActionScript 2 の長年のユーザーで、現在は ActionScript 3 を使い始めています。欠けていることの 1 つは、AS2 の MovieClip.onReleaseOutside の機能を簡単に複製する方法です。ほとんどの場合、このイベントを実装する必要があります。そうしないと、実際にはマウスが上がっているのに、フラッシュがマウスが下がっていると判断するなど、おかしなバグが発生します。
AS2 to AS3 Migration Guideによると、これに使用することになってflash.display.InteractiveObject.setCapture()
いますが、私が知る限り存在しません。このドキュメントは古くなっているか、間違っていると思います。この機能を複製する方法についての Web 上の投稿をいくつか見つけましたが、いずれにも独自の問題があります。
- これは、対応する 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 ハンドラーがないと、四角形を押し下げ、マウスをその外側にドラッグしてマウスを放した場合、四角形は回転を戻さず、動かなくなったように見えます。