Flash JavaScript Integration Kit

Christian Cantrell and Mike Chambers of Macromedia have released Flash JavaScript Integration Kit. This kit allows two way communication between Flash application and JavaScript in browser.
It works on most of the browsers and operating systems, whereever Flash Player works. This kit would also allow complex-data-type transfer between Flash application and JavaScript.
You can find more information about it here.
I am not sure, if I should continue working on my JSFC library, I might still work on JSFC because I have some ideas and I want to experiment with those.

Bangalore MMUG

I wasn't aware of Bangalore Macromedia Usergroup. I knew of a old user group which was being run by Kiruba long back.
Today a friend of mine told me about Bangalore MMUG. I am looking forward to meet Macromedia developer community in Bangalore and probably want to start Macromedia Flex usergroup at Bangalore level, later at India level.
Contact me([email protected]_abdulqabiz.com), if you are in India and working on Macromedia Flex and interested to be part of Flex community in India.
BTW! Manish has started RIA India usergroup, where discussions would be focussed on Rich Internet Applications development in general.

Sunil Dutt: We lost him

A great human being, a great actor, a great social worker, a great politician, in total a great personality. Yeah, I am talking about Sunil Dutt. Today, Sunil Dutt left us alone in this world, he is no more with us :(
I heard this news in evening and I am not able to come out of shock. I have been very impressed by his personality. We can never forget him and the work done by him. He will always be among us....

Embedding HTML in a Flex application

Christophe has come up with kick-ass stuff. He has shown a technique where you can show HTML content within Flex application area, he actually using a HTML IFrame which being controlled by code in Flex application.
Check out the following link to find out more...
http://coenraets.com/viewarticle.jsp?articleId=95
Update: Brian Deitte has update Christophe's code for AS3/Flex 2.
http://www.deitte.com/archives/2006/08/finally_updated.htm

Macromedia FlashLite enabled Samsung handsets in India

As we all heard of great deal of Macromedia FlashLite enabled user interface in Samsung handsets. Samsung Electronics would soon be bringing those handsets to Indian market..
Just got to know of this news via JD's blog. Quite interesting news and I am really excited and waiting to see such handsets around here in India.

Nokia Sensor: A Social Software

Nokia has released 'Nokia Sensor' software, I think, which works on all Nokia phones with Symbian OS 60 series. It is a social software which works using Bluetooth technology, it allows you to find people around you. Some of them might become your friends.
You can create a small homepage(folio) with your photo, your introduction & some more information about you. You can also share media(files). You can also add someone as your buddy, you get an alert when buddy is around you.
If you find a someone around you, you can see her folio, download the files shared by her, leave guest book entry in her folio etc etc.
Indeed, pretty cool stuff. This is new kind of application, this is going to change the way we meet people. Rishi, a geek friend & collegue, and I were discussing similar idea some two-three months back. And I am really happy that Nokia worked on it and released Sensor. Today again, we were discussing this and we realized how this going to change things if it is linked with orkut like people networks.
How dating would become easy, how easily we would meet a person sitting near us in a cafe or movie hall :). But for that, people should download and start using it. Today while watching a movie in a cinema hall, I could find some ten people with Bluetooth enabled Nokia sets, but none of them was using Nokia Sensor. May be it would take sometime for word to spread around.
Check it out yourself, look at the flash demo there. Download page.

Fun time...

It's fun time now for next one week. I am going on vacation, I will be in Kanpur for almost one week. About to meet old school friends. Wow! it's gonna be fun :)
This week I really worked hard to complete the task, it feels good.
Update:-
I am right now on Banglore airport, waiting for security check-in. BTW! This is my first from my mobile.
Now on Delhi airport, have to sit here entire night and I will catch an early morning train.
Ok finally in train to kanpur, but still sometime left in departure, oh yes I am on New Delhi railway station....
BTW! I forgot to mention, I saw Sushma Swaraj, the political leader of Bhartiya Janta Party(BJP) on New Delhi airport. Before I could realize who was she? She had left the lounge area. She is one of the BJP leaders I like after Atal Ji.

Calling a Flex function from javascript

Update: I have updated the content of this entry after it was posted. John Dowdell(JD) pointed out some part of post which were confusing. I hope, it is clear now.

This is quite common question in Flash and Flex world. I had created JSFCommunicator library long back to facilitate JavaScript-Flash-JavaScript communication. But JSFC is supported in applications created via Macromedia Flash authoring tool, it is not straight forward to use it in Macromedia Flex applications. JSFC also has some issues in Firefox browser on MacOS. I am going to update it so that it works well on most of the browsers, operating systems and also in Macromedia Flex applications.

In flexcoders list, someone asked how to call a function in Flex app from Javascript, I wrote a simple example to show the technique. Following example is not a very OO approach, but it can easily be made more reusable by wrapping things into classes or creating a component.

JavaScript Code:

//this function return to Flash ActiveX Object or Plugin depending upon browser
//it takes care for browser type and returns the proper reference.
//Accepts the id or name of  or  tag respectively
</span>//source taken from: www.moock.org

function thisMovie(movieName) {
// IE and Netscape refer to the movie object differently.
        // This function returns the appropriate syntax depending on the browser.

if (navigator.appName.indexOf ("Microsoft") !=-1) {
return window[movieName];
} else {
return window.document[movieName];
}
}
//success flag, set by flash/flex app
var bFunctionCallFinished = true;
//param delimiter, kind of unique string
var paramDelimiter =  "-->$$###$$##$$<--";
//this function would call a flash/flex function.
function callFlashFunction(functionName, paramsArray)
{
if(bFunctionCallFinished)
{
//Get the reference so activeX or Plugin. flexApp is id/name of OBJECT/EMBED tags
                var flashObject  = thisMovie("flexApp");
bFunctionCallFinished = false;
flashObject.SetVariable("functionName", functionName);
flashObject.SetVariable("functionParams", paramsArray.join(paramDelimiter));
flashObject.SetVariable("commitFunctionCall", true);
}
else
{
//if previous function call is still being run, you can use setTimeOut etc to call it little later...
        }
}
</pre>

Flex Code(main.mxml):

<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" width="600" height="600" backgroundColor="#FFFFFF" >
<mx:Script>
//the name of the function to be called.
var functionName:String;
//the params delimited by paramDelimiter
var functionParams:String;
//param delemiter, kind of unique string
var paramDelimiter =  "-->$$###$$##$$<--";
//setter, which executes the function and send the success flag back to javascript
public function set commitFunctionCall(flag:Boolean):Void
{
var func:Function = this[functionName];
func.apply(this, functionParams.split(paramDelimiter));
getURL("javascript:bFunctionCallFinished=true;void(0)");
}
function sayHi(name:String)
{
alert("Hi " + name);
_ta.text += name + newline;
}
function setNum()
{
var n = arguments.length;
for(var i=0;i<n;i++)
{
_ta.text += arguments[i] + newline;
}
}
</mx:Script>
<mx:TextArea id="_ta" width="200" height="200"/>
</</mx:Application>

HTML Code:











<input type="button value="Say Hi" onclick="callFlashFunction('sayHi', ['Abdul']);" />
<input type="button value="Set number" onclick="callFlashFunction('setNum', [1,2,3]);" />
</pre>

Download the complete file from: http://www.abdulqabiz.com/blog/Flex_JSCommunication2.zip

Hope it's useful for someone. Stay tuned, for new version JSFC library.
See complete post in flexcoder's archive:
http://www.mail-archive.com/[email protected]/msg06106.html

Segue announces Macromedia Flex support in SilkPerformer testing tool.

LEXINGTON, Mass., Apr 27, 2005 (BUSINESS WIRE) -- Segue Software (NASDAQ-SCM: SEGU), the leader in software quality optimization(TM) (SQO(TM)), today announced that SilkPerformer(R), Segue's performance testing solution, provides support for Macromedia(R) (MACR) Flex(TM) 1.5 and the Action Message Format (AMF) protocol. With this announcement, Segue(R) extends the comprehensive range of enterprise technologies SilkPerformer already supports to the Flex environment. Macromedia Flex is the leading presentation-tier solution for delivering enterprise rich Internet applications.
More details here
So many good news coming up. This shows that Macromedia Flex is a standard in RIA development. Developers/Organizations have been requesting for testing tools to test Macromedia Flash/Flex applications. I think, It's a good move by Seague, they would soon realize that their revenue is going up like anything :), I hope this happens so that other companies or vendors come ahead and start supporting Macromedia Flex/Flash.

Vertical Label in Macromedia Flex

Someone on Flexcoders asked, if it's possible to show vertical label or text like this:

S
H
O
P
P
I
N
G

I wrote a simple MXML VerticalLabel component. Yet another example which shows the power of MXML components.



1)VerticalLabelExample.mxml

<mx:Application width="800" height="600" xmlns:mx="http://www.macromedia.com/2003/mxml" xmlns:local="*">
<local:VerticalLabel fontSize="15" text="SHOPPING"/>
</mx:Application>



2)VerticalLabel.mxml

<mx:VBox xmlns:mx="http://www.macromedia.com/2003/mxml">
<mx:Script>
import mx.controls.Label;
import mx.controls.TextInput;
import mx.controls.Text;
var text:String;
var textField;
function createChildren():Void
{
var n = text.length;
textField = createChild(Label,"textField");
textField.styleName = this;
for(var i=0;i<n;i++)
{
textField.text+= text.charAt(i) + "\r";
}
}
</mx:Script>
</mx:VBox>