Hi, kein Problem. Die Fla hat vielleicht höchstens 5min. gedauert.
Wenn du Inhalte aus MySQL nach Flash importierst, wirst du das wahrscheinlich mit PHP als Bridge über das LoadVars Objekt und loadMovie(); machen.
Da du 36 Bilder hast brauchen wir uns also nicht mit Trigonometrik beschäftigen.
Spontan würde ich vorschlagen, das du das Zoomen wie folgt erledigst.
Die entsprechenden Bilder sollten die maximale Größe haben. Diese lädt du in einen ContainerClip, welcher auf 50% skaliert ist. Zoom*1 70%, Zoom*2 100%. Und jeweils wieder zentrieren nicht vergessen
Kannst die ja eine Funktion mit _width, _height, _x und _y bauen, die das dann relativ zu einander erledigen. Als Parameter übergibst du den Zoomfaktor und entsprechend einen Wert wie center, left etc.…
Vielleicht hat Flash auch so eine Funktion schon dabei… hehe… ich bin mittlerweile im FunctioncodingWahn… schau einfach mal in der Referenz
Und die Bilder…
die kannst du dann ja mittels loadMovie in den Container laden, skaliert werden diese dann ja ebenfalls.
Und der Roundview…
In PHP liest du dann ja so wahrscheinlich deine Links zu den Dateipfaden aus
PHP:
<?php
require_once('config.inc.php');
$i=0;
$read=mysql_query("select image from $db_tab where root_id='$_POST[root_id]' order by id asc",$handler);
while($a=mysql_fetch_array($read))
{
$result.='&image_'.$i.'='$path.$a['image'];
}
$result.='&repeats='.$i;
echo utf8_encode($result);
?>
$path ist dann der Pfad zu den Bildern, der in der config.inc.php definiert ist, da in die DB nur Dateinamen gehören und du beim Auslesen beide konkatenieren kannst.
In Flash würde ich das dann so machen
PHP:
//Actionscript
var loader=new LoadVars()
loader.object=this;
loader.root_id=//hier die root_id der entsprechenden Bilderserie eintragen, dann kannst du direkt mehrere Objekte ansteuern in einer SWF
loader.sendAndLoad('query.php', loader, 'POST');
loader.onLoad=function(success)
{
if (success)
{
var Comp=_root.attachMovie('Comp, 'Comp', 1); // Instanz der „Drehumgebung“ auf die Bühne holen. Vorher in die Lib mit Linkage ID legen
Comp._x=//X Koordinate
Comp._y=//Y Koordinate
for(var i=0;i<this.repeats;i++) //Repeats werden ==360 sein, kannst du so aber Variabel halten für ein geringeres Datenaufkommen (zb ==36). Mit entsprechendem Datensatz (root_id) verwenden!
{
'Comp.image_'+i=eval('this.image_'+i);
}
delete this.object['loader'];
}
}
Cont ist dann eine Komponente die du in der Lib ablegst und entsprechende CompDefinitions (image_1 etc.) mit Datentyp String verpasst.
Nun hast du dann auf der Bühne eine Komponente, die alle 360 Bildpfade als Eigenschaft hat.
Jetzt kannst du dann das erste Bild in einen Container (_root.comp.createEmptyMovieClip('container',1)
mit loadMovie(image_01); laden.
Auf 50% skalieren udn zentrieren nicht vergessen.
Da du dich schon mit Kollisionsabfrage beschäftigt hast kannst du nun die Breite des _root.comp.container ausmessen und die x,y bestimmten ((getProperty()) (immer abhängig vom „Zoomfaktor“, den man übrigens so auch stufenlos einstellen könnte) und dann entsprechend einen _root.comp.container.hitTest(x,y, boolean); bezüglich 360 Einzelabschnitten erstellen, der dann im Falle von hitTest=true das nächste Bild lädt.
Den hitTest musst du in einen onEnterFrame schreiben, damit die Abfrage immer wiederholt wird.
Beispiel:
Zoomfaktor ist 100%.
Das Bild in dem Container wäre dann 360px*360px (angenommene Max Größe) und liegt auf 0 0 . Abfrage würde ergeben, das die Mouse auf x==289 ist und y==[gesamteHöhe des Container], dann müsste der hitTest, welcher für diesen Bereich true wäre das Bild der Variablen image_289 in den Container laden.
Da du nun noch die Maus dabei gedrückt haben möchtest, kannst du als zusätzliche Bedingung zu dem hitTest() noch den Eventhandler Mouse.press / true etc etc. einsetzen. Jenachdem für was du dich entscheidest bezüglich der Abfrage der Maus.
Liebe Grüße
Yves