diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NotCompileTimeAVM2Item.java b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NotCompileTimeAVM2Item.java index f06d587a3..3c30b3be1 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NotCompileTimeAVM2Item.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/avm2/model/NotCompileTimeAVM2Item.java @@ -47,6 +47,9 @@ public class NotCompileTimeAVM2Item extends AVM2Item { @Override public GraphTargetItem getThroughNotCompilable() { + if(object==null){ + return object; + } return object.getThroughNotCompilable(); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/Action.java b/trunk/src/com/jpexs/decompiler/flash/action/Action.java index 6307d8f2e..49c3b2141 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/Action.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/Action.java @@ -1337,6 +1337,13 @@ public class Action implements GraphSourceItem { if (o instanceof Long) { return (Long) o; } + if(o instanceof String){ + try{ + return Double.parseDouble((String)o); + }catch(NumberFormatException nfe){ + return 0; + } + } return 0; } diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineSpriteTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineSpriteTag.java index c413e8085..1b329b323 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineSpriteTag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineSpriteTag.java @@ -128,7 +128,9 @@ public class DefineSpriteTag extends CharacterTag implements Container, BoundedT depthMap.put(pot.getDepth(), charId); characterId = (charId); } else { - characterId = (depthMap.get(pot.getDepth())); + Integer chi= (depthMap.get(pot.getDepth())); + if(chi!=null) + characterId = chi; } } if (characterId == -1) { diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/base/TextTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/base/TextTag.java index e5261ac5f..06992c325 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/base/TextTag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/base/TextTag.java @@ -118,7 +118,7 @@ public abstract class TextTag extends CharacterTag implements BoundedTag { textHeight = rec.textHeight; glyphs = font.getGlyphShapeTable(); - if (font.getLeading() == -1) { + if (!font.hasLayout()) { String fontName = font.getFontName(tags); if (!availableFonts.contains(fontName)) { fontName = "Times New Roman"; @@ -175,7 +175,13 @@ public abstract class TextTag extends CharacterTag implements BoundedTag { updateRect(textBounds, x + rect.Xmin, y + rect.Ymin); updateRect(textBounds, x + rect.Xmax, y + rect.Ymax); int adv = entry.glyphAdvance; - int defaultAdvance = 20 * FontTag.getSystemFontAdvance(aFont, font.glyphToChar(tags, entry.glyphIndex)); + + int defaultAdvance; + if (font.hasLayout()) { + defaultAdvance = 20 * (int) Math.round((double) textHeight * font.getGlyphAdvance(entry.glyphIndex) / (font.getDivider() * 1024.0)); + } else { + defaultAdvance = 20 * FontTag.getSystemFontAdvance(aFont, font.glyphToChar(tags, entry.glyphIndex)); + } letterSpacing = adv - defaultAdvance; x += adv; }