Hi Sonar
Ich hab leider ein kleines Problem mit deinem fantastischen GBook. Zuerst aber noch ein maximum Respect für dich...Tolle Leistung!
Zum Problem...das Gbook funktioniert einwandfrei, nur wenn genügend Einträge gemacht wurden, werden Seiten Zahlen ( Page Links ) angezeigt. Und genau wenn dies passiert, verschwindet bei mir der entriesScroller, und ich kann dann in den Seiten die Einträge nicht mehr scrollen...
Ich hab mit meinem laienhaften Actionscript Wissen alles mögliche versucht aber leider ohne Erfolg. Und andere Beiträge hierzu kann ich leider auch nicht finden...Wäre also sehr froh, wenn mir jemand bei meine Problem unter die Arme greifen könnte....
Hier noch mein Code:
PHP-Code:
Stage.scaleMode = "noScale";
Stage.showMenu = false;
import com.sonar.utils.*;
import com.sonar.SimpleScroller;
import TextField.StyleSheet;
#include "./lmc_tween.as"
var TL:MovieClip = this;
var clicked_page_btn:MovieClip;
var LOAD_PATH:String = "statement/gbook_entries.xml.php";
var SAVE_PATH:String = "statement/gbook_db-entry.php";
var ALERT_COL:Number = 0xCC0000;
var NORMAL_BORDER_COL:Number = 0xFFFFFF;
var NORMAL_LABEL_COL:Number = 0xFFFFFF;
var HILITE_COL:Number = 0xCC0000;
var AWAITING_APPROVAL_MSG:String = "Thanks.\nYour message has been sent and is now awaiting approval by the GBOOK owner.";
// track populated depths
var highestDepth:Number;
// check if admin-approval is required
var approval_required:Boolean;
var clickLocked:Boolean = false;
var errors:Array = new Array();
var gb_loader:XML = new XML();
var gb_saver:LoadVars = new LoadVars();
var su:StringUtils = new StringUtils();
var entriesScroller = new com.sonar.SimpleScroller(this.attachMovie("scrollbar","entriesScrollbar",1))
var msgScroller = new com.sonar.SimpleScroller(this.attachMovie("scrollbar","msgScrollbar",2))
var mf:TextFormat = new TextFormat();
var css:StyleSheet = new StyleSheet();
/* ======================================== SETUP ============================================= */
// turn this fukin "halo green" off
_global.style.setStyle("themeColor", NORMAL_BORDER_COL);
gb_loader.ignoreWhite = true;
name_txt.maxChars = 30;
email_txt.maxChars = 45;
msg_txt.maxChars = 300;
mf.font = "Verdana";
mf.size = 10;
TL.entries_txt.embedFonts = true;
preview_mc.entries_txt.embedFonts = true;
entries_txt.setNewTextFormat(mf);
preview_mc.entries_txt.setNewTextFormat(mf);
preview_mc.entries_txt._alpha = 95;
entriesScroller.__set___scrollTarget(entries_txt)
entriesScroller.__set___useScrollbuttons(true)
entriesScroller._adaptDraggerHeight = false;
msgScroller.__set___scrollTarget(msg_txt)
msgScroller.init()
msgScroller._useScrollbuttons = true;
msgScroller._adaptDraggerHeight = false;
// load entries page 1
loadEntries(1);
// load stylesheet
loadStyle();
/
/* --- DISPLAY --- */
// display gbook entries in entries_txt-TF
// evoked by gbook_loader.onLoad
function showEntries(pSuccess:Boolean):Void {
if (false == pSuccess) {
entries_txt.htmlText = "A loading error has occurred.";
return;
}
entries_txt.htmlText = "Connecting to XML ...";
entries_txt.htmlText = "";
entries_txt.styleSheet = css;
var fc:String = "firstChild";
var cn:String = "childNodes";
// the 'control'-node:
highestDepth = Number(this[fc][fc].attributes.num_pages);
approval_required = Number(this[fc][fc].attributes.approval_required) == 1 ? true : false;
showPageLinks(highestDepth);
// i = 1 is because the first childNode is <control>
for (var i:Number = 1; i < this[fc][cn].length; i++) {
var id:String = this[fc][cn][i].attributes.id;
var poster:String = this[fc][cn][i].attributes.poster;
var date:String = this[fc][cn][i].attributes.date;
var msg:String = su.trim(this[fc][cn][i][fc].nodeValue);
entriesScroller.__set___scrollTarget(entries_txt)
entriesScroller.__set___useScrollbuttons(true)
entriesScroller._adaptDraggerHeight = false;
entriesScroller.init()
msgScroller.__set___scrollTarget(msg_txt)
msgScroller.init()
msgScroller._useScrollbuttons = true;
msgScroller._adaptDraggerHeight = false;
entries_txt.htmlText += "<p>"
+ "<font color=\"" + su.htmlCol(HILITE_COL) + "\">"
+ poster + " (" + date + ")"
+ "</font><br />"
+ msg + "<br />"
+ "<font color=\"" + su.htmlCol(NORMAL_BORDER_COL) + "\">" + su.str_repeat("-", 52) + "</font>"
+ "</p>";
}
entriesScroller.init()
}
// display paging buttons if there is more than 1 page
// --> see ENTRIES_PP and MAX_PAGES in gbook_entries.xml.php
function showPageLinks(pNum:Number):Void {
// only one page --> no need for paging
if (pNum < 2) return;
TL.attachMovie("page_mc", "page_mc", 1, {_x: 305, _y: 85});
for (var i:Number = 1; i <= pNum; i++) {
TL.attachMovie("pagenum_mc", "pagenum_" + i + "_mc", i + 1, {_x: 346+ 10 * i, _y: 85});
if (!clicked_page_btn) clicked_page_btn = pagenum_1_mc;
clicked_page_btn.enabled = false;
clicked_page_btn.txt.textColor = ALERT_COL;
TL["pagenum_" + i + "_mc"].txt.text = i;
TL["pagenum_" + i + "_mc"].onRollOver = function():Void {
this.txt.textColor = ALERT_COL;
}
TL["pagenum_" + i + "_mc"].onRollOut = function():Void {
this.txt.textColor = NORMAL_LABEL_COL;
}
TL["pagenum_" + i + "_mc"].onDragOut = TL["pagenum_" + i + "_mc"].onRollOut;
TL["pagenum_" + i + "_mc"].onRelease = function():Void {
loadEntries( Number(this.txt.text) );
clicked_page_btn.enabled = true;
clicked_page_btn.txt.textColor = NORMAL_LABEL_COL;
this.enabled = false;
this.txt.textColor = ALERT_COL;
clicked_page_btn = this;
}
}
}
// show or hide preview window and pass an optional message to the preview window
function showHidePreview(pMsg:String):Void {
preview_mc.swapDepths(highestDepth + 1);
if (pMsg) preview_mc.entries_txt.htmlText = "<b>" + pMsg + "</b>";
if (preview_mc.isThere) {
preview_mc.slideTo(preview_mc._x, -400, .7, "easeInBack", 0, null, 1);
} else {
preview_mc.slideTo(preview_mc._x, 30, .7, "easeOutBack", 0, null, 1);
}
preview_mc.isThere = !preview_mc.isThere
}
// show live preview of typed text in the preview window
function assignPreviewTextAndStyle():Void {
preview_mc.entries_txt.styleSheet = css;
preview_mc.entries_txt.htmlText = TL.msg_txt.text;
}
// @pTextFields: all textfields which are not valid
function showAlert(pTextFields:Array):Void {
// first reset colors
init();
// then show alert colors
for (var i:String in pTextFields) {
pTextFields[i].borderColor = ALERT_COL;
}
}
/* --- UTILS --- */
// check input
// comment out if-blocks within /* --- */ to exclude single textfields from validation
function inputIsValid():Boolean {
// reset errors
errors = new Array();
.
.
.
.
.
etc.
Cheers'n Thanx
SAKN