Kud
28.09.2009, 19:13
Вопрос в следующем.
class Avatar extends MovieClip {
public static var HAPPY:Number = 0;
public static var SAD:Number = 1;
public static var IDLE:Number = 2;
private var av_mc:MovieClip;
public function Avatar(name:String,
target:MovieClip,
depth:Number,
x:Number,
y:Number) {
av_mc = target.attachMovie("AvatarSymbol", name, depth);
setState(Avatar.HAPPY);
setPosition(x, y);
}
public function setPosition(x:Number, y:Number):Void {
av_mc._x = x;
av_mc._y = y;
}
public function setState(newState:Number):Void {
switch(newState) {
case Avatar.HAPPY:
av_mc.gotoAndStop("HAPPY");
break;
case Avatar.SAD:
av_mc.gotoAndStop("SAD");
break;
case Avatar.IDLE:
av_mc.gotoAndStop("IDLE");
break;
}
}
}
var av:Avatar;
av = new Avatar("avatar", this, 0, 300, 200);
av.setState(Avatar.HAPPY);
Работает корректно. Но если убрать наследование, то есть написать вместо "class Avatar extends MovieClip" "class Avatar", то строка "av.setState(Avatar.HAPPY);" работает не корректно: смена кадра не происходит.
Вопрос почему? Ведь в конечном счете и так и сяк вызывается "av_mc.gotoAndStop("HAPPY")", а "av_mc" это "MovieClip".
class Avatar extends MovieClip {
public static var HAPPY:Number = 0;
public static var SAD:Number = 1;
public static var IDLE:Number = 2;
private var av_mc:MovieClip;
public function Avatar(name:String,
target:MovieClip,
depth:Number,
x:Number,
y:Number) {
av_mc = target.attachMovie("AvatarSymbol", name, depth);
setState(Avatar.HAPPY);
setPosition(x, y);
}
public function setPosition(x:Number, y:Number):Void {
av_mc._x = x;
av_mc._y = y;
}
public function setState(newState:Number):Void {
switch(newState) {
case Avatar.HAPPY:
av_mc.gotoAndStop("HAPPY");
break;
case Avatar.SAD:
av_mc.gotoAndStop("SAD");
break;
case Avatar.IDLE:
av_mc.gotoAndStop("IDLE");
break;
}
}
}
var av:Avatar;
av = new Avatar("avatar", this, 0, 300, 200);
av.setState(Avatar.HAPPY);
Работает корректно. Но если убрать наследование, то есть написать вместо "class Avatar extends MovieClip" "class Avatar", то строка "av.setState(Avatar.HAPPY);" работает не корректно: смена кадра не происходит.
Вопрос почему? Ведь в конечном счете и так и сяк вызывается "av_mc.gotoAndStop("HAPPY")", а "av_mc" это "MovieClip".