Avec seulement ce code, il doit être l'une des pages, ou page.Text, est nulle.
En passant par les noms, je suppose que la page est un objet de bibliothèque Flash que vous créez avec AS? Si c'est le cas, j'imagine qu'une erreur précédente est en train de se déclencher avant qu'elle ne soit créée et que le joueur ne la suive (cela peut arriver si le débogueur n'est pas encore attaché, ou des problèmes de chargement de bibliothèques partagées). 'stage' n'est pas défini pour un nouvel objet d'affichage tant qu'il n'est pas ajouté à la liste d'affichage.
EDIT: Il est un bug dans le composant: draw()
utilise toujours la highScoresModuleText
propriété à la page: qui est définie uniquement lorsque la page est un HighScoresTextPage
, et aucun des autres pages, par exemple: HighScoresTablePage
, qui showHighsSores()
ensembles il à. Cela fonctionne dans Flash probablement parce que l'objet est sur la scène, ou au moins est créé avant que showHighScores()
soit appelé, ainsi draw()
est appelé en premier, et puisque le composant n'invalide pas, n'est pas appelé après.
La bonne méthode dans ce cas est d'avoir show*()
simplement définir certaines propriétés, puis invalidate()
avoir draw()
le découvrir plus tard, mais une solution rapide est d'ajouter simplement « if (page.highScoresModuleText)
» autour des lignes incriminées dans draw()
. Une solution encore plus rapide est de créer et addChild()
le composant au début (comme le démarrage), et appelez showHighScores()
beaucoup plus tard.
Cela fonctionne pour moi:
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);
}
}
}
Merci, je me suis débarrassé de l'erreur maintenant, bu t toujours rien n'apparaît à l'écran lorsque je donne ces commandes en flex: highscore.showEnterHighScore (_score); highscore.drawNow(); Je suppose que c'est un autre bug. – Tom
Que se passe-t-il si vous appelez simplement showEnterHighScore?les méthodes show *() semblent toutes mettre à jour l'affichage immédiatement, et ne semblent pas fonctionner avec draw() (donc c'est un peu cassé) –
:(rien ne se passe, rien n'apparaît à l'écran, mais cet appel de fonction fonctionne à la place : highscore.showHighScores(); highscore.drawNow(); – Tom