Blog von Jens Franke » AS 3.0 Workflow-Special - Integration von Assets Teil 1

AS 3.0 Workflow-Special - Integration von Assets Teil 1


Nach der “Flash on the Beach”-Pause werde ich heute einige Ansätze für die Integration von Assets vorstellen.

Ich habe den Themenkomplex in drei Abschnitte aufgeteilt:

1. EMBED-Tags
2. SWCs
3. currentLabels & addFrameScript

Mit Hilfe des Flex EMBED-Tags hat man die Möglichkeit Assets direkt in eine SWF zu kompilieren.

Grafik-Einbindung (PNG, JPG und GIF):

[as]
[ Embed( source = ‘assets/img/example.png’ ) ]
public static const ImgExample : Class;
[/as]

SWF-Einbindung :

[as]
[ Embed( source = ‘assets/swf/example.swf’ ) ]
public static const SWFExample : Class;[/as]

Wichtig: Ein direkter Zugriff auf die Eigenschaften und Methoden der eingebetteten SWF ist nicht möglich. Kommunikation ist lediglich via LocalConnection möglich.

Asset aus SWF-Bibliothek:

[as]
[ Embed( source = ‘assets/swf/example.swf’, symbol=’MovieClipExample’ ) ]
public static const MovieClipExample : Class;
[/as]

Font-Einbindung:

[as][ Embed( source = ‘assets/font/example.ttf’, fontName=’ExampleFont’, unicodeRange = ‘U+0020,U+00A1-U+00FF,U+2000-U+206F,U+20A0-U+20CF,U+2100-U+2183, U+0020-U+002F,U+003A-U+0040,U+005B-U+0060,U+007B-U+007E, U+0041-U+005A, U+0061-U+007A, U+0030-U+0039′, mimeType = ‘application/x-font’ )]
public static const FontExample : Class;
[/as]

Zwischenfazit Teil 1:

Was auf den ersten Blick toll klingt, hat auch einige Nachteile. Man muss immer manuell den Pfad zu den Assets schreiben, vorausgesetzt man weiß überhaupt, dass es neue Assets gibt. Und ein weiteres großes Problem ist, dass man nur über Umwege auf die Zeitleiste eingebetteter MovieClips zugreifen kann.

Weitere Informationen zu den verschiedenen EMBED-Tags findet man hier.

Hier geht es zum zweiten Teil.

13. November 2007

Abgelegt unter: Design, Flash, Publikationen, Technik Allgemein



9 Comments Add your own

  • 1. Sharky  |  November 19th, 2007 at 11:56 am

    Hallo Jens,

    welche unicodeRange hast Du den da beim Font angegeben? Was benötigt man den wenn mal alle bei uns verwendeten Zeichen abdecken möchte?

    Grüße,

    Sharky

  • 2. Administrator  |  November 19th, 2007 at 8:15 pm

    Hej Sharky,

    die magischen 1076-Zeichen bekommst Du mit:
    U+0020,U+00A1-U+00FF,U+2000-U+206F,U+20A0-U+20CF,U+2100-U+2183, U+0020-U+002F,U+003A-U+0040,U+005B-U+0060,U+007B-U+007E, U+0041-U+005A, U+0061-U+007A, U+0030-U+0039

    Ohne Frage nicht übersichtlich, aber mit Hilfe dieses Links ist es nutzbar.

  • 3. sectore  |  November 24th, 2007 at 12:12 pm

    Moinsen Jens,

    zunächst einmal dickes Lob für all’ Deine FDT3-Tuts - sind wirklich super ;-)

    Eine kleine Ergänzung zum Einbinden von SWFs über das [Embed]-Metatag. Will man darin auf weitere ?grafische? Elemente, welche mit Klassen verbunden sind, zugreifen, muss man zunächst auf vollständige Initialisierung dieser Elemente warten.

    Ein hilfreicher Ansatzt gibts bei BIG SPACESHIP LABS: Flash IDE for Designers - Flexbuilder for Developers!

    Ich selber bevorzuge statt der SPACESHIP-Lösung (Abwarten eines Frames) lieber das Event.INIT, welches bei der Initialisierung der Childs in der eingebundenen SWF abgefeuert wird. Basiert auf den Ansatz von Colin Moocks EAS3, Seite 816-817.

    HIer ein CodeSnippet:

    package
    {

    import flash.display.Sprite;
    import flash.events.Event;
    import mx.core.MovieClipLoaderAsset;
    import flash.display.Loader;

    public class EmbeddedExample extends Sprite
    {
    [Embed(source=’../lib/assets.swf’)]
    private var AssetsClass : Class;
    private var _assets: MovieClipLoaderAsset;

    public function EmbeddedExample():void
    {
    // eine Instanz der Dokumentenklasse der eingebetteten SWF erstellen
    _assets = new AssetsClass();
    // am Event.INIT anmelden
    Loader(_assets.getChildAt(0)).contentLoaderInfo.addEventListener(Event.INIT, init);
    }

    private function init(event: Event):void
    {
    // am Event.INIT abmelden
    Loader(_assets.getChildAt(0)).contentLoaderInfo.removeEventListener(Event.INIT, init);

    var assetImEingebettetenSWF: IrgendeinSprite = new IrgendeinSprite();
    assetImEingebettetenSWF.x
    assetImEingebettetenSWF.y
    = 200;
    addChild(assetImEingebettetenSWF);
    }
    }
    }

    P.S. Freue mich schon auf die weiteren Tuts ;-)

    Viele Grüße
    sectore

    http://www.websector.de/blog/

  • 4. Administrator  |  November 24th, 2007 at 7:49 pm

    Hej,

    danke für das Beispiel - gut zu wissen.

    Kann man auf diese Weise auch auf Timeline-Animationen innerhalb der SWF zugreifen? Daran bin ich bis dato immer gescheitert und hab dabei diesen Satz im Hinterkopf:

    ?Note: You cannot access the properties or methods of embedded SWF files directly. You can, however, use LocalConnection to allow them to communicate.?

    Ich wollte im nächsten Projekt eigentlich SWCs nutzen, weil man dann schön in der Auto-Completion die Assets hat.

    Wie machst Du das?

  • 5. Blog von Jens Franke &raq&hellip  |  November 26th, 2007 at 5:09 pm

    […] tle=?Actionscript 3.0 Workflow Special - Integration von Assets - EMBED-Tags? target=?_blank? href=?http://blog.jensfranke.com/2007/11/13/actionscript-3-workflow-special-integration-von-assets-teil-1?>Integration von Assets - EMBED-Tags- Integrat […]

  • 6. sectore  |  January 22nd, 2008 at 12:27 pm

    @Jens: Skripte auf der Timeline konnte ich so bisher nicht ansprechen, werden wohl vom Flex-Kompiler komplett rausgehauen. Zumindest spricht Skinner auch davon: “The problem of timeline actionscripts being stripped by Flex….” (http://www.gskinner.com/blog/archives/2007/03/using_flash_sym.html)

    Aber die Timeline der Assets bleibt weiterhin bestehen. Die Assets “verlinke” ich dann ganz normal mit eigenen Klassen und steuer darüber das Verhalten + Aktionen.

    Viele Grüße
    sectore

    http://www.websector.de/blog/

  • 7. tom  |  January 24th, 2008 at 5:48 pm

    Kann mir jemand sagen wie ich die Embed Tags nutzen kann, wenn ich in FDT mit der Flash IDE kompiliere? Soweit ich weiß muss ich die mx.core.* Bibliotheken importieren. Dazu habe ich die flex.swc vom Flex Builder als Linked Library hinzugefügt. Auch in der Flash IDE habe ich das entsprechende Flex Builder source Verzeichnis zum AS3 Classpath hinzugefügt. Aber bei diesem Code:


    package {
    import flash.display.*;
    import mx.core.BitmapAsset;

    public class EmbedTest extends Sprite {

    [Embed(source="assets/test.png")]
    private var TestPng:Class;

    private var t:BitmapAsset;

    public function EmbedTest() {
    t = new TestPng();
    addChild(t);
    }
    }
    }

    Bekomme ich in der Flash IDE diesen Fehler:


    TypeError: Error #1007: Instantiation attempted on a non-constructor.

  • 8. frankster  |  February 28th, 2008 at 6:01 pm

    Da es bis jetzt anscheinend nicht möglich ist PostScript Fonts per Script direkt zu embedden (?) versuche ich den Umweg über den Export der verwendeten Fonts/Textfelder als Symbole in der Flash IDE-Library…aber wie kann man nun Fonts aus diesem SWF zur Kompilezeit embedden?(also nicht mit einem RunTime FontLoader)
    auf diesen Weg funktionert es leider nicht…

    [Embed(source=”assets/fonts.swf”, symbol=”CooperBlack”)]
    private static var foo:Class;

    this.embedFonts=true;
    var tf:TextFormat=new TextFormat();
    tf.align=”left”;
    tf.font=”CooperBlack”;

    Vielen Dank

  • 9. Alex  |  April 18th, 2008 at 5:53 pm

    Hi,

    hatte gerade das auch das Problem mit einem Postscript Font und habi ihn einfach schnell mit Cross Font in ein OpenType Font konvertiert.

    http://www.soft-ware.net/multimedia/schriften/designer/index.asp?licht=crossfont

    Wie kann ich denn eigentlich in so einem Precompile Befehl:

    [Embed(source=”assets/fonts/Frutiger-Cn.otf”, fontFamily=”_Frutiger”)]

    Mehrere Fonts einbetten. Wenn ich mehrere Embed Befehle untereinanderschreibe wird gemeckert.

Leave a Comment

Required

Required, hidden

Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackback this post  |  Subscribe to the comments via RSS Feed

Kalender

November 2007
M T W T F S S
« Oct   Dec »
 1234
567891011
12131415161718
19202122232425
2627282930  

Weitere Einträge