Advanced Customs Editing - Add Images and Manipulate animations

Results 1 to 7 of 7
  1. #1
    [̲̅$̲̅(̲̅1̲̅)̲̅$ ̲̅] leenster is offline
    MemberRank
    May 2008 Join Date
    KanaadaLocation
    992Posts

    Advanced Customs Editing - Add Images and Manipulate animations

    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.



    1. Find the furni you want to edit.
    2. Make sure the file is selected like in the screenshot.
    3. 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.
    Last edited by leenster; 16-10-12 at 11:04 PM.


  2. #2
    Check http://arcturus.pw The General is offline
    DeveloperRank
    Aug 2011 Join Date
    7,610Posts

    Re: Furni Editing - Advanced Editing - adding images and animation manipulation

    Ok thanks. Adobe Flashbuilder 4.6?

    Could you add a explaination for some syntaxes like FlipH etc.

  3. #3
    [̲̅$̲̅(̲̅1̲̅)̲̅$ ̲̅] leenster is offline
    MemberRank
    May 2008 Join Date
    KanaadaLocation
    992Posts

    Re: Furni Editing - Advanced Editing - adding images and animation manipulation

    Quote Originally Posted by tdid View Post
    Ok thanks. Adobe Flashbuilder 4.6?

    Could you add a explaination for some syntaxes like FlipH etc.
    I am guessing that those are for when the furni is rotated.

  4. #4
    Banned V for Vendetta is offline
    BannedRank
    Feb 2007 Join Date
    1,809Posts

    Re: Furni Editing - Advanced Editing - adding images and animation manipulation

    Thanks for this tutorial I've actually been searching for ages for a simple way to edit furni's and now i've found out, thank you.

  5. #5
    [̲̅$̲̅(̲̅1̲̅)̲̅$ ̲̅] leenster is offline
    MemberRank
    May 2008 Join Date
    KanaadaLocation
    992Posts

    Re: Advanced Customs Editing - Add Images and Manipulate animations

    I just realized that i forgot a step. I added it to the original post.

  6. #6
    Proficient Member Galago is offline
    MemberRank
    Aug 2011 Join Date
    The NetherlandsLocation
    177Posts

    Re: Advanced Customs Editing - Add Images and Manipulate animations

    Very nice, Leenster. Your an SWF Hero.

  7. #7
    Thanks for the memories! Mithex is offline
    MemberRank
    May 2010 Join Date
    HeavenLocation
    2,014Posts

    Re: Advanced Customs Editing - Add Images and Manipulate animations

    Spectacular!



Advertisement