我怎么能编译这个Flash教程的代码?

时间:2012-08-21 17:29:58

标签: actionscript-3 flash

我开始阅读本教程:http://active.tutsplus.com/tutorials/actionscript/creating-a-reusable-flash-uploader-with-actionscript-3-0-and-php/

我正在使用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;

...

我理解错误的出现是因为对象尚未声明(并且它们似乎是从某处实例化的),但我不明白我应该如何/应该包含什么来声明它们。你能指点我一个解决方案吗?

1 个答案:

答案 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
}