In this tutorial I will show you guys how to do some advanced furni editing.
You will learn how to..
- Add images to an furni.
- Change animations.
You will need:
- Flash Decompiler Trillix 5.xx - This is the one i have
- Flash Builder - You download a free 30 trial from Adobe.com
Lets get started
Open flash decompiler trillix.

- Find the furni you want to edit.
- Make sure the file is selected like in the screenshot.
- Convert to source.
Now open FlashBuilder:
Go to File and then select Import Flex Project(FXP).
Now select folder and browse to the folder there you extracted the furni to, should be something like "D:\extractedswfs\xmas11_cuckoo.swf.flex"
Once it is done you will see all the files for the project.
In the src folder you will see .as, .dat and your images files.
For my example there are two animations going on so i have 2 sets of files
xmas11_cuckoo_xmas11_cuckoo_64_a_2_x
xmas11_cuckoo_xmas11_cuckoo_64_b_2_x
xmas11_cuckoo_xmas11_cuckoo_32_a_2_x
xmas11_cuckoo_xmas11_cuckoo_32_b_2_x
The 32's are the small images and the 64 the large ones. The 64_a images are used for the first animation and the 64_b images for the second animation.
I want to add an image to the first animation(a) so i look at the highest (a) number. in this case it was xmas11_cuckoo_xmas11_cuckoo_64_a_2_3 so my new images should be called xmas11_cuckoo_xmas11_cuckoo_64_a_2_4 and xmas11_cuckoo_xmas11_cuckoo_32_a_2_4
So go ahead and name your new images.
To add and image (2 actually, one for each size) you will have to edit 4 files
First open "your_furni_name_assets" e.g. xmas11_cuckoo_xmas11_cuckoo_assets.dat.
PHP Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<assets>
<asset name="xmas11_cuckoo_64_a_2_0" x="24" y="37"/>
<asset name="xmas11_cuckoo_64_a_2_1" x="24" y="37"/>
<asset name="xmas11_cuckoo_64_a_2_2" x="24" y="37"/>
<asset name="xmas11_cuckoo_64_a_2_3" x="24" y="37"/>
-->> <asset name="xmas11_cuckoo_64_a_2_4" x="24" y="37"/>
<asset name="xmas11_cuckoo_64_b_2_0" x="-11" y="11"/>
<asset name="xmas11_cuckoo_64_b_2_1" x="0" y="20"/>
<asset name="xmas11_cuckoo_64_b_2_2" x="0" y="20"/>
<asset name="xmas11_cuckoo_64_b_2_3" x="0" y="20"/>
<asset name="xmas11_cuckoo_64_b_2_4" x="0" y="20"/>
<asset name="xmas11_cuckoo_64_b_2_5" x="0" y="20"/>
<asset name="xmas11_cuckoo_32_a_2_0" x="11" y="16"/>
<asset name="xmas11_cuckoo_32_a_2_1" x="11" y="16"/>
<asset name="xmas11_cuckoo_32_a_2_2" x="11" y="16"/>
<asset name="xmas11_cuckoo_32_a_2_3" x="11" y="16"/>
-->> <asset name="xmas11_cuckoo_32_a_2_4" x="11" y="16"/>
<asset name="xmas11_cuckoo_32_b_2_0" x="0" y="4"/>
<asset name="xmas11_cuckoo_32_b_2_1" x="0" y="8"/>
<asset name="xmas11_cuckoo_32_b_2_2" x="0" y="8"/>
<asset name="xmas11_cuckoo_32_b_2_3" x="0" y="8"/>
<asset name="xmas11_cuckoo_32_b_2_4" x="0" y="8"/>
<asset name="xmas11_cuckoo_32_b_2_5" x="0" y="8"/>
<asset name="xmas11_cuckoo_64_a_4_0" flipH="1" source="xmas11_cuckoo_64_a_2_0" x="24" y="37"/>
<asset name="xmas11_cuckoo_64_a_4_1" flipH="1" source="xmas11_cuckoo_64_a_2_1" x="24" y="37"/>
<asset name="xmas11_cuckoo_64_a_4_2" flipH="1" source="xmas11_cuckoo_64_a_2_2" x="24" y="37"/>
<asset name="xmas11_cuckoo_64_a_4_3" flipH="1" source="xmas11_cuckoo_64_a_2_3" x="24" y="37"/>
-->> <asset name="xmas11_cuckoo_64_a_4_4" flipH="1" source="xmas11_cuckoo_64_a_2_4" x="24" y="37"/>
<asset name="xmas11_cuckoo_64_b_4_0" flipH="1" source="xmas11_cuckoo_64_b_2_0" x="-11" y="11"/>
<asset name="xmas11_cuckoo_64_b_4_1" flipH="1" source="xmas11_cuckoo_64_b_2_1" x="0" y="20"/>
<asset name="xmas11_cuckoo_64_b_4_2" flipH="1" source="xmas11_cuckoo_64_b_2_2" x="0" y="20"/>
<asset name="xmas11_cuckoo_64_b_4_3" flipH="1" source="xmas11_cuckoo_64_b_2_3" x="0" y="20"/>
<asset name="xmas11_cuckoo_64_b_4_4" flipH="1" source="xmas11_cuckoo_64_b_2_4" x="0" y="20"/>
<asset name="xmas11_cuckoo_64_b_4_5" flipH="1" source="xmas11_cuckoo_64_b_2_5" x="0" y="20"/>
<asset name="xmas11_cuckoo_32_a_4_0" flipH="1" source="xmas11_cuckoo_32_a_2_0" x="11" y="16"/>
<asset name="xmas11_cuckoo_32_a_4_1" flipH="1" source="xmas11_cuckoo_32_a_2_1" x="11" y="16"/>
<asset name="xmas11_cuckoo_32_a_4_2" flipH="1" source="xmas11_cuckoo_32_a_2_2" x="11" y="16"/>
<asset name="xmas11_cuckoo_32_a_4_3" flipH="1" source="xmas11_cuckoo_32_a_2_3" x="11" y="16"/>
-->> <asset name="xmas11_cuckoo_32_a_4_4" flipH="1" source="xmas11_cuckoo_32_a_2_2" x="11" y="16"/>
<asset name="xmas11_cuckoo_32_b_4_0" flipH="1" source="xmas11_cuckoo_32_b_2_0" x="0" y="4"/>
<asset name="xmas11_cuckoo_32_b_4_1" flipH="1" source="xmas11_cuckoo_32_b_2_1" x="0" y="8"/>
<asset name="xmas11_cuckoo_32_b_4_2" flipH="1" source="xmas11_cuckoo_32_b_2_2" x="0" y="8"/>
<asset name="xmas11_cuckoo_32_b_4_3" flipH="1" source="xmas11_cuckoo_32_b_2_3" x="0" y="8"/>
<asset name="xmas11_cuckoo_32_b_4_4" flipH="1" source="xmas11_cuckoo_32_b_2_4" x="0" y="8"/>
<asset name="xmas11_cuckoo_32_b_4_5" flipH="1" source="xmas11_cuckoo_32_b_2_5" x="0" y="8"/>
<asset name="xmas11_cuckoo_icon_a" x="11" y="20"/>
</assets>
-->> Are the files I added.
You can edit the position of the images by editiong the x and y values of the images.
note: The bottom part of the code is for when the furni is rotated.
Now you have to add your images to the manifest, e.g. xmas11_cuckoo_manifest.dat
PHP Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<manifest>
<library name="xmas11_cuckoo" version="0.1">
<assets>
<asset name="index" mimeType="text/xml"/>
<asset name="xmas11_cuckoo_visualization" mimeType="text/xml"/>
<asset name="xmas11_cuckoo_assets" mimeType="text/xml"/>
<asset name="xmas11_cuckoo_logic" mimeType="text/xml"/>
<asset name="xmas11_cuckoo_64_a_2_0" mimeType="image/png"/>
<asset name="xmas11_cuckoo_64_a_2_1" mimeType="image/png"/>
<asset name="xmas11_cuckoo_64_a_2_2" mimeType="image/png"/>
<asset name="xmas11_cuckoo_64_a_2_3" mimeType="image/png"/>
-->> <asset name="xmas11_cuckoo_64_a_2_4" mimeType="image/png"/>
<asset name="xmas11_cuckoo_64_b_2_0" mimeType="image/png"/>
<asset name="xmas11_cuckoo_64_b_2_1" mimeType="image/png"/>
<asset name="xmas11_cuckoo_64_b_2_2" mimeType="image/png"/>
<asset name="xmas11_cuckoo_64_b_2_3" mimeType="image/png"/>
<asset name="xmas11_cuckoo_64_b_2_4" mimeType="image/png"/>
<asset name="xmas11_cuckoo_64_b_2_5" mimeType="image/png"/>
<asset name="xmas11_cuckoo_32_a_2_0" mimeType="image/png"/>
<asset name="xmas11_cuckoo_32_a_2_1" mimeType="image/png"/>
<asset name="xmas11_cuckoo_32_a_2_2" mimeType="image/png"/>
<asset name="xmas11_cuckoo_32_a_2_3" mimeType="image/png"/>
-->> <asset name="xmas11_cuckoo_32_a_2_4" mimeType="image/png"/>
<asset name="xmas11_cuckoo_32_b_2_0" mimeType="image/png"/>
<asset name="xmas11_cuckoo_32_b_2_1" mimeType="image/png"/>
<asset name="xmas11_cuckoo_32_b_2_2" mimeType="image/png"/>
<asset name="xmas11_cuckoo_32_b_2_3" mimeType="image/png"/>
<asset name="xmas11_cuckoo_32_b_2_4" mimeType="image/png"/>
<asset name="xmas11_cuckoo_32_b_2_5" mimeType="image/png"/>
<asset name="xmas11_cuckoo_icon_a" mimeType="image/png"/>
</assets>
</library>
</manifest>
-->> Are the files I added.
Now under package in you project explorer choose the last .as file. in my case xmas11_cuckoo.as
PHP Code:
package
{
import flash.display.*;
public class xmas11_cuckoo extends flash.display.Sprite
{
public function xmas11_cuckoo()
{
super();
return;
}
public static const xmas11_cuckoo_logic:Class=xmas11_cuckoo_xmas11_cuckoo_logic;
public static const xmas11_cuckoo_32_a_2_0:Class=xmas11_cuckoo_xmas11_cuckoo_32_a_2_0;
public static const xmas11_cuckoo_32_a_2_1:Class=xmas11_cuckoo_xmas11_cuckoo_32_a_2_1;
public static const xmas11_cuckoo_32_a_2_2:Class=xmas11_cuckoo_xmas11_cuckoo_32_a_2_2;
public static const xmas11_cuckoo_32_a_2_3:Class=xmas11_cuckoo_xmas11_cuckoo_32_a_2_3;
-->> public static const xmas11_cuckoo_32_a_2_4:Class=xmas11_cuckoo_xmas11_cuckoo_32_a_2_4;
public static const xmas11_cuckoo_32_b_2_3:Class=xmas11_cuckoo_xmas11_cuckoo_32_b_2_3;
public static const xmas11_cuckoo_32_b_2_4:Class=xmas11_cuckoo_xmas11_cuckoo_32_b_2_4;
public static const xmas11_cuckoo_32_b_2_5:Class=xmas11_cuckoo_xmas11_cuckoo_32_b_2_5;
public static const xmas11_cuckoo_32_b_2_0:Class=xmas11_cuckoo_xmas11_cuckoo_32_b_2_0;
public static const xmas11_cuckoo_32_b_2_1:Class=xmas11_cuckoo_xmas11_cuckoo_32_b_2_1;
public static const xmas11_cuckoo_32_b_2_2:Class=xmas11_cuckoo_xmas11_cuckoo_32_b_2_2;
public static const xmas11_cuckoo_assets:Class=xmas11_cuckoo_xmas11_cuckoo_assets;
public static const xmas11_cuckoo_64_b_2_0:Class=xmas11_cuckoo_xmas11_cuckoo_64_b_2_0;
public static const xmas11_cuckoo_64_a_2_2:Class=xmas11_cuckoo_xmas11_cuckoo_64_a_2_2;
public static const xmas11_cuckoo_64_a_2_3:Class=xmas11_cuckoo_xmas11_cuckoo_64_a_2_3;
-->> public static const xmas11_cuckoo_64_a_2_4:Class=xmas11_cuckoo_xmas11_cuckoo_64_a_2_4;
public static const manifest:Class=xmas11_cuckoo_manifest;
public static const xmas11_cuckoo_64_b_2_5:Class=xmas11_cuckoo_xmas11_cuckoo_64_b_2_5;
public static const xmas11_cuckoo_64_a_2_0:Class=xmas11_cuckoo_xmas11_cuckoo_64_a_2_0;
public static const xmas11_cuckoo_64_a_2_1:Class=xmas11_cuckoo_xmas11_cuckoo_64_a_2_1;
public static const xmas11_cuckoo_64_b_2_1:Class=xmas11_cuckoo_xmas11_cuckoo_64_b_2_1;
public static const xmas11_cuckoo_64_b_2_2:Class=xmas11_cuckoo_xmas11_cuckoo_64_b_2_2;
public static const xmas11_cuckoo_64_b_2_3:Class=xmas11_cuckoo_xmas11_cuckoo_64_b_2_3;
public static const xmas11_cuckoo_64_b_2_4:Class=xmas11_cuckoo_xmas11_cuckoo_64_b_2_4;
public static const xmas11_cuckoo_icon_a:Class=xmas11_cuckoo_xmas11_cuckoo_icon_a;
public static const index:Class=xmas11_cuckoo_index;
public static const xmas11_cuckoo_visualization:Class=xmas11_cuckoo_xmas11_cuckoo_visualization;
}
}
Once again -->> are the lines we have to add.
Now we have to display the images.
Open xmas11_cuckoo_xmas11_cuckoo_visualization.dat - This file is also used for the animation so I'll show you how that works at the same time.
PHP Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<visualizationData type="xmas11_cuckoo">
<visualization size="1" layerCount="1" angle="360"/>
<visualization size="32" layerCount="2" angle="45">
<layers>
<layer id="0"/>
</layers>
<directions>
<direction id="2"/>
<direction id="4"/>
</directions>
<colors/>
<animations>
<animation id="0">
<animationLayer id="0" loopCount="0" frameRepeat="7">
<frameSequence>
<frame id="0"/>
<frame id="1"/>
<frame id="2"/>
<frame id="3"/>
-->> <frame id="4"/>
-->> <frame id="4"/>
<frame id="3"/>
<frame id="2"/>
<frame id="1"/>
</frameSequence>
</animationLayer>
<animationLayer id="1"/>
</animation>
<animation id="1">
<animationLayer id="0" loopCount="0" frameRepeat="7">
<frameSequence>
<frame id="0"/>
<frame id="1"/>
<frame id="2"/>
<frame id="3"/>
-->> <frame id="4"/>
-->> <frame id="4"/>
<frame id="3"/>
<frame id="2"/>
<frame id="1"/>
</frameSequence>
</animationLayer>
<animationLayer id="1"/>
</animation>
<animation id="101" transitionTo="0">
<animationLayer id="0" loopCount="0" frameRepeat="7">
<frameSequence>
<frame id="0"/>
<frame id="1"/>
<frame id="2"/>
<frame id="3"/>
-->> <frame id="4"/>
-->> <frame id="4"/>
<frame id="3"/>
<frame id="2"/>
<frame id="1"/>
</frameSequence>
</animationLayer>
<animationLayer id="1" frameRepeat="3">
<frameSequence>
<frame id="1"/>
<frame id="2"/>
<frame id="3"/>
<frame id="4"/>
<frame id="5"/>
<frame id="5"/>
<frame id="4"/>
<frame id="3"/>
<frame id="2"/>
<frame id="1"/>
<frame id="0"/>
</frameSequence>
</animationLayer>
</animation>
<animation id="100" transitionTo="1">
<animationLayer id="0" loopCount="0" frameRepeat="7">
<frameSequence>
<frame id="0"/>
<frame id="1"/>
<frame id="2"/>
<frame id="3"/>
-->> <frame id="4"/>
-->> <frame id="4"/>
<frame id="3"/>
<frame id="2"/>
<frame id="1"/>
</frameSequence>
</animationLayer>
<animationLayer id="1" frameRepeat="3">
<frameSequence>
<frame id="1"/>
<frame id="2"/>
<frame id="3"/>
<frame id="4"/>
<frame id="5"/>
<frame id="5"/>
<frame id="4"/>
<frame id="3"/>
<frame id="2"/>
<frame id="1"/>
<frame id="0"/>
</frameSequence>
</animationLayer>
</animation>
</animations>
<postures/>
<gestures/>
</visualization>
<visualization size="64" layerCount="2" angle="45">
<layers>
<layer id="0"/>
</layers>
<directions>
<direction id="2"/>
<direction id="4"/>
</directions>
<colors/>
<animations>
<animation id="0">
<animationLayer id="0" loopCount="0" frameRepeat="7">
<frameSequence>
<frame id="0"/>
<frame id="1"/>
<frame id="2"/>
<frame id="3"/>
-->> <frame id="4"/>
-->> <frame id="4"/>
<frame id="3"/>
<frame id="2"/>
<frame id="1"/>
</frameSequence>
</animationLayer>
<animationLayer id="1"/>
</animation>
<animation id="1">
<animationLayer id="0" loopCount="0" frameRepeat="7">
<frameSequence>
<frame id="0"/>
<frame id="1"/>
<frame id="2"/>
<frame id="3"/>
-->> <frame id="4"/>
-->> <frame id="4"/>
<frame id="3"/>
<frame id="2"/>
<frame id="1"/>
</frameSequence>
</animationLayer>
<animationLayer id="1"/>
</animation>
<animation id="101" transitionTo="0">
<animationLayer id="0" loopCount="0" frameRepeat="7">
<frameSequence>
<frame id="0"/>
<frame id="1"/>
<frame id="2"/>
<frame id="3"/>
-->> <frame id="4"/>
-->> <frame id="4"/>
<frame id="3"/>
<frame id="2"/>
<frame id="1"/>
</frameSequence>
</animationLayer>
<animationLayer id="1" frameRepeat="3">
<frameSequence>
<frame id="1"/>
<frame id="2"/>
<frame id="3"/>
<frame id="4"/>
<frame id="5"/>
<frame id="5"/>
<frame id="4"/>
<frame id="3"/>
<frame id="2"/>
<frame id="1"/>
<frame id="0"/>
</frameSequence>
</animationLayer>
</animation>
<animation id="100" transitionTo="1">
<animationLayer id="0" loopCount="0" frameRepeat="7">
<frameSequence>
<frame id="0"/>
<frame id="1"/>
<frame id="2"/>
<frame id="3"/>
-->> <frame id="4"/>
-->> <frame id="4"/>
<frame id="3"/>
<frame id="2"/>
<frame id="1"/>
</frameSequence>
</animationLayer>
<animationLayer id="1" frameRepeat="3">
<frameSequence>
<frame id="1"/>
<frame id="2"/>
<frame id="3"/>
<frame id="4"/>
<frame id="5"/>
<frame id="5"/>
<frame id="4"/>
<frame id="3"/>
<frame id="2"/>
<frame id="1"/>
<frame id="0"/>
</frameSequence>
</animationLayer>
</animation>
</animations>
<postures/>
<gestures/>
</visualization>
</visualizationData>
-->> Are the new images inserted into the animation.
<animationLayer id="0" id 0 = the first animation, A in your filename.
<frame id="4"/> 4 = the number at the end of image filename.
You can change the whole animation by changing the order of the images.
PHP Code:
<frameSequence>
<frame id="3"/>
<frame id="2"/>
<frame id="1"/>
<frame id="4"/>
<frame id="1"/>
<frame id="5"/>
<frame id="4"/>
<frame id="3"/>
<frame id="1"/>
<frame id="2"/>
<frame id="3"/>
</frameSequence>
If you wanted to add an image to the second animation then you would use a B in your filename and put the images under <animationLayer id="1".
One more step.
Look at the src folder and you will see all the .as files with the same name as the images.
e.g. xmas11_cuckoo_xmas11_cuckoo_32_a_2_3.as
You need to make a file like this for your new images, so i added.
xmas11_cuckoo_xmas11_cuckoo_32_a_2_4.as
xmas11_cuckoo_xmas11_cuckoo_64_a_2_4.as
You can just copy the existing ones and edit the names and the content.
xmas11_cuckoo_xmas11_cuckoo_32_a_2_4:
PHP Code:
package
{
import mx.core.*;
[Embed(source="xmas11_cuckoo_xmas11_cuckoo_32_a_2_4.png")]
public class xmas11_cuckoo_xmas11_cuckoo_32_a_2_4 extends mx.core.BitmapAsset
{
public function xmas11_cuckoo_xmas11_cuckoo_32_a_2_4()
{
super();
return;
}
}
}
Just edit them so they match your image names.
These are the basics to advanced furni editing.
What is left to do?
Hit this button on your menubar
.
The file is now compiled and is ready to be used. It is located in the bin-debug folder.