How To publish swf file using flash builder 4.5 flex project - actionscript-3

I have a set of fla files templates that produce games and activities by changing its input XML file, What I want to do is to create xml editor in flex and by converting the fla files to actionscript projects in flex use the resulting xml to publish one swf.
in short my approach is
convert the games in flash to flex MXML components
modify the game data by passing XML argument to the MXMl components
click publish and the user can get the game as SWF
the goal is produce something similar to this
Is that possible??

The easy and straightforward way to reuse games and activities from flash professional
is to load the swf files to flex using swf loader then convert to movieclip using
swf.content = M as movieclip
next step is to modify the xml variable by M.XMLVar = xml
now I have modified version of the activity Im still looking for a way to convert the movieclip back to swf and save

Related

Play sound from library by its name in Actionscript3

Is it possible to play a sound from the library by its name and not Class Linkage in actionscript3?? Meaning if I have a sound named "mysound.mp3" in library and does not have a linkage name, can I play it dynamically in my code by any means?? I hope my question is clear.
In general it's not possible, because if you don't use your sound in some timeline it will not even be exported to swf.
If you are using it in timeline (so it's exported to swf) it's possible to extract it in run-time with some third-party libraries/as3 decompilers by parsing raw swf bytes, but I don't advice to go with that way - it's not stable and system resources consuming.
It's much more easy to set linkage, btw why you don't want to do that?
If you want to create an instance of a Class dynamically, you must call it by its AS Linkage. Why proceed in any other way?
How to proceed?
Right-click the sound file in your library and make it available for ActionScript by editing its Linkage properties: select Linkage to open up the linkage window > ActionScript > ActionScript Linkage : MySound (select Export for ActionScript and Export in frame 1). That will export your sound file as an ActionScript Class called MySound.
You can also select Linkage from the Library Panel menu and create or modify your AS Linkage:
So you can create a new instance of your sound Class and play it:
var s:MySound = new MySound();
s.play();

Execution life cycle of MXML+actionScript files

I know that When we compile a Java class then it will convert it into .class file and then through this .class file we have been able to run our code
Now I am new to Flex4 and ActionScript3 and I want to know what happened when I create a MXML file in flex builder and run it.Is MXML file first convert to .as file and the able to run or some other conversions happen?
Is MXML file first convert to .as file and the able to run or some other conversions happen?
Yes, the mxml compiler will convert MXML files into Actionscript classes. The mxml compiler generates a lot of code, which by default is not saved in your project. You can, however, add the -keep-generated-actionscript option (or just -keep) to the compiler options of your project you can see the generated code.
Here is a reference to the various compiler options. Right click your project in Flash Builder, select "Properties", and select "Flex Compiler" to see/edit the compiler options.

Is there any method in as3 that flash can write file's last modified date

Is there any method in as3 that flash can write file's last modified date.
Its stand alone flash application which had external swf loading. I want to check the last modified date of the swf during the loading.
please suggest any possible methods.
Thanks.
In AIR, there is File class with modificationDate property. But in plain AS3, there's no file concept at all. If you loading swf with Loader, you only get data, but not the attributes of file (and file might not exist at all if loading something by URL.)

How to effectively load SWF libraries?

I am making an AS3 project in FB4. In our workflow, we have artists compile art into SWC files which the I then link as 'Referenced Libraries' in FB4.
Then I set the "Link Type" of the SWC files to "external" instead of merged into code. This should create SWFs corresponding to the SWC files in the output folder, right?
This doesn't seem to be the case. I am only seeing one SWF file: the main_app's.
I was trying to make it so that I can use a library manager to load the files dynamically.
I tried extracting the swfs manually, but it seems the main_app still compiles all the swcs to itself. I made sure the Link Type was set to external. The file size for the main_app between "external" and "merged to code" seem to be the same.
I've made a simple project in Flash Builder 4 and the only way I got the SWC->SWF happening is by creating a Flex Project instead of an ActionScript Project and selecting "Runtime shared library (RSL)" instead of "External". This is because the Flex framework have some classes that work out the loading of those libraries for you. It also automate the conversion (I should say extraction) process.
Now, if you don't want to create a Flex project just for this, you can extract the SWF yourself. The SWC file format is just a Zip containing a SWF and an XML file describing the content. You can then load dynamically this extracted SWF file using a Loader and setting the correct Application Domain. Here's a snippet of my sample project.
public class Web extends Sprite
{
public function Web()
{
//you will not be able to instantiate classes of your library until it's loaded
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
loader.load(new URLRequest("library.swf"), new LoaderContext(false, ApplicationDomain.currentDomain));
}
protected function onLoadComplete(event:Event):void
{
//here you can create instances of classes defined in your library
new Asset();
}
}
You might think that's a pretty tedious job to unzip+copy every time your designers update the library. You could automate this process with a script or an Ant file. Unfortunately, unless I'm missing something, it looks like Flash Builder doesn't want you to extend your build process, so you will still need a bit of hand work or completely convert to Ant (or something similar) to build.
Good luck!
From the moment the SWC is added to your Library, you should be able to access the SWC's assets by directly calling their specific class names . There's no need to try to get a SWF and load it with the Loader class. This actually defeats the purpose of using a SWC in the first place!
Let's say that , in your SWC, you have a MovieClip with a class name of GraphicAsset, to create a new instance , you simply do this:
var mc:MovieClip = new GraphicAsset();
In FB4's folder structure , have a look at your SWC in the Referenced Libraries folder & check the default package, you should see a list of all your assets.

Flash directories

Is it possible to make code in actionscript-3 to parse the virtual directories that are constructed in the flash library?
I mean that if i add a folder on the library of CS4 called 'graphics' can i write code that parse the elements of that folder in order to fill an array with folder's elements(which are BitmapData classes) ?
No, not as far as I know.
One way of looking at it is that the library is part of the fla file, the source document, and not of the compiled swf. Assets in the library that are not "exported for ActionScript" are not included in the swf. ActionScript doesn't have access to the library as such, there is no object in ActionScript for it.