ここでこの質問をしようとしましたが、満足のいく答えが得られませんでした。(コンパイラが関数内のパラメーターのスーパークラスを許可する必要があるのはなぜですか) もう一度尋ねようとしています。クラスで行われたときに、キャストがメンバー関数を失わないのはなぜですか? 以下では、スプライトにキャストした後、クラスは現在のフレームに関するすべての情報を失うはずだと予想しました。しかし、キャスティングが単なる「見せびらかし」であり、内部で「実際に行われた」わけではないかのように、情報を保持しますか?
import flash.display.MovieClip;
import flash.display.Sprite;
var mc:MovieClip
mc.gotoAndStop(2);
trace(mc.currentFrame); // output 2 --> that's ok
var sprite:Sprite = Sprite(mc)
trace( MovieClip(sprite).currentFrame);//output 2, value not lost, which is questionable
出力: 2 2
私が知っている、答えは、アドビがそれをした方法である可能性があります。しかし、ロジックは何ですか?理想的なロジックは、キャストと再キャストの後、すべての値をデフォルトに復元する必要があるというものです。(この場合は「0」)
V.