我正在使用FlashDevelop,并将完整代码粘贴到ActionScript文件中。我收到的错误是这样的:
C:\Users\tempus\Documents\uploaderas\Uploader.as(30): col: 4 Error: Access of undefined property select_btn.
select_btn.addEventListener( MouseEvent.CLICK, browse );
^
C:\Users\tempus\Documents\uploaderas\Uploader.as(31): col: 4 Error: Access of undefined property progress_mc.
progress_mc.bar.scaleX = 0;
...
我理解错误的出现是因为对象尚未声明(并且它们似乎是从某处实例化的),但我不明白我应该如何/应该包含什么来声明它们。你能指点我一个解决方案吗?
答案 0 :(得分:2)
这是因为按钮是在Flash IDE中创建的(因为本教程是使用Flash IDE编译的)。由于代码方面不存在按钮,因此会出现该错误。
您可以通过代码自己创建元素,也可以使用Flash IDE导出必要UI元素的swc / swf并将其包含在flashDevelop项目中。我假设你想要做后者 -
在Flash IDE中,打开.fla,打开库面板,找到进度资源,右键单击它并调出属性。选中“导出为ActionScript”选项,然后在“类”字段中为其指定一个唯一的名称,如“SelectBtn”。对“进度”资产执行相同操作(仅使用不同的类名称,如“ProgressBar”)。转到Flash发布设置,然后在Flash选项卡上选择“export swc”。发布文件并将发布的swc放在flash Develop项目文件夹中(传统上是项目的lib文件夹)。
在Flash Develop中,右键单击您的swc并选择“添加到库”。 (您可能需要再次右键单击并转到选项并选择完全包含选项)。现在,您可以访问在Flash中设置的那些类。然后在您的代码中,声明并初始化显示资产:
public var select_btn:SelectBtn = new SelectBtn();
public var progress_mc:ProgressBar = new ProgressBar();
你也需要做那个textField。尽管如此,最简单的方法就是在代码中完成它。
public var label_txt:TextField = new TextField();
请记住,您需要通过这种方式在所有三个元素上手动定位和使用addChild。如果要保持闪光灯中的定位,只需选择舞台上的所有元素,然后按F8将它们转换为MovieClip。然后在库设置链接中与其他链接相同,并为其指定类似“DisplayAssets”的类名并导出新的swc。然后你的代码看起来像这样:
public var select_btn:Sprite;
public var progress_mc:Sprite;
public function Uploader(){
var displayAssets:DisplayAssets = new DisplayAssets();
addChild(displayAssets);
select_btn = displayAssets.select_btn;
progress_mc = displayAssets.progress_mc;
//the rest of the code
}