当前位置: 首页 > 图文教程 > Flash动画 > ActionScript > AS3教程:密码强度验证

ActionScript
Flash AS实例:制作切换菜单动画
Flash AS3实例教程:简单的转动的星星
Flash AS3实例教程:制作旋转的菜单动画
项目中使用发布swc时遇到两个问题
Flash AS3教程:随图片大小而动态改变的图框
Flash AS3教程:创建好看的遮罩动画效果
Flash AS3.0教程:制作老鹰飞动实例
Flash as入门(6):文本与字符串
Flash as入门(8):加载和卸载swf文件
Flash as入门(17):Math类三角函数
Flash AS3实例教程:连锁反应的粒子动画
AS3实例教程:结合基本的动画和AS3绘图API
学习AS3知识:常用的8个AS3小技巧
Flash AS3实例教程:漂亮的水纹动画
Flash AS3实现动画中音乐音量逐渐关闭
AS 3.0的TransitionManager类制作动画
AS3实例教程:制作数码下落的动画特效
AS3面试题:复杂算法的改进
AS3.0实例:鼠标感应发光的文字效果
Flex4教程:添加事件的3种方法

ActionScript 中的 AS3教程:密码强度验证


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-30   浏览: 55 ::
收藏到网摘: n/a

public static function evaluatePwd(sPW:String):int
{
if (sPW.length <= 4)
return 0;
var Modes:int = 0;
for (var i:int = 0; i < sPW.length; i++)
{
Modes |= CharMode(sPW.charCodeAt(i));
}

return bitTotal(Modes);

function CharMode(iN:int):int
{
if (iN>=48 && iN <=57)
return 1;
if (iN>=65 && iN <=90)
return 2;
if (iN>=97 && iN <=122)
return 4;
else
return 8;
}

function bitTotal(num:int):*
{
var modes:int = 0;
for (var i:int = 0; i < 4; i++)
{
if (num & 1) modes ++;
num >>>= 1;
}
return modes;
}
}

public static function evaluatePwd(sPW:String):int
  {
   if (sPW.length <= 4)
    return 0;
   var Modes:int = 0;
   for (var i:int = 0; i < sPW.length; i++)
   {
    Modes |= CharMode(sPW.charCodeAt(i));
   }

   return bitTotal(Modes);

   function CharMode(iN:int):int
   {
    if (iN>=48 && iN <=57)
     return 1;
    if (iN>=65 && iN <=90)
     return 2;
    if (iN>=97 && iN <=122)
     return 4;
    else
     return 8;
   }

   function bitTotal(num:int):*
   {
    var modes:int = 0;
    for (var i:int = 0; i < 4; i++)
    {
     if (num & 1) modes ++;
     num >>>= 1;
    }
    return modes;
   }
  }另外还有一个十分简单的算法

public static function evaluatePwd2(sPW:String):int
{
return sPW.replace(/^(?:([a-z])|([A-Z])|([0-9])|(.)){5,}|(.)+$/g, “$1$2$3$4$5″).length;
}
public static function evaluatePwd2(sPW:String):int
  {
   return sPW.replace(/^(?:([a-z])|([A-Z])|([0-9])|(.)){5,}|(.)+$/g, "$1$2$3$4$5").length;
  }

我们可以用多种图形化的界面甚至动画去展现密码的强度,举个简单的例子,例如我希望用户在输入密码后1秒内没有任何输入动作,则验证密码的强度,并且已进度条的形式展示

首先注册一个监听

pwdInputView.password.addEventListener(KeyboardEvent.KEY_UP, onKey);
pwdInputView.password.addEventListener(KeyboardEvent.KEY_UP, onKey);然后看看监听函数

private var oldText:String;
private function onKey(e:KeyboardEvent):void
{
if (oldText != pwdInputView.password.text && pwdInputView.password.text.length > 5)
{
oldText = pwdInputView.password.text;
TweenLite.killTweensOf(updateStrengthView, false);
TweenLite.delayedCall(1, updateStrengthView);
}
}
private var oldText:String;

  private function onKey(e:KeyboardEvent):void
  {
   if (oldText != pwdInputView.password.text && pwdInputView.password.text.length > 5)
   {
    oldText = pwdInputView.password.text;
    TweenLite.killTweensOf(updateStrengthView, false);
    TweenLite.delayedCall(1, updateStrengthView);
   }
  }

首先定义一个oldText成员,用于记录上次输入的密码,如果当前密码和上次密码不相同并且长度大于5,开始执行操作。我这里用了TweenLite作为计时器,1秒后将执行强度判断,如果发现用户在1秒内再次有输入操作,则销毁当前TweenLite。

再看看如何用视图来展示密码强度,这里不多作解释了,只是一个简单的动画效果。

private function updateStrengthView():void
{
var toWidth:Number = pwdInputView.strengthCanvas.width * CheckStrong.evaluatePwd(pwdInputView.password.text) * .25;
TweenLite.to(pwdInputView.maskCanvas, 1.5, {width:toWidth, ease:Bounce.easeOut, overwrite:false});
}
private function updateStrengthView():void
  {
   var toWidth:Number = pwdInputView.strengthCanvas.width * CheckStrong.evaluatePwd(pwdInputView.password.text) * .25;
   TweenLite.to(pwdInputView.maskCanvas, 1.5, {width:toWidth, ease:Bounce.easeOut, overwrite:false});
  }