ブロックの中からはアクセスするには静的メソッドにしないとできない


class Line {
private static var mc:MovieClip;
/*
■ textでもMovieClipで型指定をする。
■ TextFieldだと.text(代入)する時にnumberが入らない
*/
private static var txt:MovieClip;
private static var myDraw:MovieClip;
private static var RADIAN_TO_DEGREE:Number = 180 / Math.PI;
function Line (target_mc:MovieClip, target_txt) {
mc = target_mc;
txt = target_txt;
First ();
}
private function First ():Void {
myDraw = mc.createEmptyMovieClip ("myDraw", mc.getNextHighestDepth ());
myDraw.lineStyle (1, 0x339900, 100);
myDraw.moveTo (Coordinate ("X"), Coordinate ("Y"));
mc.onEnterFrame = EnterFrame;
function EnterFrame () {
var x:Number = Coordinate ("X");
var y:Number = Coordinate ("Y");
myDraw.lineTo (x, y);
var v:Number = getAngle (x, y);
txt.text = v;
}
}
private static function Coordinate (XY:String):Number {
var MAX:Number = 0;
var returnValue:Number;
switch (XY) {
case "X" :
MAX = Stage.width;
break;
case "Y" :
MAX = Stage.height;
break;
}
returnValue = Math.floor (Math.random () * MAX);
return returnValue;
}
private static function getAngle (nX:Number, nY:Number):Number {
var nRadian:Number = Math.atan2 (nY, nX);
var nDegree:Number = nRadian * RADIAN_TO_DEGREE;
return nDegree;
}
}
function EnterFrame ()のtxtが認識しない。
でも mc.onEnterFrame = EnterFrame(); すると
txtは認識するけれども、onEnterFrame が繰り返し動作しない。

さらに function EnterFrame () を private function First ():Void に入れてる時は、
private function Coordinate (XY:String):Number にアクセスする場合、
private static function Coordinate (XY:String):Number にして Line.Coordinate() ってLineをつけないとできない。


全部、staticにすることで回避できた。
もう最初からstaticにしといたほうがいいのかな。