この記事は半年以上前の情報なので、古い可能性があります
・ドラクエで言うと何とかスライムベスが倒せるようになった程度。
・Papervision3Dのバージョンは2.0(GreatWhite)
前回は全くできませんでしたが、ぐるぐる回せました。
以下、追加ソース。
まず、【1】の
ですが、このクラス内でだけ使えるプライベートな変数ってことですよね?
コンストラクタで「球を作って回転させる」を書く前の、準備あるいは初期設定みたいなものでしょう。
「このクラスにmySphereってのが出てきたら、それはSphere(球)です」と決めているわけです。
Sphereってのは、前回
で読み込んだPV3Dのクラスに定義されてるに違いありません。
前回は球を表示するだけだったので省略してましたが、「回転する」という動作に必要になってきますから、コンストラクタの前に書きました。
◆super()って?
FlashCS3のリファレンスによると、
super() ステートメントを使用して直接のスーパークラスのコンストラクタを明示的に呼び出すことができます。 とありました。スーパークラス?何ですかそれ。
と思ったのですが、今作ってるTestというクラスは、PV3DのBasicViewというクラスを継承して作られた、いわば子供のクラスですから、スーパークラスってのは親元、BasicViewのコンストラクタを指すのでは?と思いました。
と思って【paprevision3d>>view>>BasicView.as】を開いてみたところ、
がありました!
super (0,0,true,false,"CAMERA3D");
は、このコンストラクタの値(=引数)(viewportWidth,viewportHeight,scaleToStage,Interactive,cameraType)を引き継いでいる、と考えてよいわけですよね?きっと。
でもよく考えたら、「0,0,」はともかく、「true,false,"CAMERA3D"」は初期値のままなので、省略できるんじゃないですか?
というわけで、
でも動くんじゃないかな?と思ったら、動きました!ひょっとして「0,0,」も省略できるの?
ああっ、動いた!
あれ....?この行自体を削除しても動いてますね。。この行いらないんだ。
その下のcameraの記述に必要なんだとばかり思ってましたが。。もっと勉強します。
5のoverrideですが、FlashCS3のリファレンスには
override 属性を使用する必要があります。 とありました。ふむふむ、要は親クラスの関数を継承して、実行部分を上書きする、って感じですかね。
じゃあBasicViewから継承してきた【protected function onRenderTick】という関数を上書きしてるのかな、、BasicView.asを探したけどない。ということは、BasicViewの更に親クラス、AbstractViewクラスにあるのかな……。
あ、ありました。【papervision3D>>view>>AbstractView.as】の中に。
なるほど、scene,_camera,viewportをレンダリングする、という命令ですね。で、その上の方に、
がありました。startRendering()は、ENTER_FRAMEイベントを実行していたんですね。
イベントを記述しなくても回転し続けたわけがわかりました。
つまり、
ということになりますね(プログラマの方から見ればアバウトすぎる理解方法だと思いますけれど)。
よし、調子が出てきたので、次はSphere以外のプリミティブオブジェクト(最初から用意されている形)をいくつか書いて何かしてみます。