What's new

Coherent Prysm 2.0 is the next generation of Coherent Prysm. The UI has been changed to be consistent with Adobe's UI and to be more intuitive to work with. The stability of the export process has also been improved as well as the structure of the exported content. A bunch of new features are also supported.

The documentation of the old generation can be found here.

Comparison of the old and the new generation

Coherent Prysm Coherent Prysm 2.0
SVG files are generated in a directory named img. SVG files are generated in a directory named svg.
For each scene, an HTML file named SceneName.html is generated. For each scene, an HTML file named DocumentName_SceneName.html is generated.
For each scene, a single CSS file is generated named SceneName.css. For each scene, a coherent_prysm_css_clear.css and a DocumentName_SceneName_css_styles.css files are generated. Scenes that create animations generate a DocumentName_SceneName_css_keyframe_declarations.css file. Scenes that contain text files generate a DocumentName_SceneName_css_font_faces.css file.
Each generated tag in the HTML file is styled through CSS classes named layoutStyle*, visualStyle*, positionStyle*, animationStyle*, imageStyle*. The wildcard is a randomly generated number. Each generated tag in the HTML file is styled through a single CSS class named prysm_*. The wildcard is an id assigned to the element that corresponds to its position in the flash DOM.
When possible ovals and rectangles are published as <div> tags. All geometric shapes are published into SVG files. Shapes in the same frame span with consecutive depths are combined into a single SVG file. Shapes with consecutive depth from frame spans from consecutive layers are combined into a single SVG file. The previous rule does not apply for frame spans with a different starting frame or a different duration. The rule is also not applied for tweened frame spans and layers with layer effects.
The generated SVG files are named SceneName_*.svg. The wildcard is a randomly generated number. The generated SVG files are named DocumentName_prysm_*.svg. The wildcard is the identifier assigned to the first shape in the SVG file.
The SVG files contain a sequence of <path> tags for the entire geometry. All shapes are published as <g> tags that contain <path> tags for the filled regions and <g> tags that contain <path> tags for the stroke groups of the shape.
Each scaled instance of the same shape generates a new SVG file. Scaled instances of a shape are added to the SVG file described by the rules above.
Dynamic texts are published as <div> tags. Dynamic texts are published as <p> tags.
The "Show border around text" feature is not supported. The "Show border around text" feature is now supported.
Multiline and Multiline no-wrap text behaviors do not look the same for certain texts. Multiline and Multiline no-wrap text behaviors work properly.
Applying a motion tween on a text element is not supported. Applying a motion tween on a text element is now supported.
Applying margins to a text element improperly move the text element and ignore the text box. Applying margins to a text element work properly.
Transforming a text element with a transform-origin point outside the text box breaks the layout of text elements. Transforming a text element with a transform-origin outside the text box now works properly.
Rounded borders and bevel borders do not work for rectangles. Rounded borders and bevel borders are properly supported.
The generated CSS keyframes for animations are named animationFrames*. The wildcard is a randomly generated number. The generated CSS keyframes are split into groups according to their purpose. There are prysm_*_layoutAnimation, prysm_*_lifetimeAnimation, prysm_*_blendModeAnimation, prysm_*_colorEffectAnimation, prysm_*_movieClipVisibilityAnimation, prysm_*_depthAnimation. The wildcard is the id of the element that receives the animation.
The generated CSS keyframes contain the same state for the start and the end of a tween frame. This leads to choppy animations. The generated CSS keyframes contain a single state for the start of a tween frame. This leads to a smoother animation. The end frame of a tween still generates 2 states for the completeness of the animation and correct animation control through JS.
Not all of the unsupported and disableable features are disabled. All of the unsupported and disableable features are disabled.
Transformation matrices are decomposed into rotation and scale and skew and scale. Sometimes transformation matrices can't be decomposed and an error occurs. Transformation matrices are published as a matrix that contains rotation and scale or rotation and skew. No errors are can occur.
Layer color effects are not supported. Layer color effects are now supported.
Layer blend modes are not supported. Layer blend modes are now supported.
The AABB of a movie clip incorrectly grows as the movie clip is transformed. The AABB of a movie clip is always as big as the content of the movie clip.
The frame labels JS file is named CLAnimations_SceneName_DocumentName.js The frame labels JS file is named CLAnimations_DocumentName_SceneName.js to conform to the rest of the naming convention.
The frame labels file contains a single line of JSON for all labels. The frame labels file contains human-readable JSON for all labels.
The scene labels are under the key global_animations which can clash with a symbol named global_animations. The scene labels are now under the key //scene_labels// so that no clashes with symbol names can happen.
A JS file for symbol events is always generated. When there are no symbol events no JS file is generated.
Selecting percents as the default unit does not apply them to elements on the stage. Selecting percents as the default unit correctly applies them to the elements on the stage.
The symbol events are generated in a separate file for each scene. The symbol events are generated in a single file shared across all scenes.

Breaking changes

Coherent Prysm Coherent Prysm 2.0
Mask layers are partially supported. Mask layers are disabled.
Bitmap fills and strokes are partially supported. Bitmap fills and strokes are disabled.
Gradient fills and strokes are partially supported. Gradient fills and strokes are disabled.
Filters are partially supported. Filters are disabled.
Setting a live view/user image to a symbol applies it to a box with the layout of the symbol instance. Setting a live view/user image applies it to all images within a movie clip.
Setting a video to a symbol applies it to a box with the layout of the symbol instance. Setting a video to a symbol applies it to all images within a movie clip.
macOS is supported. macOS is not supported.

Expected behavior

  • The width and height of a movie clip are defined by an AABB of its content in all of its frames.
  • The X Y values seen in the AA panel are meaningless in HTML. Elements are published such that their transformations are applied according to their transform-origin.
  • Movie clips are always published so their children are at positive coordinates. This implies that when a movie clip contains elements at negative coordinates, all child elements are moved to positive coordinates. This is done so that events and overflow work as expected.
  • Stroke miters that exceed the miter-limit work differently in the published files as Animate clips strokes to the edge of the miter-limit, while for SVGs all miters that exceed the miter-limit result in the same thing.
  • Big text left or margins extend the size of the text element.
  • Even though unsupported features are disabled some Animate features still create unsupported content that is ignored by the publisher. Vertical-align can't be disabled for text elements, but it is ignored.
  • Color effects are applied to an element in a rectangle texture in COHTML, therefore alpha additives and multiplies make transparent colors black.
  • When element events are converted to data binding events, the change and select events are not converted.
  • Videos and live views are applied to all images of the movie clip.
  • Position static and position relative remove the top and left values of an element.
  • Classic tweens with rotation none interpolate from the last frame of the classic tween to the first frame of the next frame span.
  • When a classic tween is improperly made, the resulting animation is undefined.
  • Comment labels, anchor labels, and name labels can all be used for animation control.
  • Data-bindings applied to children have their aliases resolved in the parent and are then send to the children.
  • Events converted to data binding events are not applied to children if apply to children is ticked.
  • The publisher reads all images from the library into memory, even the unused ones.
  • There is an interpolation between the last two keyframes of a classic tween that has rotation set to none.
  • Movie clip instances that appear in consecutive horizontal frame spans are combined into as little movie clip instances as possible. Their state from different frames is applied as keyframe animation.
  • VH and VW units are calculated relative to the size of the stage.
  • Percent units are calculated relative to the size of the parent symbol. Percent units for elements on the stage are calculated relative to the size of the stage.
  • The size of the stage is always added to the body tag as pixels.