我想在比赛的下角得分。我制作了一个名为Score
的新层,拖出一个文本区域,将其转换为符号并命名为Score
。然后我将其实例名称设置为Score
。
我的flash游戏的主要类叫做Main.as
。但是,我似乎无法访问我在代码中创建的Score
文本区域。我得到这个错误:
1046:找不到类型或该类型不是编译时常数:Score。
我错过了什么?如何从代码中更新文本区域文本?
编辑:忘了提一下,当我将"导出ActionScript"框转换为符号时,我点击了它。如果这很重要的话,它是MovieClip类型的。
当您为ActionScript 3导出一个符号时,Flash会为它创建一个具有给定名称的类(该名称与您在类定义和实例中使用的名称相同)。
- 出现此错误是因为类和instace使用了相同的名称
- 你应该检查一下它们并使用不同的名称
- 我通常以
_mc
结尾命名实例
例如,在您的情况下,您应该使用Score
作为类,并将实例命名为score_mc
(或仅使用小写S.的score
)。
层名称没有区别。您需要设置动态文本字段的实例名称,而不是包含该字段的剪辑。也不需要将其转换为MovieClip。在你的后台创建文本字段,确保它不是静态的,给它一个实例名,你可以用来访问它
例如,我使我的文本字段名称scoreText_txt
//inside main.as
scoreText_txt.text="new text";
如果你想把你的文本文件放在电影剪辑中,你需要给剪辑和你的文本字段一个名字。然后您可以使用访问它。
MyMovieClip.MyText.text="new text"
除非您打算为文本字段创建额外的逻辑(因为它将有自己的类)或希望将其动态添加到阶段(通过addChild()
),否则不要导出ActionScript。
实例名称为Score
时,尝试一下:
Score.text = "822";
我建议使用小写的实例名称来区别于用于类的CamelCase。对于更有经验的开发人员来说,以上内容将被解读为更新类Score
内的static
属性text
。