#flash #actionscript-3 #actionscript
#flash #actionscript-3 #actionscript
Вопрос:
Я пытаюсь получить доступ к некоторым переменным от моего родителя в моем дочернем MC.
Родительский код:
var data_history:String;
function finish_checkUp(event:Event):void{
var checkUp_stat:String;
checkUp_stat = data.check_UP_STAT;
if (checkUp_stat == "PASSED"){
data_history = "FALSE";
gotoAndPlay ("domain_check");
}
else if (checkUp_stat == "FAILED"){
data_history = "TRUE";
gotoAndPlay ("error_data_conflict");
}
else if (checkUp_stat == "FAILED_UN"){
data_history = "TRUE";
gotoAndPlay ("");
}
}
ДОЧЕРНИЙ MC:
contt_btn.addEventListener(MouseEvent.MOUSE_DOWN, mouseClick);
contt_btn.addEventListener(MouseEvent.ROLL_OVER,contt_btnOver);
contt_btn.addEventListener(MouseEvent.ROLL_OUT,contt_btnOut);
function contt_btnOver(event:MouseEvent):void{
contt_btn.gotoAndPlay("over");
}
function contt_btnOut(event:MouseEvent):void{
contt_btn.gotoAndPlay("out");
}
function mouseClick(event:MouseEvent):void
{
trace (MovieClip(this.parent).data_history);
if (data_history == "TRUE"){
MovieClip(parent).gotoAndPlay("begin_erasing");
}
else if (data_history == "FALSE"){
gotoAndPlay("");}
}
Теперь, как вы можете видеть, я попробовал этот trace
метод, но безуспешно. Flash не сообщает о каких-либо ошибках, касающихся trace
метода, но сообщает о двух неопределенных переменных ( data_history
). Я попытался использовать метод трассировки над всеми функциями, в верхней части скрипта, но все те же ошибки.
есть идеи?
Ответ №1:
В трассировке вы ссылаетесь на свойство data_history через this.parent
. Предполагая, что это отслеживает ваше значение, вам нужно настроить if …else, чтобы ссылаться на свойство также через parent:
function mouseClick(event:MouseEvent):void
{
trace (MovieClip(this.parent).data_history);
if (MovieClip(this.parent).data_history == "TRUE"){
MovieClip(parent).gotoAndPlay("begin_erasing");
}
else if (MovieClip(this.parent).data_history == "FALSE"){
gotoAndPlay("");}
}
Если трассировка, которая у вас есть, выдает ошибку, значит, свойство никогда не существовало для родительского элемента.
Ответ №2:
Дочерний фильм не должен проверять своего родителя таким образом.
Попробуйте это:
в дочернем классе document:
public var data_history:String;
function mouseClick(event:MouseEvent):void{
if (data_history == "TRUE"){
MovieClip(parent).gotoAndPlay("begin_erasing");
}
else if (data_history == "FALSE"){
gotoAndPlay("");}
}
}
в родительском
function finish_checkUp(event:Event):void{
var checkUp_stat:String;
checkUp_stat = data.check_UP_STAT;
if (checkUp_stat == "PASSED"){
data_history = "FALSE";
if (childMC as ChildDocumentClass) {
(childMC as ChildDocumentClass).data_history = data_history;
}
gotoAndPlay ("domain_check");
}
else if (checkUp_stat == "FAILED"){
data_history = "TRUE";
if (childMC as ChildDocumentClass) {
(childMC as ChildDocumentClass).data_history = data_history;
}
gotoAndPlay ("error_data_conflict");
}
else if (checkUp_stat == "FAILED_UN"){
data_history = "TRUE";
if (childMC as ChildDocumentClass) {
(childMC as ChildDocumentClass).data_history = data_history;
}
gotoAndPlay ("");
}
}