Actionscript 3 使用browse()和选择文件后未触发flash filereference选择事件
这是我第一次使用动作脚本。我见过一个flash程序员使用它。因为我知道javascript,所以我能够在动作脚本中工作 我正在为我的php项目创建一个文件上传组件。 到目前为止,我已经使用FileReference api高级显示了文件对话框。 select事件没有为我触发。我没有得到任何错误Actionscript 3 使用browse()和选择文件后未触发flash filereference选择事件,actionscript-3,file-upload,Actionscript 3,File Upload,这是我第一次使用动作脚本。我见过一个flash程序员使用它。因为我知道javascript,所以我能够在动作脚本中工作 我正在为我的php项目创建一个文件上传组件。 到目前为止,我已经使用FileReference api高级显示了文件对话框。 select事件没有为我触发。我没有得到任何错误 import fl.controls.Button; import flash.events.* import flash.net.FileReference var fr:FileReference
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);
}
文档中说,文件引用只能在鼠标或键盘之类的事件中调用
上面的代码中我遗漏了什么?您发布的示例适用于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事件
跟踪(“选定”)的输出代码>由于您的单击事件和选择事件将同时发生,因此您的按钮标签不会出现更改。我创建了一个单帧fla,并将您的代码复制到我的fla中(删除了代码中的新按钮()部分,并从组件面板中添加了一个按钮,并将其命名为myButton),所有操作均按预期进行!我今天面临的另一个问题是我使用了跟踪(Capabilities.version)。。。输出窗口正在使用版本持续不停地填充。。。这个脚本像循环电影控件一样一次又一次地倒带。我在myButton.lable行下面包含了代码。听起来时间线有很多帧,这会导致代码被重复调用。确保时间线只有一个帧。是。确切地我正要提到那件事。现在它正在工作。