| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Aug 2008
Beiträge: 10
| Dynamische Papervision Site
Hallo Flashforum, ich bastel mir zur Zeit mal wieder ne Webseite (Zumindest versuch ich das.) ALSO, es geht um eine AS3-Papervision-Seite, wo ALLE Objekte (Cubes, Planes, etc..) und ALLE Materials dynamisch geladen werden sollen. Die Objekt-Typen und Positionen, sowie dessen Materials sollen in einer SQL-Datenbank abgelegt werden. Außerdem sollten dort auch die "click-handler" der Materials gespeichert sein. (--> Kurz: Voll-Dynamisch via SQL + PHP) Bisher klappt folgendes: Werte aus der SQL-DB werden mit PHP gelesen, und in XML gewandelt. Flash ließt das XML, und kann mit den Daten dann Objekte wie Cubes, etc generieren, und positionieren. ALLERDINGS klappt es bisher NUR mit Materials aus der EIGENEN SWF!!!! Ich wollte alles "nachladen" lassen, das sonnst die SWF viel zu groß werden würde, wenn ich jedes Material dirket in die SWF einbaue. Außerdem ist das Ändern der Webseite dann jedes mal ein AS3-Script-Chaos, wenn alles DIREKT in der SWF plaziert wird... ---> Desshalb der Umstand mit den Datenbanken. Hier mal ein Abschnitt der XML: Code: <cube> <id>1</id> <typ>cube</typ> <name>cube_helloworld</name> //Objekt-Name <xinp>10</xinp> //SIZE <yinp>10</yinp> <zinp>10</zinp> <resolution>4</resolution> //Triangles <xpos>0</xpos> // POSITION <ypos>0</ypos> <zpos>0</zpos> <xrot>0</xrot> //ROTATION <yrot>0</yrot> <zrot>0</zrot> <front>face1</front> //Face-Front-Name <front_type>mc</front_type> //Face-Front-Typ <seite>face2</seite> //Face-Seite-Name <seite_type>mc</seite_type> //Face-Front-Typ </cube> Wie gesagt, es mangelt am dynamischen Nachladen von Texturen / Materials. Ich hab mir das etwa so vorgestellt: Erstmal wird der Name der Textur angegeben (front / seite: z.B. "face2") und dann: Wenn: front_type / seite_type ist "mc", dann Material aus eigener SWF nehmen. Wenn: front_type / seite_type ist "swf", dann Material aus neuer SWF / JPG nachladen. Wenn: front_type / seite_type ist "col", dann Color-Material erstellen. Wenn: front_type / seite_type ist "db", dann Material-Informationen aus Datenbank laden. (mit anderer "PHP-SQL-XML-Abfrage") Habe jetzt auch noch ein Array, wo alle bereits geladenen Materials enthalten sind. Das soll eine art Überprüfung sein, dass er nicht MEHRMALS das gleiche Material läd. Hier mal ein Schnipsel dazu: Code: var materials_array = new Array();
for(var i:uint=0; i<cubes.length(); i++) //für jeden Cube
{
...
...
//Cube Materials check:
if (cubes.front_type.text()[i] == "mc") { //Wenn Type = MC
trace ("Suche nach: "+cubes.front.text()[i]);
var i2:uint = 0;
for each (var num in materials_array) { //Jeden Array-eintrag abrufen.
if (cubes.front.text()[i] == num) { //Überprüfen ob vorhanden
trace("GEFUNDEN "+cubes.front.text()[i]+" in Array # "+i2);
} else {
materials_array.push(cubes.front.text()[i]);
trace("NEU: Material geladen in Array # " + materials_array.length);
//HIER SCRIPT FÜR NEUES MATERIAL ????
}
i2++
}
} ALSO so schaud alles bisher aus: http://freakts.selfip.net/2/menu.swf So schaud es in der "objects"-DB aus: http://freakts.selfip.net/2/sql.bmp und PHP erstellt diese XML daraus: http://freakts.selfip.net/2/1.php Falls ihr noch was wissen müsst, oder gar die FLA braucht, dann einfach bescheid sagen. ^^ Ich bin für jeden Vorschlag dankbar, und hoffe dass mein "Anfang" was taugt. Vielleicht geh ich alles etwas falsch an, denn das ist mein ERSTES GROßES AS3-PROJEKT, und lagsam grieg ich ne Krise. AS3 is nochmal ein bisschen anders und teilweise absolutes Neuland... Hinterher wollt ich alles in Klassen packen, für die Zukunft.. ^^ Also ich bin für JEDE Hilfe und jeden (Verbesserungs-)Vorschlag dankbahr. Achja, gemacht wurde es in Flash CS3, hab aber auch Flash CS4. (Bitte nicht lachen, das ist mein ERSTER BEITRAG hier bei euch... Super forum !! ^^) Gruß, freak_ts Geändert von freakts (25-04-2009 um 22:52 Uhr) |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Aug 2008
Beiträge: 10
|
Ich drück mich mal so aus: Also mir gehts grad nur darum, ein material zu laden. Beispiel für ein MC-Material: Code: var material:MovieMaterial = new MovieMaterial(face); material.interactive = true; material.smooth = true; material.animated = true; Jo, nur ich möchte es gern DYNAMISCH NACHLADEN... also z.B. ne SWF. der Name des neuen Materials, und der Pfad kommen aus der XML... Wie kann ich das lösen? Ich hab schon sämmtliche varianten versucht, und Google sowie andere foren abgekämpft, jedoch finde ich GARNIX dazu...! so geht es jedenfalls (in AS3) NICHT: Code: var cubes.front.text()[i]:MovieMaterial = new MovieMaterial(cubes.front.text()[i]); cubes.front.text()[i].interactive = true; cubes.front.text()[i].smooth = true; cubes.front.text()[i].animated = true; Ich hoff jemand kann mir helfen! Ich will nicht schon wieder ein angefangenes Projekt in die tonne schmeißen müssen. Gruß Geändert von freakts (25-04-2009 um 22:52 Uhr) |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Nov 2006
Beiträge: 152
|
Hi, was genau willst du dynamisch laden? Eine swf mit einem mc, den du dann als Material verwendest? Das müsste ja irgendwie gehen, indem du die swf ganz normal mit einem Loader lädst, den mc mit getChildByName holst und als MovieMaterial verwendest. Externe Bilder kannst mit BitmapFileMaterial laden, da brauchst keine swf wo das Bild drin liegt. Sry wenn ichs nicht verstanden hab... |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Aug 2008
Beiträge: 10
|
Hallo...^^ Das ist gut möglich, denn ich habe alles ein bisschen seltsam erklärt... Versteh ich selber gar nicht mehr ^^ Erstma Danke für den Tipp mit dem Loader + getChildByName. Vermutlich werd ich das auch mit in das Projekt einplanen...! Also nun versuch ich es nochmal anders: Ich möchte eine reine Flash-Papervision-Seite basteln! Dabei soll PHP+SQL die size, sowie die positions und rotations für sämtliche "Objekte" (Cubes, Plates, etc..) aus einem "Objects-Table" abholen, und in XML "umwandeln", damit es komfortabel in Flash weiterbenutzt werden kann. Jedes dieser "Objects-Tables" kann man sehen, als teil eines ganzen. //Beispiel aus dem "Objects-Table": <cube> <id>16</id> <typ>cube</typ> <name>cube_helloworld</name> //Objekt-Name <xinp>10</xinp> //SIZE <yinp>10</yinp> <zinp>10</zinp> <resolution>4</resolution> //Triangles <xpos>54</xpos> // POSITION <ypos>9</ypos> <zpos>12</zpos> <xrot>21</xrot> //ROTATION <yrot>21</yrot> <zrot>65</zrot> </cube> Diese geladenen "Objekte" des Object Tables haben je zwei "Material-Ziele" in der Datenbank: z.B: <material_front>abc</material_front> <material_sides>def</material_sides> ...soll heißen, dass z.B. für die Vorderseite eines Cubes das Material "abc" benutzt werden soll. Und für die anderen restlichen Seiten das Material "def". Bevor Flash die "Objects" darstellt, müssen noch diese Materials für jedes "Objekt" her..... Alles bisher beschriebene funktioniert schon, wenn ich alle Materials jetzt ganz normal DIREKT per ActionScript, in der SWF lade, und alle "Objects" darstellen lasse... Es sollen aber dynamisch geladene Materials werden!!!. Jetzt möchte ich gerne neue Materials für die "Objekte" laden. In einem anderen "Materials-Table" der Datenbank sind: ein "NAME", ein "LINK bzw. eine EIGENSCHAFT", sowie eine "TYP-Angabe" für jedes Material. (Typ-Angabe = definition, ob es sich dabei um eine SWF, oder ein Bitmap-, ein Color-, oder ein Wireframe-Material handelt.) Flash soll jetzt für alle "Objekte" jedes Material laden lassen, wie es in dem bereits übergebenen "NAMEN" (z.B. <material_front>abc</material_front>) in dem "Objects-Table" der Datenbank steht, und es dann anhand des Typs dementsprechend laden, aber dabei UNBEDINGT den "NAMEN" des Materials übernehmen!!! //Beispiel eines Materials im "Materials-Table": id = 34 name = "abc" typ = "swf" value = "/swf/home.swf" click_typ = "CamMove" click_value = "100, 50, 35, 0, 45, 0" Wenn AS3 entlich mal das machen würde, was ich ihm befehle, - und die Materials entlich geladen wären - dann kann ich endlich die "NewCube-Schleife" mit den XML-Werten starten... Aber ich schaffs einfach nicht... Hab´s nochmal versucht mit diversen Array´s, etc.. etc.. etc.. Kann nimma ^^ ... ... ... ...Also Diese Fragen sind noch offen: Wie kann ich einem Material beim laden, den "NAMEN" aus der Datenbank zuweisen, praktisch ein "variabler Name"??! z.B. var xml.materialname.text()[i]:MovieMaterial ?????? Wie kann ich in AS3 überhaupt dynamische Variablen-Namen erstellen, die sich aus einzelnen Werten zusammensetzen ??? z.B. var "Number"+[i]:Number ????? Ich bekomm NUURR irgendwelche fehler...! Mir fallen keine Iddeen mehr ein, wie ich das lösen könnte... Ach, aber 2 Fragen noch...: Undzwar: Kann ich keine SWF direkt als Material nehemen ??? Oder muss ich einen MC aus einer SWF nehemen? So wie es mir grizu geraten hat ?? Kann man eigentlich auch FLV-Dateien als Material benutzen ? |
| | |
| | #5 (permalink) | |||
| Neuer User Registriert seit: Nov 2006
Beiträge: 152
|
Hab dir mal was zusammengebastelt... Wo liegt das Problem? Du lädst eine XML. In der hast alle Angaben, die du zur Erstellung eines Cubes brauchst. Du brauchst ja nur noch, abhängig vom front_type, bzw. seite_type, ein Material erstellen. Wenn das ein mc auf der Bühne ist, nimmst ein MovieMaterial, wenns ein externes Bild ist, nimmst ein BitmapFileMaterial etc. Schau dir mal die Materialien von Papervision an, da gibts fast alles was man brauchen kann. Zitat:
ActionScript:
Zitat:
ActionScript:
Zitat:
lg grizu | |||
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Aug 2008
Beiträge: 10
|
Hallo, Sorry, Ich wollte mich schon fürher melden, aber ich war die letzten Tage nicht am PC. ![]() Woow DANKE.. Echt super! Das gieng ja Randend-Schnell, und schon hast du meine komplette Funktion fertig in einem Pack! Ich hab Tage an meinem Code geschrieben, der ist auch ca. 5x so lang geworden... Hehe, dem "neuen" AS3 bin ich also noch überhaupt nicht vertraut..!! ![]() Leider läuft dein netter Script nicht bei mir...! Ich bekomm ständig errors: Code: 1046: Type was not found or was not a compile-time constant: MovieClip. import org.papervision3d.core.proto.MaterialObject3D; package ![]() Was kann ich machen, damit der Script von dir Funktioniert ??? Im moment mit CS3, Papervision3D_2.0.883... Ich habe mir dein Script mal angeschaut. Die Art die du genommen hast, hatte ich "die Beim-Erstellen-Hinterher-Umbenenn-Methode" getauft, hat aber leider auch nicht gelappt. Nun weiß ich echt nicht mehr weiter. Gruß, freak_ts |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| as3, flash, papervision, php, sql |
| Themen-Optionen | |
| Ansicht | |
| |