MXPHPFOTOALBUM_Hilfe.. - created by Daniel Deckensattl in

Transcription

MXPHPFOTOALBUM_Hilfe.. - created by Daniel Deckensattl in
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
11.07.2015 / Seite 1 / 39
Hilfedokument zum XML-PHP-Photoalbum
Diese Dokumentation zeigt, wie man mit Flash ein Photoalbum programmiert. Dieser nur 49 KB grosse MovieClip ist recht einfach aufgebaut, was wir weiter unten genauer sehen
werden. Der Clip arbeitet zusammen mit XML (Konfigurationsdatei für den Anzeigeclip) und PHP (Photodatenlieferant) und einem Photoanzeige-Clip der fernbedient wird, plus
zusätzlichen 38 Rahmenclips die dynamisch hinzugeladen werden können.
http://deckensattl.goip.de/ddflashpage/
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
Aufbau des Photoalbum-Navigationsclips
Für die Anzeige der Photos wird ein sehr kleiner fernbedienbarer MovieClip benötigt
(ddxmlphotoalbum_600w400h.swf) der weiter unten beschrieben wird. In diesem Clip hat es nur
einen leeren MovieClip der für ein optionales Hintergrundbild vorgesehen ist.
11.07.2015 / Seite 2 / 39
<?xml version="1.0"?>
<fotodaten>
<fotokonfig>
<StartAppURL>http://localhost/ddflashpage/files/Flash/ddphpphoto</StartAppURL>
<StartPhotoURL></StartPhotoURL>
<StartSession>Kunst,Lustig,Gemischtes,Chatzen</StartSession>
<StartSoundURL>Sound/ddj_beatsound_003.mp3</StartSoundURL>
<ShowBodenFarbe>0xFFFFFF</ShowBodenFarbe>
<ShowAlbumRandFarbe>0xFFFFFF</ShowAlbumRandFarbe>
<ShowListBackgroundFarbe>0xFFFF99</ShowListBackgroundFarbe>
<ShowSelectionUnfocusedFarbe>0xEEBE00</ShowSelectionUnfocusedFarbe>
<ShowTextSelectedFarbe>0x000000</ShowTextSelectedFarbe>
<ShowSelectionFarbe>0xEEBE00</ShowSelectionFarbe>
<ShowTextColor>0x000000</ShowTextColor>
<ShowTitelColor>0x990000</ShowTitelColor>
<ShowFaceFarbe>0xFF5501</ShowFaceFarbe>
<ShowKnopfFarbeNormal>0x0000FF</ShowKnopfFarbeNormal>
<ShowKnopfFarbeDarüber>0x515210</ShowKnopfFarbeDarüber>
<ShowKnopfFarbeDruck>0x006600</ShowKnopfFarbeDruck>
<ShowReglerKnopfFarbe>0x33CCCC</ShowReglerKnopfFarbe>
<ShowReglerSkalaFarbe>0x990000</ShowReglerSkalaFarbe>
<ShowSekundenTextFarbe>0x000000</ShowSekundenTextFarbe>
<ShowDauerTextFarbe>0x990000</ShowDauerTextFarbe>
<ShowRahmenSkill>Skills/PhotoSkill004.swf</ShowRahmenSkill>
<ShowPhotoHintergrundClip>photos/AlbumHGPhoto.jpg</ShowPhotoHintergrundClip>
<ShowSekundenText>Sek.:</ShowSekundenText>
<ShowPeriodenText>Dauer:</ShowPeriodenText>
<ShowPeriodenInfo>Anzeigedauer in Sekunden</ShowPeriodenInfo>
<ShowStopText>Beendet Photoshow</ShowStopText>
<ShowAutoVorneText>Diashow vorwärts</ShowAutoVorneText>
<ShowAutoHintenText>Diashow rückwärts</ShowAutoHintenText>
<ShowVorneText>Nächstes Einzelphoto</ShowVorneText>
<ShowHintenText>Vorheriges Einzelphoto</ShowHintenText>
<ShowHelpTextSoundOff>Sound aus</ShowHelpTextSoundOff>
<ShowPhotoClip>ddphpphotoalbum_600w400h.swf</ShowPhotoClip>
</fotokonfig>
</fotodaten>
Die Hauptfunktionen der Photoshowanzeige liegen im Hauptnavigationsclip
(ddxmlphotonavunten600w400h.swf) welcher komplett per XML konfiguriert
wird (siehe oben). Sämtliche Tasten, Beschriftungen und Listenfenster
können farblich den eigenen Wünschen angepasst werden.
Um es dem Endanwender so einfach wie möglich zu machen wurde eine
PHP-Variante entwickelt, welche die, am Besten mit FTP hochgeladene Bilder
(zB. mit FileZilla – ein Freeware-FTP-Dateikopierer) schnell und unkompliziert
anzeigen kann. Nach dem Hochladen wird mit einem PHP-Script (HTMLWebseite) die Konfiguration der Photogruppenbezeichner vorgenommen.
Die Photos müssen nicht nummeriert vorliegen, was aber mit einem Tool am
Besten umzusetzen ist. Um Photos aus einer Digitalcamera im Web
anzuzeigen, bedeutet die zB. mit 2800x1024 Bildpunkten vorliegenden
Photos so zu verkleinern, wie sie am Ende im Web gezeigt werden sollen. Mit
der Freeware Xnview lassen sich mehrere Dateien in einem Rutsch in eine
neue Pixelgrösse (Formate usw. zB. JPG-NoProgress-Filter!) umwandeln
(siehe unten) und Joe-FilesRenamer benennt dann durchnummeriert alle so,
dass wir alle Photos im Flash-Photoalbum-Movieclip betrachten können.
http://deckensattl.goip.de/ddflashpage/
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
11.07.2015 / Seite 3 / 39
Am Besten erstellen Sie eine Kopie der Bilder die verkleinert und umbenannt werden sollen und speichern diese in einem eigens dafür erstellten Unterordner ab. Da starten Sie
XnView und fügen die Bilder in dieses Tool (per Drag and Drop) indem Sie über den Explorer die Photos ins Programm ziehen.
XnView eignet sich hervorragend, wenn es um die Massenkonvertierung (Werkzeuge/Stapelverarbeitung oder Ctrl/U) von Pixelbildern geht. Wie unten abgebildet werden die
umzuwandelnden Photos im Register Allgmein hinzugefügt. Dann stellen wir noch die JPG-Eigenschaft Progress auf Kein Progress (JPG-Format-Optionen) ein (flashbedingt). Im
Register Umwandlungen benötigen wir nur den Filter "Grösse ändern" der per Doppelklick aktiviert wird. In unserem Beispiel wurde die Photobreite auf 450 Pixel eingestellt (mit
http://deckensattl.goip.de/ddflashpage/
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
11.07.2015 / Seite 4 / 39
Verhältnis beibehalten, wird die Höhe dann autom. errechnet!), also eine
Webkonforme Grösse! Wenn Sie also mit dem AusgabeClip
ddxmlphotoalbum_600w400h.swf arbeiten, dann würde ich die Höhe der
Bilder auf 400 festlegen, damit Hoch und Querbilder im Anzeigeclip
dargestellt werden können.
Die Komprimierung der JPG-Bilder legen Sie am Besten zwischen 40 und
60% an, sodass diese übers Internet schnell geladen werden können
(Optimale Grössen sind 20 – 40 Kbyte). Liegen die fertigen Internetbilder nun
vor, dann geht es ans Konfigurieren der Konfigurations-Textdateien über den
PHP-Photoalbum-Manager.
Haben Sie kleinere Photos mit einer Auflösung von zB. 400x325 Pixel und stellen diese in einem 800x600-Pixelrahmen zur Verfügung, können mit dem Zoomfaktor die Bilder
vergrössert oder auch verkleinert werden. Um sie im Anzeigebereich einzumitten, können Sie den oberen und linken Rand angeben, wohin Sie die Bilder dann haben möchten. Das
wars schon, jetzt kann die TXT-Datei gespeichert werden und der Navigationsclip und der Anzeigeclip können gestartet werden. Die Bilder werden dann angezeigt.
Möchten
Sie
ein
bestimmtes
Startbild
festlegen,
dann
können
Sie
das
im
allgemeinen
Abschnitt
der
XML-Datei
tun
(zB.
<StartPhotoURL>photos/ww/iwindelw_04.jpg</StartPhotoURL>), oder eine Sounddatei mitstarten über <StartSoundURL>Sound/ddj_discoline_32_441.mp3</StartSoundURL>. Man
kann auch festlegen welche Photosession als erstes angezeigt werden soll (<StartSession>Kunst,Lustig,Gemischtes,Chatzen</StartSession>) hierzu werden der Reihe nach die
Gruppenbezeichner durch ein Komma getrennt im StartSession-Tag angegeben.
http://deckensattl.goip.de/ddflashpage/
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
11.07.2015 / Seite 5 / 39
ActionScript 1.0 Flash MX
Kommen wir nun zum technischen Teil dieser Dokumentation. Der Navigationsclip wurde so programmiert, das wir auch mehrere Navigations-Clips auf einer Webseite haben
können, welche jedoch immer einen anderen Namen besitzen müssen. Wird also die Datei ddxmlphotonavunten600w400h.swf in ddxmlphotonavunten200w120h.swf umbenannt,
muss die dazugehörige XML-Datei denselben Namen aufweisen (also ddxmlphotonavunten200w120h.xml) dass sie dann auch vom Navigationsclip gefunden wird und eingelesen
werden kann.
Das
der Clip
überhaupt
auf
einer Webseite
läuft ist es notwendig, den
eigenen URL-Pfad
zuoberst in
der XML-Datei
(<StartAppURL>http://..meinpfad.ch</StartAppURL> einzutragen, wie auch in den beiden PHP-Dateien (plus Schreibrechte in den benötigten Verzeichnissen!).
In der XML-Datei gibt es eine Tag <ShowPhotoClip>ddxmlphotoalbum_200w120h.swf</ShowPhotoClip> in welchem dann der Ausgabeclip angegeben wird, der auch kopiert,
umbenannt und in beliebiger Grösse auf die Webseite eingebunden werden kann. Mehrere Instanzen sind so möglich. Das Unterverzeichnis Skills beherbergt 38 verschiedenen
Rahmentypen, die auch in der XML-Datei angegeben werden können – im allgemeinen Abschnitt im Tag<ShowRahmenSkill>Skills/PhotoSkill004.swf</ShowRahmenSkill>. Der
Anzeigeclip zeigt dann die Photoshow gleich mit dem angegeben Rahmen.
In ActionScript 1.0 von Flash-MX werden zu beginn die Standardvariablen definiert, welche Sie auch in der XML-Datei angeben können. Fehlen solche allgemeine
Abschnittsangaben werden Standardwerte eingesetzt und der Clip erscheint in Weisser Hintergrundfarbe mit blauen Navigationsknöpfen. Die Farbe der Knöpfe werden in den Tags:
<ShowKnopfFarbeNormal>0000FF</ShowKnopfFarbeNormal>,
<ShowKnopfFarbeDarüber>515210</ShowKnopfFarbeDarüber>
und
<ShowKnopfFarbeDruck>006600
</ShowKnopfFarbeDruck> angegeben.
Die Beschriftungsfarbe der Sekundenanzeige und der Sekundenskala erfolgen in den Tags: <ShowSekundenTextFarbe>000000</ShowSekundenTextFarbe> und
<ShowReglerSkalaFarbe>990000</ShowReglerSkalaFarbe>. Soweit es ging habe ich selbstsprechende Tagnamen eingeführt sodass intuitiv gearbeitet werden kann. Auch der
Geschwindigkeitsregler (<ShowReglerKnopfFarbe>33CCCC</ShowReglerKnopfFarbe>) kann andersfarbig angezeigt werden.
Auch bei den Listen könne wir die Schriftfarbe ändern (<ShowSelectionUnfocusedFarbe>0xEEBE00</ShowSelectionUnfocusedFarbe>
<ShowTextSelectedFarbe>0x000000</ShowTextSelectedFarbe>
<ShowSelectionFarbe>0xEEBE00</ShowSelectionFarbe>
<ShowTextColor>0x000000</ShowTextColor>
<ShowListBackgroundFarbe>0xFFFF99</ShowListBackgroundFarbe>)
Die Titelfarbe wird im Tag <ShowTitelColor>0x990000</ShowTitelColor> angepasst. Sogar der Hintergrund des Navigationsclips kann verändert werden
(<ShowBodenFarbe>0xFFFFFF</ShowBodenFarbe>). Sollte der Navigationstext in einer anderen Sprache erscheinen, lassen sich in 8 Tags die Texte dazu ändern (zB.
<ShowSekundenText>Sek.:</ShowSekundenText> und <ShowPeriodenText>Dauer:</ShowPeriodenText> usw.!
Beispiel eines dynamischen Rahmenclips
Die meisten Rahmentypen bestehen aus 5 Elementen, die sehr klein sind und horizontal wie vertikal dubliziert werden. Die nächste Abbildung zeigt einen solchen Rahmen wobei nur
die linke oberer Ecke, die linke untere Ecke und die vertikale wie horizontale Verbindungslinie vorliegen, welche dann dynamisch zusammengesetzt werden. Die Höhe und Breite des
Rahmens wird zu Laufzeit ermittelt, also dann wenn der Rahmen in einen beliebigen Anzeigeclip geladen wird, und so zusammengebaut. Noch einfachere Rahmen haben nur drei
Elemente (eine Ecke und die kurze horizontale wie vertikale Linie) welche dann zu Laufzeit dubliziert, positioniert und in die Länge gezogen werden.
Neben den Rahmenelementen gibt es noch die Abdeckungsclips die an die Ecken und Ränder positioniert werden, sodass ein farbiger Hintergrund nahtlos hinübergeht und neben
der Erstellung des Rahmens auch hinzugefügt werden. Am Ende dieser Dokumentation ist der ActionScriptcode auch vollständig abgebildet plus die FLA-Quelldateien liegen auch in
der Projekt-Zipdatei, falls anderer Rahmentypen benötigt werden.
http://deckensattl.goip.de/ddflashpage/
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
11.07.2015 / Seite 6 / 39
PHP-Photoalbum-Managerdatei ddphpphotoalbummanager.php
Diese PHP-Datei ist passwortgeschützt, wobei das Passwort (ein SHA1-Verschlüsselungspasswort) in der PHP-Datei zuoberst steht und angepasst werden sollte. Wird die PHPWebseite eingerichtet ist das Standardpasswort „abc“. Läuft diese Webseite, kann man mit der eingebauten Passwortgenerierung ein SHA1-Schlüssel zu einem Passwort generiert
werden, welches dann hardcodiert in die PHP-Datei eingetragen wird.
http://deckensattl.goip.de/ddflashpage/
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
11.07.2015 / Seite 7 / 39
Bei der Erstbenutzung kann der Loginname Dani mit dem Passwort „abc“ angegeben
werden und kann dann anmelden. Um ein neues Passwort zu generieren wird unterhalb
des Willkommengrusses auf das kleine Bildchen geklickt und sofort wird ein Eingabefeld
sichtbar in welches das neue Passwort eingegeben wird.
Die Starttaste rechts neben diesem Eingabefeld wandelt dann das Passwort in einen
SHA1-Zeichenkette um die dann in der PHP-Datei im Code eingetragen wird. Dort kann
auch der Loginname angepasst werden.
Wurden die Bildverzeichnisse schon eingerichtet und mit Webbildern gefüllt dann kann
diese Photoverwaltungswebseite gestartet werden. Nun werden die Gruppenbezeichner,
der Titel, optional ein Hintergrundbild, der Zoomfaktor, die Positionierung und der
Rahmentyp angegeben. Mit Druck auf die Speichern-Schaltfläche werden dann diese
Angaben in die dafür vorgesehenen Text-Konfigurationsdateien in den jeweiligen
Bildordner gespeichert.
Nach dieser Aktion, kann man den Flashalbum-Clip mit dem Anzeigeclip laden (auf seiner
Webseite) und die Bildshow abspielen lassen.
Es muss darauf geachtet werden dass die Pfadangaben in den beiden PHP-Dateien
stimmen und den eigenen Bedürfnissen angepasst wurden, sonst läuft nämlich gar nichts.
Läuft das Projekt dann tadellos macht das Einrichten neuer Bildverzeichnisse richtig
spass. Bei der Namensgebung der Bildordner sind keine Umlaute (wie äöü) oder andere
Sonderzeichen erlaubt, das funktioniert nur bei der Kategoriebenennung und dem Titel.
Wer in diesem Projekt Anpassungen vornehmen möchte, sollte sich mit ActionScript 1.0
auskennen, mit PHP 5, HTML und JavaScript, da hier verschiedene Zahnräder ineinander
spielen.
http://deckensattl.goip.de/ddflashpage/
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
Hier nun der komplette ActionScript 1.0-Code (aus Flash MX):
// Autor: Daniel Deckensattl
Version: 1.20
Erstellt:
09.10.15
Update: 10.07.15
/* ---------------------------------------------------------------------------------------------Dynamische Photoshow mit XML-Angaben zu den Photoquelldateien
In der XML-Konfigurationsdatei CLIPNAME.xml, welche nachfolgend aufgefuehrten Aufbau
aufweist, sind alle Informationen, welche wir fuer die Konfiguration der Photoshow benoetigen
enthalten! Die Photodaten selbst werden per PHP geliefert.
<?xml version="1.0"?>
<fotodaten>
<fotokonfig>
<StartAppURL>http://localhost/ddflashpage/files/Flash/ddphpphoto</StartAppURL>
<StartPhotoURL>photos/ww/iwindelw_04.jpg</StartPhotoURL>
<StartSoundURL>Sound/ddj_beatsound_003.mp3</StartSoundURL>
<ShowBodenFarbe>0xFFFFFF</ShowBodenFarbe>
<ShowAlbumRandFarbe>FFFFFF</ShowAlbumRandFarbe>
<ShowSelectionUnfocusedFarbe>0xEEBE00</ShowSelectionUnfocusedFarbe>
<ShowTextSelectedFarbe>0x000000</ShowTextSelectedFarbe>
<ShowSelectionFarbe>0xEEBE00</ShowSelectionFarbe>
<ShowTextColor>000000</ShowTextColor>
<ShowTitelColor>0x990000</ShowTitelColor>
<ShowFaceFarbe>0xFF5501</ShowFaceFarbe>
<ShowKnopfFarbeNormal>0000FF</ShowKnopfFarbeNormal>
<ShowKnopfFarbeDarüber>515210</ShowKnopfFarbeDarüber>
<ShowKnopfFarbeDruck>006600</ShowKnopfFarbeDruck>
<ShowReglerKnopfFarbe>33CCCC</ShowReglerKnopfFarbe>
<ShowReglerSkalaFarbe>990000</ShowReglerSkalaFarbe>
<ShowSekundenTextFarbe>000000</ShowSekundenTextFarbe>
<ShowDauerTextFarbe>990000</ShowDauerTextFarbe>
<ShowRahmenSkill>Skills/PhotoSkill004.swf</ShowRahmenSkill>
<ShowPhotoHintergrundClip>photos/AlbumHGPhoto.jpg</ShowPhotoHintergrundClip>
<ShowSekundenText>Sek.:</ShowSekundenText>
<ShowPeriodenText>Dauer:</ShowPeriodenText>
<ShowPeriodenInfo>Anzeigedauer in Sekunden</ShowPeriodenInfo>
<ShowStopText>Beendet Photoshow</ShowStopText>
<ShowAutoVorneText>Diashow vorwärts</ShowAutoVorneText>
<ShowAutoHintenText>Diashow rückwärts</ShowAutoHintenText>
<ShowVorneText>Nächstes Einzelphoto</ShowVorneText>
<ShowHintenText>Vorheriges Einzelphoto</ShowHintenText>
<ShowHelpTextSoundOff>Sound deaktivieren</ShowHelpTextSoundOff>
<ShowPhotoClip>ddphpphotoalbum_600w400h.swf</ShowPhotoClip>
</fotokonfig>
</fotodaten>
--------------------------------------------------------------------------------------------*/
// -- Aktiviert deutsche Umlautzeichen bei Import der TXT/HTML-Dateien -----------------------System.useCodepage = true;
// -- Beschriftungsvariablen werden von Extern per XML gesetzt, es folgt die Initialisierung -var strShowSekText = "";
var strShowPerText = "";
var strShowStopText = "";
var strShowAutoVorneText = "";
var strShowAutoHintenText = "";
var strShowAutoInfoText = "";
var strShowVorneText = "";
var strShowHintenText = "";
var strShowPhotoClip = "";
var strShowSkillName = "";
var strShowPhotoHGClip = "";
var strStartPhotoURL = "";
var strStartSoundURL = "";
var strShowHelpTextSoundOff = "Sound deaktivieren";
var lngShowBodenfarbe = 0x000000;
var lngShowSelectionUnfocusedFarbe = 0x000000;
var lngShowTextSelectedFarbe = 0x000000;
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 8 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
var lngShowSelectionFarbe = 0x9F3620;
//-- Startsound definieren
var snd01 = new Sound(this);
var lngShowSelectionFarbe = 0xEEBE00;
var lngShowTextColor = 0x9F3620;
var lngShowFaceFarbe = 0xFF0000;
//-- Knöpfe einfärben
var strShowKnopfFarbeNormal = "0000FF";
var strShowKnopfFarbeDarüber = "515210";
var strShowKnopfFarbeDruck
= "006600";
var strShowReglerKnopfFarbe = "33CCCC";
var strShowReglerSkalaFarbe = "990000";
var strShowSekundenTextFarbe = "000000";
var strShowDauerTextFarbe = "990000";
var strShowTitelColor = "990000";
// -- merkt sich die zuletzt ausgewaehlte Seite
var intAktMenu = 1;
var intMenuOK = 1;
var photoTaskID = 0;
var strAktuellesBild = "";
var intKorrOben = 0;
var intKorrLinks = 0;
var intTotalGeladen = 0;
var intAktBildEndNr = 66;
var intAktBildZoom = 100;
var intAktBildPosX = -205;
var intAktBildPosY = -215;
var intPhotoGrp = 0;
var varPhotoGrp = new Array();
var varPhotoClp = new Array();
var aPhotoArrayDaten = new Array();
var aPhotoArrayInfos = new Array();
var strSessionText = "";
var strPHPDataCheck = "";
var intClipNrOut = 0;
iText.text = "Autor: Daniel Deckensattl
copyright (2015)";
iSekunde.text = "Sek.";
iDauer.text = "Dauer";
strSessionText ="";
strSpeedText = "Anzeigedauer bei Diashow";
pctrlbutt01.buttontext.text = "";
pctrlbutt02.buttontext.text = "";
pctrlbutt03.buttontext.text = "";
pctrlbutt04.buttontext.text = "";
pctrlbutt05.buttontext.text = "";
// -- In diesem Array erden die Photopfaeder alle gespeichert ---------------Diaphotos = new Array();
// -- Hier wird die Diashow-Anzeigedauer auf 4 Sekunden initialisiert -------Diashowspeed = 7000;
// -- Wird der autom. Anzeigemodus aktiviert, dann Task-ID-Nummer speichern -DiashowTimID = 0;
// -- Ein Richtungswechsel beim Anzeigen einer Show (1=vorwaerts/<>1=rueckw.)intShowRichtung = 1;
// -- Der laufende Photoindex des gerade aktiven Bildes ---------------------intDiaCounter = -1;
// -- Fuer die Anzeige einer Fotoshow-Gruppe werden diese glob. Var. benoetigt
strAktBildEndung = "jpg";
strAktBildPfad = "abendrot/";
strAktBildName = "Abendrot";
Abdeckung02.swapDepths(2000);
StatusBar.swapDepths(2001);
ToolLeiste.CheckBox01.CheckBoxKreuz._visible = false;
//-- Über die XML-Datei der Photonavigation kann alles eingefärbt werden
function ElementeEinfaerben() {
for(r=1;r<6;r++) {
setMCColor(eval("pctrlbutt0"+r+".ButtonNormal"), strShowKnopfFarbeNormal, true);
setMCColor(eval("pctrlbutt0"+r+".ButtonOver"), strShowKnopfFarbeDarüber, true);
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 9 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
11.07.2015 / Seite 10 / 39
setMCColor(eval("pctrlbutt0"+r+".ButtonPress"), strShowKnopfFarbeDruck, true);
}
setMCColor(iSekunde, strShowSekundenTextFarbe, true);
setMCColor(iDauer, strShowDauerTextFarbe, true);
setMCColor(Clipboden, lngShowBodenfarbe, true);
setMCColor(Speedfader.faderdetail, strShowReglerSkalaFarbe, true);
setMCColor(iText, strShowTitelColor, true);
setMCColor(speedfader.Faderknopf.FaderKnopfBoden, strShowReglerKnopfFarbe, true);
ToolLeiste.CheckBox01.CheckBoxText.htmlText = "<TEXTFORMAT LEADING='2'><P ALIGN='RIGHT'><FONT FACE='Arial' SIZE='11' COLOR='#000000'><b>"+strShowHelpTextSoundOff+"</b></FONT></P></TEXTFORMAT>";
}
function AlbumEinfaerben() {
// -- Hauptgruppen-Scrollliste einfärben -----------------------------------//trace("lngShowSelectionUnfocusedFarbe "+lngShowSelectionUnfocusedFarbe+" lngShowTextColor"+lngShowTextColor+"");
Photogrundliste.setStyleProperty("selectionUnfocused", lngShowSelectionUnfocusedFarbe);
Photogrundliste.setStyleProperty("textSelected", lngShowTextSelectedFarbe);
Photogrundliste.setStyleProperty("selection", lngShowSelectionFarbe);
Photogrundliste.setStyleProperty("textColor", lngShowTextColor);
Photogrundliste.setStyleProperty("face", lngShowFaceFarbe);
// -- Untergruppen-Scrollliste einfärben -----------------------------------Photosubliste.setStyleProperty("selectionUnfocused", lngShowSelectionUnfocusedFarbe);
Photosubliste.setStyleProperty("textSelected", lngShowTextSelectedFarbe);
Photosubliste.setStyleProperty("selection", lngShowSelectionFarbe);
Photosubliste.setStyleProperty("textColor", lngShowTextColor);
Photosubliste.setStyleProperty("face", lngShowFaceFarbe);
// -- Gruppenauswahl-Scrollliste einfärben ---------------------------------Photohitliste.setStyleProperty("selectionUnfocused", lngShowSelectionUnfocusedFarbe);
Photohitliste.setStyleProperty("textSelected", lngShowTextSelectedFarbe);
Photohitliste.setStyleProperty("selection", lngShowSelectionFarbe);
Photohitliste.setStyleProperty("textColor", lngShowTextColor);
Photohitliste.setStyleProperty("face", lngShowFaceFarbe);
// -- Bild oder MC-Objekt-Auswahl-Scrollliste einfärben ---------------------PhotoSerien.setStyleProperty("selectionUnfocused", lngShowSelectionUnfocusedFarbe);
PhotoSerien.setStyleProperty("textSelected", lngShowTextSelectedFarbe);
PhotoSerien.setStyleProperty("selection", lngShowSelectionFarbe);
PhotoSerien.setStyleProperty("textColor", lngShowTextColor);
PhotoSerien.setStyleProperty("face", lngShowFaceFarbe);
// -- Bild oder MC-Objekt-Auswahl-Scrollliste einfärben ---------------------Rahmenliste.setStyleProperty("selectionUnfocused", lngShowSelectionUnfocusedFarbe);
Rahmenliste.setStyleProperty("textSelected", lngShowTextSelectedFarbe);
Rahmenliste.setStyleProperty("selection", lngShowSelectionFarbe);
Rahmenliste.setStyleProperty("textColor", lngShowTextColor);
Rahmenliste.setStyleProperty("face", lngShowFaceFarbe);
}
// -- Ermittelt Name dieses Flash-Filmes und die gleichnamige XML-Datei die dann eingelesen wird! ---//-- Funktion gibt den aktuellen Dateipfad true/ oder Dateiname (false) zurueck
function ClipName(bolNurPfad) {
//-- Entweder wird nur der Pfad oder nur der Clipname ohne Endung (.swf) zurueckgegeben
var strParentClip = (arguments.length == 1) ? "this._url": arguments[1]+"._url";
var strThisUrl = eval(strParentClip);
var intNameStart = strThisUrl.lastIndexOf("/");
var strDateiname = strThisUrl.slice(intNameStart+1);
if(bolNurPfad == true) {
//-- Hier wird nur der URL-Pfad der HTML-Datei geliefert
strDateiname = strThisUrl.slice(0, intNameStart);
} else {
//-- Filename wird ohne Endung zurueckgegeben
strDateiname = strDateiname.slice(0, strDateiname.length -4);
}
return strDateiname;
}
// -- Enthaelt den Namen der XML-Datei fuer das gerade angezeigte Menu ------------------------------var strxmlAktuell = new String();
// -- enthaelt den Namen der XML-Datei fuer das gerade angezeigte Menu ----var strxmlAktuell = ClipName(True) + "/" + ClipName(false) + ".xml";
// --- Beschriftung, ZielURL und Zielframe aus XML-Datei lesen
function suche(xmlobj, knoten, subknoten, name) {
var xmlsob = new XML();
http://deckensattl.goip.de/ddflashpage/
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
var xmltob = new XML();
var xmlwob = new XML();
var xmljob = new XML();
// --- Oberster XML-Knoten durchsuchen
for (var i = 0; i<xmlobj.childNodes.length; i++) {
// --- Erstes Kindknotenobjekt zuweisen
xmlsob = xmlobj.childNodes[i];
// --- Konfigurationsabschnitt beim durchsuchen auslesen und in globalen Variablen sichern
if (xmlsob.childNodes[i].nodeName == "fotokonfig") {
// --- Vorgabeindex aus XML-Abschnitt "fotokonfig" in startindex-Bereich auslesen und Variable zuweisen
intAktBut = xmlsob.childNodes[i].childNodes[0].firstChild.nodeValue;
}
// --- Ist Kindknoten = Argument dann diesen Knoten absuchen nach Unterknoten: subknoten
if (xmlsob.nodeName == knoten) {
for (var p = 0; p<xmlsob.childNodes.length; p++) {
// --- Ist Unterkindknoten = Argument subknoten, dann Unter-Unter-Kinknoten suchen: name
xmltob = xmlsob.childNodes[p];
//trace(xmltob.childNodes.length + " Name: " + xmltob.nodeName);
if (xmltob.nodeName == subknoten) {
for (var w = 0; w<xmltob.childNodes.length; w++) {
xmlwob = xmltob.childNodes[w];
// --- Ist Unter-Unterkindknoten = Argument name, dann Unter-Unter-Kinknoten suchen: name
//trace(xmlwob.childNodes.length+" Name: "+xmlwob.nodeName);
if (xmlwob.nodeName == name) {
varMenutitel.push(xmlwob.firstChild.nodeValue);
}
// -- Beschriftung einlesen ---------------------------------if (xmlwob.nodeName == "StartAppURL") { strStartAppURL = xmlwob.firstChild.nodeValue;
}
if (xmlwob.nodeName == "ShowStopText") { strShowStopText = xmlwob.firstChild.nodeValue;
}
if (xmlwob.nodeName == "ShowAutoVorneText") { strShowAutoVorneText = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowPeriodenInfo") { strShowAutoInfoText = xmlwob.firstChild.nodeValue;
}
if (xmlwob.nodeName == "ShowAutoHintenText") { strShowAutoHintenText = xmlwob.firstChild.nodeValue;
}
if (xmlwob.nodeName == "ShowVorneText") { strShowVorneText = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowHintenText") { strShowHintenText = xmlwob.firstChild.nodeValue;
}
if (xmlwob.nodeName == "ShowSekundenText") { strShowSekText = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowPeriodenText") { strShowPerText = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowBodenFarbe") { lngShowBodenfarbe = xmlwob.firstChild.nodeValue;
}
if (xmlwob.nodeName == "ShowSelectionUnfocusedFarbe") {
lngShowSelectionUnfocusedFarbe = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowTextSelectedFarbe") { lngShowTextSelectedFarbe = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowSelectionFarbe") { lngShowSelectionFarbe = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowTextColor") { lngShowTextColor = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowFaceFarbe") { lngShowFaceFarbe = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowPhotoClip") { strShowPhotoClip = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowPhotoHintergrundClip") { strShowPhotoHGClip = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowRahmenSkill") {
strShowSkillName = xmlwob.firstChild.nodeValue;
}
if (xmlwob.nodeName == "StartSoundURL") { strStartSoundURL = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowKnopfFarbeNormal") { strShowKnopfFarbeNormal = xmlwob.firstChild.nodeValue;
}
if (xmlwob.nodeName == "StartPhotoURL") { strStartPhotoURL = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowKnopfFarbeDarüber") { strShowKnopfFarbeDarüber = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowKnopfFarbeDruck") {
strShowKnopfFarbeDruck = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowReglerKnopfFarbe") { strShowReglerKnopfFarbe = xmlwob.firstChild.nodeValue;
}
if (xmlwob.nodeName == "ShowReglerSkalaFarbe") { strShowReglerSkalaFarbe = xmlwob.firstChild.nodeValue;
}
if (xmlwob.nodeName == "ShowSekundenTextFarbe") { strShowSekundenTextFarbe = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowDauerTextFarbe") { strShowDauerTextFarbe = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowTitelColor") { strShowTitelColor = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowAlbumRandFarbe") { strShowAlbumRandFarbe = xmlwob.firstChild.nodeValue; }
if (xmlwob.nodeName == "ShowHelpTextSoundOff") { strShowHelpTextSoundOff = xmlwob.firstChild.nodeValue; }
}
}
}
}
}
}
// --- Bei erstmaliger Initialisierung wird diese XML-Datei als Basis genommen
var xml_obj = new XML();
intAnzAll = 0;
// Film wird dann angehalten um erstmalig die Konfigurationsdaten zu laden
// XML-Datei für Buttonmenus und Ziellinks (und Frames) laden (hier Definition)
function menuLaden(strxmlAktuell) {
xml_obj.ignoreWhite = true;
xml_obj.onLoad = geladen;
xml_obj.load(strxmlAktuell);
}
// Wenn XML vollstaendig geladen ist, dann wird hier fortgefahren
function geladen(status) {
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 11 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
if (status) {
// -- Einmalige Initialisierung der Photosessionen-Objekte
varPhotoGrp = new Array(); varPhotoClp = new Array();
// -- Einmalig alle relevanten Daten aus XML-Datei laden
suche(xml_obj, "fotodaten", "fotokonfig", "PhotoSession");
iSekunde.text = strShowSekText; iDauer.text = strShowPerText;
strPHPDataCheck = strStartAppURL + "/ddphpphotoalbum.php";
PhotolisteAbholen();
AlbumEinfaerben();
if(strShowSkillName != "") {
strAlbumSkillPfad = ClipName(True) + "/" + strShowSkillName;
RahmenTypSetzen(strAlbumSkillPfad);
}
if(strShowAlbumRandFarbe != "") {
AlbumSkillsRandfarbe(strShowAlbumRandFarbe);
}
if(strStartSoundURL.length != undefined) {
trace(strStartSoundURL.length);
SoundLaden(strStartSoundURL);
SoundAbspielen();
}
ElementeEinfaerben();
RahmenListeSetzen();
}
}
//-- Liste 1 mit Hauptkatergorien belegen
function Scroll1InhalteSetzen() {
intAnzAll = varPhotoGrp.length;
trace(intAnzAll);
for (i=0; i<intAnzAll; i++) {
// -- Alle Hauptgruppen auslesen
varPhotoClp = varPhotoGrp[i];
if (Photogrundliste.getLength()>0) {
// -- Haupteinträge nun auf Vorhandensein prüfen
bolExist = false;
for (r=0; r<Photogrundliste.getLength(); r++) {
trace(Photogrundliste.getItemAt(r).label+"
"+varPhotoClp[0]);
if (Photogrundliste.getItemAt(r).label == varPhotoClp[0]) {
bolExist = true;
}
}
if (bolExist == false) {
Photogrundliste.addItem(varPhotoClp[0]);
}
} else {
Photogrundliste.addItem(varPhotoClp[0]);
}
}
// -- Sind im ersten Listenfenster Einträge vorhanden, dann den ersten selektieren
if (Photogrundliste.getLength()>0) {
Photogrundliste.setSelectedIndex(0);
}
}
//-- Unterkategorien einer Hauptebene setzen
function Scroll2InhalteSetzen() {
// -- Untergruppe auswählen
Photosubliste.removeAll();
for (r=0; r<varPhotoGrp.length; r++) {
strZ = Photogrundliste.getValue();
varPhotoClp = varPhotoGrp[r];
if (varPhotoClp[0] == strZ) {
if (Photosubliste.getLength()>0) {
// -- Haupteinträge nun auf Vorhandensein prüfen
bolExist = false;
for (w=0; w<Photosubliste.getLength(); w++) {
trace(Photosubliste.getItemAt(w).label+"
"+varPhotoClp[1]);
if (Photosubliste.getItemAt(w).label == varPhotoClp[1]) {
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 12 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
bolExist = true;
}
}
if (bolExist == false) {
Photosubliste.addItem(varPhotoClp[1]);
}
} else {
Photosubliste.addItem(varPhotoClp[1]);
}
}
}
// -- Sind im ersten Listenfenster Einträge vorhanden, dann den ersten selektieren
if (Photosubliste.getLength()>0) {
Photosubliste.setSelectedIndex(0);
}
}
function Scroll3InhalteSetzen() {
// -- Untergruppe auswählen
Photohitliste.removeAll();
for (r=0; r<varPhotoGrp.length; r++) {
strX = Photogrundliste.getValue();
strZ = Photosubliste.getValue();
varPhotoClp = varPhotoGrp[r];
if (varPhotoClp[0] == strX && varPhotoClp[1] == strZ) {
if (Photohitliste.getLength()>0) {
// -- Haupteinträge nun auf Vorhandensein prüfen
bolExist = false;
for (w=0; w<Photohitliste.getLength(); w++) {
trace(Photohitliste.getItemAt(w).label+"
"+varPhotoClp[2]);
if (Photohitliste.getItemAt(w).label == varPhotoClp[2]) {
bolExist = true;
}
}
if (bolExist == false) {
Photohitliste.addItem(varPhotoClp[2]);
}
} else {
Photohitliste.addItem(varPhotoClp[2]);
}
}
}
// -- Sind im ersten Listenfenster Einträge vorhanden, dann den ersten selektieren
if (Photohitliste.getLength()>0) {
Photohitliste.setSelectedIndex(0);
}
}
function Scroll4InhalteSetzen() {
// -- Untergruppe auswählen
PhotoSerien.removeAll();
for (r=0; r<varPhotoGrp.length; r++) {
strX = Photogrundliste.getValue();
strZ = Photosubliste.getValue();
strQ = Photohitliste.getValue();
varPhotoClp = varPhotoGrp[r];
if (varPhotoClp[0] == strX && varPhotoClp[1] == strZ && varPhotoClp[2] == strQ) {
if (PhotoSerien.getLength()>0) {
// -- Haupteinträge nun auf Vorhandensein prüfen
bolExist = false;
for (w=0; w<PhotoSerien.getLength(); w++) {
//trace(PhotoSerien.getItemAt(w).label+"
"+varPhotoClp[3]);
if (PhotoSerien.getItemAt(w).label == varPhotoClp[3]) {
bolExist = true;
}
}
if (bolExist == false) {
PhotoSerien.addItem(varPhotoClp[3]);
}
} else {
PhotoSerien.addItem(varPhotoClp[3]);
}
}
}
// -- Sind im ersten Listenfenster Einträge vorhanden, dann den ersten selektieren
if (PhotoSerien.getLength()>0) {
PhotoSerien.setSelectedIndex(0);
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 13 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
}
}
function ScrollRahmentyp() {
//-- Skill wechseln
strX = Rahmenliste.getValue();
strZielname = strShowPhotoClip.slice(0, strShowPhotoClip.length-4);
if(strX == "kein Rahmen") {
strSkillPfad = "";
} else {
strSkillPfad = ClipName(True) + "/Skills/PhotoSkill" + strX.slice(7) + ".swf";
}
//trace("Sende Skill: " + strSkillPfad);
this.objLC3 = new LocalConnection();
this.objLC3.send(strZielname, "SkillAnzeigen", strSkillPfad);
}
function RahmenTypSetzen(Rahmenname) {
strZielname = strShowPhotoClip.slice(0, strShowPhotoClip.length-4);
//trace("Sende Skill: " + Rahmenname);
this.objLC3 = new LocalConnection();
this.objLC3.send(strZielname, "SkillAnzeigen", Rahmenname);
}
function StartBildZeigen(sStartPhotoURL) {
strZielname = strShowPhotoClip.slice(0, strShowPhotoClip.length-4);
//trace("Sende Startbild: " + sStartPhotoURL);
this.objLC3 = new LocalConnection();
this.objLC3.send(strZielname, "StartbildAnzeigen", sStartPhotoURL);
}
function RahmenListeSetzen() {
// -- Untergruppe auswählen
Rahmenliste.removeAll();
Rahmenliste.addItem("kein Rahmen");
for (r=1; r<39; r++) {
if(r<10) { sRT = "0" + r; }
if(r>9) { sRT = r; }
Rahmenliste.addItem("Rahmen 0" + sRT);
}
// -- Sind im ersten Listenfenster Einträge vorhanden, dann den ersten selektieren
if (Rahmenliste.getLength()>0) {
if(strShowSkillName != "") {
//-- In der XML-Datei konfigurierten Rahmen auswählen (zB ...PhotoSkill004.swf)
//trace(strShowSkillName.substr(strShowSkillName.length-7,3));
iRahmenIndex = int(strShowSkillName.substr(strShowSkillName.length-7,3));
Rahmenliste.setSelectedIndex(iRahmenIndex);
Rahmenliste.setScrollPosition(iRahmenIndex);
} else {
//-- Kein Rahmen selektieren
Rahmenliste.setSelectedIndex(0);
}
}
}
function Scroll4InhalteZeigen() {
// -- Unterste der vier möglichen Subgruppen auswählen ---------------------------------strX = Photogrundliste.getValue();
strY = Photosubliste.getValue();
strZ = Photohitliste.getValue();
strQ = PhotoSerien.getValue();
for (r=0; r<varPhotoGrp.length; r++) {
varPhotoClp = varPhotoGrp[r];
if (varPhotoClp[0] == strX && varPhotoClp[1] == strY && varPhotoClp[2] == strZ && varPhotoClp[3] == strQ) {
strSessionText = varPhotoClp[4];
iText.text = strSessionText;
strHGClip = varPhotoClp[5];
//if(strHGClip != "") {
strPhotoHGPfad = strStartAppURL + "/photos/Hintergrund/" + strHGClip;
trace(strPhotoHGPfad);
strPhotoHGPfad = (strHGClip == "") ? "": strPhotoHGPfad;
HintergrundBild(strPhotoHGPfad);
//}
intAktBildZoom = Number(varPhotoClp[6]);
//trace("Zoom: "+intAktBildZoom);
intKorrOben = Number(varPhotoClp[7]);
intKorrLinks = Number(varPhotoClp[8]);
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 14 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
BildArrayErstellen(varPhotoClp[9],r);
PhotoSkalieren(intAktBildZoom+":"+intKorrOben+":"+intKorrLinks);
}
}
}
function IstZahl(strZahl) {
var Zahlen = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
bolExist = false;
for (i=0; i<10; i++) {
if(strZahl==Zahlen[i]) {
bolExist = true;
}
}
return bolExist;
}
function BildArrayErstellen(strLetztesPhoto) {
trace(strLetztesPhoto);
for(z=0;z<aPhotoArrayDaten.length;z++) {
sTemp = aPhotoArrayDaten[z];
idxPfad = sTemp.indexOf(";");
sPfad = sTemp.substr(0,idxPfad);
//trace(sPfad.indexOf("photos/"+strLetztesPhoto+"/"));
if(sPfad.indexOf("photos/"+strLetztesPhoto+"/") == 0) {
iFindeArrayIndex = z;
z = aPhotoArrayDaten.length;
}
}
aTemp = aPhotoArrayDaten[iFindeArrayIndex].split(";");
Diaphotos = new Array();
for(u=0;u<aTemp.length;u++) {
if((aTemp[u] != "") & (aTemp[u].indexOf("_AphotoGrpInfo.txt") == -1)) {
Diaphotos.push(strStartAppURL + "/" + aTemp[u]);
trace(strStartAppURL + "/" + aTemp[u]);
}
}
intAktBildEndNr = Diaphotos.length;
intDiaCounter = 0;
BildWechsel(Diaphotos[intDiaCounter]);
//ladebild(Diaphotos[intDiaCounter]);
}
// -- Ex-Funktion für die Bildanzeige innerhalb dieses Clips (ungebraucht!!)
function ladebild(datei) {
if (intClipNrOut == 0) {
this.createEmptyMovieClip("PhotoClip01", 5);
objMovie = eval("PhotoClip01")
objMovie.loadMovie(datei);
} else {
this.createEmptyMovieClip("PhotoClip00", 5);
objMovie = eval("PhotoClip00")
objMovie.loadMovie(datei);
}
_parent.ARahmen.swapDepths(objMovie.getDepth()+3);
_parent.Rahmenmaske.swapDepths(objMovie.getDepth()+2);
with (objMovie) {
_x = intAktBildPosX + intKorrLinks;
_y = intAktBildPosY + intKorrOben;
_xscale = (!intAktBildZoom) ? 100 : intAktBildZoom;
_yscale = (!intAktBildZoom) ? 100 : intAktBildZoom;
}
//-- Ab hier wird periodisch geprueft, ob naechstes Bild voll geladen ist
objMovie.onEnterFrame = function () {
intTotalGeladen = 1;
if(this.getBytesTotal() == this.getBytesLoaded()) {
intTotalGeladen = 0;
if (intClipNrOut == 1) {
with (eval("PhotoClip00")) {
_x = intAktBildPosX + intKorrLinks;
_y = intAktBildPosY + intKorrOben;
}
eval("PhotoClip00")._visible = true;
eval("PhotoClip01").removeMovieClip();
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 15 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
intClipNrOut = 0;
} else {
with (eval("PhotoClip01")) {
_x = intAktBildPosX + intKorrLinks;
_y = intAktBildPosY + intKorrOben;
}
eval("PhotoClip01")._visible = true;
eval("PhotoClip00").removeMovieClip();
intClipNrOut = 1;
}
//-- Nachdem Foto geladen und angezeigt wird, laufender Anzeigeinterval neu sezten
if(DiashowTimID != 0){
clearInterval(DiashowTimID);
DiashowTimID = setInterval(BilderZeigen, DiashowSpeed);
}
delete onEnterFrame;
updateAfterEvent();
}
}
};
function BilderZeigen() {
// -- Die Show in aufsteigender Reihenfolge anzeigen -------------------------------// -- Bilder erst nachladen wenn letztgeladenes auch vollständig geladen wurde -----if (intShowRichtung == 1) {
if (intDiaCounter == intAktBildEndNr-1) {
intDiaCounter = 0;
} else {
intDiaCounter = intDiaCounter+1;
}
BildWechsel(Diaphotos[intDiaCounter]);
//ladebild(Diaphotos[intDiaCounter]);
} else {
// -- Die Show in rueckwaertiger Reihenfolge anzeigen ------------------------if (intDiaCounter == 0) {
intDiaCounter = intAktBildEndNr-1;
} else {
intDiaCounter = intDiaCounter-1;
}
//ladebild(Diaphotos[intDiaCounter]);
BildWechsel(Diaphotos[intDiaCounter]);
}
trace("Wechsle zu: " + Diaphotos[intDiaCounter]);
//}
}
// --- XML-Ladeprozess starten (oben definierte Lade-Funktion nun ausfuehren)
menuLaden(strxmlAktuell);
//-- Photowechsel bei entferntem Clip auslösen
function BildWechsel(strPhotoDateiname) {
strZielname = strShowPhotoClip.slice(0, strShowPhotoClip.length-4);
trace("sende an: " + strZielname + " - " + strPhotoDateiname);
this.objLC3 = new LocalConnection();
this.objLC3.send(strZielname, "PhotoAnzeigen", strPhotoDateiname);
}
//-- Photoskalierung und Position bei entferntem Clip auslösen
function PhotoSkalieren(intPhotoSkalieren) {
strZielname = strShowPhotoClip.slice(0, strShowPhotoClip.length-4);
//trace("sende an: " + strZielname + " - " + intPhotoSkalieren);
this.objLC3 = new LocalConnection();
this.objLC3.send(strZielname, "PhotoSkalieren", intPhotoSkalieren);
}
function TestRahmen() {
//-- Skill wechseln
strZielname = "Photoalbum";
strSkillPfad = ClipName(True) + "/Skills/PhotoSkill001.swf";
this.objLC3 = new LocalConnection();
this.objLC3.send(strZielname, "SkillAnzeigen", strSkillPfad);
//-- Photo wechseln
strZielname = "Photoalbum";
strPhotoDateiname = ClipName(True) + "/photos/ww/iwindelw_12.jpg";
this.objLC3 = new LocalConnection();
this.objLC3.send(strZielname, "PhotoAnzeigen", strPhotoDateiname);
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 16 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
}
function HintergrundBild(sBildName) {
//trace("Sende PhotoHG: " + sBildName);
strZielname = strShowPhotoClip.slice(0, strShowPhotoClip.length-4);
//strPhotoHGPfad = ClipName(True) + "/" + strShowPhotoHGClip;
this.objLC3 = new LocalConnection();
this.objLC3.send(strZielname, "PhotoHintergrund", sBildName);
}
function AlbumSkillsRandfarbe(sShowAlbumRandFarbe) {
strZielname = strShowPhotoClip.slice(0, strShowPhotoClip.length-4);
//strPhotoHGPfad = ClipName(True) + "/" + strShowPhotoHGClip;
this.objLC3 = new LocalConnection();
this.objLC3.send(strZielname, "PhotoalbumRandfarbe", sShowAlbumRandFarbe);
}
function SoundLaden(sSoundName) {
sSoundPfad = ClipName(True) + "/" + sSoundName;
snd01.loadSound(sSoundPfad, false);
}
function SoundAbspielen() {
if(ToolLeiste.CheckBox01.CheckBoxKreuz._visible == false) {
snd01.start(0,1);
}
//snd01.setVolume((-1*_root.mSound._y)+140);
}
function SoundStopp() {
snd01.stop();
//snd01.setVolume((-1*_root.mSound._y)+140);
}
function SoundDeaktivieren() {
Object.flashCookie.setCookie("ddxmlphotosoundoff", "1");
}
//-- Checkbox aktiviert dann bleibt Sound deaktiviert
function CheckBoxClick(MC) {
//trace("CheckBoxClick: "+MC._name);
bolKreuzAnzeigen = (MC._name == "CheckBoxBoden") ? true : false;
ToolLeiste.CheckBox01.CheckBoxKreuz._visible = bolKreuzAnzeigen;
iSoundDeaktivieren = (ToolLeiste.CheckBox01.CheckBoxKreuz._visible == true) ? 1 : 0;
//trace("Schreibe in Cookie: "+iSoundDeaktivieren);
Object.flashCookie.setCookie("ddxmlphotosoundoff", iSoundDeaktivieren);
if(iSoundDeaktivieren == 1) { SoundStopp(); }
}
//-- Einfärbungsfunktion für MovieClips und Textfelder
function setMCColor(ColorObject, strNewColor, bolActual) {
var strCol = String(strNewColor);
if ((strCol.indexOf("X") != -1) || (strCol.indexOf("x") != -1)) {
strCol = strNewColor;
} else {
strCol = "0x"+strNewColor;
}
// -- Handelt es sich beim Einfärbobjekt um ein Textfeld > anders behandeln und einfärben
if (typeof (ColorObject) == "movieclip") {
meineFarbe = new Color(ColorObject);
meineFarbe.setRGB(strCol);
} else {
var myTF = new TextFormat();
myTF.color = strCol;
ColorObject.setNewTextFormat(myTF);
}
if ((arguments.length == 3) && (typeof (arguments[2]) == "boolean")) {
if (arguments[2] == true) {
updateAfterEvent();
}
}
}
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 17 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
//-- Ein und ausfahr-Animation des Toolfensters
ToolLeiste.onEnterFrame = function() {
if (this.starten == true) {
var adiffX = (this.aZielX-this._x)/4;
var adiffY = (this.aZielY-this._y)/4;
this._x += adiffX;
this._y += adiffY;
if ((Math.abs(adiffX)<0.1) & (Math.abs(adiffY)<0.1)) {
this.starten = false;
}
}
};
function ToolLeisteAktivieren() {
ToolLeiste.aZielX = 300;
if (ToolLeiste.starten == false) {
ToolLeiste.aZielY = (ToolLeiste.aZielY == 60) ? 180 : 60;
}
//-- Toolfenster ein/ausblenden
ToolLeiste.starten = true;
}
ToolLeiste._y = 180;
ToolLeiste.aZielY = 60;
ToolLeistenKnopf.onPress = function() {
if (Key.isDown(Key.SHIFT) == true) { SoundStopp(); }
ToolLeisteAktivieren();
};
// --- FlashCookie für die PunktZahl-Speicherung--Object.flashCookie = new Object();
Object.flashCookie.setCookie = function(name, value) {
// Lokales SharedObject erzeugen
so = SharedObject.getLocal("flashCookie");
so.data[name] = value;
so.flush();
};
Object.flashCookie.getCookie = function(name) {
// Lokales SharedObject erzeugen
so = SharedObject.getLocal("flashCookie");
return so.data[name];
};
ToolLeiste.CheckBox01.CheckBoxText.htmlText = "<TEXTFORMAT LEADING='2'><P ALIGN='RIGHT'><FONT FACE='Arial' SIZE='11' COLOR='#000000'><b>Sound deaktivieren</b></FONT></P></TEXTFORMAT>";
if(Object.flashCookie.getCookie("ddxmlphotosoundoff") == "1") {
ToolLeiste.CheckBox01.CheckBoxKreuz._visible = true;
} else {
ToolLeiste.CheckBox01.CheckBoxKreuz._visible = false;
}
/* ------------------------------------------------------------------------------------------------------// -- Liefert entweder den eigenen aktuellen SWF-Dateipfad (false/nothing) oder nur den SWF-Pfad (true)! ¦
// -- Befindet sich Clip in einem anderen Clip kann die Parentebene als Ganzzahl angegeben werden in der ¦
// -- sich der ParentClip befindet (2. Arg.) es wird dann der Parnet-Clip-URL-Name zurückgegeben.
¦
// -- so kann zB. ein Menuclip (immer dieselbe Datei > cachespeed) verschieden konfig. werden
¦
// ------------------------------------------------------------------------------------------------------*/
function SWFName(bolMitPfad, parentEbene) {
var bolPath = (typeof (bolMitPfad) != "undefined") ? bolMitPfad : false;
var bolParentExist = (typeof (_parent._x) != "undefined") ? true : false;
var pEbene = (typeof (parentEbene) != "undefined") ? parentEbene : 0;
var intNameStart = 0;
var strDateiname = new String();
var strThisUrl = new String();
var strPrntUrl = new String();
// -- Parent-URL wenn nötig ermitteln
var strThisUrl = this._url;
var strPrntUrl = this._url;
var strPEbene = "";
if (pEbene != 0) {
for (i=1; i<parentEbene; i++) {
strPEbene &= "_parent";
}
strPrntUrl = eval(strPEbene)._url;
}
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 18 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
// -- Wenn kein Parentclip vorhanden ist normale URL nehmen
var strNewURL = ((bolParentExist == true) && (pEbene>0)) ? strPrntUrl : strThisUrl;
intNameStart = strNewURL.lastIndexOf("/");
strDateiname = strNewURL.slice(intNameStart+1, strNewURL.length-4);
if (bolPath == true) {
strDateiname = strNewURL.slice(0, intNameStart);
}
return strDateiname;
}
String.prototype.searchReplace=function(find,replace) {
return (this.indexOf(find) != -1) ? this.split( find ).join( replace): this;
}
//-- Einfache Trim-Funktion
String.prototype.trim = function(ch) {
if (ch == null) ch = ' ';
for (i = 0; i < this.length && this.charAt(i) == ch; i++);
for (j = this.length - 1; j >= i && this.charAt(j) == ch; j--);
return this.substring(i, ++j);
}
function PhotolisteAbholen() {
var dumDate = new Date();
strDataFolder = strPHPDataCheck+"?Modus=0&Dummy="+dumDate.getTime();
loadVariables(strDataFolder, "ToolLeiste");
//--Daten landen in der Funktion SQLDatenLaden(..)
trace("Daten abholen: "+strDataFolder);
}
function DatenLaden(sAllePhotos, sAlleInhalte, sEnde){
//trace(sAllePhotos);
aPhotoArrayDaten = new Array();
iPhotoArrayIndex = -2;
sTempPath = SWFName(true);
aTempPath = sTempPath.split("/");
sTmpDir = aTempPath[aTempPath.length-1];
trace("aTempPath: "+aTempPath[aTempPath.length-1]);
aAllePhotos = sAllePhotos.split(";");
sVergleichDir = ""; sGruppenPhoto = "";
for(u=0;u<aAllePhotos.length;u++) {
sPath = aAllePhotos[u];
sTemp = sPath.searchReplace(chr(92), chr(47));
iStartPosDir = sTemp.indexOf("/"+sTmpDir+"/");
pTemp = sTemp.substr(iStartPosDir+2+sTmpDir.length, sTemp.length);
aTempPath2 = pTemp.split("/");
sTempFile2 = aTempPath2[aTempPath2.length-1];
sTempPath2 = pTemp.substr(0,pTemp.indexOf(sTempFile2));
if(sVergleichDir != sTempPath2) {
iPhotoArrayIndex++;
if(iPhotoArrayIndex > -1) {
aPhotoArrayDaten.push(sGruppenPhoto);
sGruppenPhoto = "";
}
sGruppenPhoto = sGruppenPhoto + pTemp + ";"
sVergleichDir = sTempPath2;
} else {
sGruppenPhoto = sGruppenPhoto + pTemp + ";"
}
}
//trace(aPhotoArrayDaten.length);
//-- Nun alle CFG-Textinhalte einlesen
//trace(sAlleInhalte);
//FileNr1_Pfad=Pfad:ch;FileNr1_Zle1=Thema:Kunst;FileNr1_Zle2=Haupt:Lustig;FileNr1_Zle3=Gebiet:Gemischtes;FileNr1_Zle4=Gruppe:Windelwinni;FileNr1_Zle5=Titel:Windelwinni
Ausdrücke;FileNr1_Zle6=PhotoHGClip:AlbumHGPhoto.jpg;FileNr1_Zle7=Zoom:110;FileNr1_Zle8=Oben:15;FileNr1_Zle9=Links:50;
aAlleInhalte = sAlleInhalte.split("£");
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 19 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
varPhotoGrp = new Array();
for(t=0;t<aAlleInhalte.length;t++) {
varPhotoClp = new Array();
sEinCFGInhalt = aAlleInhalte[t];
trace(sEinCFGInhalt);
aEinCFGInhalt = sEinCFGInhalt.split(";");
sTemp
sTemp
sTemp
sTemp
sTemp
sTemp
sTemp
sTemp
sTemp
sTemp
=
=
=
=
=
=
=
=
=
=
aEinCFGInhalt[1];
aEinCFGInhalt[2];
aEinCFGInhalt[3];
aEinCFGInhalt[4];
aEinCFGInhalt[5];
aEinCFGInhalt[6];
aEinCFGInhalt[7];
aEinCFGInhalt[8];
aEinCFGInhalt[9];
aEinCFGInhalt[0];
aTemp
aTemp
aTemp
aTemp
aTemp
aTemp
aTemp
aTemp
aTemp
aTemp
=
=
=
=
=
=
=
=
=
=
sTemp.split(":");
sTemp.split(":");
sTemp.split(":");
sTemp.split(":");
sTemp.split(":");
sTemp.split(":");
sTemp.split(":");
sTemp.split(":");
sTemp.split(":");
sTemp.split(":");
varPhotoClp.push(aTemp[1]);
varPhotoClp.push(aTemp[1]);
varPhotoClp.push(aTemp[1]);
varPhotoClp.push(aTemp[1]);
varPhotoClp.push(aTemp[1]);
varPhotoClp.push(aTemp[1]);
varPhotoClp.push(aTemp[1]);
varPhotoClp.push(aTemp[1]);
varPhotoClp.push(aTemp[1]);
varPhotoClp.push(aTemp[1]);
varPhotoGrp.push(varPhotoClp);
//trace("aPhotoArray.length: "+aPhotoArrayDaten.length);
}
trace("varPhotoGrp.length: "+varPhotoGrp.length);
//for(u=0;u<aPhotoArrayInfos.length;u++) {
// trace(aPhotoArrayInfos[u]);
//}
Scroll1InhalteSetzen();
if(strStartPhotoURL != "") {
sStartPhotoURL = strStartAppURL + "/" + strStartPhotoURL;
trace("Startphoto: "+sStartPhotoURL);
StartBildZeigen(sStartPhotoURL);
}
}
// --- Film nun stoppen. Erst wenn Album-CFG-XML geladen geht es weiter
stop();
Hier noch der kurze ActionScript-Coder des Anzeige-MovieClips (ddxmlphotoalbum_600w400h.swf)
/* --------------------------------------------------------------------------------------------------Autor: Daniel Deckensattl
Version: 1.20
Erstellt: 04.02.12
Update: 07.07.15
Dieser Flash-MovieClip stellt Photos dar, welche ihm per LocalConnection-Schnittstelle zugesandt
werden. Der Verbindungsname ist der Clipname ohne die Endung .swf. Die beiden LC-Funktionen lauten:
objLC2.PhotoAnzeigen = function(strPhotoFile) { .. }
objLC2.SkillAnzeigen = function(strSkillDateiname) { .. }
Wechselt Photo aus und zeigt dieses an
Hier wird Skillrahmen ersetzt
Der Hauptanzeige-Clip ist Photonavigation.swf der per XML-Datei die Photoshow steuert und die
nötigen Photo-Dateipfäder und Namen dann zustellt wenn es von nöten ist.
--------------------------------------------------------------------------------------------------*/
// -- Aktiviert deutsche Umlautzeichen bei Import der TXT/HTML-Dateien ------------------------------System.useCodepage = true;
// -- Jegliche Unter-MovieClips richten sich an die hier festgehaltenen Bühnengrössen-Angaben -------var lngStageWidth = Stage.width+4; var lngStageHeight = Stage.height+4;
var
var
var
var
var
var
objSkill
strbuttonSkillAbdeckung
lngWaitCounter
strPhotoDateiname
lngWaitPhotoCounter
intPhotoSkalieren
=
=
=
=
=
=
new Object();
"143D05";
0;
"";
0;
100;
//-- Funktion gibt den aktuellen Dateipfad true/ oder Dateiname (false) zurueck
function ClipName(bolNurPfad) {
//-- Entweder wird nur der Pfad oder nur der Clipname ohne Endung (.swf) zurueckgegeben
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 20 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
var
var
var
var
Autor: Daniel Deckensattl
strParentClip = (arguments.length == 1) ? "this._url": arguments[1]+"._url";
strThisUrl = eval(strParentClip);
intNameStart = strThisUrl.lastIndexOf("/");
strDateiname = strThisUrl.slice(intNameStart+1);
if(bolNurPfad == true) {
//-- Hier wird nur der URL-Pfad der HTML-Datei geliefert
strDateiname = strThisUrl.slice(0, intNameStart);
} else {
//-- Filename wird ohne Endung zurueckgegeben
strDateiname = strDateiname.slice(0, strDateiname.length -4);
}
return strDateiname;
}
// -- Erst wenn Rahmen-Clip vollständig geladen ist, dann wird mit dem Bühnenaufbau fortgefahren
function WarteBisPhotoGeladen() {
if(intPhoto1Aktiv == 1) {
if (objPhoto1.getBytesLoaded()>1 && objPhoto1.getBytesLoaded()>=objPhoto1.getBytesTotal()) {
clearInterval(lngWaitPhotoCounter);
lngWaitPhotoCounter = 0;
updateAfterEvent();
}
} else {
if (objPhoto2.getBytesLoaded()>1 && objPhoto2.getBytesLoaded()>=objPhoto2.getBytesTotal()) {
clearInterval(lngWaitPhotoCounter);
lngWaitPhotoCounter = 0;
updateAfterEvent();
}
}
}
// -- Von Aussen ist mit dieser Funktion ein Nachladen eines anderen Bildes möglich --------------function PhotoLaden(strPhotoDateiname) {
// -- Laden des Photobildes einleiten
if(intPhoto1Aktiv == 0) {
intPhoto1Aktiv = 1;
objPhoto1.loadMovie(strPhotoDateiname);
} else {
intPhoto1Aktiv = 0;
objPhoto2.loadMovie(strPhotoDateiname);
}
// -- In Timer-Schlaufe warten bis Photo1 oder Photo2 voll geladen sind
lngWaitPhotoCounter = setInterval(WarteBisPhotoGeladen, 70);
}
// -- Von Aussen ist mit dieser Funktion ein Nachladen eines anderen Skills möglich --------------function SkillLaden(strSkillDateiname) {
// -- In einen leeren neu erstellten MC auf Ebene 90 den Skill-Clip hinzuladen (+alten entfernen)
removeMovieClip(objSkill);
objSkill
= undefined;
if(strSkillDateiname != "") {
objSkill
= this.createEmptyMovieClip("objSkillButton", 90);
objSkill._x = 0;
objSkill._y = 0;
// -- Laden des dynamischen Rahmenclip einleiten
objSkill.loadMovie(strSkillDateiname);
}
}
// --- Empfänger LocalConnection permanent definieren -----------------------------------------objLC2 = new LocalConnection();
objLC2.PhotoHintergrund = function(strPhotoHGFile) {
trace("Photohintergrund im AusgabeClip: " + strPhotoHGFile);
HG.loadMovie(strPhotoHGFile,75);
HG._x = 0;
HG._y = 0;
};
objLC2.PhotoalbumRandfarbe = function(strShowAlbumRandFarbe) {
trace("Photorandfarbe im AusgabeClip: " + strShowAlbumRandFarbe);
strbuttonSkillAbdeckung = strShowAlbumRandFarbe;
};
objLC2.PhotoAnzeigen = function(strPhotoFile) {
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 21 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
trace("Photo im AusgabeClip: " + strPhotoFile);
strPhotoDateiname = strPhotoFile;
PhotoLaden(strPhotoDateiname);
};
objLC2.StartbildAnzeigen = function(strPhotoFile) {
trace("Photo im AusgabeClip: " + strPhotoFile);
strPhotoDateiname = strPhotoFile;
PhotoLaden(strPhotoFile);
};
// -- Drei Einstellungen werden im Func.-Arg. uebergeben
objLC2.PhotoSkalieren = function(SkalierWert) {
trace("Photocontainer im AusgabeClip skalieren: " + SkalierWert);
sWert = SkalierWert.split(":");
intPhotoSkalieren = sWert[0];
objPhoto1._xscale = sWert[0];
objPhoto1._yscale = sWert[0];
objPhoto2._xscale = sWert[0];
objPhoto2._yscale = sWert[0];
// -- Oben/Links-Position zuweisen
intPhotoTop = sWert[1];
intPhotoLeft = sWert[2];
objPhoto1._x = intPhotoLeft;
objPhoto1._y = intPhotoTop;
objPhoto2._x = intPhotoLeft;
objPhoto2._y = intPhotoTop;
updateAfterEvent();
};
objLC2.SkillAnzeigen = function(strSkillDateiname) {
trace("Skill im AusgabeClip: " + strSkillDateiname);
SkillLaden(strSkillDateiname);
};
var strVerbindungsName = ClipName(False);
// -- Sonderzeichen im Dateinamen mag Flash nicht (hier _ und - abhandeln --------------------------if(strVerbindungsName.indexOf('%') != -1) {
arrConSpec = strVerbindungsName.split("");
trace("Spezialzeichen an Pos.: " + strVerbindungsName.indexOf('%') + " in " + strVerbindungsName);
sVN = "";
for(i=0;i<arrConSpec.length;i++) {
sEnd = "";
if(arrConSpec[i] == "%") {
sVE = "_";
if(arrConSpec[i+1] == "2") { sVE = "-"; }
sVN = sVN + sVE; i = i + 2;
} else {
sVN = sVN + arrConSpec[i];
}
}
strVerbindungsName = sVN;
trace("Spezialzeichen: " + strVerbindungsName);
}
objLC2.connect(strVerbindungsName);
trace("Verbindungsname: " + strVerbindungsName);
// -- Photocontainer - MovieClip einmalig erstellen
//objPhotoX = this.createEmptyMovieClip("objPhotoClip", 75);
objPhoto1 = this.createEmptyMovieClip("objPhotoClip", 80);
objPhoto2 = this.createEmptyMovieClip("objPhotoClip", 85);
objPhoto1._x = 0;
objPhoto1._y = 0;
objPhoto2._x = 0;
objPhoto2._y = 0;
function TestBild() {
SkillLaden(ClipName(True) + "/Skills/PhotoSkill018.swf");
PhotoLaden(strPhotoDateiname);
}
intPhoto1Aktiv = 1;
stop();
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 22 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
Und der Code eines der Skill-Movieclips (Rahmen)
/* ------------------------------------------------------------------------------------------------------Autor: Daniel Deckensattl
Erstellt: 03.03.04
Update: 03.03.04
Version: 1.00
Dieser vorliegende Rahmen wird aus Einzelstücken zusammengesetzt, sodass die Grösse der Main-ButtonBühne betrifft, bzw. die Variabel [_parent._parent._parent.lngStageHeight] ausgelesen wird! Die Elemente positionieren sich beim Initialisieren selbst und passen sich der Grösse automatisch an!
*/
//-- Dubliziert den rechten Randrahmen und verbreitert ObenUnten-Linien
(_parent._parent.lngStageWidth == undefined) ? lngWidth = Stage.width+8: lngWidth = _parent._parent.lngStageWidth+8;
(_parent._parent.lngStageHeight == undefined) ? lngHeight = Stage.height+8: lngHeight = _parent._parent.lngStageHeight+8;
var objSkillBoden = new MovieClip();
//-- Abstand in Pixel von Unten, bei schmalen Rahmen klein (2) und dicken Rahmen grösser (6) ------------var lngUKorr = 9;
//-- Pro Skill können wir die Endränder des zu generierenden Farbverlaufrechteckes beeinflussen ---------_parent.lngFarbrandLinks = 1;
_parent.lngFarbrandRechts = 1;
_parent.lngFarbrandOben = 1;
_parent.lngFarbrandUnten = 1;
// -- Abdeckung auf die Bühne bringen -------------------------------------------------------------------this.attachMovie("Abdeckung", "AbdeckungOben", 2);
this.attachMovie("Abdeckung", "AbdeckungRechts", 3);
this.attachMovie("Abdeckung", "AbdeckungLinks", 4);
this.attachMovie("Abdeckung", "AbdeckungUnten", 5);
// -- Falls im XML-Tag ein Farbwert angegeben wurde, diesen verwenden. Im Fall einer SWF-Datei-Angabe wird
// -- dieser Clip als Hintergrund den Abdeckungs-Clips zugewiesen, bzw. diese ersetzt (sonst Interne MC's)
Abdeckungsfarbe = _parent.strbuttonSkillAbdeckung;
trace("Abdeckungsfarbe: " + AbdeckungsFarbe);
if (AbdeckungsFarbe != undefined) {
if (AbdeckungsFarbe != "") {
// -- Bei keinem Punkt-Vorkommen wird die Farbe herausgelesen und den Clips zugewiesen ----------if (AbdeckungsFarbe.lastIndexOf(".") == -1) {
trace("baue Abdeckung an den Rändern mit externen Farben auf, Farbblock als MC in Biblio!: "+_parent.strbuttonSkillAbdeckung);
hexWert = parseInt(AbdeckungsFarbe, 16);
objCol1 = new Color(AbdeckungOben);
objCol1.setRGB(hexWert);
objCol1 = new Color(AbdeckungUnten);
objCol1.setRGB(hexWert);
objCol1 = new Color(AbdeckungRechts);
objCol1.setRGB(hexWert);
objCol1 = new Color(AbdeckungLinks);
objCol1.setRGB(hexWert);
} else {
// -- Bei einem Punkt-Vorkommen wird die Flash-Datei in die Clips geladen ----------------------AbdeckungOben.loadMovie(AbdeckungsFarbe, 2);
AbdeckungRechts.loadMovie(AbdeckungsFarbe, 3);
AbdeckungLinks.loadMovie(AbdeckungsFarbe, 4);
AbdeckungUnten.loadMovie(AbdeckungsFarbe, 5);
trace(AbdeckungsFarbe+" wurde geladen");
AbdeckungsFarbe = "swf";
}
}
} else {
AbdeckungsFarbe = "";
}
// -- Sind Abdeckungs-Clip angepasst oder eingeladen werden Grösse und Position angepasst ---------------AbdeckungOben._width = lngWidth;
AbdeckungOben._height = 10;
(AbdeckungsFarbe == "swf") ? lngKorr = (-1*(AbdeckungOben._width/2)): lngKorr = -1;
AbdeckungOben._x = (lngWidth/2) + lngKorr;
(AbdeckungsFarbe == "swf") ? lngPos = -8: lngPos = -2;
AbdeckungOben._y = lngPos;
AbdeckungUnten._width = lngWidth;
AbdeckungUnten._height = 10;
(AbdeckungsFarbe == "swf") ? lngKorr = (-1*(AbdeckungUnten._width/2)): lngKorr = -3;
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 23 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
AbdeckungUnten._x = (lngWidth/2) + lngKorr;
(AbdeckungsFarbe == "swf") ? lngPos = -11.5: lngPos = -6.5;
AbdeckungUnten._y = lngHeight + lngPos;
AbdeckungRechts._width = 10;
AbdeckungRechts._height = lngHeight;
(AbdeckungsFarbe == "swf") ? lngPos = -8.4: lngPos = -3;
AbdeckungRechts._x = lngWidth+lngPos;
(AbdeckungsFarbe == "swf") ? lngKorr = (-1*(AbdeckungRechts._height/2)): lngKorr = -1;
AbdeckungRechts._y = (lngHeight/2) + lngKorr;
AbdeckungLinks._width = 14;
AbdeckungLinks._height = lngHeight;
(AbdeckungsFarbe == "swf") ? lngPos = -10.7: lngPos = -3;
AbdeckungLinks._x = lngPos;
(AbdeckungsFarbe == "swf") ? lngKorr = (-1*(AbdeckungLinks._height/2)): lngKorr = 0;
AbdeckungLinks._y = (lngHeight/2) -2 + lngKorr;
//-- Zuerst alle Rahmenelemente Positionieren, egal wo das sie auf der Bühne liegen ---------------------this["EckeOL"]._x = 1;
this["EckeUL"]._x = 1;
this["LinieLinks"]._x = 1.2;
//-- Jetzt fehlende Elemente dublizieren, zuerst die linke obere Ecke nach rechts spiegeln --------------duplicateMovieClip("EckeOL", "EckeOR", 20);
this["EckeOR"]._xscale =-100;
this["EckeOR"]._x = lngWidth - this["EckeOL"]._width+8;
this["EckeOR"]._y = this["EckeOL"]._y;
//-- dann die Ecke unten linke nach rechts spiegeln -----------------------------------------------------this["EckeUL"]._y = lngHeight - this["EckeUL"]._height-lngUKorr;
duplicateMovieClip("EckeUL", "EckeUR", 21);
this["EckeUR"]._xscale =-100;
this["EckeUR"]._x = lngWidth - this["EckeOL"]._width+8;
this["EckeUR"]._y = this["EckeUR"]._y;
//-- Linienlänge der oberen und unteren Rahmenlinien und die _x-Lage bestimmen --------------------------LinieOben._width = lngWidth - this["EckeOL"]._width-this["EckeOR"]._width-2;
LinieUnten._width = lngWidth - this["EckeUL"]._width-this["EckeUR"]._width-1;
LinieOben._x = (lngWidth/2);
LinieUnten._x = (lngWidth/2);
LinieOben._y = this["EckeOL"]._y;
//-- dann die fehlenden rechten vertikalen Linien spiegeln ----------------------------------------------duplicateMovieClip("LinieLinks", "LinieRechts", 15);
this["LinieRechts"]._x = this["EckeOL"]._width + this["LinieOben"]._width+9.8;
this["LinieLinks"]._height = (lngHeight-(2*this["EckeOL"]._height))+(1.5*(lngHeight/26));
this["LinieRechts"]._height = this["LinieLinks"]._height;
this["LinieRechts"]._y = (lngHeight/2)-4;
this["LinieLinks"]._y = (lngHeight/2)-4;
this["LinieRechts"]._xscale =-100;
//-- Linie Unten noch an unteren Clipbereich bringen ----------------------------------------------------LinieUnten._y = lngHeight-LinieUnten._height-lngUKorr;
this["EckeOL"].swapDepths(22);
this["EckeUL"].swapDepths(23);
this["LinieLinks"].swapDepths(16);
this["LinieOben"].swapDepths(17);
this["LinieUnten"].swapDepths(189);
//-- Zuguterletzt den Hintergrund nun einfärben und den Screnn aktualisieren (Refresh) ------------------_parent.FarbBodenImportieren();
stop();
Die PHP-Datei für die Photo-Clip-Daten (ddphpphotoalbum.php):
<?php
/*
Autor: Daniel Deckensattl
Erstellt: 09.07.2015
Update: 11.07.2015
V.- 1.20
PHP-Script für das Anzeigen der PHP-Photoalbum-Bilder. Der $AppPfad muss der eigenen
Umgebung angepasst werden!
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 24 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
*/
$strphpphotoModus
= listvarsPG('Modus',"GET");
$AppPfad
= 'C:\xampp\htdocs\ddflashpage\files\Flash\ddphpphoto';
//-- Listet alle Photodateien in Verzeichnissen auf
function LeseVerzeichnisse($dir) {
$array = array();
$d = dir($dir);
while (false !== ($entry = $d->read())) {
if($entry!='.' && $entry!='..') {
$array[] = $entry;
}
}
$d->close();
return $array;
}
/**
* Get an array that represents directory tree
* @param string $directory
Directory path
* @param bool $recursive
Include sub directories
* @param bool $listDirs
Include directories on listing
* @param bool $listFiles
Include files on listing
* @param regex $exclude
Exclude paths that matches this regex
*/
function directoryToArray($directory, $recursive = true, $listDirs = false, $listFiles = true, $exclude = '') {
$arrayItems = array();
$skipByExclude = false;
$handle = opendir($directory);
if ($handle) {
while (false !== ($file = readdir($handle))) {
preg_match("/(^(([\.]){1,2})$|(\.(svn|git|md))|(Thumbs\.db|\.DS_STORE))$/iu", $file, $skip);
if($exclude){
preg_match($exclude, $file, $skipByExclude);
}
if (!$skip && !$skipByExclude) {
if (is_dir($directory. DIRECTORY_SEPARATOR . $file)) {
if($recursive) {
$arrayItems = array_merge($arrayItems, directoryToArray($directory. DIRECTORY_SEPARATOR . $file, $recursive, $listDirs, $listFiles, $exclude));
}
if($listDirs){
$file = $directory . DIRECTORY_SEPARATOR . $file;
$arrayItems[] = $file;
}
} else {
if($listFiles){
$file = $directory . DIRECTORY_SEPARATOR . $file;
$arrayItems[] = $file;
}
}
}
}
closedir($handle);
}
return $arrayItems;
}
function LiesVerzeichnisse($sVerzeichnis) {
$DirArray = directoryToArray($sVerzeichnis, true);
return $DirArray;
}
function listvarsPOST($str) {
$res = "";
$arr=$_POST;
if (isset($_POST)) {
reset($_POST);
foreach($_POST as $element=>$wert) {
if(strtolower($str)==strtolower($element)) {
$res = $wert;
}
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 25 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
}
}
return $res;
}
function listvarsGET($str) {
$res = "";
$arr=$_GET;
if (isset($_GET)) {
reset($_GET);
foreach($_GET as $element=>$wert) {
if(strtolower($str)==strtolower($element)) {
$res = $wert;
}
}
}
return $res;
}
function listvarsPG($strVal,$POSTGET) {
if($POSTGET != "GET") {
$strRes = listvarsPOST($strVal);
} else {
$strRes = listvarsGET($strVal);
}
return $strRes;
}
//-- Einlese-Funktion einer txt-Datei
function LeseVonDatei($File) {
$FileInhalt = array();
$FileInhalt = file($File);
return $FileInhalt;
}
//-- Schreibt in die gewünschte Datei einen Inhalt
function SchreibeInDatei($File, $Content) {
if (is_writable($File)) {
//
//
//
if
Wir öffnen $filename im "Schreib" - Modus.
Der Dateizeiger befindet sich am Ende der Datei, und
dort wird $sInTextSchreiben später mit fwrite() geschrieben.
(!$handle = fopen($File, "w+")) {
print "Kann die Datei $filename nicht öffnen";
exit;
}
// Schreibe $Content in die geöffnete Datei.
if (!fwrite($handle, $Content)) {
print "Kann in die Datei $filename nicht schreiben";
exit;
}
fclose($handle);
} else {
echo "Die Datei $File ist nicht schreibbar";
}
}
//-- Im Modus 0 werden alle Photodateien im Unterordner photos aufgelistet
if($strphpphotoModus == 0) {
$sPhotoPfad = $AppPfad . "\\photos";
$PhotoArray = LiesVerzeichnisse($sPhotoPfad);
echo "&AllePhotos=";
for($i=0;$i<count($PhotoArray);$i++) {
$sTemp = $PhotoArray[$i];
if(strpos($sTemp,"photos\\Hintergrund\\") == false) {
echo $sTemp . ";";
}
}
echo "&Inhalte=";
//-- Jetzt die Inhalte der Konfigurationsdateien übergeben
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 26 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
$NurVerzeichnisse = LeseVerzeichnisse($sPhotoPfad);
for($i=0;$i<count($NurVerzeichnisse);$i++) {
$photoCFGPath = $AppPfad . "\\photos\\" . $NurVerzeichnisse[$i] . "\\_AphotoGrpInfo.txt";
$handle = @fopen($photoCFGPath, "r");
if ($handle) {
if($photoCFGPath != $AppPfad . "\\photos\\Hintergrund" . "\\_AphotoGrpInfo.txt") {
$k = 0;
echo "FileNr". ($i+1) . "_Pfad=Pfad:" . $NurVerzeichnisse[$i] . ";";
while (!feof($handle)) {
$k++; $sTemp = fgets($handle, 1024);
echo "FileNr". ($i+1) . "_Zle". $k . "=" . trim($sTemp) . ";";
}
echo "£";
fclose($handle);
}
} else {
if($photoCFGPath != $AppPfad . "\\photos\\Hintergrund" . "\\_AphotoGrpInfo.txt") {
//-- Datei fehlt, daher erstellen
echo "CFGPfad=" . $photoCFGPath . " fehlt!<br />";
$Lines = "Thema:" . "\r\n";
$Lines = $Lines . "Haupt:" . "\r\n";
$Lines = $Lines . "Gebiet:" . "\r\n";
$Lines = $Lines . "Gruppe:" . "\r\n";
$Lines = $Lines . "Titel:" . "\r\n";
$Lines = $Lines . "PhotoHGClip:" . "\r\n";
$Lines = $Lines . "Zoom:100" . "\r\n";
$Lines = $Lines . "Oben:0" . "\r\n";
$Lines = $Lines . "Links:0" . "\r\n";
$Lines = $Lines . "Rahmen:";
//-- schreibe neue Datei mit leerem Dateninhalt. Nur Bezeichner!
$fp = fopen($photoCFGPath, "a+");
fputs($fp,$Lines);
fclose($fp);
}
}
}
echo "&Ende=";
}
?>
Die PHP-Datei für die Photo-Clip-Datenverwaltung (ddphpphotoalbummanager.php):
<?php
session_start();
/*
Autor: Daniel Deckensattl
Erstellt: 09.07.2015
Update: 10.07.2015
V.- 1.20
PHP-Script für das Verwalten der Konfigurationsdateien der Photogruppen. Beim Einrichten
des PHP-Photoalbums muss ein Passwort generiert werden und hier in diesem Script unter
$LoginPasswort = .... eingetragen werden (Standartpasswort für erstmalige Nutzung ist "abc").
Das PHP in die Konfigdateien schreiben kann ist es wichtig den $AppPfad anzupassen!!!
*/
$LoginName
$LoginPasswort
$AppPfad
= "Dani";
= "a9993e364706816aba3e25717850c26c9cd0d89d";
= 'C:\xampp\htdocs\ddflashpage\files\Flash\ddphpphoto';
$strAction
$strDirLstIdx
= listvarsPG('MyAction',"POST");
= listvarsPG('MyDirLstIdx',"POST");
//-- Konfigurationsspeicherung
$strSVerzeichnis
= listvarsPOST('PhotoOrdner');
$strSHauptkategorie = listvarsPOST('KonfZ1');
$strSUnterkategorie = listvarsPOST('KonfZ2');
$strSGruppenname
= listvarsPOST('KonfZ3');
$strSThemenname
= listvarsPOST('KonfZ4');
$strSTitel
= listvarsPOST('KonfZ5');
$strSHintergrundbild = listvarsPOST('KonfZ6');
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 27 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
$strSZoom
$strSOben
$strLinks
$strRahmen
=
=
=
=
$strMLoginName
= listvarsPG('Login',"POST");
$strPasswort
= listvarsPG('LoginPasswort',"POST");
$strQSTRING
$strIPNumber
$strPHPSelf
= $_SERVER['QUERY_STRING'];
= $_SERVER['REMOTE_ADDR'];
= $_SERVER['PHP_SELF'];
Autor: Daniel Deckensattl
listvarsPOST('KonfZ7');
listvarsPOST('KonfZ8');
listvarsPOST('KonfZ9');
listvarsPOST('KonfZ10');
//-- Listet alle Photodateien-Verzeichnisse auf
function LeseVerzeichnisse($dir) {
$array = array();
$d = dir($dir);
while (false !== ($entry = $d->read())) {
if($entry!='.' && $entry!='..') {
$array[] = $entry;
}
}
$d->close();
return $array;
}
/**
* Get an array that represents directory tree
* @param string $directory
Directory path
* @param bool $recursive
Include sub directories
* @param bool $listDirs
Include directories on listing
* @param bool $listFiles
Include files on listing
* @param regex $exclude
Exclude paths that matches this regex
*/
function directoryToArray($directory, $recursive = true, $listDirs = false, $listFiles = true, $exclude = '') {
$arrayItems = array();
$skipByExclude = false;
$handle = opendir($directory);
if ($handle) {
while (false !== ($file = readdir($handle))) {
preg_match("/(^(([\.]){1,2})$|(\.(svn|git|md))|(Thumbs\.db|\.DS_STORE))$/iu", $file, $skip);
if($exclude){
preg_match($exclude, $file, $skipByExclude);
}
if (!$skip && !$skipByExclude) {
if (is_dir($directory. DIRECTORY_SEPARATOR . $file)) {
if($recursive) {
$arrayItems = array_merge($arrayItems, directoryToArray($directory. DIRECTORY_SEPARATOR . $file, $recursive, $listDirs, $listFiles, $exclude));
}
if($listDirs){
$file = $directory . DIRECTORY_SEPARATOR . $file;
$arrayItems[] = $file;
}
} else {
if($listFiles){
$file = $directory . DIRECTORY_SEPARATOR . $file;
$arrayItems[] = $file;
}
}
}
}
closedir($handle);
}
return $arrayItems;
}
function LiesVerzeichnisse($sVerzeichnis) {
$DirArray = directoryToArray($sVerzeichnis, true);
return $DirArray;
}
function listvarsPOST($str) {
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 28 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
$res = "";
$arr=$_POST;
if (isset($_POST)) {
reset($_POST);
foreach($_POST as $element=>$wert) {
if(strtolower($str)==strtolower($element)) {
$res = $wert;
}
}
}
return $res;
}
function listvarsGET($str) {
$res = "";
$arr=$_GET;
if (isset($_GET)) {
reset($_GET);
foreach($_GET as $element=>$wert) {
if(strtolower($str)==strtolower($element)) {
$res = $wert;
}
}
}
return $res;
}
function listvarsPG($strVal,$POSTGET) {
if($POSTGET != "GET") {
$strRes = listvarsPOST($strVal);
} else {
$strRes = listvarsGET($strVal);
}
return $strRes;
}
//-- Einlese-Funktion einer txt-Datei
function LeseVonDatei($File) {
$FileInhalt = array();
$FileInhalt = file($File);
return $FileInhalt;
}
//-- Schreibt in die gewünschte Datei einen Inhalt
function SchreibeInDatei($File, $Content) {
if (is_writable($File)) {
//
//
//
if
Wir öffnen $filename im "Schreib" - Modus.
Der Dateizeiger befindet sich am Ende der Datei, und
dort wird $sInTextSchreiben später mit fwrite() geschrieben.
(!$handle = fopen($File, "w+")) {
print "Kann die Datei $filename nicht öffnen";
exit;
}
// Schreibe $Content in die geöffnete Datei.
if (!fwrite($handle, $Content)) {
print "Kann in die Datei $filename nicht schreiben";
exit;
}
fclose($handle);
} else {
echo "Die Datei $File ist nicht schreibbar";
}
}
if($strAction == "Logout") {
$_SESSION['Login'] = 0;
}
//-- Sichere Photogruppen-Konfigdatei
if($strAction == "Save") {
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 29 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
$photoCFGPath = $AppPfad . "\\photos\\" . $strSVerzeichnis . "\\_AphotoGrpInfo.txt";
unlink($photoCFGPath);
$Lines = "Thema:" . $strSHauptkategorie . "\r\n";
$Lines = $Lines . "Haupt:" . $strSUnterkategorie . "\r\n";
$Lines = $Lines . "Gebiet:" .$strSGruppenname . "\r\n";
$Lines = $Lines . "Gruppe:" . $strSThemenname . "\r\n";
$Lines = $Lines . "Titel:" . $strSTitel . "\r\n";
$Lines = $Lines . "PhotoHGClip:" . $strSHintergrundbild . "\r\n";
$Lines = $Lines . "Zoom:" . $strSZoom . "\r\n";
$Lines = $Lines . "Oben:" . $strSOben . "\r\n";
$Lines = $Lines . "Links:" . $strLinks . "\r\n";
$Lines = $Lines . "Rahmen:" . $strRahmen;
//-- schreibe neue Datei mit leerem Dateninhalt. Nur Bezeichner!
$fp = fopen($photoCFGPath, "a+");
fputs($fp,$Lines);
fclose($fp);
}
?>
<html>
<head>
<title>PHP-Photoalbum</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="content-language" content="German">
<meta http-equiv="audience" content="General">
<meta name="author" content="Daniel Deckensattl">
<meta name="copyright" content="Daniel Deckensattl">
<meta name="subject" content="PHPFotoalbum">
<meta name="description" content="PHPFotoalbum-Manager">
<meta name="keywords" content="Flash Website 2015">
<meta name="robots" content="INDEX,FOLLOW">
<meta content="15 days" name=revisit-after>
<script language="JavaScript" type="text/JavaScript">
<!-function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
</head>
<script language="JavaScript" src="phpphotoalbum.js" type="text/JavaScript"></script>
<?php
echo '<script language="JavaScript">';
echo ' var SelfPath = "' . $strPHPSelf . '";';
echo ' function getCheckString(pass) {' . chr(10);
echo "
var sP = hex_sha1(pass);" . chr(10);
echo "
return sP;" . chr(10);
echo ' }' . chr(10);
echo '</script>' . chr(10);
?>
<script language="JavaScript">
function sendData() {
//-- Alle Pflichtfelder pruefen
var checked = true;
var sDefaultFields = new Array("Login", "LoginPasswort");
var sResult = '';
for(i=0;i<sDefaultFields.length;i++) {
if(document.getElementById(sDefaultFields[i]).value == "") {
sResult = sResult + "\n" + sDefaultFields[i];
}
}
//-- Bei fehlenden Pflichteingabe-Feldwerten werden Bezeichner aufgefordert anzugeben
if(sResult != "") {
sResult = "Folgende Felder müssen angegeben werden:\n" + sResult;
alert(sResult);
checked = false;
} else {
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 30 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
//-- Vor einem Submit die aktuelle Scrollposition sichern
document.getElementById("LoginPasswort").value = getCheckString(document.getElementById("LoginPasswort").value);
document.Anmeldung.method="post";
document.Anmeldung.action=SelfPath;
document.Anmeldung.submit();
}
return checked;
}
</script>
<body bgcolor="#FFFFFF" text="#000000" link="#0033FF" vlink="#0099FF" alink="#009933" leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
<?php
if((($strPasswort == $LoginPasswort) & ($strMLoginName == $LoginName)) | ($_SESSION['Login'] == 1)) {
$_SESSION['Login'] = 1;
//$_SESSION['Loginname'] = $strMLoginName;
echo '<script language="JavaScript" type="text/JavaScript">';
echo '
var PhotoDat = new Array();';
$intW = 0;
$sPhotoPfad = $AppPfad . "\\photos";
$PhotoArray = LiesVerzeichnisse($sPhotoPfad);
for($i=0;$i<count($PhotoArray);$i++) {
$sTemp = $PhotoArray[$i];
$aTemp = explode("\\",$sTemp);
if(trim($aTemp[count($aTemp)-1]) != "_AphotoGrpInfo.txt") {
echo "
PhotoDat[$intW] = '" . trim($aTemp[count($aTemp)-2]) . "/" . trim($aTemp[count($aTemp)-1]) . "';" . chr(10);
$intW++;
}
}
//-- Nun die Inhalte der Konfigdateien ausgeben
$NurVerzeichnisse = LeseVerzeichnisse($sPhotoPfad);
echo '
var PhotoCFG = new Array(' . (count($NurVerzeichnisse)-1 ) . ');' . chr(10);
for($i=0;$i<count($NurVerzeichnisse);$i++) {
$photoCFGPath = $AppPfad . "\\photos\\" . $NurVerzeichnisse[$i] . "\\_AphotoGrpInfo.txt";
$handle = @fopen($photoCFGPath, "r");
$k = 0;
echo '
PhotoCFG[' . $i . '] = new Array(10);' . chr(10);
echo "
PhotoCFG[" . $i . "][" . $k . "] = '" . $NurVerzeichnisse[$i] . "/_AphotoGrpInfo.txt';" . chr(10);
if ($handle) {
$k++;
while (!feof($handle)) {
$sTemp = fgets($handle, 1024);
echo "
PhotoCFG[" . $i . "][" . $k . "] = '" . trim($sTemp) . "';" . chr(10);
$k++;
}
fclose($handle);
} else {
//-- Datei fehlt,
//echo "CFGPfad="
$Lines = "Thema:"
$Lines = $Lines .
$Lines = $Lines .
$Lines = $Lines .
$Lines = $Lines .
$Lines = $Lines .
$Lines = $Lines .
$Lines = $Lines .
$Lines = $Lines .
$Lines = $Lines .
daher erstellen
. $photoCFGPath . " fehlt!<br />" . chr(10);
. "\r\n";
"Haupt:" . "\r\n";
"Gebiet:" . "\r\n";
"Gruppe:" . "\r\n";
"Titel:" . "\r\n";
"PhotoHGClip:" . "\r\n";
"Zoom:100" . "\r\n";
"Oben:0" . "\r\n";
"Links:0" . "\r\n";
"Rahmen:";
//-- schreibe neue Datei mit Bezeichner Dateninhalt.
if($photoCFGPath != $AppPfad . "\\photos\\Hintergrund" . "\\_AphotoGrpInfo.txt") {
$fp = fopen($photoCFGPath, "a+");
fputs($fp,$Lines);
fclose($fp);
}
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 31 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
//echo "
PhotoCFG[" . $i . "][0] = '_AphotoGrpInfo.txt';" . chr(10);
echo "
PhotoCFG[" . $i . "][1] = 'Thema:';" . chr(10);
echo "
PhotoCFG[" . $i . "][2] = 'Haupt:';" . chr(10);
echo "
PhotoCFG[" . $i . "][3] = 'Gebiet:';" . chr(10);
echo "
PhotoCFG[" . $i . "][4] = 'Gruppe:';" . chr(10);
echo "
PhotoCFG[" . $i . "][5] = 'Titel:';" . chr(10);
echo "
PhotoCFG[" . $i . "][6] = 'PhotoHGClip:';" . chr(10);
echo "
PhotoCFG[" . $i . "][7] = 'Zoom:100';" . chr(10);
echo "
PhotoCFG[" . $i . "][8] = 'Oben:0';" . chr(10);
echo "
PhotoCFG[" . $i . "][9] = 'Links:0';" . chr(10);
echo "
PhotoCFG[" . $i . "][10] = 'Rahmen:';" . chr(10);
}
}
echo '</script>' . chr(10);
?>
<div id="Layer1" style="position:absolute; left:2px; top:482px; width:600px; height:400px; z-index:1">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" align="left" id="EinzelPhoto">&nbsp;</td>
</tr>
</table>
</div>
<script language="JavaScript" type="text/JavaScript">
function setPicture() {
bTemp = document.getElementById('PhotoBilder').value;
sTemp = '<img border="0" alt="" width="480" height="350" src="' + bTemp + '" />';
document.all.EinzelPhoto.innerHTML = sTemp;
}
function setFolder() {
document.FormPhotoDat.PhotoBilder.options.length = 0;
bTemp = document.getElementById('PhotoOrdner').value;
for(p=0;p<PhotoDat.length;p++) {
sTemp = PhotoDat[p];
aTmpSplit = sTemp.split('/');
if(bTemp == aTmpSplit[0]) {
aPhotoTmpPfad = SelfPath.split("/");
sPhotoPfad = SelfPath.substr(0,SelfPath.length-aPhotoTmpPfad[aPhotoTmpPfad.length-1].length);
NeuerEintrag = new Option(aTmpSplit[1], sPhotoPfad+"photos/"+sTemp, false, true);
sAktuellesDir = bTemp;
document.FormPhotoDat.PhotoBilder.options[document.FormPhotoDat.PhotoBilder.length] = NeuerEintrag;
}
}
for(h=0;h<PhotoCFG.length;h++) {
sTemp = PhotoCFG[h][0];
aTmpSplit = sTemp.split('/');
//alert(sTemp);
if(bTemp == aTmpSplit[0]) {
document.FormPhotoDat.KonfZ1.value = getSplittNr(PhotoCFG[h][1],":",1);
document.FormPhotoDat.KonfZ2.value = getSplittNr(PhotoCFG[h][2],":",1);
document.FormPhotoDat.KonfZ3.value = getSplittNr(PhotoCFG[h][3],":",1);
document.FormPhotoDat.KonfZ4.value = getSplittNr(PhotoCFG[h][4],":",1);
document.FormPhotoDat.KonfZ5.value = getSplittNr(PhotoCFG[h][5],":",1);
document.FormPhotoDat.KonfZ6.value = getSplittNr(PhotoCFG[h][6],":",1);
document.FormPhotoDat.KonfZ7.value = getSplittNr(PhotoCFG[h][7],":",1);
document.FormPhotoDat.KonfZ8.value = getSplittNr(PhotoCFG[h][8],":",1);
document.FormPhotoDat.KonfZ9.value = getSplittNr(PhotoCFG[h][9],":",1);
document.FormPhotoDat.KonfZ10.value = getSplittNr(PhotoCFG[h][10],":",1);
}
}
if(document.getElementById('PhotoBilder').selectedIndex != -1) {
setPicture();
}
}
function getSplittNr(sString, sTrenner, Nr) {
aTemp = sString.split(sTrenner);
return aTemp[Nr];
}
function setLogout() {
document.getElementById('MyAction').value = "Logout";
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 32 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
11.07.2015 / Seite 33 / 39
document.FormPhotoDat.method="post";
document.FormPhotoDat.action="ddphpphotoalbummanager.php";
document.FormPhotoDat.submit();
}
function PasswortGenerieren() {
var sP = hex_sha1(document.getElementById('PasswortGen').value);
document.getElementById('PasswortGen').value = sP;
}
function PasswortGenerator() {
if(document.getElementById('PasswortGenerator').innerHTML == "&nbsp;") {
sHTML = 'Passwort: <input type="text" name="PasswortGen" id="PasswortGen" style="width:280px; height:21px;background-color:#FFEEAA; font-size:12px;"><img src="Sha1CodeStart.gif" width="24" height="22"
onClick="PasswortGenerieren()" title="Passwort erstellen">';
document.getElementById('PasswortGenerator').innerHTML = sHTML;
} else {
document.getElementById('PasswortGenerator').innerHTML = "";
}
}
</script>
<form action="<?php echo $strPHPSelf . "?" . $strQSTRING; ?>" method ="post" enctype="application/x-www-form-urlencoded" name="FormPhotoDat" id="FormPhotoDat">
<?php
echo '<script language="JavaScript" type="text/JavaScript">' . chr(10);
echo "function setSave() {" . chr(10);
echo "
document.getElementById('MyAction').value = 'Save';" . chr(10);
echo "
document.getElementById('MyDirLstIdx').value = document.getElementById('PhotoOrdner').selectedIndex;" . chr(10);
echo "
document.FormPhotoDat.method='post';" . chr(10);
echo "
document.FormPhotoDat.action='" . $strPHPSelf . "';" . chr(10);
echo "
document.FormPhotoDat.submit();" . chr(10);
echo "}" . chr(10);
echo "</script>" . chr(10);
$_SESSION['Login'] = "1";
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" align="left"><img border="0" alt="" width="12" height="10" src="spacer.gif" /></td>
</tr>
<tr>
<td valign="top" align="left"><table width="800" height="50" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" align="center"><h1>Photos verwalten</h1></td>
</tr>
<tr>
<td valign="top" align="center"><img border="0" alt="" width="12" height="10" src="spacer.gif" /><input type="hidden" name="MyAction" id="MyAction" value="<?php echo $strAction; ?>"><input type="hidden"
name="MyDirLstIdx" id="MyDirLstIdx" value="<?php echo $strDirLstIdx; ?>"></td>
</tr>
<tr>
<td valign="top" align="center"><h2><font color="#CC3300">Willkommen <?php echo $LoginName; ?></font></h2></td>
</tr>
<tr>
<td valign="top" align="center"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="35%" align="center" valign="top"><h2><font color="#CC3300"><input name="Logout" type="button" value="Abmelden" onClick="setLogout()"></td><td width="4%"><img src="Sha1Code.gif" width="24" height="22"
onClick="PasswortGenerator()" title="Passwort generieren"></td>
<td width="61%" id="PasswortGenerator">&nbsp;</td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<tr>
<td valign="top" align="center" width="100"><table width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" align="center"></td>
</tr>
</table></td>
</tr>
<tr>
<td valign="top" align="center">&nbsp;</td>
</tr>
<tr>
<td valign="top" align="left">
<table width="800" border="0" cellspacing="0" cellpadding="0">
<tr>
http://deckensattl.goip.de/ddflashpage/
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
<td
<td
<td
<td
<td
<td
</tr>
Autor: Daniel Deckensattl
11.07.2015 / Seite 34 / 39
valign="top" width="21" align="center">&nbsp;</td>
valign="top" width="265" align="center"><b>Photoverzeichnisse</b></td>
width="300" align="center" valign="top"><b>Photogruppenkonfiguration</b></td>
width="30" align="center" valign="top"><img border="0" alt="" width="30" height="12" src="spacer.gif" /></td>
width="303" align="center" valign="top"><b>Bilder</b></td>
valign="top" width="23" align="center">&nbsp;</td>
<tr>
<td valign="top" width="21" align="center">&nbsp;</td>
<td valign="top" align="center">&nbsp;</td>
<td valign="top" align="center">&nbsp;</td>
<td valign="top" align="center">&nbsp;</td>
<td valign="top" align="center">&nbsp;</td>
<td valign="top" width="23" align="center">&nbsp;</td>
</tr>
<tr>
<td width="21" height="229" align="center" valign="top">&nbsp;</td><td valign="top" align="center">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" align="center"><select name="PhotoOrdner" size="5" id="PhotoOrdner" style="width:280px; height:240px;background-color:#FFEEAA; font-size:12px;" onChange="setFolder();">
<?php $sPhotoPfad = $AppPfad . "\\photos";
$NurVerzeichnisse = LeseVerzeichnisse($sPhotoPfad);
for($i=0;$i<count($NurVerzeichnisse);$i++) {
$sDirPath = $NurVerzeichnisse[$i];
$sDirValue = $NurVerzeichnisse[$i];
$strOut = "<option value='$sDirPath'$strMnuSele>$sDirValue</option>";
echo $strOut;
}
?>
</select></td>
</tr>
<tr>
<td><img border="0" alt="" width="30" height="220" src="spacer.gif" /></td>
</tr>
</table>
</td><td valign="top" align="center">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" align="center"><table width="300" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="54%" height="24" align="right" valign="top">Hauptkategorie:</td>
<td width="46%" align="right" valign="top"><input type="text" name="KonfZ1" id="KonfZ1" style="width:170px;
</tr>
<tr>
<td width="54%" height="24" align="right" valign="top">Unterkategorie:</td>
<td width="46%" align="right" valign="top"><input type="text" name="KonfZ2" id="KonfZ2" style="width:170px;
</tr>
<tr>
<td width="54%" height="24" align="right" valign="top">Gruppenname:</td>
<td width="46%" align="right" valign="top"><input type="text" name="KonfZ3" id="KonfZ3" style="width:170px;
</tr>
<tr>
<td width="54%" height="24" align="right" valign="top">Themenname:</td>
<td width="46%" align="right" valign="top"><input type="text" name="KonfZ4" id="KonfZ4" style="width:170px;
</tr>
<tr>
<td width="54%" height="24" align="right" valign="top">Titel:</td>
<td width="46%" align="right" valign="top"><input type="text" name="KonfZ5" id="KonfZ5" style="width:170px;
</tr>
<tr>
<td width="54%" height="24" align="right" valign="top">Hintergrundbild:</td>
<td width="46%" align="right" valign="top"><input type="text" name="KonfZ6" id="KonfZ6" style="width:170px;
</tr>
<tr>
<td width="54%" height="24" align="right" valign="top">Zoom:</td>
<td width="46%" align="right" valign="top"><input type="text" name="KonfZ7" id="KonfZ7" style="width:170px;
</tr>
<tr>
<td width="54%" height="24" align="right" valign="top">Oben:</td>
<td width="46%" align="right" valign="top"><input type="text" name="KonfZ8" id="KonfZ8" style="width:170px;
</tr>
<tr>
<td width="54%" height="24" align="right" valign="top">Links:</td>
<td width="46%" align="right" valign="top"><input type="text" name="KonfZ9" id="KonfZ9" style="width:170px;
http://deckensattl.goip.de/ddflashpage/
height:18px; background-color:#FFEEAA; font-size:12px; font-family:
Arial, sans-serif;"></td>
height:18px; background-color:#FFEEAA; font-size:12px; font-family:
Arial, sans-serif;"></td>
height:18px; background-color:#FFEEAA; font-size:12px; font-family:
Arial, sans-serif;"></td>
height:18px; background-color:#FFEEAA; font-size:12px; font-family:
Arial, sans-serif;"></td>
height:18px; background-color:#FFEEAA; font-size:12px; font-family:
Arial, sans-serif;"></td>
height:18px; background-color:#FFEEAA; font-size:12px; font-family:
Arial, sans-serif;"></td>
height:18px; background-color:#FFEEAA; font-size:12px; font-family:
Arial, sans-serif;"></td>
height:18px; background-color:#FFEEAA; font-size:12px; font-family:
Arial, sans-serif;"></td>
height:18px; background-color:#FFEEAA; font-size:12px; font-family:
Arial, sans-serif;"></td>
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
11.07.2015 / Seite 35 / 39
</tr>
<tr>
<td width="54%" height="24" align="right" valign="top">Rahmen-Nr.:</td>
<td width="46%" align="right" valign="top"><input type="text" name="KonfZ10" id="KonfZ10" style="width:170px; height:18px; background-color:#FFEEAA; font-size:12px; font-family:
</tr>
</table></td>
</tr>
<tr>
<td height="33" align="center"><input name="CFGSpeichern" type="button" value="Speichern" onClick="setSave()"></td>
</tr>
</table>
</td>
<td valign="top" align="center">&nbsp;</td>
<td valign="top" align="center">
<select name="PhotoBilder" size="5" id="PhotoBilder" style="width:280px; height:640px;background-color:#FFEEAA; font-size:12px;" onChange="setPicture();">
</select></td><td valign="top" width="23" align="center">&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td valign="top" align="center">&nbsp;</td>
</tr>
<tr>
<td valign="top" align="center">&nbsp;</td>
</tr>
</table>
</form>
<?php
if($strDirLstIdx != "") {
echo '<script language="JavaScript" type="text/JavaScript">' . chr(10);
echo "
document.getElementById('PhotoOrdner').selectedIndex = " . $strDirLstIdx . ";" . chr(10);
echo "
setFolder();";
echo '</script>' . chr(10);
}
} else { ?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="100%" align="center" valign="top"><img border="0" alt="" width="12" height="112" src="spacer.gif" /></td>
</tr>
<tr>
<td width="100%" align="center" valign="top"><strong><font size="5">Online-Photoalbum-Manager</font></strong></td>
</tr>
<tr>
<td width="100%" align="center" valign="top"><img border="0" alt="" width="12" height="50" src="spacer.gif" /></td>
</tr>
<tr>
<td>
<form name="Anmeldung" onsubmit="return sendData()">
<table cellspacing="0" cellpadding="0" width="100%" summary="" border="0">
<tbody>
<tr>
<td valign="top" width="100%" align="center">
<table width="200" height="100" border="0" cellpadding="0" cellspacing="0" style="HEIGHT: 100px; WIDTH: 200px" summary="">
<tbody>
<tr>
<td width="91" height="45">
<p align="center"><span style="COLOR: rgb(0,0,255)">Loginname:</span></p>
</td>
<td width="189"><input id="Login" class="box1" name="Login" value="" /></td>
</tr>
<tr>
<td height="43">
<p align="center"><span style="COLOR: rgb(0,0,255)">Passwort:</span></p>
</td>
<td><input id="LoginPasswort" class="box1" name="LoginPasswort" onKeyUp="checkAction(this);" type="password"/></td>
</tr>
<tr>
<td height="19"><img border="0" alt="" width="12" height="12" src="spacer.gif" /></td>
<td>
</tr>
<tr>
http://deckensattl.goip.de/ddflashpage/
Arial, sans-serif;"></td>
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
<td height="12"><img border="0" alt="" width="12" height="1" src="spacer.gif" /></td>
<td align="center"><input id="versenden" type="submit" name="versenden" value="Anmelden" /></td>
</tr>
</tbody>
</table>
</td>
<td valign="top" align="left">
</td>
</tr>
</tbody>
</table>
</form>
</td>
</tr>
<tr>
</table>
<?php } ?>
</body>
</html>
Die wichtige JavaScriptdatei phpphotoalbum.js-Datei (für das Passwort)
/*
* A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
* in FIPS PUB 180-1
* Version 2.1a Copyright Paul Johnston 2000 - 2002.
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See http://pajhome.org.uk/crypt/md5 for details.
*/
/*
* Configurable variables. You may need to tweak these to be compatible with
* the server-side, but the defaults work in most cases.
*/
var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase
*/
var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance
*/
var chrsz
= 8; /* bits per input character. 8 - ASCII; 16 - Unicode
*/
/*
* These are the functions you'll usually want to call
* They take string arguments and return either hex or base-64 encoded strings
*/
function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));}
function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));}
function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));}
function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));}
function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));}
function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));}
/*
* Perform a simple self-test to see if the VM is working
*/
function sha1_vm_test()
{
return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d";
}
/*
* Calculate the SHA-1 of an array of big-endian words, and a bit length
*/
function core_sha1(x, len)
{
/* append padding */
x[len >> 5] |= 0x80 << (24 - len % 32);
x[((len + 64 >> 9) << 4) + 15] = len;
var
var
var
var
var
var
w
a
b
c
d
e
=
=
=
=
=
=
Array(80);
1732584193;
-271733879;
-1732584194;
271733878;
-1009589776;
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 36 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
for(var i = 0; i < x.length; i += 16)
{
var olda = a;
var oldb = b;
var oldc = c;
var oldd = d;
var olde = e;
for(var j = 0; j < 80; j++)
{
if(j < 16) w[j] = x[i + j];
else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)),
safe_add(safe_add(e, w[j]), sha1_kt(j)));
e = d;
d = c;
c = rol(b, 30);
b = a;
a = t;
}
a
b
c
d
e
=
=
=
=
=
safe_add(a,
safe_add(b,
safe_add(c,
safe_add(d,
safe_add(e,
olda);
oldb);
oldc);
oldd);
olde);
}
return Array(a, b, c, d, e);
}
/*
* Perform the appropriate triplet combination function for the current
* iteration
*/
function sha1_ft(t, b, c, d)
{
if(t < 20) return (b & c) | ((~b) & d);
if(t < 40) return b ^ c ^ d;
if(t < 60) return (b & c) | (b & d) | (c & d);
return b ^ c ^ d;
}
/*
* Determine the appropriate additive constant for the current iteration
*/
function sha1_kt(t)
{
return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :
(t < 60) ? -1894007588 : -899497514;
}
/*
* Calculate the HMAC-SHA1 of a key and some data
*/
function core_hmac_sha1(key, data)
{
var bkey = str2binb(key);
if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz);
var ipad = Array(16), opad = Array(16);
for(var i = 0; i < 16; i++)
{
ipad[i] = bkey[i] ^ 0x36363636;
opad[i] = bkey[i] ^ 0x5C5C5C5C;
}
var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz);
return core_sha1(opad.concat(hash), 512 + 160);
}
/*
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
* to work around bugs in some JS interpreters.
*/
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 37 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
function safe_add(x, y)
{
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}
/*
* Bitwise rotate a 32-bit number to the left.
*/
function rol(num, cnt)
{
return (num << cnt) | (num >>> (32 - cnt));
}
/*
* Convert an 8-bit or 16-bit string to an array of big-endian words
* In 8-bit function, characters >255 have their hi-byte silently ignored.
*/
function str2binb(str)
{
var bin = Array();
var mask = (1 << chrsz) - 1;
for(var i = 0; i < str.length * chrsz; i += chrsz)
bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32);
return bin;
}
/*
* Convert an array of big-endian words to a string
*/
function binb2str(bin)
{
var str = "";
var mask = (1 << chrsz) - 1;
for(var i = 0; i < bin.length * 32; i += chrsz)
str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask);
return str;
}
/*
* Convert an array of big-endian words to a hex string.
*/
function binb2hex(binarray)
{
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
var str = "";
for(var i = 0; i < binarray.length * 4; i++)
{
str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
}
return str;
}
/*
* Convert an array of big-endian words to a base-64 string
*/
function binb2b64(binarray)
{
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var str = "";
for(var i = 0; i < binarray.length * 4; i += 3)
{
var triplet = (((binarray[i
>> 2] >> 8 * (3 - i
%4)) & 0xFF) << 16)
| (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 )
| ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF);
for(var j = 0; j < 4; j++)
{
if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
}
}
return str;
}
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 38 / 39
Flash-MX-ActionScript [ddphpphotonavunten600w400h.swf]
Autor: Daniel Deckensattl
http://deckensattl.goip.de/ddflashpage/
11.07.2015 / Seite 39 / 39