При наличии только этого кода это должна быть страница или page.Text имеет значение null.
Судя по именам, я думаю, страница - это объект библиотеки Flash, который вы создаете с помощью AS? Если это так, я бы предположил, что предыдущая ошибка запускается до того, как она была создана и поглощена проигрывателем (может произойти, если отладчик еще не подключен или возникли проблемы с загрузкой общих библиотек). 'stage' не устанавливается для нового экранного объекта, пока он не будет добавлен в список отображения.
РЕДАКТИРОВАТЬ: это ошибка в компоненте: draw()
всегда использует свойство highScoresModuleText
на странице: оно устанавливается только тогда, когда страница имеет значение HighScoresTextPage
, а не на других страницах, например: HighScoresTablePage
, который showHighsSores()
устанавливает его. Это работает во Flash, предположительно, потому что объект находится на сцене или, по крайней мере, создается до вызова showHighScores()
, поэтому сначала вызывается draw()
, и поскольку компонент не становится недействительным, он не вызывается после.
Правильный метод в этом случае состоит в том, чтобы show*()
просто установил некоторые свойства, затем invalidate()
, чтобы draw()
выяснил это позже, но быстрое решение состоит в том, чтобы просто добавить 'if (page.highScoresModuleText)
' вокруг нарушителя строки в draw()
. Еще более быстрое решение - это создать и addChild()
компонент раньше (например, при запуске), и вызвать showHighScores()
намного позже.
Это работает для меня:
package
{
import flash.display.Sprite;
import com.novelgames.flashgames.highscores.HighScores;
import flash.events.MouseEvent;
public class As3_scratch extends Sprite
{
private var highscore : HighScores;
public function As3_scratch()
{
highscore = new HighScores();
addChild(highscore);
stage.addEventListener(MouseEvent.CLICK, onClick);
}
private function onClick(event : MouseEvent) : void
{
highscore.showEnterHighScore(50);
}
}
}