Arrays 从AS3中movieClip中添加的子对象访问父数组
我有一个movieClip对象(生物),在它里面,我有生命值,我想添加到生物数组的生命值中。我希望这样做的方式是让每个可能有生命点的父级都有一个名为生命点的数组,这样我就可以让每个点自己添加到数组中,而不管父级是什么。也就是说,骷髅生物和地精生物可以在其基础电影剪辑中使用相同类型的生命点对象,并且仍然可以访问 我省略了这门课中一些不必要的部分Arrays 从AS3中movieClip中添加的子对象访问父数组,arrays,actionscript-3,parent,children,Arrays,Actionscript 3,Parent,Children,我有一个movieClip对象(生物),在它里面,我有生命值,我想添加到生物数组的生命值中。我希望这样做的方式是让每个可能有生命点的父级都有一个名为生命点的数组,这样我就可以让每个点自己添加到数组中,而不管父级是什么。也就是说,骷髅生物和地精生物可以在其基础电影剪辑中使用相同类型的生命点对象,并且仍然可以访问 我省略了这门课中一些不必要的部分 package Assets.Creatures { import Assets.Points.HitPoint; import Assets.Game
package Assets.Creatures
{
import Assets.Points.HitPoint;
import Assets.GameStates.Main;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.geom.Point;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class BaseAI_ extends MovieClip
{
//Characteristics
protected var Health : int = 10;
protected var SPEED : int = 3;
protected var Intellect : int = 3;
protected var Strength : int = 3;
protected var Dexterity : int = 3;
protected var AttackRange : int = 70;
protected var Temperment : String = "Agressive";
//public var Temperment : String = "Passive";
//public var Temperment : String = "Defensive";
//ARRAYS
public var HitPoints : Array = new Array;
// AttackTimers
protected var canAttack : Boolean = false;
protected var AttackSpeed : int;
protected var AttackTimer : Timer;
protected var AbilityCooldownsUP : Boolean = false;
//protected var ABILITY : Timer;
//AI STATES
protected var CURRENT_STATE : int = 0;
protected static var STATE_IDLE : int = 0;
protected static var STATE_ENGAGE : int = 1;
protected static var STATE_ATTACK : int = 2;
protected static var STATE_FLEE : int = 3;
//Reference
protected var Target : MovieClip;
//Directions
protected var SlopeY : Number;
protected var SlopeX : Number;
protected var EngagePosition : Point;
protected var RunDirection : Number;
public function BaseAI_()
{
addEventListener(Event.ADDED_TO_STAGE, Awake);
} // constructor code
private function Awake (e : Event) : void
{
AttackSpeed = (5000 / Dexterity);
AttackTimer = new Timer (AttackSpeed, 0);
AttackTimer.addEventListener(TimerEvent.TIMER, AttackSpeedTimer);
AttackTimer.start();
Main.main.EnemyArray_2.push(this);
stage.addEventListener(Event.ENTER_FRAME, update);
}
public function AddHitPoints (hitPoint : MovieClip) : void
{
HitPoints.push(hitPoint);
}
}
而hitPoint类是
package Assets.Points
{
import Assets.Creatures.BaseAI_;
import Assets.Creatures.Player_;
import Assets.Creatures.Player_Human;
import flash.display.MovieClip;
import flash.events.Event;
public class HitPoint extends MovieClip
{
public function HitPoint()
{ // constructor code
addEventListener(Event.ADDED_TO_STAGE, Awake);
} // constructor code
private function Awake (e : Event) : void
{
trace("HitPoints parent is " + parent);
parent.AddHitPoints(this);
//parent.HitPoints.push(this)
//trace("my parent has " + parent.HitPoints.length);
}
}
}
因此,在子类(hitPoints)中,我直接将hitPoints添加到父类BaseAI_u中。在舞台上,我尝试了几种不同的方法来直接使用parent.AddHitPoints添加hitPoints(这);和parent.HitPoints.push(this)我认为您需要使用this.parent,而不仅仅是parent。不幸的是,不仅如此,this.parent也是多余的。谢谢你的帮助