Flashhilfe.de - Flash Community

Dynamisches Laden von Vektorgrafiken [Flash 9]

Forum > ActionScript 3.0 > Dynamisches Laden von Vektorgrafiken

 


AntwortenRegistrieren Seite1  

 08.07.2010, 10:42 
Beiträge: 16
Registriert: Jul 2010

Dynamisches Laden von Vektorgrafiken
Hallo an alle,

ich versuche gerade dynamisch .ai-Files in einen Movieclip zu laden.

Ausgangssituation ist folgende:
Die URL zu den Vektorgrafiken sind in einer XML gespeichert in der Form

ActionScript:
1
2
3
4
5
6
<entries>
     <entry>
          <name>Apfle</name>
          <image>apple.ai</image
     </entry>
</entries>


Ich habe jetzt versucht, die Grafiken zu laden:

lib_symbole ist ein MC, der in der Bibliothek abgelegt ist. Dieser enthält einen weiteren MC namens lib_icon, in welchen die Vektor-Grafik geladen werden soll:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var mc = new lib_symbole();
mc.x = s_xpos;
mc.y = s_ypos;
mc.width = s_width;
mc.height = s_height;
mc.name = s_name + "_" + counter;

var myLoader:Loader = new Loader();
myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressStatus);
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderReady);
   
var fileRequest:URLRequest = new URLRequest("apple.ai");
myLoader.load(fileRequest);

mc.lib_icon.addChild(myLoader);


ActionScript:
1
2
3
4
5
6
7
8
9
function onProgressStatus(e:ProgressEvent) {   
        // this is where progress will be monitored    
      trace(e.bytesLoaded, e.bytesTotal);
}

function onLoaderReady(e:Event) {    
        // the image is now loaded, so let's add it to the display tree!    
      addChild(myLoader);
}


erhalte jedoch folgende Fehlermeldung:

Error #2044: IOErrorEvent unverarbeitet. text=Error #2124: Die geladene Datei weist einen unbekannten Typ auf.

Daraus schließe ich, dass ai-Files nicht einfach geladen werden können.
Ich habe aber bis jetzt noch keine Möglichkeit gesehen/gefunden, diese trotzdem irgendwie zu importieren.

Any ideas?

Lg roemer
Geändert von roemerquelle am 08.07.10 um 12:51 Uhr

 08.07.2010, 11:33Re1
Benutzerbild von springerFlashhilfe.de Moderator
Beiträge: 4906
Wohnort: zuhaus
Registriert: Apr 2004

hi,
du kannst die .ai direkt in flash importieren, dann hast du die vektoren in der bibliothek....

um unnötige imports zu vermeiden, kannst du auch die vektoren in illustrator kopieren (markieren und ctrl+C ), dann in flash mit crtl+V einfügen. dann hast du nur den vektor....

die vektoren blasen auch deine fla nicht unnötig auf. daher musst du die nicht extern laden..
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
 08.07.2010, 11:55Re2
Beiträge: 16
Registriert: Jul 2010

Themenautor/in

Wobei hier das Problem mit dem "dynamisch" gegeben ist.
Es soll ja über die xml festgelegt werden, welche ai's importiert werden sollen.
Geändert von roemerquelle am 08.07.10 um 12:52 Uhr

 
nicht sichtbar bei eingeloggten Mitgliedern
 08.07.2010, 12:15Re3
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

Hi,
mit ai-Dateien wird es aus meiner Sicht nichts werden.
Man kann doch aber aus AI heraus eine SWF exportieren. Dann kann man die swf mit den Vektordaten laden.
 08.07.2010, 12:33Re4
Benutzerbild von springerFlashhilfe.de Moderator
Beiträge: 4906
Wohnort: zuhaus
Registriert: Apr 2004

hmm, ja das geht schon, aber zur laufzeit dann objekte instanzieren die nur in der nachgeladenen swf vorhanden sind? geht das?

@roemerquelle:
bitte einen neuen thread für das sliderproblem. das sind zwei komplett verschiedene dinge ;-)
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
Geändert von springer am 08.07.10 um 12:35 Uhr

 08.07.2010, 12:45Re5
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

aber zur laufzeit dann objekte instanzieren die nur in der nachgeladenen swf vorhanden sind?

Ist doch garnicht erforderlich:

Dieser enthält einen weiteren MC namens lib_icon, in welchen die Vektor-Grafik geladen werden soll

Also einfach die swf aus Illustrator da reinladen.
Geändert von badskill am 08.07.10 um 12:45 Uhr

 
nicht sichtbar bei eingeloggten Mitgliedern
 08.07.2010, 12:53Re6
Beiträge: 16
Registriert: Jul 2010

Themenautor/in

@springer & badskill:

Super Idee. Werde ich ausprobieren, sobald ich irgendwo her testweise einen Illustrator bekomme.
Falls von euch jemand einen hat, könntet ihr mir testweise das angehänge File in ein swf exportieren?

EDIT: Hab den Thread aufgeteilt...

apple.rar (0.98 KB)
Geändert von roemerquelle am 08.07.10 um 12:56 Uhr

 08.07.2010, 13:37Re7
Beiträge: 16
Registriert: Jul 2010

Themenautor/in

Das Laden einer ext swf hat soweit funktioniert.
Ich hab jetzt noch eine Verständnisfrage:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
var myLoader:Loader = new Loader();
myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressStatus);
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderReady);

var fileRequest:URLRequest = new URLRequest(s_image);
myLoader.load(fileRequest);

mc.lib_icon.addChild(myLoader);

trace(mc.lib_icon.width);
trace(mc.lib_icon.myLoader);



Im Grunde lade ich ja hier das swf in den MC mc.lib_icon.

Bei den beiden trace-Ausgaben erhalte ich jedoch bei der breite des MSs lib_icon "0"
und bei der Ausgabe für den loader "undefined". Kann ich die Elemente nicht mittels Pfad ansprechen?
Geändert von roemerquelle am 08.07.10 um 13:37 Uhr

 08.07.2010, 13:50Re8
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

Breite und Höhe sind in dieser Funktion verfügbar: onLoaderReady

ActionScript:
1trace(mc.lib_icon.myLoader);
Das brauchst du nicht. Du hast ja bereits eine Referenz auf den Inhalt über die Variable myLoader.
 08.07.2010, 14:19Re9
Benutzerbild von springerFlashhilfe.de Moderator
Beiträge: 4906
Wohnort: zuhaus
Registriert: Apr 2004

@badskill:
ich dachte das wären mehrere icons in einer .ai

hab da etwas zu weit gedacht. so geht natürlich einfach die swf zu laden ;-)
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
 08.07.2010, 14:42Re10
Beiträge: 16
Registriert: Jul 2010

Themenautor/in

@badskill:

hm, da die Daten ja aus einer xml in einer Schleife ausgelesen werden, habe ich die Referenz auf genau das Icon nur solange, bis der nächste Schleifendurchgang durchgeführt wird:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
function initIconsFromXML(eventObject:Event)
{
     XML.ignoreComments = true;      
     XML.ignoreWhitespace = true;
 
     myXML = new XML(eventObject.target.data);
 
     for (var i:Number = 0; i < myXML.icon.length(); i++)
     {
        var _node1:XML = myXML.icon[i];
        initSymbol(_node1.name, _node1.width, _node1.height, _node1.x, _node1.y, _node1.image, _node1.defaultcolor);
     }
}


ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
function initSymbol(s_name, s_width, s_height, s_xpos, s_ypos, s_image, s_color):MovieClip
{
     var counter:Number = this.icons.numChildren;
 
     // create new icon movieclip from library
   var mc = new lib_symbole();
     mc.x = s_xpos;
     mc.y = s_ypos;
     mc.width = s_width;
     mc.height = s_height;
     mc.name = s_name + "_" + counter;   
     setColor(mc.lib_icon, s_color); // eig. Funktion

 
     //origIconWidth = mc.lib_icon.width; // wird für slider benötigt
   //origIconHeight = mc.lib_icon.height; // wird für slider benötigt

     //var s = new Slider();
   //s.name = "slider";
   //s.liveDragging = true;
   //s.setSize(origIconWidth - 5,0);
   //s.maximum = origIconWidth * 1.5;
   //s.minimum = 10;
   //s.y = mc.lib_icon.y + 8;
   //s.x = (mc.lib_icon.width - mc.lib_icon.x)/2 - (s.width/2);
   //s.tickInterval = origIconWidth / 2;
   //s.addEventListener(SliderEvent.CHANGE, announceChange);
   //mc.addChild(s);

     this.icons.addChild(mc);
 
     var myLoader:Loader = new Loader();
     myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressStatus);
     myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderReady);
     
     var fileRequest:URLRequest = new URLRequest(s_image);
     myLoader.load(fileRequest);
 
     mc.lib_icon.addChild(myLoader);


Ich benötige es aber nachher nochmals in der Form "mc.lib_icon.myLoader" um direkt die Größe dieses Icons mittels Slider zu verändern.
 09.07.2010, 12:41Re11
Beiträge: 16
Registriert: Jul 2010

Themenautor/in

Habs mal soweit hingebracht, danke für eure schnelle Hilfe!
 
Themen
Ähnliche Beiträge zum Thema
 

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de