Flexcomps’s Weblog

Archive for the ‘AIR’ Category

FFD_02-2009

FFDMag had excellent magazine for flash and flex programmers having articles ranging from Beginner Level to expert levels. Just check some of the topics below

  • Flash Flex developer interview with Dave Schroeder about the Flashbelt Conference…
  • BannerSnack – A quick alternative to Flash?…
  • Working With Flash CS4 New Features: Inverse kinematics (IK) with Bone Tool…
  • Tracking Time with Screenweaver HX…
  • Using all the different components within CS4 to built a complete site…
  • Model View Controller – What’s the Secret Sauce… ?…
  • JSFL Quirks…
  • SWX: The Native Data Format for Adobe Flash…
  • An introduction to Flickr In Flash…
  • Flash video and AS3…
  • WebORB tricks…
  • Multi-user Applications in haXe…
  • Achieving a retro-style using only Flash…
  • Secrets of a professional Flash game programmer…
  • Interview with Lee Brimelow…

You can subscribe this magazine from the following link

http://ffdmag.com/prt/view/subscription.html

Following is a code to remove a child from a parent by passing it’s instance name as a string and parent as a display object

import fl.controls.Button;

//———– Draw a graphics on the stage ———-
var t:Sprite = new Sprite();
t.name = “testSprite”;
t.graphics.lineStyle(1,0x0000ff);
t.graphics.beginFill(0xff0000);
t.graphics.drawCircle(0,0,50);
t.graphics.endFill();
addChild(t);
t.x =100;
t.y = 100;

//———– Remove Child Function ————–
function removeChildWithRef(spriteName:String, parentObj:*){
var t:DisplayObject = parentObj.getChildByName(spriteName);
parentObj.removeChild(t);
}

//————- Add  a Button to Stage ————
var tBtn:Button = new Button();
tBtn.label = “Remove Circle”;
tBtn.x = 50;
tBtn.y = 170;
tBtn.addEventListener(MouseEvent.CLICK,onClick);
addChild(tBtn);

//———— Capture Click Event ————-
function onClick(evt:MouseEvent){
removeChildWithRef(“testSprite”,this);
}

While reading a book i come to a very interesting topic which i would like to share here

———————–

By default, The bitmap instances that reference a given BitmapData object are notified every time setPixel32( ) or setPixel( ) is called on that object. When setPixel32( ) or setPixel( ) are used in rapid succession within the same frame cycle—such as when setting the color of every pixel in a bitmap—these notifications can reduce performance. To improve performance, we can use the BitmapData class’s instance method lock( ).

Calling lock( ) on a BitmapData object forces ActionScript to not notify dependent Bitmap objects when executing setPixel32( ) or setPixel( ). Hence, before using setPixel32( ) or setPixel( ) in rapid succession, always call lock( ). After calling lock( ), assign all desired pixel color values; then call the BitmapData( ) class’s instance method unlock( ). Calling unlock( ) instructs ActionScript to notify all dependent Bitmap objects as necessary.

Example below demonstrates the approach. The example uses a loop to assign a random color to every pixel in a 500 × 500 BitmapData object. Notice the call to lock( ) before the loop and unlock( ) after the loop.

Read the rest of this entry »

The following code is solution to a problem where you need to make the accordion component’s MouseOver event to behave like a click event. The code will work only in the case if you have not given the names to the AccordionHeader explicitly. Check the solution out here

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
public function onMouseOver(evt:MouseEvent):void{
var strName:String = evt.target.name;
var strLen:int = String("_header").length;
if(strName.indexOf("_header") > -1){
accordion.selectedIndex = int(strName.substr(strLen,strName.length));
}
}
]]>
</mx:Script>
<mx:Panel title="Accordion Container Example" height="90%" width="90%"
paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10">
<mx:Label width="100%" color="blue"
text="Select an Accordion navigator button to change the panel."/>
<mx:Accordion id="accordion" width="100%" height="100%" mouseOver="onMouseOver(event)" >
<!-- Define each panel using a VBox container. -->
<mx:VBox label="Accordion Button for Panel 1">
<mx:Label text="Accordion container panel 1"/>
</mx:VBox>
<mx:VBox label="Accordion Button for Panel 2">
<mx:Label text="Accordion container panel 2"/>
</mx:VBox>
<mx:VBox label="Accordion Button for Panel 3">
<mx:Label text="Accordion container panel 3"/>
</mx:VBox>
</mx:Accordion>
<mx:Label width="100%" color="blue"
text="Programmatically select the panel using a Button control."/>
<mx:HBox>
<mx:Button label="Select Panel 1" click="accordion.selectedIndex=0;"/>
<mx:Button label="Select Panel 2" click="accordion.selectedIndex=1;"/>
<mx:Button label="Select Panel 3" click="accordion.selectedIndex=2;"/>
</mx:HBox>
</mx:Panel>
</mx:Application>

The post contains a solution for a case where you need to attach a Library symbol and you have to pass that class name as a string to the function.

The approach followed here is by using the getDefinitionByName utility which interprets the string and convert it into a Class. Then you can use a new syntax with that particular class. Following is a code for the same solution and you can download the source files from here. The “testMC” here is a movieClip in library with the className as testMC and BaseClass as flash.display.MovieClip

import flash.utils.getDefinitionByName;


function addMovieFromLibrary(mcIName:String){
var tMC:Class = getDefinitionByName(mcIName) as Class;
var newMc:MovieClip = new tMC() as MovieClip;
addChild(newMc);
}


addMovieFromLibrary("testMC");

You can enable the hand cursor on a MovieClip by defining the following statement

MovieClip.buttonMode = true;

However the solution does not work in-case you have a dynamic textField in that movieclip. To enable hand in this case you have to additionally write the following statement

MovieClip.mouseChildren = false;

The reason is that the mouseChildren property determines whether or not the children of the object are mouse enabled. If an object is mouse enabled, a user can interact with it by using a mouse. The default is true which makes the dynamic textfield interactable and due to the textfield behaviour the flash player does not show the hand-cursor.

Adobe had released the Flash CS4 professional edition at a preorder price of $699. Following are the Some of highlighted features

  • Object-based animation
  • 3D transformation
  • Procedural modeling with Deco and Spray Brush
  • Metadata (XMP) support
  • Authoring for Adobe AIR
  • XFL support
  • Inverse kinematics with the Bones tool
  • Motion editor
  • Motion presets
  • H.264 support

Check here for more details

http://www.adobe.com/products/flash/features/?view=topnew&promoid=DRHWS

Tags:

I have developed this XMLUtility class in conjunction with a CustomEvent Class which returns me the loaded XML/String Data along with the complete event firing. You can download the sources from here. Following is the code you need to write when you want to load this class


//------------ Import Classes
import com.flexcomps.utils.CustomEvent;
import com.flexcomps.utils.XMLLoaderUtil;


//-------- Create instance of loader class
var xmlLoader:XMLLoaderUtil = new XMLLoaderUtil();
xmlLoader.addEventListener(CustomEvent.ONLOADED, onXMLLoaded);
xmlLoader.load(xmlPath);


//----- Method to handle the returned data
private function onXMLLoaded(evt:CustomEvent) {
xmlData = evt.data as XML;
trace(xmlData);
}

The post is regarding a solution in case you have some numeric data with commas, which is going to be shown in a datagrid with sorting enabled. If you use the Array.NUMERIC as an option on the DataGridColumn.sortOptions with values having comma the results are not as desired. So what we have done is use the DataGridColumn.sortCompareFunction to use a custom sorting function and a toNumeric function to convert the comma separated data to Numeric values where as labels of datagrid remains same as with commas. Check the result below and you can download code from here

AS3 Datagrid sorting

AS3 Datagrid sorting

Here is a ScrollBar component class. The class takes a movieClip as a parameter and then attach the scrollbar to it. Following is the snapshot of same

Scrollbar component

Scrollbar component

You can download the sources from here


April 2024
M T W T F S S
1234567
891011121314
15161718192021
22232425262728
2930  

Blog Stats

  • 326,382 hits