【问题标题】:Accessing a Parents Array from child added inside movieClip in AS3从添加在 AS3 中的movieClip 中的孩子访问父母数组
【发布时间】:2015-03-19 06:39:27
【问题描述】:

我有一个movieClip 对象(Creature),在它里面,我有我想添加到Creatures Array HitPoints 的生命值。我想这样做的方法是让每个可能有 hitPoints 的 Parent 都有一个名为 HitPoints 的数组,这样我就可以让每个点将它自己添加到数组中,而不管父级如何。 IE,骷髅生物和地精生物可以在其基础movieClip 内使用相同类型的hitPoint 对象并且仍然可以访问。

我省略了这个类的一些不必要的部分

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直接添加到舞台上的ParentClass BaseAI_中,我尝试了几种不同的方法来直接使用parent.AddHitPoints(this)添加HitPoints;和 parent.HitPoints.push(this)

【问题讨论】:

    标签: arrays actionscript-3 parent children


    【解决方案1】:

    我认为你需要使用 this.parent 而不仅仅是 parent。

    【讨论】:

    • 不幸的是,this.parent 也是多余的。感谢您尝试提供帮助
    猜你喜欢
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多