必赢亚洲手机app下载


细说linux挂载——mount,及其余……

加急管理文件766net必赢亚洲手机版

详细解释766net必赢亚洲手机版

相似而言,用户不愿意web浏览器中运作的应用程序访问电脑硬盘里的文本。然则,随着基于浏览器(browser-based)的富因特网应用程序的充实,一些应用程序火急要求访问用户所选取的文件,或者将文件保留到用户所选择的地方。支持FileReference类的Adobe
Flash
Player版本允许ActionScript应用程序将用户所选取的公文上流传服务器,或者从服务器下载文件到用户所选择的职位。然则,在Flash
Player
10事先的本子中,除非你先将数据传送到服务器,否则不能够在应用程序中访问文件内容,也不知所可把应用程序的数目保存到地点的文本。

从Flash Player
10方始,FileReference类附加地可以打开用户挑选的当地文件以及保存数据到用户选用的岗位,而无需与服务器之间的文本往返。
对于可以加载本地文件以供役使,或者可以保留数据到本地文件的富因特网应用程序来说,那将大大地简化开发的经过。
为了安全起见,在Flash Player
中运作的ActionScript代码不可能平昔地访问当地文件系统来打开或保存文件。
应用在这一Quick
Start(急忙入门)里介绍的技能,那个代码平时会引出一个对话框,提醒用户挑选一个文件用于打开或者指定一个岗位来保存文件。
别的,即便用户已经挑选了一个要开拓文件,但无能为力确定文件所在的本地路径。
唯有文件的名字是可用的。

解释示例程序

图1所示的Crop
Rectangle示例程序体现了何等从用户(在友好电脑上)拔取的文本中加载数据,怎么着在应用程序中利用万分文件,以及如何在用户电脑上开创和保留数据到一个文本。
该应用程序的办事流程如下:

  1. 当用户点击一个按钮,应用程序便会唤醒用户从电脑中精选一个图像文件(JPEG、PNG、或GIF)。
  2. 图像会在显示屏上显得,并陪同有一个裁剪图像的界面(选拔保留图形上的一个矩形区域)。
    用户仍能在三种输出格式中拔取一种:JPEG 或 PNG。
  3. 当选定了所需的剪裁区域和出口的格式之后,用户单击一个按钮,会被唤起指定一个封存文件的职位。
    一旦用户接纳了目的文件夹,该文件便会被保存,并且显示一个”save
    complete(保存已毕)”的画面。

以身作则应用程序蕴含以下文件:

  • Crop.fla:Adobe
    Flash的主应用程序文件。该公文拥有用于定义半数以上用户界面的印象剪辑符号。应用程序的代码在暌违的ActionScript类文件之中。
  • Crop.as:主程序的源代码。这些类是FLIt的文档类,它富含有在局部用户界面之间转移的代码。它还含有了程序真的用于拍卖的代码——加载本地的图像文件、抓取图像所选部分的快照,以及保存数据到地点文件。
  • LoadStateView.as, ProgressStateVie>w.as, CropStateView.as,
    SaveCompleteStateView.as
    :蕴涵了应用程序每个重点景况的用户界面代码。每个类对应于Crop.fla库里的印象剪辑符号(movie
    clip
    symbol)。(例如,LoadStateView.as定义LoadStateView类,与库符号”LoadStateView”相呼应。)
  • CropControl.as:包涵了一个零件的代码,该器件提供了在选拔所保存图像时的用户界面。
  • BitString.as, JPGEncoder.as,
    PNGEncoder.as(在文件夹”com.adobe.images”)
    :ActionScript类负责把BitmapData
    object(位图数据对象)中的图像数据转载为一个ByteArray(字节数组),这几个ByteArray蕴涵了特定图像文件格式(JPEG
    或 PNG)的图像数据。那一个类来自开源的as3corelib
    project
    ,并根据New BSD
    license
    来展开公布。对于Flex来说,在mx.graphics.codec开发包里这些可以提供相同效劳的类在Flex
    SDK中也是可用的。
  • .flashProjectProperties:用于在Flash CS4 Project panel(Flash
    CS4 Project仪表板)中打开程序的Flash CS4项目文件。

为了测试这一个程序,您可以在浏览器中品尝运用该程序(见图1),或者经过编译源代码来运作这一个示例。

 

图1. Crop Rectangle(矩形裁剪)应用程序。
(那实在是一个能在你的浏览器里运行的应用程序,而不是一个截屏。)

注意:那是一个由于指点指标而提供的言传身教程序。

略知一二代码

Crop Rectangle示例使用FileReference对象来开辟和封存用户电脑上的文书。
它拔取Loader 类和Bitmap类在屏幕上突显图像。
它使用BitmapData类和ByteArray类来裁剪出图像的一有些,并将它编码成多少,使其可以保存到用户电脑中。

注意:示范中也应用了其余的类,紧假如显得对象和用户界面的组件,那几个类定义了应用程序的用户界面。那里的Quick
Start不会对用户界面的享有效能或程序的其它一些开展描述。

以下是先后打开、处理和保留文件的步骤概述:

  1. 开拓用户挑选的一个当地文件
    • 调用FileReference.browse()办法提示用户采取文件。当拔取停止,FileReference对象会分派一个增选事件。
    • FileReference.load()把所选的文书加载到一个变量里。当加载完成,它会分派一个形成事件。文件数量在FileReference对象的数据属性中可用。
  2. 走访已加载的数码(在显示屏上出示图像)
    • 调用Loader.loadBytes()办法把来自FileReference.data属性的图像文件数据转发为一个Bitmap实例。当倒车已毕,Loader
      的contentLoaderInfo 属性中的LoaderInfo对象会分派一个到位事件。
    • 图像会突显在显示屏上,用户可以拔取一个矩形区域用来裁剪输出。
  3. 捕捉并编码所裁剪的图像数据
    • 用户所选矩形中的像素快照会被BitmapData.draw()办法捕捉,并保留在BitmapData对象中。
    • 使用JPGEncoder(JPG编码)或PNGEncoder(PNG解码)类,把BitmapData对象转化为涵盖JPEG
      或 PNG 数据的ByteArray(字节数组)。
  4. 将文件保留到用户所挑选的地方
    • FileReference.save()情势的调用会提醒用户选取一个保存地方。需保存的数量以参数的样式传递到save()方法。当save()操作为止,FileReference对象会分派一个成功事件。若是操作进程存在破绽百出,它则会分派一个ioError事件。

在这篇Quick Start余下部分中,会对那个手续作出更详细的说明。

打开用户选拔的一个本土文件

Crop
Rectangle应用程序使用FileReference对象来代表用户所挑选和加载的公文。在本示例中,这么些代码位于Crop类之中。加载文件的进度包含八个步骤:使用FileReference.browse()办法提醒用户挑选一个文本,以及使用FileReference.open()情势把公文数量加载到Flash
Player。每个义务都会动用事件来通告你该职务是还是不是做到。由此,在源码中,这一经过分别在好多少个情势中。

首先个是startLoadingFile()办法。在先后的率先个镜头中,当用户点击按钮时,便会调用这一个法子。然后,它提示用户拔取打开一个文书。以下是startLoadingFile()方法的源码:

private var _loadFile:FileReference; private function startLoadingFile():void { _loadFile = new FileReference(); _loadFile.addEventListener(Event.SELECT, selectHandler); var fileFilter:FileFilter = new FileFilter("Images: (*.jpeg, *.jpg, *.gif, *.png)", "*.jpeg; *.jpg; *.gif; *.png"); _loadFile.browse([fileFilter]); }

用来选取和开辟文件的FileReference对象是一个命名为_loadFile的民用实例变量(private
instance
variable)。因为_loadFile会在Crop类的相继艺术中选取,所以它必须在漫天类中都可用,于是采取了那几个实例变量。

startLoadingFile()方式处理了以下工作:

  1. 将_loadFile实例化为一个FileReference对象。
  2. 将名为selectHandler()的主意注册为选用事件的监听器(listener)。在用户被升迁拔取一个文件,并曾经接纳为止之后,那么些选项事件被分摊(打消对话框的话不会分派这么些事件)。
  3. 成立一个命名为fileFilter的FileFilter对象。FileFilter对象指定用户能够拔取的文件类型集合;在这一个示例中,可选文件的扩展名指定为.jpeg、
    .jpg、.gif和
    .png。它还定义了产出在对话框中的文件类型的叙说:”Images: (*.jpeg,
    *.jpg, *.gif, *.png)”。
  4. 调用FileReference对象的browse()方法。该browse()主意会令Flash
    Player突显一个同意用户选拔打开一个文书的对话框。

当用户挑选了一个文件并在对话框中点击Open按钮之后,FileReference对象会分派出拔取事件,并调用selectHandler()方法。selectHandler()方式将推行下一个手续,file-loading(文件加载)进程:把所选的文本加载到Flash
Player的内存:

private function selectHandler(event:Event):void { _loadFile.removeEventListener(Event.SELECT, selectHandler); // ... display the progress bar for the loading operation ... _loadFile.addEventListener(Event.COMPLETE, loadCompleteHandler); _loadFile.load(); }

  1. 铲除自身作为精选事件的监听器(listener)。
  2. 显示加载操作的进程条(这么些代码没有呈现在列表中)。
  3. 将名为loadCompleteHandler()的法门注册为_loadFile对象的姣好事件的监听器(listener)。当FileReference完成把文件数量从硬盘读取到内存之后,它会分派一个达成事件。
  4. 调用FileReference对象的load()方法。load()方法会启动把文件读取到代码可以访问的内存之中的长河。

当加载文件的操作达成时,_loadFile会指派达成事件,并调用命名为loadCompleteHandler()的不二法门。该措施的法力将在下一节介绍。

做客已加载的的数量(在显示器上显得的图像)

当您使用FileReference对象的load()主意从文件加载数据的时候,文件的内容会被加载到FileReference对象的数量属性(data
property)。FileReference.data特性是一个包罗文件原始二进制数据的ByteArray(字节数组)对象。您使用
ByteArray类的法门来读取文件的始末,并在你的次序中使用它们。例如,如果文件来自一个文字处理的应用程序,您或许希望把文件提取出来并突显到显示屏上。您依然足以创立自定义的文件格式,并且在你的先后里加载和保留这种格式的文书。

对于Crop Rectangle应用程序,加载的公文包蕴图像数据,格式为JPEG、 PNG或
GIF。在那样的次序中,大家不想读文件数量中或多或少部分的始末;大家只想行使那么些能把图像显示到显示器的数码。为了把原有的图像数据突显到屏幕上,您要动用
Loader类的loadBytes()方式。您把数据(以ByteArray(字节数组)格式)传递到Loader对象,然后Loader对象会使用这个数据来创建一个ActionScript展现对象。它所成立的突显对象的门类是根据传递给它的数据类型。在那种场地下,由于应用程序只同意用户挑选图像文件,所以Loader从那些图像文件数据创造一个Bitmap
object(位图对象)。结果与您使用Loader从一个web服务器加载图像文件完全一致。与那份Quick
Start中描述过的别样进度同样,Loader对象的loadBytes()措施毫无即时地创立一个临时突显对象。作为替代的点子,当Loader完毕把数量转载到体现对象的时候,与Loader对象对应的LoaderInfo对象会分派一个完成事件。在那时候,您就能明了展现对象足以被添加到显示列表了。

正如以上章节所讲述的那样,当leReference对象完毕把公文从硬盘加载到内存的时候,它会分派落成事件。在Crop
Rectangle应用程序中,名为_loadFile的FileReference对象会加载用户所选拔的图像文件。当加载成功时,loadCompleteHandler()格局会被调用,因为它被注册为达成事件的监听器。

然后loadCompleteHandler()主意初步把图像彰显到屏幕这一历程:

private function loadCompleteHandler(event:Event):void { _loadFile.removeEventListener(Event.COMPLETE, loadCompleteHandler); var loader:Loader = new Loader(); // ... display the progress bar for converting the image data to a display object ... loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadBytesHandler); loader.loadBytes(_loadFile.data); }

loadCompleteHandler()处理以下的事务:

  1. 移除自身作为_loadFile对象的姣好事件的监听器(listener)。
  2. 创立一个命名为loader的Loader实例。
  3. 来得一个进程条来呈现Loader对象的loadBytes()艺术的快慢(没有显示出来)。
  4. loadBytesHandler()办法注册为当Loader达成创设突显对象的时候(尤其地,当Loader对象的contentLoaderInfo属性的LoaderInfo对象分派出一个成功事件的时候)被调用。
  5. 调用Loader对象的loadBytes()办法,传递包涵已加载文件内容的ByteArray(_loadFile.data属性)给它。

当Loader对象的loadBytes()操作完毕的时候,contentLoaderInfo属性的LoaderInfo对象会分派一个完了事件。在那些示例中,它会调用loadBytesHandler()方法。下面是loadBytesHandler()主意的源码:

private function loadBytesHandler(event:Event):void { var loaderInfo:LoaderInfo = (event.target as LoaderInfo); loaderInfo.removeEventListener(Event.COMPLETE, loadBytesHandler); showImage(loaderInfo.content); }

loadBytesHandler()格局处理两件事情。首先,它移除自身作为LoaderInfo对象的达成事件的监听器。接着,它调用一个命名为showImage()的措施,把新成立的(newly-created)突显对象(loaderInfo.content特性)传递给它。

showImage()措施太大了,而不合乎包罗在那边,但它的干活大概了本土就是呈现对象的操作义务。它成立一个命名为_imageContainer的七喜来作为图像的器皿。它装载了从所加载图像文件创造的显得对象,并经过调用_imageContainer对象的addChild()措施把它添加到显示列表(display
list)。如果有必不可少,它还会调动图片的分寸,使图片适应于程序的可视区域,并且把它放置在屏幕主题。

捕捉并编码所裁剪的图像数据

假使用户选定了图像保留的有些和图像的出口格式(JPEG 或
PNG),然后就可以点击”Save image”按钮。
在那一个时候,应用程序需要为保存剪裁图像到用户电脑做几件备选干活:

  1. 赢得定义图像保留部分的矩形坐标。
  2. 截取矩形框里的像素快照,并把它保存到一个BitmapData对象。
  3. 把BitmapData对象转化为JPEG或PNG图像数据。

这几个手续与随着章节中讲述的其余步骤一样,会油可是生在Crop类的cropAndSave()措施中。当用户点击Save
image按钮的时候,这一个主意会被调用。

取得剪裁矩形的坐标

首先,代码中用来取得图像选定区域对应矩形坐标的有些,使用了如下这一行代码:

var cropRect:Rectangle = _cropStateView.getCropRect();

取名为cropRectangle的
Rectangle对象涵盖了选定图像区域的坐标。Rectangle是透过调用_cropStateView对象的getCropRect()艺术来取得的。_cropStateView对象是CropStateView类的一个实例。这几个类定义了应用程序在那一个时候的用户界面代码。那篇Quick
Start没有描述怎么着总括Rectangle对象的底细;要充裕注意的是,现在cropRect对象是可用的,并且它包涵有选定区域的坐标。

封存剪裁图像像素的快照到BitmapData对象

下一步,创造一个命名为imageData的BitmapData对象,使用的代码如下:

var imageData:BitmapData = new BitmapData(cropRect.width, cropRect.height);

命名为imageData的BitmapData对象将会含有剪裁图像的像素数量。成立的BitmapData对象中的宽度和冲天与
cropRect的Rectangle对象中的宽度和冲天相匹配。由此,当像素复制到imageData的时候,唯有选定矩形尺寸区域的多少被复制。

下一行代码将开创一个命名为shiftOrigin的Matrix对象。那么些目标定义了原图的义务,它会化为复制到名为imageData的BitmapData对象的区域的左上角。用以下代码创设那么些目的:

var shiftOrigin:Matrix = new Matrix(); shiftOrigin.translate(-cropRect.x, -cropRect.y);

Matrix对象的translate()格局引起用于像素复制操作的源图像转化为指定数量的像素。(显示器上的确的显示对象是不会活动的——只是展现对象概念上的职位相对于像素数据快照的开始坐标。)请留意,传递到translate()措施的参数是负数。概念上,您可以把BitmapData对象想象为一个相机,它拍下像素的快照。然则,因为照相机的岗位是一定的,所以被照的图像须要活动以便捕捉指定的剪裁区域。图像必须依照Rectangle的x坐标和y坐标来进步和左移相同的多少,以便被选定的矩形的左上角与定义上的”照相机”左上角对齐。因而,translate()的参数是负数。

跟着,通过调用BitmapData对象的draw()情势,把Stage上的图像像素复制到它其中:

imageData.draw(_imageContainer, shiftOrigin);

draw()主意把突显对象的像素复制到BitmapData对象。传递给draw()艺术的参数如下:

  1. _imageContainer:装载着Stage上的已加载图像的七喜(源突显对象)。
  2. shiftOrigin:如上所述,Matrix对象指定了像素快照的上马地点。

把BitmapData对象转化为JPEG或PNG数据。

名为imageData的BitmapData对象中有选定矩形的像素数量快照,那多少个图像数据足以转化成适当的图像格式。在Crop
Rectangle应用程序示例中,有二种可选的输出格式:JPEG 和
PNG。以下代码确定了对应于那两种格式的按钮之中的哪一个会被采取。然后,那些代码会选用方便的编码器来创建一个富含有转会为指定格式图像数据的
ByteArray(encodedImage(编码图像))。

var encodedImage:ByteArray; if (_cropStateView.outputFormat == CropStateView.JPEG) { var jpgEncoder:JPGEncoder = new JPGEncoder(85); encodedImage = jpgEncoder.encode(imageData); } else { encodedImage = PNGEncoder.encode(imageData); }

“_cropStateView变量是CropStateView类的一个实例,包括了这部分程序的用户界面代码。它有一个名为outputFormat的性质,该属性值提醒了所选拔的出口格式选项按钮。CropStateView类也定义了四个常量,CropStateView.JPEG 和CropStateView.PNG,代表outputFormat质量可能出现的三个值。

JPGEncoder类和PNGEncoder类可以把BitmapData对象分别转化为带有那三种格式图像数据的ByteArray对象。那些类来自开源的as3corelib花色,它们是在New
BSD
执照下公布的。

将文件保留到用户所挑选的地点

眼前的章节描述了什么样将用户选定的矩形剪裁区域捕捉到BitmapData对象之中,并把它转发成名为encodedImage的ByteArray对象。下一个义务就是要把ByteArray数据以文件的方式保留到用户电脑里。与开拓文件一律,保存文件也是一个多步骤的操作,通过事件来提醒操作步骤是还是不是做到。我们一而再来谈谈cropAndSave()方法,这一个代码会在保留对话框中生成一个提出的文本名:

var fileNameRegExp:RegExp = /^(?P<fileName>.*)\..*$/; var outputFileName:String = fileNameRegExp.exec(_loadFile.name).fileName + "_crop"; if (_cropStateView.outputFormat == CropStateView.JPEG) { outputFileName += ".jpg"; } else { outputFileName += ".png"; }

在此地,大家旨在默许的文本名是源文件名(不含扩充名),加上文字”_crop”,再添加与所选文件格式一致的公文增加名。那个代码应用规则表明式对象(fileNameRegExp)来获得不含扩大名的源文件名称。那几个规则表达式对象的exec()方法会在其余传递进入的参数上执行规则表明式模型。在那些代码中,_loadFile.name属性会被传送到exec()方法。请记住,_loadFile是一个FileReference
对象,对应于用户在初步时所打开的源图像文件。FileReference对象的name属性包括了所选文件的姓名,包括有文件增加名。因为规则表明式形式应用了一个名为fileName的named
capturing
group(命名捕捉组),所以当exec()艺术被调用的时候,再次来到的结果中有一个名为fileName的特性,包蕴了不带扩大名的文件名。字符串
“_crop”会一而再到重临结果的末尾,然后一切文件名会保存到outputFileName变量之中。

余下的办事就是要加上与用户选定的出口文件类型相适应的文本增加名。条件语句会检查选用了哪一种输出格式,然后添加适量的壮大名(”.jpg”或
“.png”)到outputFileName。

继而,代码初叶开展封存JPEG或PNG图像数据到文件的操作,如下所示:

var saveFile:FileReference = new FileReference(); saveFile.addEventListener(Event.COMPLETE, saveCompleteHandler); saveFile.addEventListener(IOErrorEvent.IO_ERROR, saveIOErrorHandler); saveFile.save(encodedImage, outputFileName);

列出的代码处理以下三件工作:

  1. 它新建一个名为saveFile的FileReference对象,用于执行保存操作。
  2. 它为FileReference对象saveFile所分派出的例外事件注册监听器方法:
    • saveCompleteHandler是到位事件的一个监听器,当用户拔取了保留目的,并且Flash
      Player达成把文件写进硬盘的操作之后,那么些达成事件会被分派。
    • saveIOErrorHandler方法是ioError事件的一个监听器, 当Flash
      Player在所选地方保存文件发出错误时,这几个事件会被分摊。
  3. 它调用名为saveFile的FileReference对象中的save方法。这个save方法会打开一个会话框来提醒用户选择保存文件的职位。它接受七个参数。对象传递的率先个参数是encodedImage——那么些ByteArray包罗有即将保存到文件的多少(在那几个例子,是JPEG

    PNG图像数据)。第三个传递的参数是outputFileName变量。这几个值会在保留对话框中作为提出文件名。即使用户能够修改文件名,但那是指定一个推介文本增加名的唯一形式,由此用它来提供默许名称是有补益的。

即使用户没有收回保存操作,名为saveFile的FileReference对象便开始把多长史存到硬盘上。在那么些示例种,因为传递了一个ByteArray到save主意,所以这么些ByteArray的内容会被一向保存到硬盘上。倘若传递到save主意的是一个分歧连串的对象,那么写进文件的数目就会是见仁见智的格式。例如,包括有String(字符串)或XML值的String(字符串)或XML对象作为一个文件文件写入。所有文件格式选项的列表,请参考ActionScript
3.0 Reference for the Adobe Flash
Platform中的FileReference.save所列。

当文件被成功保存之后,FileReference对象会分派一个到位事件。在事先的代码中,saveCompleteHandler艺术被登记为这一个事件的监听器,所以当文件成功保存时,FileReference对象会调用这一个艺术。saveCompleteHandler措施的代码没有包罗在那篇Quick
Start之中。它唯有执行了clean-up(清除)操作(移除事件的监听器),并引起用户界面突显出文件已经保存的音信。

一旦在FileReference对象尝试保存文件的时候发出错误,它会分派出一个ioError事件。在那种情景下,FileReference对象会调用saveIOErrorHandler艺术。那么些格局只有会清监护人件的监听器,并突显错误音信。

 

 

作品来源:
 http://www.adobe.com/cn/devnet/flash/quickstart/filereference\_class\_as3.html

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图