Actionscript3.0のクラス定義の仕方
ActionScript3.0のクラス定義について質問なのですが、回転するインスタンスがあり(それは最初からステージに置いてあります)、それがマウスが近づくにつれてだんだん回転が速くなるのを作りたいのですがなかなかうまくいきません。
クラス定義をせずに書いた場合ですとうまくいきましたが、それを外部ファイルにカスタムクラス(と言うんでしょうか?)をした場合、やり方がいまいち理解できずにうまくいかないんです。
クラス定義せずに書いたのはこちらです↓
addEventListener(Event.ENTER_FRAME, onEnterframe);
function onEnterframe(eventObj:Event):void {
//インスタンスの座標
var hanePt:Point=new Point(hane_mc.x,hane_mc.y);
//マウスの座標
var mousePt:Point=new Point(stage.mouseX,stage.mouseY);
//インスタンスとマウスの距離
var distance:Number=Point.distance(hanePt,mousePt);
//距離が200以下の時に回転する
if(distance<200){
hane_mc.rotation+=2000/Math.max(50,distance);
}
これですとちゃんと動きました。
そしてクラス定義にしたのがこちらです↓
メインのタイムラインのところにはこちらを書いて↓
var mousePt:Point=new Point(stage.mouseX,stage.mouseY);
var haneobj1:Hane = new Hane(hane_mc);
haneobj1.moveHane(mousePt);
外部ファイルにはこちらを書きました↓
package{
import flash.display.MovieClip;
import flash.events.Event;
import flash.geom.Point;
public class Hane extends MovieClip{
//インスタンスのプロパティ
var hane_mc:MovieClip;
var ballPt:Point;
var distance:Number;
public function Hane(hane:MovieClip){
hane_mc = hane;
ballPt = new Point(hane_mc.x,hane_mc.y);
}
public function moveHane(mou:Point):void{
distance = Point.distance(ballPt,mou);
addEventListener(Event.ENTER_FRAME, kaitenHandler);
}
public function kaitenHandler(ev:Event):void{
//距離が200以下の時に回転する
if(distance<200){
hane_mc.rotation+=2000/Math.max(50,distance);
}
}
}
}
とくにエラーは出ないのですが、動くときと動かないときがあります。
動いたとしても一定の動きで、マウスが近づいてもとくに回転速度は変わりません。
どこか間違っているところあればご教授してください!!
よろしくお願いします!!!
お礼
上記のやり方で、できました。 有り難うございます。困っていたので助かりました。