Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 18 additions & 10 deletions src/swf/exporters/AnimateLibraryExporter.hx
Original file line number Diff line number Diff line change
Expand Up @@ -669,10 +669,7 @@ class AnimateLibraryExporter
var lastModified = new Map<Int, Int>();
var zeroCharacter = -1;

var frame:Dynamic,
frameObject:Dynamic,
frameData,
placeTag:TagPlaceObject;
var frame:Dynamic, frameObject:Dynamic, frameData, placeTag:TagPlaceObject;

for (frameData in tag.frames)
{
Expand Down Expand Up @@ -742,7 +739,6 @@ class AnimateLibraryExporter
{
frameObject.filters = serializeFilters(placeTag.surfaceFilterList);
}

frameObject.depth = placeTag.depth;
frameObject.clipDepth = (placeTag.hasClipDepth ? placeTag.clipDepth : 0);

Expand All @@ -762,6 +758,11 @@ class AnimateLibraryExporter
frameObject.cacheAsBitmap = placeTag.bitmapCache != 0;
}

if (placeTag.metaData != null)
{
frameObject.metaData = placeTag.metaData;
}

lastModified.set(object.placedAtIndex, object.lastModifiedAtIndex);

if (frame.objects == null)
Expand Down Expand Up @@ -1404,7 +1405,18 @@ class AnimateLibraryExporter

case DropShadowFilter(distance, angle, color, alpha, blurX, blurY, strength, quality, inner, knockout, hideObject):
result.push([
SWFFilterType.DROP_SHADOW, distance, angle, color, alpha, blurX, blurY, strength, quality, inner, knockout, hideObject
SWFFilterType.DROP_SHADOW,
distance,
angle,
color,
alpha,
blurX,
blurY,
strength,
quality,
inner,
knockout,
hideObject
]);

case GlowFilter(color, alpha, blurX, blurY, strength, quality, inner, knockout):
Expand Down Expand Up @@ -1500,7 +1512,6 @@ private class SWFDocument

#if (haxe_ver < 4.0) @:enum #end
private #if (haxe_ver >= 4.0) enum #end abstract SWFFrameObjectType(Int) from Int to Int

{
public var CREATE = 0;
public var UPDATE = 1;
Expand All @@ -1509,7 +1520,6 @@ private #if (haxe_ver >= 4.0) enum #end abstract SWFFrameObjectType(Int) from In

#if (haxe_ver < 4.0) @:enum #end
private #if (haxe_ver >= 4.0) enum #end abstract SWFShapeCommandType(Int) from Int to Int

{
public var BEGIN_BITMAP_FILL = 0;
public var BEGIN_FILL = 1;
Expand All @@ -1524,7 +1534,6 @@ private #if (haxe_ver >= 4.0) enum #end abstract SWFShapeCommandType(Int) from I

#if (haxe_ver < 4.0) @:enum #end
private #if (haxe_ver >= 4.0) enum #end abstract SWFSymbolType(Int) from Int to Int

{
public var BITMAP = 0;
public var BUTTON = 1;
Expand All @@ -1537,7 +1546,6 @@ private #if (haxe_ver >= 4.0) enum #end abstract SWFSymbolType(Int) from Int to

#if (haxe_ver < 4.0) @:enum #end
private #if (haxe_ver >= 4.0) enum #end abstract SWFFilterType(Int) from Int to Int

{
public var BLUR = 0;
public var COLOR_MATRIX = 1;
Expand Down
1 change: 1 addition & 0 deletions src/swf/exporters/animate/AnimateFrameObject.hx
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class AnimateFrameObject
public var symbol:Int;
public var type:AnimateFrameObjectType;
public var visible:Null<Bool>;
public var metaData:Null<Dynamic>;

public function new() {}
}
3 changes: 1 addition & 2 deletions src/swf/exporters/animate/AnimateLibrary.hx
Original file line number Diff line number Diff line change
Expand Up @@ -783,6 +783,7 @@ import openfl.filters.GlowFilter;
object.symbol = objectData.symbol;
object.type = objectData.type;
object.visible = objectData.visible;
object.metaData = objectData.metaData;
frame.objects.push(object);
}
}
Expand All @@ -807,7 +808,6 @@ import openfl.filters.GlowFilter;
}

#if (haxe_ver >= 4.0) enum #else @:enum #end abstract SWFShapeCommandType(Int) from Int to Int

{
public var BEGIN_BITMAP_FILL = 0;
public var BEGIN_FILL = 1;
Expand All @@ -821,7 +821,6 @@ import openfl.filters.GlowFilter;
}

#if (haxe_ver >= 4.0) enum #else @:enum #end abstract SWFSymbolType(Int) from Int to Int

{
public var BITMAP = 0;
public var BUTTON = 1;
Expand Down
7 changes: 7 additions & 0 deletions src/swf/exporters/animate/AnimateTimeline.hx
Original file line number Diff line number Diff line change
Expand Up @@ -516,6 +516,13 @@ class AnimateTimeline extends Timeline
displayObject.cacheAsBitmap = frameObject.cacheAsBitmap;
}

#if (openfl >= "9.5.0")
if (frameObject.metaData != null)
{
displayObject.metaData = frameObject.metaData;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Setting the DisplayObject's metaData property requires conditional compilation because this property was not added until OpenFL 9.5, and we want the SWF library to remain compatible with older versions.

#if (openfl >= "9.5.0")
displayObject.metaData = frameObject.metaData;
#end

}
#end

#if openfljs
Reflect.setField(__sprite, displayObject.name, displayObject);
#end
Expand Down
13 changes: 9 additions & 4 deletions src/swf/tags/TagPlaceObject4.hx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package swf.tags;

import swf.SWFData;
import swf.utils.StringUtils;
import openfl.net.ObjectEncoding;

/**
* PlaceObject4 is essentially identical to PlaceObject3 except it has a different
Expand Down Expand Up @@ -29,8 +30,10 @@ class TagPlaceObject4 extends TagPlaceObject3 implements IDisplayListTag
super.parse(data, length, version, async);
if (data.bytesAvailable > 0)
{
// TODO
// metaData = data.readObject();
var oldEncoding = data.objectEncoding;
data.objectEncoding = ObjectEncoding.AMF3;
metaData = data.readObject();
data.objectEncoding = oldEncoding;
}
}

Expand All @@ -40,8 +43,10 @@ class TagPlaceObject4 extends TagPlaceObject3 implements IDisplayListTag

if (metaData != null)
{
// TODO
// body.writeObject(metaData);
var oldEncoding = data.objectEncoding;
data.objectEncoding = ObjectEncoding.AMF3;
body.writeObject(metaData);
data.objectEncoding = oldEncoding;
}

data.writeTagHeader(type, body.length);
Expand Down