0

我开始阅读本教程: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;

...

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

4

1 回答 1

2

这是因为按钮是在 Flash IDE 中创建的(因为本教程是使用 Flash IDE 编译的)。由于按钮在代码方面不存在,因此您会收到该错误。

您可以通过代码自己创建元素,或者使用 Flash IDE 并导出必要 UI 元素的 swc/swf 并将其包含在您的 flashDevelop 项目中。我假设你会想做后者 -

在 Flash IDE 中,打开 .fla,打开库面板,找到进度资源,右键单击它并调出属性。选中“Export For ActionScript”选项,然后在“Class”字段中为其指定一个唯一名称,例如“SelectBtn”。对“progress”资产做同样的事情(只有一个不同的类名,比如“ProgressBar”)。转到 Flash 发布设置,然后在 Flash 选项卡上选择“导出 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。如果您想保持在 Flash 中的定位,只需选择舞台上的所有元素并按 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
}
于 2012-08-21T17:33:15.413 回答