包 | spark.formatters |
类 | public class CurrencyFormatter |
继承 | CurrencyFormatter NumberFormatterBase GlobalizationBase AdvancedStyleClient EventDispatcher Object |
实现 | IFormatter |
语言版本: | ActionScript 3.0 |
产品版本: | Flex 4.5 |
运行时版本: | Flash Player 10.1, AIR 2.5 |
此类是包装 flash.globalization.CurrencyFormatter
的包装器类。因此,特定于区域设置的格式化由 flash.globalization.CurrencyFormatter
提供。但是,此 CurrencyFormatter 类可在 MXML 声明中使用,为请求的区域设置 ID 名称使用区域设置样式,并具有可绑定的方法和属性。
flash.globalization.CurrencyFormatter 类使用基础操作系统来实现格式化功能并提供特定于区域设置的数据。某些操作系统不支持 flash.globalization 类,在这些操作系统上,由包装器类提供回退功能。
MXML 语法隐藏 MXML 语法The <s:CurrencyFormatter>
tag inherits all of the tag
attributes of its superclass and adds the following tag attributes:
<s:CurrencyFormatter Properties currencyISOCode="locale and OS dependent" currencySymbol="locale and OS dependent" negativeCurrencyFormat="locale and OS dependent" positiveCurrencyFormat="locale and OS dependent" useCurrencySymbol="false" />
相关 API 元素
方法 | 由以下参数定义 | ||
---|---|---|---|
构造新的 CurrencyFormatter 对象以根据给定区域设置的约定设置表示货币金额的数字格式。 | CurrencyFormatter | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 | EventDispatcher | ||
删除此组件实例的样式属性。 | AdvancedStyleClient | ||
将事件调度到事件流中。 | EventDispatcher | ||
创建字符串,该字符串表示根据此 CurrencyFormatter 对象的当前属性(包括 locale、useCurrencySymbol、currencySymbol 或 currencyISOCode 属性)设置格式的货币金额。 | CurrencyFormatter | ||
确定是否可使用当前指定的货币符号为货币金额设置格式。 | CurrencyFormatter | ||
[静态]
列出此类支持的所有区域设置 ID 名称。 | CurrencyFormatter | ||
为应用于该组件的类型选择器返回 CSSStyleDeclaration 对象数组,如果不存在则返回 null。 | AdvancedStyleClient | ||
[覆盖]
获取已在此组件的样式查找链中的某个位置设置过的样式属性。 | GlobalizationBase | ||
如果 currentCSSState 不为 null,则返回 true。 | AdvancedStyleClient | ||
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 | EventDispatcher | ||
表示对象是否已经定义了指定的属性。 | Object | ||
该类或扩展该类的类在 MXML 声明中使用时,调用 initialized 方法。 | AdvancedStyleClient | ||
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
如果 cssState 与 currentCSSState 匹配,则返回 true。 | AdvancedStyleClient | ||
确定此实例与给定类型相同,还是属于给定类型的子类。 | AdvancedStyleClient | ||
将样式更改传播到此样式客户端实例的子项。 | AdvancedStyleClient | ||
将字符串解析为货币金额和货币符号。 | CurrencyFormatter | ||
表示指定的属性是否存在、是否可枚举。 | Object | ||
设置内部样式缓存值,以便 getStyle() 方法可以起作用。 | AdvancedStyleClient | ||
将 EffectManager 注册为每个效果事件的事件侦听器之一。 | AdvancedStyleClient | ||
从 EventDispatcher 对象中删除侦听器。 | EventDispatcher | ||
设置循环操作动态属性的可用性。 | Object | ||
对此组件实例设置样式属性。 | AdvancedStyleClient | ||
检测对样式属性的更改。 | AdvancedStyleClient | ||
首次初始化组件样式时,Flex 会调用 stylesInitialized() 方法。 | AdvancedStyleClient | ||
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | ||
返回指定对象的字符串表示形式。 | Object | ||
返回指定对象的原始值。 | Object | ||
检查是否用此 EventDispatcher 对象或其任何祖代为指定事件类型注册了事件侦听器。 | EventDispatcher |
actualLocaleIDName | 属性 |
actualLocaleIDName:String
[只读] [覆盖] 语言版本: | ActionScript 3.0 |
产品版本: | Flex 4.5 |
运行时版本: | Flash Player 10.1, AIR 2.5 |
由该类对象使用的实际区域设置 ID 的名称。这是用于从操作系统访问格式化数据和功能的区域设置。
如果由 locale
样式所设置的区域设置不可用,则 actualLocaleIDName
的值将不同于 locale
样式的值。它指明正在使用的回退区域设置。如果区域设置样式设置为 LocaleID.DEFAULT
,将使用由用户的操作系统指定的区域设置的名称。
此属性可用作数据绑定的源。修改此属性后,将调度 change
事件。
实现
override public function get actualLocaleIDName():String
相关 API 元素
currencyISOCode | 属性 |
currencyISOCode:String
语言版本: | ActionScript 3.0 |
产品版本: | Flex 4.5 |
运行时版本: | Flash Player 10.1, AIR 2.5 |
正在使用的实际区域设置的三字母 ISO 4217 币种代码(例如,USD、EUR、JPY、CNY)。
当 useCurrencySymbol
属性设置为 false
时,此代码将用于在使用 format()
方法设置货币金额格式时指示货币类型。
在基于正在使用的实际区域设置来设置区域设置样式时,将初始化此属性。当使用回退区域设置时,此属性反映回退区域设置的首选/默认币种代码。
默认值取决于实际区域设置和操作系统。
此属性可用作数据绑定的源。修改此属性后,将调度 change
事件。
实现
public function get currencyISOCode():String
public function set currencyISOCode(value:String):void
引发
TypeError — 如果为此属性分配 null 值。
|
相关 API 元素
currencySymbol | 属性 |
currencySymbol:String
语言版本: | ActionScript 3.0 |
产品版本: | Flex 4.5 |
运行时版本: | Flash Player 10.1, AIR 2.5 |
正在使用的实际区域设置的货币符号或字符串。
使用 withCurrencySymbol
参数设置为 true
的 format()
方法设置货币金额格式时,此属性用作货币符号。
在基于正在使用的实际区域设置来设置区域设置样式时,将初始化此属性。当使用回退区域设置时,此属性反映回退区域设置的首选/默认货币符号,此符号可能不同于区域设置样式。
默认值取决于实际区域设置和操作系统。
此属性可用作数据绑定的源。修改此属性后,将调度 change
事件。
实现
public function get currencySymbol():String
public function set currencySymbol(value:String):void
引发
TypeError — 如果为此属性分配 null 值。
|
相关 API 元素
negativeCurrencyFormat | 属性 |
negativeCurrencyFormat:uint
语言版本: | ActionScript 3.0 |
产品版本: | Flex 4.5 |
运行时版本: | Flash Player 10.1, AIR 2.5 |
表示负值货币金额的格式设置模式的数值。此模式定义货币符号和负号或圆括号相对于货币金额的数字部分的位置。
此属性的值必须是在下表中定义的常量之一。
下表总结了负值货币金额的可能的格式设置模式。在使用 format()
方法为货币金额设置格式时:
- “¤”符号由
currencyISOCode
或currencySymbol
属性的值替换,视传递到format()
方法的withCurrencySymbol
参数值而定; - “-”字符由
negativeNumberSymbol
属性的值替换; - “n”字符由传递到
format()
方法的货币金额值替换。
负值货币格式类型 | 格式化图案 |
0 | (¤n) |
1 | -¤n |
2 | ¤-n |
3 | ¤n- |
4 | (n¤) |
5 | -n¤ |
6 | n-¤ |
7 | n¤- |
8 | -n ¤ |
9 | -¤ n |
10 | n ¤- |
11 | ¤ n- |
12 | ¤ -n |
13 | n- ¤ |
14 | (¤ n) |
15 | (n ¤) |
默认值取决于实际区域设置和操作系统。
此属性可用作数据绑定的源。修改此属性后,将调度 change
事件。
实现
public function get negativeCurrencyFormat():uint
public function set negativeCurrencyFormat(value:uint):void
引发
ArgumentError — 如果指定的值不介于 0 到 15 之间。
|
相关 API 元素
positiveCurrencyFormat | 属性 |
positiveCurrencyFormat:uint
语言版本: | ActionScript 3.0 |
产品版本: | Flex 4.5 |
运行时版本: | Flash Player 10.1, AIR 2.5 |
表示正值货币金额的格式设置模式的数值。此格式定义货币符号相对于货币金额数值部分的位置。
此属性的值必须是在下表中定义的常量之一。
下表总结了正值货币金额的可能的格式设置模式。在使用 format()
方法为货币金额设置格式时:
- “¤”符号由
currencyISOCode
或currencySymbol
属性的值替换,视传递到format()
方法的withCurrencySymbol
参数值而定; - “n”字符由传递到
format()
方法的货币金额值替换。
正值货币格式类型 | 格式化图案 |
0 | ¤n |
1 | n¤ |
2 | ¤ n |
3 | n ¤ |
默认值取决于实际区域设置和操作系统。
此属性可用作数据绑定的源。修改此属性后,将调度 change
事件。
实现
public function get positiveCurrencyFormat():uint
public function set positiveCurrencyFormat(value:uint):void
引发
ArgumentError — 如果指定的值不介于 0 到 3 之间。
|
相关 API 元素
useCurrencySymbol | 属性 |
useCurrencySymbol:Boolean
语言版本: | ActionScript 3.0 |
产品版本: | Flex 4.5 |
运行时版本: | Flash Player 10.1, AIR 2.5 |
当设置货币金额格式时,启用对 currencySymbol
属性的使用。
当 useCurrencySymbol
属性设置为 true
时,将在 format 方法返回的字符串中使用 currencySymbol
属性的值。例如:$123,456,789.22
当 useCurrencySymbol
属性设置为 false
时,将在 format
方法返回的字符串中使用 currencyISOCode
属性的值。例如:USD 123,456,789.22
默认值为 false。
此属性可用作数据绑定的源。修改此属性后,将调度 change
事件。
实现
public function get useCurrencySymbol():Boolean
public function set useCurrencySymbol(value:Boolean):void
相关 API 元素
CurrencyFormatter | () | 构造函数 |
public function CurrencyFormatter()
语言版本: | ActionScript 3.0 |
产品版本: | Flex 4.5 |
运行时版本: | Flash Player 10.1, AIR 2.5 |
构造新的 CurrencyFormatter
对象以根据给定区域设置的约定设置表示货币金额的数字格式。
此类的区域设置由区域设置样式提供。可以使用下列方法来设置区域设置
样式:
- 在 MXML 声明中使用该类,并从包含声明的文档中继承区域设置。 示例:
<fx:Declarations> <s:CurrencyFormatter id="cf" /> </fx:Declarations>
<fx:Declarations> <s:CurrencyFormatter id="cf_Japanese" locale="ja-JP" /> </fx:Declarations>
setStyle()
方法,如 cf.setStyle("locale", "ja-JP")
addStyleClient()
方法来继承 UIComponent
的样式。
如果 locale
样式不是由以上方式之一设置的,则该类的实例会作为 StyleClient
添加至 topLevelApplication
中,并因此在调用 locale
从属属性 getter 或 locale
从属方法时,会从 topLevelApplication
对象中继承 locale
样式。
此类的大部分属性将自动根据 locale
样式来设置。如果 locale
样式发生改变,则任何未明确设置的属性也都会根据新的区域设置来进行更新。请注意,正在使用的实际区域设置是由 actualLocaleIDName
属性来指定的。
注意:当使用回退区域设置时,货币属性设置为默认值,因此 currencySymbol
或 currencyISOCode
属性可能被设为意外的值。在为货币金额设置格式前,最好先检查 currencySymbol
和 currencyISOCode
属性值。
相关 API 元素
format | () | 方法 |
public function format(value:Object):String
语言版本: | ActionScript 3.0 |
产品版本: | Flex 4.5 |
运行时版本: | Flash Player 10.1, AIR 2.5 |
创建字符串,该字符串表示根据此 CurrencyFormatter 对象的当前属性(包括 locale
、useCurrencySymbol
、currencySymbol
或 currencyISOCode
属性)设置格式的货币金额。
useCurrencySymbol
属性决定了 format 方法是否在设置了格式的货币金额中使用 currencySymbol
或 currencyISOCode
。useCurrencySymobl
的默认值为 false
,因此,默认情况下,将以 currencyISOCode
来设置货币金额的格式
许多国家/地区和区域使用同一货币符号来表示不同币种。例如,美国、澳大利亚、新西兰、加拿大和墨西哥对于本地货币值都使用同一种美元符号 ($)。当设置格式的货币与用户的本地货币不同时,最好使用 ISO 代码作为货币字符串。您可以使用 formattingWithCurrencySymbolIsSafe
方法来测试要设置格式的货币的 ISO 代码是否与格式化程序所使用的实际区域设置的默认货币 ISO 代码相匹配。
此方法可为极大数量级和极小数量级的数字设置格式。但有效位数不得超过 Number 数据类型提供的精度。
如果由于非法输入值或其它错误在设置格式时发生了错误,则默认情况下 format()
方法将返回 null
。但是,如果 errorText
属性为非 null,则将返回 errorText
属性的值。设置 lastOperationStatus
属性以指明发生的错误。
参数
value:Object — 一个对象,其中包含设置为货币字符串格式的数值。如果对象不是 Number ,则将使用 Number() 转换函数来转换为数字。
|
String — 一个字符串,其中包含设置了格式的货币值。
|
相关 API 元素
currencyISOCode
formattingWithCurrencySymbolIsSafe()
lastOperationStatus
useCurrencySymbol
spark.formatters.supportClasses.NumberFormatterBase.errorText
spark.globalization.LastOperationStatus
示例 ( 如何使用本示例 )
locale
样式被设置为 fr-CA [French (Canada)]。此示例假设用户的操作系统支持此区域设置,因此不使用回退区域设置。对于 fr-CA,默认货币是 ISO 代码为 CAD 的加拿大元。因此,使用默认值设置货币格式时,使用 CAD 作为货币符号。但是,当 useCurrencySymbol
属性设置为 true
时,将使用 currencySymbol
属性为货币金额设置格式。
<fx:Declarations> <s:CurrencyFormatter id="cf_use_ISOCode" locale="fr-CA" /> <s:CurrencyFormatter id="cf_use_Symbol" locale="fr-CA" useCurrencySymbol="true" /> </fx:Declarations> <s:VGroup> <!-- label will use ISO code: 1,234,567.89 CAD --> <s:Label text="{cf_use_ISOCode.format(1234567.89)}" /> <!-- label will use currency symbol: 1,234,567.89 $ --> <s:Label text="{cf_use_Symbol.format(1234567.89)}" /> </s:VGroup>
第二个示例显示使用默认用户的区域设置为以加拿大元表示的货币金额设置格式的方法。formattingWithCurrencySymbolIsSafe()
方法用于设置 useCurrencySymbol
属性的值。如果用户的默认区域设置为加拿大(例如,fr-CA 或 en-CA),则会使用加拿大的默认货币符号。如果有多个默认的区域设置,则 CAD 的 currencyISOCode
将在设置了格式的货币金额中使用。
<fx:Declarations> <s:CurrencyFormatter id="cf_CAD" locale="{LocaleID.DEFAULT}" currencyISOCode="CAD" useCurrencySymbol="{cf_CAD.formattingWithCurrencySymbolIsSafe('CAD')}" /> </fx:Declarations> <fx:Script> <![CDATA[ import flash.globalization.LocaleID; ]]> </fx:Script> <!-- label will use ISO code or currency symbol depending on user's default locale --> <s:Label text="{cf_CAD.format(1234567.89)}" />
formattingWithCurrencySymbolIsSafe | () | 方法 |
public function formattingWithCurrencySymbolIsSafe(requestedISOCode:String):Boolean
语言版本: | ActionScript 3.0 |
产品版本: | Flex 4.5 |
运行时版本: | Flash Player 10.1, AIR 2.5 |
确定是否可使用当前指定的货币符号为货币金额设置格式。
许多区域和国家/地区使用同一货币符号。此方法可用于确保避免使用存在歧义的货币符号,或使用由于使用回退区域设置而导致的与预期不同的货币符号或 ISO 代码。
此方法的一个常见用例是确定显示本地货币符号(如果将金额的格式设置为用户的默认货币)还是显示更加具体的 ISO 代码字符串(如果将金额的格式设置为与用户的默认货币不同的货币)。
此方法将 requestedISOCode
参数与实际区域设置的默认 currencyISOCode
做比较,当两个字符串相等时返回 true
,否则返回 false
。当两个字符串相等时,使用 format()
方法并将 useCurrencySymbol
属性设置为 true
会导致设置了格式的货币值字符串具有该当前区域设置中使用的货币符号。如果该方法返回 false
,则使用 format()
方法并将 useCurrencySymbol
属性设置为 true
会导致使用存在歧义或不正确的货币符号。
参数
requestedISOCode:String — 三个字母的 ISO 4217 币种代码(例如,美元为 USD,欧元为 EUR)。必须包含从 A 到 Z 的三个大写字母。
|
Boolean — 如果与 actualLocaleIDName 相对应的区域设置的默认 currencyISOCode 与 requestedISOCode 参数相匹配,则为 true ,否则为 false 。
|
引发
TypeError — 如果 requestedISOCode 参数为 null。
|
相关 API 元素
getAvailableLocaleIDNames | () | 方法 |
parse | () | 方法 |
public function parse(inputString:String):CurrencyParseResult
语言版本: | ActionScript 3.0 |
产品版本: | Flex 4.5 |
运行时版本: | Flash Player 10.1, AIR 2.5 |
将字符串解析为货币金额和货币符号。
此解析算法使用 decimalSeparator
属性的值确定数值的整数部分和小数部分。它使用 negativeCurrencyFormat
和 positiveCurrencyFormat
属性的值确定与货币金额相关的货币符号或字符串的位置。对于负数金额,negativeCurrencyFormat
属性的值确定负号的位置以及是否使用圆括号。
如果输入字符串中的货币符号、负号和数字的顺序与 negativeCurrencyFormat
和 positiveCurrencyFormat
属性标识的模式不匹配,则:
- 返回的
CurrencyParseResult
对象的value
属性设置为NaN
。 - 返回的 CurrencyParseResult 对象的
currencyString
属性设置为null
。 lastOperationStatus
属性的值设置为LastOperationStatus.PARSE_ERROR
,表示解析失败。
输入字符串中可以包括空格字符,解析期间将忽略空格字符。
即使没有货币符号解析也可成功。没有验证与货币符号对应的字符串部分。如果没有货币符号或字符串,返回的 CurrencyParseResult 对象中的 currencyString
属性设置为空字符串。
参数
inputString:String — 要解析的输入字符串。
|
CurrencyParseResult — 一个包含数值和货币符号或字符串的 CurrencyParseResult 对象。
|
引发
TypeError — 如果 inputString 参数为 null。
|
相关 API 元素
<?xml version="1.0" encoding="utf-8"?> <!-- Sample program for spark.formatters.CurrencyFormatter --> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"> <fx:Declarations> <s:CurrencyFormatter id="currencyFormatter"/> </fx:Declarations> <fx:Script> <![CDATA[ import flash.globalization.CurrencyParseResult; private function localeChange():void { // Sets the locale style on the document UI component. // The formatter will inherit this style. setStyle('locale', inputLocaleIDName.text); inputCurrencyChange(); } private function inputCurrencyChange():void { const cpr:CurrencyParseResult = currencyFormatter.parse(inputCurrency.text); parsedResult.text = "Currency String: [" + cpr.currencyString + "], Amount: [" + cpr.value.toString() + "]"; } ]]> </fx:Script> <mx:Form> <mx:FormItem label="Input Locale ID Name"> <mx:HBox> <s:TextInput id="inputLocaleIDName"/> <s:Button click="localeChange()" label="Apply"/> </mx:HBox> <mx:Text text="Example: 'en-US', 'fr-FR', 'ja-JP', 'ar-SA'"/> </mx:FormItem> <mx:FormItem label="Input Currency Amount"> <s:TextInput id="inputCurrency" change="inputCurrencyChange()"/> <mx:Text text="Example: {currencyFormatter.format(123456789.123)}"/> </mx:FormItem> <mx:FormItem label="Actual Locale ID Name"> <mx:Text text="{currencyFormatter.actualLocaleIDName}"/> </mx:FormItem> <mx:FormItem label="Parsed Result"> <mx:Text id="parsedResult"/> </mx:FormItem> </mx:Form> </s:Application>
<?xml version="1.0" encoding="utf-8"?> <!-- Simple example to demonstrate the Spark CurrencyFormatter. --> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"> <fx:Declarations> <s:CurrencyFormatter id="currencyFormatter"/> </fx:Declarations> <fx:Script> <![CDATA[ [Bindable] private var currencyAmount:Number = 123456.789; ]]> </fx:Script> <mx:Form> <mx:FormItem label="Input Locale ID Name"> <mx:HBox> <s:TextInput id="inputLocaleIDName"/> <!-- Upon button click, sets the locale style on the document UI component. The formatter will inherit this style. --> <s:Button click="setStyle('locale', inputLocaleIDName.text);" label="Apply"/> </mx:HBox> <mx:Text text="Example: 'en-US', 'fr-FR', 'ja-JP', 'ar-SA'"/> </mx:FormItem> <mx:FormItem label="Use Currency Symbol"> <s:CheckBox id="useSymbol" click="currencyFormatter.useCurrencySymbol = useSymbol.selected"/> </mx:FormItem> <mx:FormItem label="Actual Locale ID Name"> <s:Label text="{currencyFormatter.actualLocaleIDName}"/> </mx:FormItem> <mx:FormItem label="Formatted Result"> <s:Label text="{currencyFormatter.format(currencyAmount)}"/> </mx:FormItem> </mx:Form> </s:Application>
Tue Jun 12 2018, 11:04 AM Z