何涛

最近更新

Flex专栏

Flex的多国语言支持

发布者:何涛,发布时间:2009-5-18 下午11:39

下面共5步简单的介绍了这个操作:

1.在\sdks\3.3.0\frameworks\locale目录下建立zh_TW和zh_CN目录

2.在FLEX项目的根目录下创建resources\locale\en_US和 resources\locale\zh_CN目录

3.在FLEX项目中

右键—>Properties—>Flex Build Path->Source path—>Add Folder
在弹出的输入框中输入 resources\locale\{locale}

4.在FLEX项目中

右键—>Properties—>Flex Compiler
在Additional compiler arguments中输入 -locale en_US zh_CN

5.源码

源码

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" > 
    <mx:Script>      
    <![CDATA[           
    import mx.resources.ResourceManager;        

    private function changeLocale(locale:String):void{   
        // 修改语言                     
        resourceManager.localeChain=[locale];          
    }      
    ]]>  
    </mx:Script> 

    <mx:Metadata>
    [ResourceBundle("admin")]
    </mx:Metadata>

    <mx:ApplicationControlBar width="400">           
        <mx:Label text="Content"  width="100%"/>       
        <mx:Button label="eng" click="changeLocale('en_US')" />      
        <mx:Button label="ch" click="changeLocale('zh_CN')" />  
    </mx:ApplicationControlBar>

    <mx:Text text="{resourceManager.getString('admin','admin.name')}"  width="400" height="240"/>
</mx:Application>

Flex保存文件(FileReference.save)

发布者:何涛,发布时间:2009-5-14 下午9:22   [ 更新时间:2009-5-14 下午9:26 ]

这个方法是flash10新增的,详细如下:

save()方法 
public function save(data:*, defaultFileName:String = null):void
语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

打开一个对话框,允许用户将文件保存到本地文件系统。虽然 Flash Player 没有限制可上载、下载、加载或保存的文件的大小,但是播放器正式支持的文件大小最大为 100 MB。

save() 方法首先打开一个操作系统对话框,让用户输入文件名并在本地计算机上选择用于保存文件的位置。当用户选择了位置并确认保存操作时(例如通过单击“保存”),保存过程即会开始。侦听器接收事件来指示保存操作的进度、成功或失败。为了在调用 save() 后确定对话框和保存操作的状态,ActionScript 代码必须对 cancelopenprogresscomplete 等事件进行侦听。

FileReference.upload()FileReference.download()FileReference.load()FileReference.save() 函数均不分块。这些函数在调用之后即返回,而不会等待文件传输完成。此外,如果 FileReference 对象离开作用域,则该对象中尚未完成的任何事务将在离开作用域时被取消。只要希望上载、下载、加载或保存能继续,就应确保将 FileReference 对象保留在作用域中。

在成功保存文件之后,将使用本地文件的属性填充 FileReference 对象的属性。如果保存成功,将调度 complete 事件。

每次只能执行一个 browse()save() 会话(因为每次只能调用一个对话框)。

在 Flash Player 中,只有在响应用户事件(例如,在鼠标单击或按键事件的事件处理函数中)时才能成功调用此方法。否则,调用此方法将导致 Flash Player 引发 Error 异常。此限制不适用于应用程序沙箱中的 AIR 内容。

参数


data:* — 要保存的数据。数据可以采用几种格式之一,并将进行适当处理:
  • 如果值为 null,则应用程序将引发 ArgumentError 异常。
  • 如果值为 String,则将其保存为 UTF-8 文本文件。
  • 如果值为 XML,则会以 XML 格式将其写入到文本文件,并保留所有格式设置。
  • 如果值为 ByteArray 对象,则会将其逐字写入到数据文件。
  • 如果值并非以上任何一种,则 save() 方法将调用对象的 toString() 方法,将数据转换为字符串,然后将数据保存为文本文件。如果该操作失败,则应用程序将引发 ArgumentError 异常。
 

defaultFileName:String (default = null) — 对话框中显示的要保存文件的默认文件名。此字符串不能包含以下字符:/ \ : * ? " < > | %

如果 File 对象调用此方法,则文件名将为 File 对象所引用文件的名称。(AIR File 类扩展了 FileReference 类。)


事件

open:Event — 当下载操作开始时调度。
 

progress:ProgressEvent — 在文件下载操作期间进行定期调度。
 

complete:Event — 当文件下载操作成功完成时调度。
 

cancel:Event — 当用户取消对话框时调度。
 

select:Event — 当用户从对话框中选择要下载的文件时调度。
 

ioError:IOErrorEvent — 读取或传输文件期间发生输入/输出错误时调度。

引发

IllegalOperationError — 在以下情况下引发:1) 另一个浏览会话正在进行中;每次仅能执行一个文件浏览会话。2) 要下载的文件的名称中包含禁止使用的字符。3) 用户 mms.cfg 文件中的某个设置禁止此操作。
 

ArgumentError — 如果 data 的类型不是 ByteArray,并且不具有 toString() 方法,则将引发异常。如果 data 的类型不是 XML,并且不具有 toXMLString() 方法,则将引发异常。
 

Error — 为了响应用户动作(如鼠标事件或按键事件),将不会调用此方法。
 

MemoryError — 如果 Flash Player 无法为该文件分配内存,则可能会发生此错误。文件可能太大,或者可用的内存可能太小。

另请参见


Flex3截屏最简单的方法

发布者:何涛,发布时间:2009-5-14 下午8:02   [ 更新时间:2009-5-14 下午8:10 ]

用ImageSnapshot里的静态方法可以轻松的取到,下面是例子,这个例子我把它编成了base64 的代码,在flash端得到这个代码后可以轻松的通过各种方法发给php等服务端来保存成自己的图片。

as源码

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
    <mx:Script>
        <![CDATA[
       
       
        import mx.graphics.ImageSnapshot;
        import mx.core.UIComponent;
        import mx.controls.Alert;
       
        public function takeSnapshot(target:UIComponent) :void
        {
            var shot:ImageSnapshot = ImageSnapshot.captureImage(target);
            Alert.show(ImageSnapshot.encodeImageAsBase64(shot));
        }
       
       
        ]]>
       
    </mx:Script>

    <mx:Button click="takeSnapshot(targetPanel)" label="Save Image" x="10" y="100"/>
   
    <mx:Panel id="targetPanel" layout="vertical">
    <mx:Label text="Hello World"  y="9"/>
    <mx:Image  source="http://www.google.cn/images/nav_logo4.png"/>
    </mx:Panel>

</mx:Application>


这是php例子,代码更简单。

PHP代码

<?php
$base64_string = "";
file_put_contents("test_1.png",base64_decode($base64_string));
?>

Flex 2 Style Explorer & Flex 2 Filter Explorer

发布者:何涛,发布时间:2009-5-14 上午12:35

Flex-复制粘贴的操作

发布者:何涛,发布时间:2009-5-14 上午12:08   [ 更新时间:2009-5-14 上午12:22 ]

一、在网页中用如下的方法:

1.获取粘贴板内容
System.getClipboard();

2.设置粘贴板内容,其实就是拷贝到粘贴板
System.setetClipboard(string:String);

二、在桌面环境下用如下方法:

1.获取粘贴板内容
flash.desktop.Clipboard.generalClipboard.getData();

2.设置粘贴板内容,其实就是拷贝到粘贴板

flash.desktop.Clipboard.generalClipboard.setData();

测试代码

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
    layout="vertical" fontSize="14"
      verticalAlign="middle"> 
 
<mx:Script> 
    <![CDATA[
        import mx.controls.Alert;
 
        private function button_click():void {
            System.setClipboard(richTextEditor.text);
            Alert.show("拷贝成功");
        }
    ]]> 
</mx:Script> 
 
<mx:ApplicationControlBar dock="true"> 
    <mx:Button id="button" 
            label="拷贝到粘贴板" 
            toolTip="点击这个按钮就拷贝内容到粘贴板" 
            click="button_click();" /> 
</mx:ApplicationControlBar> 
 
<mx:RichTextEditor id="richTextEditor" 
        text="测试内容。。。" 
        width="100%" 
        height="100%" />  
 
</mx:Application> 

‹ 上一页    1-5/5    下一页 ›