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.

#2174 A problem when deleting frames
Author:
STA20

Date created:
Type: bug
Visibility: Everybody
Assigned to:
Labels: Frames
State: closed 

in v 20.1.0 stable
Open the attached swf and delete first 4 frames.
1. Looks like the new situation is not correctly updated in the preview pane
2. I see the remaining PlaceObject (206) Depth 1279, is moved at the very top of the file,
before all other tags
(also if I click on it I get an exception)
Also I see all affected placeobject/removeobject couples of same depth are automatically
removed. If this is a new functionality it certainly helps, as I was doing this manually
before.
I also tested in 20.0.0 and there was no problem at all.

Please try nightly 2174.
The new "delete frame" feature should work like really deleting frames
- if you delete frame 15-24, then frame 14 should look the same as was,
also frame 25 (new frame 15) should look like old frame 25.
FFDec tries to modify PlaceObject/RemoveObject tags accordingly.
That especially happens when the PlaceObject is over multiple frames.
In your case - if you delete first 4 frames, then PlaceObject (206) should stay in
resulting frame 1 as the placed object was on the stage in original frame 5.
I fixed it now so it is on the end of resulting frame 1 rather than on the beginning.
Try it.
State: new→upgraded
Frames in the preview pane are still not updated correctly for me after deleting. They
eventually refresh after several minutes if I leave it for that long.


It is fixed in nightly 2751.
Tested, works now. However I found another possible issue.
Adobe Flash Player (projector) has this quirk, idk if bug or intended: if PlaceObject has
placeFlagMove = true, and current depth was never used before, then projector will not
show the object.
Unlike flash projector, FFDec renders (shows) objects like this, which can be confusing.
Current delete frames logic apparently removes PlaceObjects that appear again on same
depth after the deleted frames, but doesn't check for placeFlagMove.
Here's my example:
Open chiffon_dresses.swf, delete first 110 frames, save as another file name.
Then open both flashes side to side, you see in the modified flash the background is
missing.
The background is PlaceObject2 (44) Depth 1 in Frame 111 (new frame 1).
This can be fixed by changing placeFlagMove to false (for PlaceObjects that are affected
only) OR to leave the first occurence of an object at same depth, in this example it is
PlaceObject2 (8) Depth 1 in Frame 1.


This is fixed in nightly 2752, try it.
The rules seem to be:
if placeFlagMove == true, then target depth must be already occupied,
if placeFlagMove == false, then target depth must be empty,
otherwise the placeobject is ignored.
If you want to remove intros from SWF files, I recommend you to just place DoAction on
first frame with gotoAndPlay(targetFrame) instead of deleting frames, otherwise you need
to ensure that every frame reference (gotos) in scripts of the SWF is shifted to new
position, which can be hard to do.
It is not fixed sadly. placeFlagMove shows as being changed to false, but after saving the
file background is still missing, and if I reload the file placeFlagMove is true again.
What is fixed is the consistency between what FFDec and projector shows.
About removing intros, I'm usually dealing with AS3 anyway and I'm used to changing the
script where needed and as needed. It just so happened that the example swf for this case
was AS2 (and AS2 are much easier to deal with in that regard).
Sorry. It should be fixed now - in nightly 2753. Try it.
Everything seems to be working now in nightly 2753. Thanks for the fixes.
State: upgraded→closed