What's New in Teams Calling, Meetings and Devices March 2024
Custom Formatter, Validator, and Effect Components
1.
2.
3.
4.
5.
6.
7. NumberFormatter import mx.formatters.NumberFormatter; private var myString:String = "1234567" ; private function format():String{ var numFormatter:NumberFormatter = new NumberFormatter(); return numFormatter.format(myString); } Demo
8.
9.
10.
11.
12.
13.
14.
15.
16.
17. Custom Format String import mx.formatters.SwitchSymbolFormatter; private var myString:String = "1234567" ; private function format():String{ var ssFormatter:SwitchSymbolFormatter = new SwitchSymbolFormatter(); return ssFormatter.formatValue( "##-###-##" ,myString); } Demo
18.
19.
20.
21.
22.
23.
24. Custom Format Characters import mx.formatters.SwitchSymbolFormatter; private var myString:String = "1234567" ; private function format():String{ var ssFormatter:SwitchSymbolFormatter = new SwitchSymbolFormatter( "*" ); return ssFormatter.formatValue( "#**-**-***" ,myString); } Demo
25.
26.
27.
28.
29.
30.
31. ReverseFormatter class package com.everythingflex.flex.formatters { import mx.formatters.Formatter // Custom formatters must extend mx.formatters.Formatter public class ReverseFormatter extends Formatter { public function ReverseFormatter() { super (); } // Custom formatters must override format(). override public function format(formatObj:Object):String{ // ADD OVERRIDE HERE } } }
32. ReverseFormatter override format method // Custom formatters must override format(). override public function format(formatObj:Object):String{ if (formatObj.length == 0) { // return empty string and set error property if string //has zero length. error= "Can not format an empty String" ; return "" } else { error= null ; var returnString:String = "" ; // loop through value and build string in reverse for ( var i:Number=formatObj.length; i>=0; i--){ returnString = returnString + formatObj.charAt(i); } return returnString; }
33. Using ReverseFormatter import ReverseFormatter; private var myString:String = "Rich Tretola" ; private function format():String{ var reverseFormatter:ReverseFormatter = new ReverseFormatter(); return reverseFormatter.format(myString); } Demo
34.
35.
36.
37.
38. PasswordValidator class package com.everythingflex.flex.validators { import mx.validators.Validator; import mx.validators.ValidationResult; public class PasswordValidator extends Validator { private var results:Array; public function PasswordValidator() { super (); } // Override the doValidation() method. override protected function doValidation(value:Object):Array { // ADD OVERRIDE HERE } } }
39. Override doValidation // Override the doValidation() method. override protected function doValidation(value:Object):Array { results = []; // Call super's doValidation(). results = super .doValidation(value); // Return if super's doValidation contains // errors (required would be an example). if (results.length > 0){ return results; } // *****Add Custom Validation Here***** return results; }
40. Now add custom validation // Check for min length if (dataString.length < 6){ results.push( new ValidationResult( true , null , "Short" , "Password must be at least 6 characters." )); return results; } var dataString:String = String(value); // Check for max length (this can be set in the text component's maxChars property). if (dataString.length > 10){ results.push( new ValidationResult( true , null , "Long" , "Password must be no larger than 10 characters." )); return results; }
41. More custom validation // Check for at least 1 upper case letter. if (dataString.search( "[A-Z]" )<0) { results.push( new ValidationResult( true , null , "Upper" , "Passwords must contain at least one upper case letter." )); return results; } // Check for at least 1 lower case letter. if (dataString.search( "[a-z]" )<0) { results.push( new ValidationResult( true , null , "Lower" , "Passwords must contain at lease one lower case letter." )); return results; } // Check for at least 1 number. if (dataString.search( "[0-9]" )<0) { results.push( new ValidationResult( true , null , "Number" , "Passwords must contain at least one number." )); return results; }
49. ScaleEffect Class package com.everythingflex.flex.effects { import mx.effects.Effect; import mx.effects.EffectInstance; import mx.effects.IEffectInstance; public class ScaleEffect extends Effect { // Define scaleTo parameter public var scaleTo:Number; public function ScaleEffect(targetObj:Object = null ){ super (targetObj); instanceClass= ScaleEffectInstance; } // ADD Override getAffectedProperties() // ADD Override initInstance() } }
50. ScaleEffect Overrides // override getAffectedProperties() and // pass the properties effected override public function getAffectedProperties():Array{ return [ "scaleX,scaleY" ]; } // Override initInstance() override protected function initInstance(inst:IEffectInstance): void { super .initInstance(inst); ScaleEffectInstance(inst).scaleTo = scaleTo; }
51.
52. ScaleEffectInstance Class package com.everythingflex.flex.effects { import mx.effects.EffectInstance; public class ScaleEffectInstance extends EffectInstance { // Custom Parameter public var scaleTo:Number; public function ScaleEffectInstance(targetObj:Object) { super (targetObj); } // ADD Override play() method. // ADD Override reverse() method. } }
53. ScaleEffectInstance Overrides // Override play() method. override public function play(): void { super .play(); target.scaleX=scaleTo; target.scaleY=scaleTo; } // Override reverse() method. override public function reverse(): void { target.scaleX=1; target.scaleY=1; }
59. MoveBounceTweenEffect Class package com.everythingflex.flex.effects { import mx.effects.TweenEffect; import mx.effects.EffectInstance; import mx.effects.IEffectInstance; public class MoveBounceTweenEffect extends TweenEffect{ // Define xFrom and xTo parameters public var xFrom:Number; public var xTo:Number; public function MoveBounceTweenEffect(targetObj:Object = null ){ super (targetObj); instanceClass= MoveBounceTweenEffectInstance; } // ADD Override getAffectedProperties() // ADD Override initInstance() }
60. MoveBounceTweenEffect Overrides // override getAffectedProperties() and // pass the properties effected override public function getAffectedProperties():Array{ return [ "x" ]; } // Override initInstance() override protected function initInstance(inst:IEffectInstance): void { super .initInstance(inst); MoveBounceTweenEffectInstance(inst).xFrom = xFrom; MoveBounceTweenEffectInstance(inst).xTo = xTo; }
61.
62. MoveBounceTweenEffectInstance package { import mx.effects.effectClasses.TweenEffectInstance; import mx.effects.Tween; public class MoveBounceTweenEffectInstance extends TweenEffectInstance { // Move parameters public var xFrom:Number; public var xTo:Number; public function MoveBounceTweenEffectInstance(targetObj:Object){ super (targetObj); } // Override play() method. override public function play(): void { super .play(); // Create the Tween object var tween:Tween = createTween( this , xFrom, xTo, duration); } // Override onTweenUpdate() method. override public function onTweenUpdate(val:Object): void { target.x = val; } // Override onTweenEnd() method. override public function onTweenEnd(val:Object): void { // call super.onTweenEnd(). super .onTweenEnd(val); } } }