#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 ему в качестве параметра?