If you are looking for the decompiler itself, visit https://github.com/jindrapetrik/jpexs-decompiler
NEW : We have got a new blog where we post some interesting SWF internals info.
![List of issues](/flash/images/issue_list.png)
#1158 Missing sprite visual
Author:
Brandon
![user user](/flash/images/user.png)
Date created:
Type: feature
Visibility: Everybody
Assigned to:
State: closed ![Help](/flash/images/help.png)
![Help](/flash/images/help.png)
Hi again!
I hope you wont kill me :-)
But if you take game swf from ticket /www.free-decompiler.com/flash/issues/1147-sprite-is-exported-incorrectly
and check symbol 2630 (should look like close button (x in circle)) you will find it
empty.
Symbol 2630 is a DefineEditText tag, maybe the number is wrong. Please check it.
Hmm, it is a different SWF file.
How do you know that it should be a close button? I checked it with another decompiler,
it is also empty.
sorry for wrong swf in first time, didnt think it will be changed so fast.
check frame3 of Sprite2710(game.SwipeEndGame)
you will find PlaceObject2(2640)
go to it, check frame1, you will find PlaceObject2 (2630) mcClose
and here is png, how it looks in original (x button in top right)
![Download](/flash/images/disk.png)
I still don't understand why do you think that the empty it is wrong.
Other decompilers shows it also empty.
There is no characterid information in the placeobject tags.
Maybe the character is dynamically loaded somehow.
Or do you have any idea how to know which chatacter should be used?
well other decompilers are far behind.
Ok. lets assume it is loaded dynamicaly (i dont know how it could be) it has to be
somewhere, but i did not find it anywhere.
I think it is in an external SWF file.
Is this swf hosted somewhere? Can you share the URL?
check here https://goo.gl/pwob37
The button is in this file.
DefineSprite 229. It is referenced by it's name (classname =
Runtime_Button_Small_Default3)
You can add a feature request to handle this somehow, but this is not a bug.
![Download](/flash/images/disk.png)
State: new→upgraded
i know about that sprite, but it is not the same.
x is gray. but in original it is white.
Even if we assume, that they are the same.
It is bug, because like you say it should be refferenced by
Runtime_Button_Small_Default3.
But there is no refference to Runtime_Button_Small_Default3 in code except
Runtime_Button_Small_Default3.as
may be it has some relevance with this issue ?
/www.free-decompiler.com/flash/issues/1147-sprite-is-exported-incorrectly
No, it it different.
Your sprite is not in your SWF file.
If you think that the icon is not that one that I showed you in Main.swf, then show me
which is the correct one in your file. Maybe you can convince me that this is a bug, but i
don't think...
"i know about that sprite, but it is not the same. x is gray. but in original it is
white."
The X is a different sprite, it is called Runtime_Icon_Close2
It is the DefineSprite 128 in Main.swf
Could you explain please, how it is loaded dynamically?
The only reffernce Runtime_Button_Small_Default3 has it is its own class.
I checked across all swfs
I don't know how it is working in Flash, but you can see that the "X" sprite is not in
your SWF file, so it is not possible to export it. So this is not a bug.
Probably your main SWF is the Main.xxx.swf (this is why it is called Main), it loads the
other resources, for example Game.xxx.swf
There is already a feature request for multi part SWFs, however it is for debugging:
/www.free-decompiler.com/flash/issues/1118-add-support-for-multi-part-swfs
Sometimes there are ImportAsset tags, which references other swfs, but in your example
there are no ImportAsset tag, so I don't know how Flash player knows which SWF should be
used.
Maybe it tries to find the specified classname in all previously loaded SWFs. (And what
will it do if there are 2 SWFs with the same className)
The question is how to handle it in FLA export. Should we import all referenced characters
to the current FLA? Or export multiple FLAs?
All starts in preloader.swf
each module loads its own resources.
Main is main thats true.
So if there is no ImportAsset tag in that case it should be handled by script somehow ?
But there are no refernces to Runtime_Button_Small_Default3 and Runtime_Icon_Close2 in any
script
I even thought that it could be composed like "Runtime_"+param1+"_"+pram2 but still
nothing.
All (or at least which is required to start it) SWFs attached for this game.
![Download](/flash/images/disk.png)
those in my zip could be different from those which are in honfika's zip
cause they are changed recently (my zip is a full set of swfs, but they are older
comparing to honfika's)
even if you export both of swfs(main and game) to fla.
than build them to swcs and include completely to a single swf still no chance ti see that
close button.
and there are more to missing sprites. close button just an example.
so there are 2 variants of how it is possible
1. some information about character or tag is missing in decompiled fla
2. branch of action script code is lost during decompilation.
in both cases looks like a bug or do i missing something again?
Do you know Flash? Could you please create a sample?
I mean a project which produces 2 swfs using classNames to reference characters.
Is it 2 FLA file, or is it possible to produce 2 swf from 1 FLA?
Sorry, I'm not a Flash developer, I created only some "hello world" test apps with it. I
know only the internals of the SWF file.
I think the 1st is not a bug. It is only not implemented. Multi part SWFs are not (fully)
supported, yet.
Here is step by step:
1. Get Main.fla and Game.fla
2. Remove com folder from scripts folder cause it will produce errors (you may leave it
and fix those errors it does not matter)
3. Open thoes FLAs with Flash Professional (i use 13.01)
Press CTRL+SHIFT+F12 in popup uncheck SWF and check SWC.
Infront of Actionscript 3.0 combobox press button with and icon of a wrench
Add scripts folder there press Ok, than build
4. Open FlashDevelop chose create a new project
in popup chose AS3 Project, chose desired project name and folder
Copy both SWCs to project folder
Ensure you have Project tab active in treeview
Find both of SWCs in that treeview, right click them (one by one) chose Add to library
Right click them (one by one) again and chose Options than in popup chose Include
Library (Include completely)
Than chose configuration Release or Debug (combobox under main menu) and press F8 or a
button with a cogwheel icon
I may provide you with resulting SWF or as3proj + both SWCs or What exacly do you need ?
I need only a simple Flash project(s):
FLA1: -sprite1, classname=myClassName => swf1.sw2
FLA2: -sprite1 with placeobjects, refrencing myClassName from FLA1 => swf2.swf
Or is it only one FLA? I don't konw how this multi part swf works.
I dont exacaly understand what do you mean by saying multipart swf.
Check that game.swf from my previous post.
It contains all sprits from both original game.swf and main.swf
That is ok, but I need a SIMPLE example project (source + compiled)
Which produces 2 swf files.
2nd swf is using a character from the 1st swf.
So a new project built up from scratch, very simple shapes (e.g a rectangle), nothing
complicated.
If you send this, I can investigate the FLA xml source, and try to improve FFDec to export
the same format.
You can do that by importing assets.
In that case ffdec process it correctly
i attached an example.
Or you may do it dynamically from srcipt.
in that case you just need to load swf in the same domain and you may access all classes
from that swf by using getDefinitionByName
![Download](/flash/images/disk.png)
Ok, so it contain an ImportAsset tag.
How to load it dynamically with getDefinitionByName?
I think your game is loading your asset in a similar way.
something like this:
Font.registerFont(ApplicationDomain.currentDomain.getDefinition("RuntimeFont2") as
Class);
if it is so then a branch of code wasnt decompiled
you may search for getDefinition and see which symbols are loaded dynamically.
there are not much of them
i downloaded ffdec 8.0 and now i see what is going on.
Is there any chance for some kind of workaround ?
what is going on?
Sprite 2629 frame1 PlaceObject3 has special attribute "className" and you do not know how
to store it in FLA as far as i understood
Main.swf in Test.zip has also this classname attribute. But is also has an importasset
tag.
so may be add that tag there as a workaround?
btw i checked in game.fla\library\Symbol 2629.xml and it looks like
<DOMSymbolItem xmlns="http://ns.adobe.com/xfl/2008/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Symbol 2629"
lastModified="1454955589">
<timeline>
<DOMTimeline name="Symbol 2629">
<layers/>
</DOMTimeline>
</timeline>
</DOMSymbolItem>
and if you check it in ffdec - it has 7 frames!
my thought was to add this linkageImportForRS="true"
So is it expected behaviour when 2629 has 7 frames in ffdec preview, but exported only one
?
Or should i create separate issue ?
It is the same problem, FFDec can't find your character.
Btw: there are 0 frames, not one.
State: upgraded→new
Type: bug→feature
Type: bug→feature
i see.
is there any hope fore quick solution?
I manually added ImportAsset2 tag (check attached png) and still not see any changes to
2630
What am i doing wrong ?
![Download](/flash/images/disk.png)
Not from me, sorry... I don't know how it works.
Maybe JPEXS will check it later.
I close this issue, because you've created another for the real problem:
/www.free-decompiler.com/flash/issues/1164-import-assets-withour-importassets-tag-check-he
re-how-is-it-possible
State: new→closed