Hi!
Danke erstmal wieder für die schnelle Antwort.
Es geht um einen Würfel den ich drehen lassen möchte.
Hatte ich gestern shonmal in einem anderen Thread angerissen. ^^
Mein Problem ist, das ich für eine 3-dimensionale Drehung des Würfels, der in diesem
Falle aus Movieclips anstelle von gezeichneten Flächen besteht, die Movieclips asymetrisch verschieben muss. Beispiel für ein Quadrat:
- untere Kante nach links
- obere kante nach rechts
Das klappt auch soweit ganz gut. Wenn ich dem Würfel nun aber eine echte 3-D-Perspektive verpasse (was weiter entfernt ist muss kleiner sein), muss ich ungleichmäßig verschieben.
Beispiel:
- linke Kante des Films ist weiter hinten --> also kleiner als rechte Kante des Films
(auch: perspektivische asymetrische Verschiebung)
Da ich bisher noch keine Lösung in Flash gefunden habe, die das bewerkstelligen kann, habe ich an der Stelle getrickst und zeige pro Fläche 2 anstelle von einem Movieclip, die sich genau an 2 entgegengesetzten Punkten des jeweiligen Quadrates orientieren.
Diese beiden Movieclips werden dann mit einer Maske zueinanderhin hälftig abgeschnitten(also dreieckige Maske). Damit sieht das dann so aus als währe es ein MC(naja fast, bei der Drehung sieht man einen leichten Knick, das ginge zwar auch zu beheben, aber das währe 1. noch mehr Arbeit und währe 2. performancelastiger, da man dementsprechend noch mehr Movieclips bräuchte). was ich genau meine Ist auf meiner HP (in Signatur)
ersehbar. (dort einfach mal den Text markieren)
Hieraus wird dann viellicht auch mein Problem klar:
Ich muss andauernd alles synchronisieren. Das fängt schon mit so einfachen Dingen wie das Scrolling in Textboxen a und hört bei Dingen wie das Abschicken von Formularen auf.
Dafür währe es doch genial wenn man eine Movieclipinstanz mehrmals anzeigen könnte.
Nun mein momentan eigentliches Problem schaut wie folgt aus:
- Meine Texte habe ich zentral in einem Movieclip abgespeichert, um bei dynamisch befüllten Texten, die sich ja auch mitbewegen nur einmal die verwendete Schriftart laden zu müssen.
- Diese texte importiere ih dann in die jeweiligen MC's per runtimesharing
- der gesamte Pfad erhält stets Instanznamen
Nun das Problem:
Ich habe ein Skript, welches allen Textfeldern einen Listener "onScroller"
verpasst, welcher bei Ausführung dem Gegenstück des Textes im jeweils zugehörigen Movieclip die gleiche "scroll" eigenschaft verpasst die es selbst besitzt.
Zeige ich pro Movieclip nur einen Text an, klappt das auch wunderbar. Zeige ich mehrere Texte pro MC an, verlieren die Textfelder Ihre Instanznamen und bekommen zufällige Instanznamen von Flash zugeordnet. Damit lassen Sie sich aber nicht mehr mit dem jeweiligen Gegenstück matchen.
Bitte siehe Quellcodekommentar:
PHP:
function matchPerspective(obj1,obj2,cube)
{
for (var i in obj1)
{
if(typeof(obj1[i])=="movieclip"&&obj1[i]._name=="spacer")
{
obj1._xscale=cube.border/obj1[i]._width*100;
obj1._yscale=cube.border/obj1[i]._height*100;
obj2._xscale=cube.border/obj1[i]._width*100;
obj2._yscale=cube.border/obj1[i]._height*100;
}
if (typeof(obj1[i].text)=="string"&&typeof(obj1[i])=="object"&&obj1[i]._name!=null)
{
/*Beim ersten Durchlauf (anscheinend beim initialisieren der fct) hat er noch die Originalpfade, ab dem 2. jedoch ändert sich der Name von obj1[i] auf "Instanz..."
Und der Name von obj2[i] ebenfalls. Damit sind die Namen der beiden Objekte unterschiedlich und können mit diesem Skript nicht mehr gematcht werden
*/
obj1[i].onScroller=function()
{
trace(obj1[i]);
obj2[i].scroll=obj1[i].scroll;
}
obj2[i].onScroller=function()
{
trace(obj2[i]);
obj1[i].scroll=obj2[i].scroll;
}
}
if (typeof(obj1[i]) == "movieclip")
{
matchPerspective(obj1[i],obj2[i],cube);
}
}
}
Weiterhin: Das Abändern der Instanznamen der Texte, passiert nur dann, wenn ich per Runtimesharing mehr als einen Text im importierten Movieclip habe.
Die Frage: Warum ändert Flash die Instanznamen der Textfelder?
Wie lässt sich das verhindern? Oder: Lässt sich das generell sinnvoller gestalten?
*ui das ist jetzt aber viel geworden ^^
MfG
Matthias Nordwig