2015-01-20 2 views
0

У меня есть объект movieClip (Существо), и внутри него есть hitpoints, которые я бы хотел добавить в Creatures Array HitPoints. То, как я хотел бы сделать это, состоит в том, чтобы каждый родитель мог иметь hitPoints, чтобы иметь массив под названием HitPoints, чтобы я мог добавить каждую точку в массив, независимо от родителя. IE, скелетное существо и существительное гоблинов могут использовать один и тот же тип объектов hitPoint внутри своего базового клипа и все еще доступны.Доступ к родительскому массиву из дочернего объекта, добавленного внутри movieClip в AS3

я опустил некоторые из ненужных частей этого класса

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_ на сцене, я попробовал несколько разных способов добавить HitPoints как напрямую с parent.AddHitPoints (this); и parent.HitPoints.push (this)

ответ

0

Я думаю, вам нужно использовать этот.parent, а не только родительский.

+0

К сожалению, нет, также этот образец был бы лишним. Спасибо за попытку помочь хотя – KingWrex