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