在Flex中使用Flash组件SWC文件

时间:2008-09-23 08:57:36

标签: flex flash components

我通过Flex 3的SWC文件访问自定义UIComponent。 此组件在Flash CS3中正常工作,但在Flex中使用它会在draw()中产生一个奇怪的错误。

我在Sprite中添加了swc组件(带有addchild),并在LIB路径中添加了它。

TypeError:错误#1010:术语未定义且没有属性。

at com.xxxx.highscores::HighScores/draw()

at fl.core::UIComponent/callLaterDispatcher()

以下是此UI组件的draw()函数:

覆盖受保护的函数draw():void {          isInitializing = false;

     page.Text.x = width / 2;
     page.Text.y = height / 2;

     drawBackground();

}

1 个答案:

答案 0 :(得分:3)

只有该代码,它必须是page或page.Text,为null。

按照名称,我猜猜页面是你用AS创建的Flash库对象?如果是这样,我猜测之前的错误是在创建之前触发并被播放器吞噬(如果调试器尚未附加,或者加载共享库时出现问题)。在将新显示对象添加到显示列表之前,不会为其设置'stage'。

编辑:这是组件中的一个错误:draw()始终使用页面上的highScoresModuleText属性:仅当页面为HighScoresTextPage时才设置,而不是任何其他页面页面,例如:HighScoresTablePageshowHighsSores()将其设置为。这在Flash中大概是因为对象是在舞台上,或者至少得到showHighScores()调用之前创建的,因此draw()最先被调用,因为该组件不坏,是不是后调用。

在这种情况下,正确的方法是让show*()设置一些属性,然后invalidate()draw()稍后解决,但快速解决方法是只添加'{ {1}}围绕if (page.highScoresModuleText)中的违规行。更快的解决方法是尽早创建和draw()组件(如启动),并在稍后调用addChild()

这对我有用:

showHighScores()