Сандро прав, потому что события всплывают, а не вбок, ваш Menu
никогда не увидит событие.
Возможное решение: поскольку Main
уже «знает» о compSource
и compMenu
, вы можете безопасно передать событие через ваш основной класс:
class Main{
public function Main()
{
compSource = new Game();
compSource.addEventListener(ScoreChanged.SCORE_GAIN, scoreGainHandler);
compMenu = new Menu();
//... rest of constructor
}
public function scoreGainHandler(event:ScoreChanged):void
{
compMenu.updateScore(event);
}
//... rest of class
Таким образом, ваши Game
и Menu
остаются независимыми.
На самом деле, если вы строите его таким образом, Menu
вообще не нужно слушать событие изменения счета, вы можете просто изменить функцию обновления, чтобы получить переменную счета:
class Menu{
public function updateScore(score:int):void
{
tScore.text = String(score);
}
//... etc