Monday, May 25, 2009

Apply Move Effect To List

I have give some example coding in below image
in that just give dataprovider to horizonatal list and apply some login for next / previous /paging
it's give moving effect to list

mxml Syntax for moving

"< "mx:Move id="eff_project_move" duration="500" easingFunction="{Exponential.easeInOut}" target="{box}" /">"

"<" mx:Canvas ">"
"<"mx:HBox id="bx" moveEffect="{eff_project_move}">"
"<"mx:HorizontalList id="lst" columnWidth="323" /">"
"<"/mx:HBox"> "
"<"/mx:Canvas">"

and In any button Just put syntax like

bx.x = bx.x - lst.columnWidth;

for moving next 1 record

//SOME SWEET LOGIN OF MOVING LIST
Private var totalLen:Number=0;

private var current:Number=0;
private var _pageSize:Number=3;

private var tbtnSrc:ArrayCollection=new ArrayCollection();

private function init():void
{
list_object.dataProvider = ary_dataProvider;
list_object.columnCount = ary_dataProvider.length;

totalLen=list_object.dataProvider.length;
current=1;
setPage();
}

private function setPage():void
{
var tp:int= totalLen/_pageSize;
var tp1:Number= totalLen/_pageSize;
var pageLen:Number=0;

if(tp==tp1)
{
pageLen=tp;
}
else
{
pageLen=tp+1;
}
tbtnSrc.removeAll();

for(var i:int=1;i<=pageLen;i++)
{
var obj:Object=new Object();
obj.curPage=i.toString();
tbtnSrc.addItem(obj);
}
btnPage.dataProvider=tbtnSrc;
if (tbtnSrc.length>0)
btnPage.selectedIndex=0;
}

private function itemClickBtbar(event:ItemClickEvent):void
{
var selInd:Number=Number(event.item.curPage);
var moveVal:Number=(selInd*_pageSize)-(current*_pageSize);
var xfrom:Number=0;
var xto:Number=0;
if(eff_project_move.isPlaying)
{
eff_project_move.stop();
}
xfrom= - ((current-1)*_pageSize*list_object.columnWidth);
xto= xfrom - (moveVal*list_object.columnWidth);

eff_project_move.xFrom=xfrom;
eff_project_move.xTo=xto;
eff_project_move.play();
current=selInd;
}

Tuesday, May 12, 2009

Read XML and read through value object

Create new singleToneClass and write function for request xml type and result handler.
set return function to returnFunction variable for call function after result geting.

public function loadXmlData(xmlUrl:String, rFunction:Function):void
{
var serviceData:HTTPService = new HTTPService();
serviceData.url = xmlUrl;
serviceData.addEventListener(ResultEvent.RESULT, loadXmlResultHandler);
serviceData.send();
returnFunction = rFunction;
}


Result is get in two type if result have single object or single value then give direct object value
If result have multiple object then it give array of object value.
result value object is fill in listObject array / arrayColloction.

private function loadXmlResultHanlder(event:ResultEvent):void
{
var resultData:Object = event.result.itemInfo;
var itemValueObject:clsValueObject;

if(resultData.item as ArrayCollection)
{
for each (var Item:Object in resultData.item)
{
itemValueObject = new clsValueObject();
itemValueObject.setData(Item);
listObject.addItem(itemValueObject); }
}
else
{
itemValueObject = new clsValueObject();
itemValueObject.setData(resultData.item);
listObject.addItem(itemValueObject);
}
if(returnFunction!=null)
{
returnFunction();
returnFunction=null;
}
}

Thursday, May 7, 2009

Set dynamic height/width of swf object using Action Script

In any flex application you run on web it's height is default set to display html page's height.
If swf object height is greter than html page size then it give's horizontal scrolling in swf object.
Here gives some tips to how can we set swf object size and html page size dynamically.

1. Create class in that set changing parameter.

private var objHeight:Number = 0;
private var timer:uint = 0;
public function setScrollSize(objUi:VBox):void
{
if (objUi)
{
objHeight = Application.application.height;
objUi.minHeight = objHeight;
BindingUtils.bindSetter(update_height_handler,objUi, "height");
}
}
private function update_height_handler(objVal:Number):void
{
clearTimeout(timer);
timer = setTimeout(Timeout_handler, 5, objVal);
}
private function Timeout_handler(objVal:Number):void
{
if (objHeight>objVal)
objVal = MinHeight;

resizeObject_handler(0,objVal);
}
public function resizeObject_handler(objWi:Number = 0,objHi:Number = 0):void
{
if (ExternalInterface.available)
{
ExternalInterface.call("java_resizeObject", objWi, objHi);
}
}


2. Set Javascript in your html page

function java_resizeObject(width,height)
{
var _object = document.getElementById("swfFileName");
if(width != undefined && width != 0)_object.style.width = width;
if(height != undefined && height != 0)_object.style.height = height;
}


3. Call this function at the init() event of application pass the container object in that.

Set multiple language at run time / set Resource file.

We can create multilingual application using resource manager.
1. Create folder eg. LocalRes/en_US and LocalRes/fr_FR
2. Create builder.properties file in both folder
2. Set key and value in according to language like
key1=value1
key2=value2
3. Right Click on project -> Properties ->Flex Compiler
4. Set Additional Compiler argumnets:
-locale en_US fr_FR -source-path=LocalRes/{locale} -allow-source-path-overlap=true
5. Open main Application mxml file set -> resourceManager.localeChain = "en_US"; // according to language
6. Get Resource file key value using -> resourceManager.getString('builder', 'key1');
7. In project you can give set string using this resourceManager.
8. In .as file you can use ->ResourceManager.getInstance().getString('builder', 'key1');
9. Set matadata in main Application mxml file
"<"mx:Metadata">"
[ResourceBundle("builder")]
"<" /mx:Metadata ">"

Set resource file dynamically

Some times we need to set resource file dynamically like we need to set language english / french;
we can do this by passing parameter in flash object.

In script tag in html page we find AC_FL_RunContent() function in that all variable of flash object is set.
we can add variable || "FlashVars", "language=fr_FR" || in that function this variable is give static or dynamic in javascript.

in main Application mxml page's preinitialize event we get setting parameter which given below.

var objLan:String="";
if(Application.application.parameters.hasOwnProperty("language") && Application.application.parameters.language!="")
{
objLan=Application.application.parameters.language;
}
resourceManager.localeChain = [objLan];

Store content value in local

Some time we need to keep previous setting of application in our local system.
We can do this by SharedObject.

private var appHeight:Number=200; // Default height 200
private var appWidth:Number=200; // Default width 200
private var sharedObj:SharedObject; // SharedObject

Save Setting in SharedObject

sharedObj.data.setting = new Object();
sharedObj.data.setting.appHeight = appHeight;
sharedObj.data.setting.appWidth = appWidth;

Get Setting in SharedObject

sharedObj =SharedObject.getLocal("GeneralSetting");
appHeight = so.data.setting.appHeight;
appWidth = so.data.setting.appWidth;

Read and Write file in encrypted format without using encryption

Read File :-

private function readEncryptedFile(objFile:File):String
{
var objFileStream:FileStream = new FileStream();
objFileStream.open(objFile, FileMode.READ);

var objByt:ByteArray = new ByteArray();
objFileStream.readBytes(byt, 0, objFileStream.bytesAvailable);
objByt.uncompress(CompressionAlgorithm.DEFLATE);
var retStr:String = byt.readObject();
return retStr;
}


Write File :-

public function writeEncryptedFile(objFile:File, writeDataStr:String):void
{
var objFileStream:FileStream = new FileStream();
objFileStream.open(objFile, FileMode.WRITE);

var objByt:ByteArray = new ByteArray();
objByt.writeObject(objDataStr);
objByt.position = 0;
objByt.compress(CompressionAlgorithm.DEFLATE);

ojbFileStream.writeBytes(objByt, 0, objByt.length);
objFileStream.close();
}

Wednesday, May 6, 2009

Capturing & Copying Image

var objCan:Canvas= new Canvas();
var img:Image=new Image();//Source Image
var imgSave:Image=new Image();//Destination Image
var sourceBMP:BitmapData = new BitmapData(img.width,img.height);
var gbheight:Number=500;
var gbwidth:Number=500;
var gbX:Number=5;
var gbY:Number=5;

//Capture Bitmap of Canvas
var objBitmapData:BitmapData = ImageSnapshot.captureBitmapData(objCan);
//Dwaw image in Source BitmapDatObject
sourceBMP.draw(objBitmapData, new Matrix());
//Get New BitmapData
var destBMPData:BitmapData= new BitmapData(gbwidth,gbheight);;
//set Destination Bitmap data as per x,y and height,width from source bitmap data object
destBMPData.copyPixels(sourceBMP, new Rectangle(gbX,gbY,gbwidth,gbheight),new Point(0,0));
//convert destination bitmapdata to bitmap
var bitmap:Bitmap= new Bitmap(destBMPData);
// Apply smoothing for smooth image
bitmap.smoothing=true;
//Give source of destination image
imgSave.source= bitmap;

Tuesday, May 5, 2009

Add Sprite into Container . Use ClassFactory for itemRenderer.

Sprite : - It's needed when any flash component is add into container.
UIComponent :- It is used for adding Flash component.

If we want to add flash component into canvas then
1. Create flash component object.
2. Create Sprite object and add flash component object.
3. Create UIComponent object and add Sprite object.
4. Get Canvas container object "objCan" then add UIComponent object.
objCan.rawChildren.addChild(objUIComponent);

Here we need rawChildern property for adding objUIComponent.

ClassFactory : - When any dynamic Grid, TileList , List component need ItemRender which is also dynamic then we need to create ClassFactory Object for applying dynamic ItemRender.


var itemRenderer:ClassFactory = new ClassFactory(itemReaderClassType)
tl.itemRenderer = itemRenderer;

On Item Render need override method :
override public function set data(value:Object):void
{
if (value!=null)
{
super.data = value;

}
}

Monday, May 4, 2009

Drag Drop Componet



Container who can accept dragged component have two event

1. Drag Enter : when drag component is enter. Accept drag component here.
2. Drag Drop : When drop component. Get Dragged Component and add to container.

Saturday, May 2, 2009

Flex Introduction

  • Flex is adobe's language which are used for developing web / Air(desktop) application.
  • Flex end product is .swf (flash) file so u only need flash player for browser to run web application.
  • We can say this type of application is RIA (Reach Internet Application) .
  • Web Site's which are developing in Flex no need to refresh browser's page.
  • All the connectivity of database in Flex is using , Remote Object , Web Service and Http Service calling.
  • Back end business logic is developing in .net / php / cold fusion etc... which sql server , my sql etc...