как назначить родительскую переменную из родительского дочернего элемента?

#actionscript-3 #variables

#actionscript-3 #переменные

Вопрос:

я хочу передать переменную от родителя к дочернему элементу.Как я могу передать переменную.Здесь я вставляю свой код.Кто-нибудь, пожалуйста, подскажите мне.Заранее спасибо!

Мой родительский класс

 public class PlayerStrobe_domaincheck extends Sprite
{
    private var myService:NetConnection = new NetConnection();
    private var _loader:Loader;

    public function PlayerStrobe_domaincheck()
    {
        _loader = new Loader();
        var sourceId:String = loaderInfo.parameters.src;// I want to pass This Variable
        var some:StrobeMediaPlayback = new StrobeMediaPlayback(parentObject);// Access of undefined property parentObject(Error Message).
        some = new StrobeMediaPlayback(this);
  

}
}

Мой дочерний класс

 public class StrobeMediaPlayback extends Sprite
{
    private var _loader:Loader;
    private var sourceId:String; //i want to access the the parent  variable(sourceId) here
    parentClass = parent;
    function Test():void
        {
                mediaContainer.addMediaElement(alert);
                            alert.alert("Error",parentClass.sourceId);
                 }
  

Ответ №1:

 public class PlayerStrobe_domaincheck extends Sprite
{
    private var myService:NetConnection = new NetConnection();
    private var _loader:Loader;


    public function PlayerStrobe_domaincheck()
    {
        _loader = new Loader();
        var sourceId:String = loaderInfo.parameters.src;

        var some:StrobeMediaPlayback = new StrobeMediaPlayback(sourceId);

        new StrobeMediaPlayback(this);
    }
}



public class StrobeMediaPlayback extends Sprite
{
    private var _loader:Loader;
    private var sourceId:String;
    parentClass = parent;

   public function StrobeMediaPlayback(sourceIdVariablePassed:String):void
    {
                mediaContainer.addMediaElement(alert);
                trace("Source ID " sourceIdVariablePassed);
    }
}
  

Ответ №2:

Вы не можете сделать это напрямую, если ваша переменная в родительском элементе не public

Опять же, это не очень хороший код для этого, потому что тогда дочерний элемент будет добавлен только в ваш родительский класс и ни во что другое.

Лучшим способом было бы отправить событие и заставить родительский элемент прослушать это событие. Обработчик событий в родительском элементе должен изменить переменную в родительском элементе.

Ответ №3:

Yoc может передавать родительский класс дочернему

 public class StrobeMediaPlayback extends Sprite
{
    private var _loader:Loader;
    private var sourceId:String; //i want to access the the parent  variable(sourceId) here
    private var parentClass:PlayerStrobe_domaincheck;

    public function StrobeMediaPlayback(parent:PlayerStrobe_domaincheck)
    {
        parentClass = parent;
        trace("welcome");
    }   
    public function Test():void
    {
        trace(parentClass.sourceId);
    }
}
  

и когда вы создаете свой дочерний элемент из родительского (например), передаете родительский объект как параметр, подобный

 var some:StrobeMediaPlayback = new StrobeMediaPlayback(parentObject)
  

и ваше определение родительского элемента должно быть таким

 public class PlayerStrobe_domaincheck extends Sprite
{
    private var myService:NetConnection = new NetConnection();
    private var _loader:Loader;
    private var some:StrobeMediaPlayback; //update
    public var sourceId:String;

    public function PlayerStrobe_domaincheck()
    {
        _loader = new Loader();
        sourceId = loaderInfo.parameters.src;// I want to pass This Variable
        some = new StrobeMediaPlayback(this) //update
    }
}
  

вы можете изменить свой дочерний объект в родительском конструкторе

Комментарии:

1. 1119: Доступ к возможно неопределенному свойству SourceID через ссылку со статическим типом PlayerStrobe_domaincheck. я получаю ошибку, подобную этой, сэр

2. Как вы определяете свой дочерний объект? Правильно ли вы передали parent ему в качестве параметра?