//Benötigte Klassen:
//Papervision org
import org.papervision3d.scenes.*;
import org.papervision3d.objects.*;
import org.papervision3d.cameras.*;
import org.papervision3d.materials.*;
//Caurina Tweener
import caurina.transitions.*;
//3 dynamische Textfelder mit diesen Namen für Titel, Beschreibung und Link Ausgabe anlegen
//Bei Bedarf Schrift einbetten und Umlaute und Sonderzeichen einbetten
tn_title.text = "";
tn_desc.text = "";
tn_url.text = "";
//Angabe der Anzahl der Karussell Bilder im Ordner.
var totalc:int = 12;
//Radius Karussell
var radius:Number =520;
var anglePer:Number = (Math.PI*2) / totalc;
var angleX:Number = anglePer;
//bestimmt später bei Rechts bzw. Linksbwegung wieviele Bilder übersprungen werden
var dest:Number =1;
//Filter (Abstand, Winkel, Farbe, Weichzeichnung, xGrad, yGrad,xAbstand, yAbstand)
//wird später bei Rollover bzw. Rollout einzelner Items angewendet
var dsf:DropShadowFilter = new DropShadowFilter(0, 90, 0xFFFFFF, 8, 3, 3, 5, 5);
var nodsf:DropShadowFilter = new DropShadowFilter(0);
//Container für Inhalte (Bilder im Karussell)
var con:Sprite = new Sprite();
con.x = stage.stageWidth/2;
con.y = stage.stageHeight/2-20;
addChild(con);
//PV3D
var scene:MovieScene3D = new MovieScene3D(con);
var cam:Camera3D = new Camera3D();
cam.zoom =6;
//hier werden leere Listen- Arrays erzeugt, die als Container für die XML Inhalte dienen
var url_list = new Array();
var url_target_list:Array = new Array();
var title_list = new Array();
var description_list = new Array();
//Ordner, in dem die Bilder liegen anlegen und hier referenzieren
var folder:String = "images/";
//URL Angaben zu XML Datei und Laden
var url:URLRequest = new URLRequest("liste.xml");
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, createbild);
loader.load(url);
function createbild(e:Event):void
{
//XML Objekt
var liste_xml:XML = new XML(loader.data);
var total = liste_xml.thumbnail.length();
// trace(liste_xml);
for( i =0; i< total; i++ )
{
//hier werden die XML Inhalte ausgelesen und den einzelnen Listen- Arrays hinzugefügt
url_list.push( liste_xml.thumbnail[i].@url.toXMLString() );
url_target_list.push( liste_xml.thumbnail[i].@target.toXMLString() );
title_list.push( liste_xml.thumbnail[i].@titel.toXMLString() );
description_list.push( liste_xml.thumbnail[i].@description.toXMLString() );
var bam:BitmapFileMaterial = new BitmapFileMaterial(folder + liste_xml.thumbnail[i].@filename.toXMLString());
bam.oneSide = false;
bam.smooth = true;
//PV3D Plane Klasse für flache rechtwinklige Objekte, als Parameter: Material, Breite, Höhe
var p:Plane = new Plane(bam, 250, 200);
scene.addChild(p);
p.x = Math.cos(i*anglePer) * radius;
p.z = Math.sin(i*anglePer) * radius;
p.rotationY = (-i*anglePer) * (180/Math.PI) + 270;
//hier werden die einzelnen Objekte ansprechbar und mit Event Listenern ausgestattet
var p_container:Sprite = p.container;
//Name egal, hier mit acht Buchstaben, werden später abgeschnitten
p.container.name = "achtzehn" + i;
p.container.buttonMode = true;
p.container.addEventListener( MouseEvent.ROLL_OVER, p_rollover );
p.container.addEventListener( MouseEvent.MOUSE_OUT, p_rollout );
p.container.addEventListener( MouseEvent.CLICK, p_click );
}
}
//STEUERUNG Carousel mit Tweener und Rendern Kamera, auf Bühne 2 Buttons "right" und "left" anlegen
right.addEventListener(MouseEvent.MOUSE_OVER, moveRight);
left.addEventListener(MouseEvent.MOUSE_OVER, moveLeft);
root.addEventListener(Event.ENTER_FRAME, render);
function moveRight(e:Event):void
{
dest++;
Tweener.addTween(this, {angleX:dest*anglePer,
time:2.9});
}
function moveLeft(e:Event):void
{
dest--;
Tweener.addTween(this, {angleX:dest*anglePer,
time:2.9});
}
function render(e:Event):void
{
cam.x = Math.cos(angleX) * 1000;
cam.z = Math.sin(angleX) * 1000;
scene.renderCamera(cam);
}
//STEUERUNG einzelne Items, Textzuordnung und Filter bei Rollover an und bei Rollout aus
function p_rollover(me:MouseEvent)
{
var sp:Sprite = me.target as Sprite;
//hier werden die acht Buchstaben des Namens abgeschnitten so dass
//alle Inhalte über die richtige ein bis zweistellige Nr. zugeordnet werden können
var s_no:Number = parseInt(sp.name.slice(8,10));
sp.filters = [dsf];
tn_title.text = title_list[s_no];
tn_desc.text = description_list[s_no];
tn_url.text = url_list[s_no];
}
function p_rollout(me:MouseEvent)
{
var sp:Sprite = me.target as Sprite;
sp.filters = [nodsf];
tn_title.text = "";
tn_desc.text = "";
tn_url.text = "";
}
function p_click(me:MouseEvent)
{
var sp:Sprite = me.target as Sprite;
trace(sp.name);
var s_no:Number = parseInt(sp.name.slice(8,10));
navigateToURL(new URLRequest(url_list[s_no]), url_target_list[s_no]);
}
stop();