- 浏览: 351826 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
lliiqiang:
在功能上,由于flex不支持加载外来的类的反射机制,所以可以通 ...
Flex Module专题 -
迪伦少校:
工程报错呢?。。
关于DEGRAFA的简介 -
chwnchwn:
不错的东西
关于DEGRAFA的简介 -
lorry1113:
学习了,多谢!!!!
重写FLEX组件 -
cuixuxucui:
var str:String = "";v ...
AS3 Array学习笔记
参考http://www.discuz.net/thread-407264-1-1.html
一、如何选择字符集:
1.如果你所在地区是大陆实用简体字的地方,且不打算考虑外国朋友的浏览要求,可以考虑实用GBK编码。
2.如果有对外(国)的需要,或者英文比较多的论坛,或者论坛中可能会有相当大部分的英文字符(比如经常交流代码的),可以选择UTF-8编码:UTF-8编码的文字可以在各国各种支持UTF8字符集的浏览器上显示。比如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,而无需他们下载IE的中文语言支持包。使用GBK则每个字符占用2个字节,而使用UTF-8英文却只占一个字节。通用性较强。但是相对来说比GBK占用空间大。
3.如果身边环境为繁体字语言(或者电脑的使用习惯,操作平台),那就选择BIG5编码好了。
二、一个实际应用的例子:
要求:创建角色昵称文本框,后端使用utf-8存储。我们希望限制输入字符数,中文6个,英文字符18个。
方式1.使用maxChars属性
txt_name.maxChars = 6;
这样中文最多输入六个,英文也是最多六个字符。
方式2.使用字符集长度判断
StringUtil.as:
/**
* 根据制定字符集获取字符串的实际字符数
* @param str
* @param charSet 指定计算的编码方式。默认gb2312编码,一个汉字算2个字符,如果是utf-8编码,则一个汉字算3个字符
* @return
*/
static public function getStringCharLength(str:String, charSet:String = "gb2312"):uint
{
var bytes:ByteArray = new ByteArray();
bytes.writeMultiByte(str, charSet);
return bytes.length;
}
剩下的事情就是使用文本框TextField的两个事件:Event.CHANGE 和TextEvent.TEXT_INPUT,区别如下:
在文本框中输入文本时要执行一系统运行,这些运行依次为:触发TEXT_INPUT事件--显示输入的内容--触发CHANGE事件。
TEXT_INPUT事件对象有一个属性text,其中包含了事件发生时输入到文本框中的字符或字符序列。注意text属性中的内容只包括当前事件发生时输入的字符,不同于文本框对象的text属性。比如先输入a,那么event.text = a。继续输入b,那么event.text = b,而不是ab。
Event.CHANGE 和TextEvent.TEXT_INPUT 都是用户修改值调度,两者的主要区别是一前一后, Event.CHANGE 是在文本被改变之后调度,TextEvent.TEXT_INPUT是在文本将要加入前调度。另外,删除已经输入的字符会触发Event.CHANGE,但不会触发TextEvent.TEXT_INPUT。
在文本键入前拦截有很多好处,比如我们希望文本框只能输入数字和字母,当用户键入非法字符时给予警告或提示,当然你可以使用正则,使用restrict属性来限定,可是这样提示信息就会很难处理。
txt.addEventListener(TextEvent.TEXT_INPUT,inputHandler)
function inputHandler(event:TextEvent){
var reg:RegExp=/[^0-9A-Za-z]/g
if(reg.test(event.text)){
event.preventDefault()
trace("非法字符:"+ event.text)
}
}
比如打字练习软件,不允许使用粘贴,只需要象下面这样,无论右键的粘贴,还是Ctrl+V,都可以有效拦截.(指的是大量的文本的粘贴)其它功能还有很多...
txt.addEventListener(TextEvent.TEXT_INPUT,inputHandler)
function inputHandler(event:TextEvent){
if(event.text.length>1)//如果练习的是中文4-8就差不多了
event.preventDefault()
}
现在看我们自己的需求实现:
txt_name.addEventListener(TextEvent.TEXT_INPUT,onTextInput);
private function onTextInput(event:TextEvent):void
{
if(StringTool.getStringCharLength(txt_name.text) > 18){
event.preventDefault();
}
}
结果:汉字是六个,但英文却可以输入19个。侦听事件发现,在第一次输入英文字符时,虽然触发了TextEvent.TEXT_INPUT事件,但txt_name.text仍然为空,理由在上面解释得清楚,TextEvent.TEXT_INPUT是在文本将要加入前调度的,这时txt_name.text还取不到。那么将判断条件改成>= 18会如何呢,结果是英文可以输入18个,但汉字的第六个却无法输入。这真是个奇怪的问题,目前猜测是由汉字输入法造成的。最后的修正办法是使用Event.CHANGE处理的
maxChars = 18;
txt_name.addEventListener(Event.CHANGE, inputHandler);
private function inputHandler(evt:Event):void
{
var newStr:String = txt_input.text;
if (StringTool.getStringCharLength(newStr) > maxChars){
while (StringTool.getStringCharLength(newStr) > maxChars){
newStr = newStr.substring(0, newStr.length - 1);
}
txt_input.text = newStr;
}
}
发表评论
-
白名单屏蔽字 unicode字符范围
2016-07-05 16:58 837(_word.unicode >= 0x2001 ... -
flash textfiled换行 以及\r和\n区别
2016-06-20 15:11 1943flash.text.TextField.wordWrap ... -
flash 字体
2016-05-20 17:35 7531.FTE和TLF的关系 http://zengr ... -
Flex Date对象与UTC之间的关系
2013-08-07 14:16 2381转自 Flex Date对象与UTC ... -
as3 数据结构array,object,dictionary用哪个
2011-12-29 16:43 4421今天在处理背包物品时,考虑是用Array还是dictionar ... -
CS5 中禁用SimpleButton
2011-12-09 11:48 1916需要在CS5中对一个SimpleButton设置禁用效果,即不 ... -
Event.FRAME_CONSTRUCTED
2011-12-07 19:07 2149_oPBox是个MovieClip,共3帧,其中第1帧有 ... -
使用拼接的属性来访问Object
2011-11-28 15:58 11021.VO:Objectt有这些属性: public ... -
ShareObject简记
2011-10-25 18:58 1057引用: _soundSO = Shared ... -
字符集学习笔记(一)
2011-10-20 17:17 1609摘自http://bbs.9ria.co ... -
使用AS3帧代码控制动画
2011-10-17 14:26 3957美术同事出了一个资源,大致是这样的:四个角色形象动画,聚在一个 ... -
flash cs将一个MC变成BUTTON
2011-09-15 16:50 1827在FLASH CS中,设置一个MC的三帧名字分别为 ... -
flash中的in关键字
2011-09-08 18:10 1334in这个关键字挺有意思的: package { ... -
VerifyError: Error #1024: 发生堆栈下溢
2011-08-26 16:14 4612今天出现了奇怪的问题,RELEASE版本的背包操作总是报Ver ... -
TextField的高宽autosize
2011-08-17 14:25 3392var t_name:TextField = new Text ... -
FLASH注册点与中心点(转)
2011-08-16 10:23 4807http://space.flash8.net/space/? ... -
flashbuilder不同版本共用工作空间的问题
2011-08-02 13:36 2456今天因为项目需要,安装了FB4.5,当然原来的FB4.0没舍得 ... -
flashplayer内存管理
2011-07-29 11:18 4427参考Flash务实主义(五)——AS3的垃圾回收 ... -
从SVN上的FD项目上,构建FB项目
2011-07-28 15:18 3687说一下概况: 项目是一个FD(FlashDevelop ... -
Flash应用程序域学习笔记
2011-07-21 17:24 1704在上一篇博客中,简记了关于安全域的学习笔记。本篇继 ...
相关推荐
Go语言学习笔记.pdf 共174页 Go语言学习笔记.pdf 共174页是一本关于Go语言的详细学习笔记,涵盖了Go语言的基础知识、函数、数组、Maps、Structs、接口、并发、程序结构、标准库等方面的内容。本笔记共分为三大部分...
学习笔记通常包括了基础概念、关键特性、实用技巧以及常见问题的解决方法。 【标签】"h5"、"前端"、"学习笔记"进一步明确了内容的重点。"h5"即HTML5,是前端开发的核心;"前端"意味着这些笔记涉及的是用户可见和...
这份"Python学习笔记"涵盖了从环境搭建到基础语法,再到数据类型和控制结构等关键知识点,旨在为初学者提供全面的学习指导。 首先,1.1章节介绍了Python的基础,包括Python的起源和历史。Python是由Guido van ...
"Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...
Java默认使用平台的默认字符集,但应尽量明确指定如`getBytes("UTF-8")`。 以上内容是基于"JAVA 字符串应用笔记"可能涵盖的基本知识点,对于初学者来说,理解和掌握这些概念是进阶学习Java和Android开发的基础。在...
### Oracle学习笔记知识点详解 #### 一、Oracle简介 Oracle是一家知名的软件公司,以其数据库管理系统闻名全球。该公司成立于1977年,总部位于美国加利福尼亚州。Oracle不仅提供数据库解决方案,还涉及中间件、...
在学习笔记的附录部分,编者还添加了对Go工具集的介绍,比如条件编译、跨平台编译、调试工具GDB的使用,以及Go测试相关知识,包括单元测试、数据竞争测试、基准测试和代码覆盖率测试。 总的来说,Go语言学习笔记...
本学习笔记将聚焦于与ES5的区别,帮助初学者快速掌握ES6的核心概念。** 1. **变量声明:let和const** - `let`替代了`var`进行块级作用域的变量声明,解决了`var`的变量提升和函数作用域问题。 - `const`用于声明...
第二篇介绍.NET与C#核心技术,主要内容包括.NET框架,C#.NET命名空间和程序集,字符处理,组件和部署;第三篇主要介绍Windows窗体程序,主要包括Windows窗体,WinForms高级控件,菜单和对话框,GDI+的应用和网络...
《iReport 3.6.7 学习笔记》 在IT行业中,报表设计和生成是数据可视化的重要环节,而iReport作为一款强大的Java报告工具,因其易用性和灵活性深受开发者喜爱。本学习笔记主要围绕iReport 3.6.7版本展开,探讨其核心...
PHP框架学习笔记 PHP框架学习笔记是学习PHP框架的重要笔记,涵盖了CI...CI框架学习笔记涵盖了CI框架的基础知识点,包括控制器、模型、视图、URI路由、数据库操作、表单提交、上传文件、Session管理等方面的知识点。
以下是对Oracle数据库一些基础知识的详细解释,主要基于提供的个人学习笔记内容。 **第一节:数据库管理** 1. **创建用户**:`CREATE USER`命令用于创建新的数据库用户,如`CREATE USER username IDENTIFIED BY ...
### C#学习笔记—函数方法集 在C#编程中,掌握各种内置函数和方法对于提高编程效率至关重要。本文档汇总了C#中常用的函数和方法,并通过具体示例进行说明,帮助读者更好地理解和运用这些功能。 #### 一、DateTime...
Go 学习笔记, 第 4 版 4.4 Struct 47 第 5 章 ⽅法 53 5.1 ⽅法定义 53 5.2 匿名字段 54 5.3 ⽅法集 56 5.4 表达式 56 第 6 章 接⼝ 60 6.1 接⼝定义 60 6.2 执⾏机制 62 6.3 接⼝转换 63 6.4 接⼝技巧 65 第 7 章 ...
### C语言学习笔记知识点梳理 #### 一、计算机系统概述 **1.1 计算机系统功能** - **输入**: 将外部数据输入到计算机系统中。 - **处理**: 数据通过程序处理后生成新的数据。 - **输出**: 处理后的数据输出到外部...
这篇“字符设备驱动学习笔记(2.6.23)”文档针对的是Linux内核版本2.6.23,这可能是2007年的内核版本,当时Linux系统已经相当成熟,但相对于最新的内核版本,它可能不包含一些新特性或优化。 学习Linux字符设备驱动...
【安卓学习笔记详解】 在安卓开发的学习过程中,了解并掌握基本概念和技术是非常关键的。以下是一些核心知识点的详述: 1. **字符集与编码**:Android系统默认使用UTF-8编码,而不是iso-8859-1。当你使用`getBytes...
数据库学习笔记.pdf 本资源摘要信息涵盖了数据库学习笔记的主要知识点,包括数据库基本操作、库操作、表操作和数据操作等。 库操作 库操作是数据库学习笔记的基础,包括创建数据库、查找数据库、更新数据库和删除...
本压缩包“C语言学习笔记.zip”包含了丰富的C语言学习资料,主要集中在“c-notes-master”这个子目录下,适合初学者和有一定基础的程序员进行深入学习。 在C语言的学习中,首先要掌握的基本概念包括变量、数据类型...
在本篇算法学习笔记中,对一系列重要且常用的算法进行了整理和总结,以下是对文档内容中提及的知识点的详细解读。 一、快速排序算法 快速排序是一种高效的排序算法,采用分治法策略,它的时间复杂度平均为O(nlogn)...