Только с этим кодом он должен быть либо page, либо 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);
}
}
}
person
Simon Buchan
schedule
23.09.2008