只有该代码,它必须是页面,或者 page.Text 为空。
按名称,我猜 page 是您使用 AS 创建的 Flash 库对象?如果是这样,我猜想之前的错误在它被创建并被播放器吞噬之前被触发(如果调试器尚未附加,或者加载共享库出现问题,可能会发生)。在添加到显示列表之前不会为新显示对象设置“阶段”是常见的。
编辑:这是组件中的一个错误:draw()始终使用highScoresModuleTextpage: 上的属性,该属性仅在页面为 a 时设置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);
}
}
}