记一次js与flash配合读取本地文件内容到页面中


很久没写文章了,主要是因为不知道写些什么(自己写的东西太肤浅了)和没有闲余的心情(自己懒)。然后几个月前升级了nodejs到4.x版本,好几个node模块用不了,网站也出现了几个小问题,直到昨天才发现处理了。

吐槽一下

上面是一些题外话。本文也没什么技术可说的,在说主题前,我还想吐槽一下,自己没写过flash,都是通过百度然后再修修改改才得以实现的,本来是想找已离职同事(flash程序员)帮忙写的,结果不是说忙就是说没做过这样的功能,不知道是不想帮还是……

算了,不说了,直接上代码:

AS3代码:

import flash.events.*;
import flash.net.FileReference;
import flash.net.FileFilter;
import flash.external.ExternalInterface;

var fileRef:FileReference;

this.stage.addEventListener(MouseEvent.CLICK,clickAction);

function clickAction(evt:Event):void
{
    fileRef = new FileReference();
    fileRef.addEventListener(Event.SELECT, onFileSelected);
    fileRef.addEventListener(Event.CANCEL, onCancel);
    fileRef.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
    fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR,onSecurityError);
    var textTypeFilter:FileFilter = new FileFilter("请选择文本文件 (*.txt)","*.txt");
    fileRef.browse([textTypeFilter]);
}

function onFileSelected(evt:Event):void
{
    fileRef.addEventListener(ProgressEvent.PROGRESS, onProgress);
    fileRef.addEventListener(Event.COMPLETE, onComplete);
    fileRef.load();
}

function onProgress(evt:ProgressEvent):void
{
    //trace("Loaded " + evt.bytesLoaded + " of " + evt.bytesTotal + " bytes.");
    ExternalInterface.call('getFileContent','loading','正在读取文件中...'+(evt.bytesLoaded/evt.bytesTotal*100)+'%'); /// as调用js的方法
}
function onComplete(evt:Event):void
{
    //trace("File was successfully loaded.");
    //trace(fileRef.data);
    //ExternalInterface.addCallback(); /// 提供给js调用的as方法
    ExternalInterface.call('getFileContent','complete',fileRef.data.toString()); /// as调用js的方法
}
function onIOError(evt:IOErrorEvent):void
{
    //trace("There was an IO Error.");
    ExternalInterface.call('getFileContent','error',"读取文件失败"); /// as调用js的方法
}
function onSecurityError(evt:Event):void
{
    //trace("There was a security error.");
    ExternalInterface.call('getFileContent','error',"由于浏览器安全限制无法读取文件"); /// as调用js的方法
}
function onCancel(evt:Event):void
{
    //trace("The browse request was canceled by the user.");
}

js代码:

// 供flash调用
function getFileContent(){
        console.log(arguments)
}

代码就这么多了。本来是想通过js+服务端实现,但需求没说让移动端兼容,所以用flash可以减少服务端的请求而且读取文件内容的速度也快。

虽然flash是一个过时的东西,还是记录在这里吧,以便以后会用。


8 responses on “记一次js与flash配合读取本地文件内容到页面中

  1. 舌尖2确实感觉和舌尖1不太一样,多了一些所谓的现实生活在里面,初看是确实不太习惯,看完一集后感觉还是很不错的,毕竟虽然对很多的看着好吃的流口水,但是确实我做不出来,对于一道食物为什么是这个吃法我还是有兴趣知道的,毕竟虽然都是吃,不过不也分了八大菜系嘛。

  2. 舌尖2确实感觉和舌尖1不太一样,多了一些所谓的现实生活在里面,初看是确实不太习惯,看完一集后感觉还是很不错的,毕竟虽然对很多的看着好吃的流口水,但是确实我做不出来,对于一道食物为什么是这个吃法我还是有兴趣知道的,毕竟虽然都是吃,不过不也分了八大菜系嘛。

  3. 舌尖2确实感觉和舌尖1不太一样,多了一些所谓的现实生活在里面,初看是确实不太习惯,看完一集后感觉还是很不错的,毕竟虽然对很多的看着好吃的流口水,但是确实我做不出来,对于一道食物为什么是这个吃法我还是有兴趣知道的,毕竟虽然都是吃,不过不也分了八大菜系嘛。

  4. 舌尖2确实感觉和舌尖1不太一样,多了一些所谓的现实生活在里面,初看是确实不太习惯,看完一集后感觉还是很不错的,毕竟虽然对很多的看着好吃的流口水,但是确实我做不出来,对于一道食物为什么是这个吃法我还是有兴趣知道的,毕竟虽然都是吃,不过不也分了八大菜系嘛。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>