使用browse()后和选择文件后,flash filereference select事件未触发

时间:2011-08-11 13:48:27

标签: actionscript-3 file-upload

这是我第一次使用动作脚本。我见过一个flash程序员正在使用它。因为我知道javascript我能够在动作脚本中工作。

我正在为我的php项目创建一个文件上传组件。 到目前为止,我已经使用FileReference api高级显示文件对话框。 选择事件不会为我开火。我没有得到任何错误。

import fl.controls.Button;
import flash.events.*
import flash.net.FileReference

var fr:FileReference = new FileReference();
fr.addEventListener(Event.SELECT,sico);
var myButton:Button = new Button();
addChild(myButton); 

myButton.label = "Click Me";

myButton.addEventListener(MouseEvent.CLICK, function(e:MouseEvent)
{
    myButton.label  = "clicked";
    fr.browse();
    trace('clicked');
})

function sico(event:Event):void
{
//var file:FileReference = FileReference(e.target);
myButton.label = "selected";
trace('selected');
//trace("progressHandler: name=" + file.name + " bytesLoaded=" + e.bytesLoaded + " bytesTotal=" + e.bytesTotal);

}                                           

文档说文件引用只能在鼠标或键盘之类的事件中调用。

我在上面的代码中缺少什么?

2 个答案:

答案 0 :(得分:1)

您发布的示例适用于Flash CS5和Flash Player 10.3,这意味着问题不在于代码。

该问题的其他可能原因可能是:

  • 您使用的Flash Player版本太旧了。 FileReference需要Flash Player 9或更高版本。右键单击Flash Player或使用trace(Capabilities.version)查看版本号。
  • 应用程序的另一部分是使用FileReference方法(例如:FileReference.browse(),FileReference.upload(),FileReference.download(),FileReference.load(),FileReference.save())。 Flash Player 10+一次只允许一个文件操作。
  • 如果您使用的是Mac,那么FileReference可能只会在浏览器内部运行SWF时调度SELECT事件。

答案 1 :(得分:0)

IT就像用户所说:lukevanin在他的回答的评论部分。我也发现了同样的事情。问题是我在时间轴上有很多帧。因为当我在F9之间切换时,我是动作脚本的新手,我正在尝试F5所以它创建了帧,并且它在它之间不断循环。