- ベストアンサー
Actionscript3.0のクラス定義の仕方
- ActionScript3.0のクラス定義について説明します。
- クラス定義を使うと、回転が速くなるインスタンスを作成できます。
- しかし、クラス定義を使用してもうまく動かない場合があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>>1さん来ないみたいなので代わりに補足レス >未定義stage Haneクラスのインスタンスが stageにaddChildされてないと Haneインスタンスのstageはnullです もう少しいうとこのHaneクラス自体は MovieClipの拡張クラスである必要性が あんまりないように思います hane_mcにリスニングさせればいいかと思います public function moveHane(mou:Point):void{ distance = Point.distance(ballPt,mou); addEventListener(Event.ENTER_FRAME, kaitenHandler); } public function kaitenHandler(ev:Event):void{ if(distance<200){ hane_mc.rotation+=2000/Math.max(50,distance); } ↓ public function moveHane():void{ hane_mc.addEventListener(Event.ENTER_FRAME, kaitenHandler); } public function stopHane():void{ hane_mc.removeEventListener(Event.ENTER_FRAME, kaitenHandler); } private function get dst():Number{ return new Point(hane_mc.mouseX,hane_mc.mouseY).length } public function kaitenHandler(ev:Event):void{ if(dst<200){ hane_mc.rotation+=2000/Math.max(50,dst); } 片づけ用にstopHane()を用意 distanceをdstとしてgetter実装 これでdistanceとballPtプロパティは不要になってます
その他の回答 (1)
- 76masa
- ベストアンサー率50% (8/16)
1) var mousePt:Point=new Point(stage.mouseX,stage.mouseY); 2) var haneobj1:Hane = new Hane(hane_mc); 3) haneobj1.moveHane(mousePt); 1) でマウスの座標を取得した後に、、 3) でマウスの座標を引数で渡していますね。 マウスの座標は 1) で1回しか取得していないので、常に同じ数値で計算しています なので、一定の動きをしています。 マウスの座標を常に取得してあげましょう。
お礼
ありがとうございます!! はい、一応そこまではそうだろうなと思ってはいたのですが、そこからどうすればいいのか色々試したのですがなかなかうまくいかず。。。 もう少し助言を頂けると嬉しいです!
補足
すみません追記です。 できれば var mousePt:Point=new Point(stage.mouseX,stage.mouseY); を外部のファイルに記述したいのですが、記述すると「未定義stage...」とエラーが出てしまいます。 これは何かインポートしなくてはならないのでしょうか? もしよろしければ助言頂けると嬉しいです!
お礼
とても分かりやすい説明有り難うございました!! おかげでスッキリしました! getterの使い方も分かったので大変勉強になりました。 ありがとうございます!!