Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-11-2007, 15:29   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 7
Frage zu globaler Funktion

Hallo,
Ich möchte eine globale Funktion wie folgt programmieren und aufrufen:

Code:
_global.thumbnail_xml = new XML();
_global.gross_xml = new XML();
_global.thumbnail_xml.ignoreWhite = true;
_global.gross_xml.ignoreWhite = true;

_global.getNextSlide = function (newSlideNode, _i) {
//Inhalt zur besseren Übersicht entfernt
}

_global.getSlides = function (success) {
//Inhalt zur besseren Übersicht entfernt
//Hier wird getNextSlide aufgerufen!!!!!!!!!!!!!!!!!!
			getNextSlide(SlideNode, i);
}

_global.thumbnail_xml.onLoad = getSlides;

_global.thumbnail_xml.load("thumbnails.xml");
_global.gross_xml.load("images.xml");
Tritt für die Variable "thumbnail_xml" das Event "onLoad" ein, soll die Funktion getSlides aufgerufen werden. Beim Debuggen jedoch wird dem Event "onLoad" keine Funktion zugeordnet. Was mache ich falsch?

Anbei der vollständige funktionierende Code, bei dem ich die Funktion lokal ist:

Code:
thumbnail_xml = new XML();
gross_xml = new XML();
thumbnail_xml.ignoreWhite = true;
gross_xml.ignoreWhite = true;
thumbnail_xml.onLoad = getSlides;

_global.urls = new Array();

var x:String;
var y:String;
var x_pos:Number = 199.8;
var y_pos:Number = 55.8;
var scroll:Boolean = true;
var thumbs_pos:Number = 25;
_global.Bild = 1;


function getNextSlide(newSlideNode, _i) {
	imagePath = newSlideNode.attributes.jpegURL;
	var ImageName:String = "thumbnail"+String(_i);
	image = _root.createEmptyMovieClip(ImageName, _i);
	this.image._x = x_pos;
	this.image._y = y_pos;
	var mclListener:Object = new Object();
	mcLoader = new MovieClipLoader();
	mcLoader.addListener(mclListener);
	mcLoader.loadClip(imagePath, ImageName);
	mclListener.onLoadInit = function(mc:MovieClip) {
		mc.onRelease = function() {
			var j:Number = _i - 1;
			imagePath = String(_global.urls[j]);
			ImgName = "gross"+String(j);
			img = _root.createEmptyMovieClip(ImgName, j);
			_root.img._x = 199.8;
			_root.img._y = 55.8;
			mcL = new MovieClipLoader();
			mcL.loadClip(imagePath, ImgName);
			_level21.clear();
			_level22.clear();
			_level23.clear();
			_level24.clear();
			_level25.clear();
			_root.removeMovieClip(thumbnail21);
			_level22.removeMovieClip(thumbnail22);
			_level23.removeMovieClip(thumbnail23);
			_root.removeMovieClip("thumbnail24");
			_root.thumbnail24.clear();
			_level25.removeMovieClip(thumbnail25);
			_level24.unloadMovie("thumbnail24")
			for (var i:Number = 24; i >= 0; i--) { 
 				
			} 
		}
	}
}

function getSlides(success) {
	if (success == true) {
		rootNode = thumbnail_xml.firstChild;
		SlideNode = rootNode.firstChild;
		for (var i = 1; i<26; i++) {
			getNextSlide(SlideNode, i);
			SlideNode = SlideNode.nextSibling;
			x_pos += 118.3;
			if (x_pos == 791.3) {
				x_pos = 199.8;
				y_pos += 88.8;
			}
		}
	}
}

gross_xml.onLoad = function() {
	var photos:Array = this.firstChild.childNodes;
	for(i=0;i<photos.length;i++) {
		_global.urls.push(photos[i].attributes.jpegURL);
	}
}

_root.thumbnail_xml.load("thumbnails.xml");
_root.gross_xml.load("images.xml");
Vielen Dank im voraus!
Michael

Geändert von mtzetwe (25-11-2007 um 15:31 Uhr)
mtzetwe ist offline   Mit Zitat antworten
Alt 25-11-2007, 17:23   #2 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
Warum willst Du Deine XML-Objekte und deren onLoad überhaupt global setzen?
Normalerweise liest man XML-Daten auf _root aus, legt diese in Arrays ab
und übergibt die Arrays dann an weitere Funktionen.

In Deinem weiteren Script benutzt Du die XML-Objekte doch auch nur auf _root, wieso
die also _global??
~pyropete~ ist offline   Mit Zitat antworten
Alt 25-11-2007, 21:07   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 7
Hallo und vielen Dank für die Antwort!

Es handelt sich bei dem Projekt um ein Fotoalbum. Beim ersten öffnen werden die ersten 25 thumbnails eingelesen. Insgesamt enthält das Album 95 Fotos. Es gibt je einen Button "vor" und "zurück". Über die Aktionen dieser Buttons können die nächsten/vorherigen 25 thumbnails geladen werden. Dazu müssen sie die Funktionen "getNextSlide" und "getSlides" aufrufen können.
Anbei mal der Code, der beim Klick auf den Button vor/zurück ausgeführt werden soll:

Code:
on (release) {
	if (_global.Bild == 25) {
		_global.Bild = 50; //bezeichnet die Seite der geladenen  
		                        //Thumbnails (25/Seite, also 50 = Seite 
                                                 //2
		_global.thumbnail_xml.load("thumbnails2.xml");
		_global.gross_xml.load("images2.xml");
	}
	else if (_global.Bild == 50) {
		_global.Bild = 75;		
		
		_global.thumbnail_xml.load("thumbnails3.xml");
		_global.gross_xml.load("images3.xml");
	}
	else if (_global.Bild == 75) {
		_global.Bild = 95;
		
		_global.thumbnail_xml.load("thumbnails4.xml");
		_global.gross_xml.load("images4.xml");
	}
	else {
		_global.Bild = 25;
		_global.thumbnail_xml.load("thumbnails.xml");
		_global.gross_xml.load("images.xml");
	}
}
Michael
mtzetwe ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:56 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele