выдает переменные от родителя к ребенку.AS3 - PullRequest
0 голосов
/ 14 октября 2011

Я пытаюсь получить доступ к некоторым переменным от моего родителя в моем дочернем 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). Я пытался использовать метод трассировки над всеми функциями, находящимися вверху скрипта, но при этом все еще оставались те же ошибки.

есть идеи?

Ответы [ 2 ]

0 голосов
/ 14 октября 2011

В трассировке вы ссылаетесь на свойство 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("");}
}

Если в трассировке, которая там находится, выдается ошибка, то свойство никогда не существовалона родителя.

0 голосов
/ 14 октября 2011

Дочерний фильм не должен проверять своих родителей таким образом.

Попробуйте это:

в документе ребенка Класс:

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 ("");
          }
  }  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...