eine forschleife zwischen 1 - 10

Knotschi

Mitglied
Hi..
ich bin relativ neu in Flash also bitte net zu hart mit mir umgehen :D

ich will eine for schleife machen ziwschen 1 - 10 für den "item_count"

es handelt sich um ein News-Script ( noch nicht fertig ) was die Informationen aus der DB saugt... und bei jedem Eintrag wird das MC dupliziert...

jetzt will ich aber bei meinem"Archiv" nur immer 10 News zeigen lassen und auf der nächsten seite wieder 10 also zwischen NR 11 - 21 usw usw
und unten sollen die buttons nur unten entstehen wenn es der Anzahl entspricht...

Seite: 1 | 2 | 3 | 4

Hoffe ich erkläre das nicht zu wild :D

Vielen Dank im voraus...
lg

ActionScript:

PHP:
fertig = false;
stop();
archiv_container_template._visible = false;
this.loadVariables("get_data_for_flash.php");
this.onEnterFrame = function() {
	if (this.fertig == "ok") {
		for (i=1; i<=item_count; i++) {
			// item_count
			obj = archiv_container_template.duplicateMovieClip("archiv"+i, i+1001);
			obj._y += obj._height*(i-1);
			obj.news_erstellung = this["erstellung_"+i];
			obj.news_titel = this["titel_"+i];
			obj.news_text = this["text_"+i];
			trace(this["text_"+i]);
			self = obj.array_id=i;
		}
		delete this.onEnterFrame;
	}
};
 
Hi,

prinzipiell kannst Du Deine Schleife auf einem Offset basieren lassen:
Code:
var current_offset = 10; // Einträge ab dem 11. anzeigen

var items_per_page = 10; // Einträge pro Seite

for (i=current_offset; i<=current_offset + items_per_page; i++) {
Da es allerdings ungünstig ist, bei jedem Seitenwechsel alle Einträge neu zu laden, solltest Du die Funktion zum Anzeigen der Datensätze an eine andere Stelle auslagern.

Noch ein paar Vorschläge:
  1. Verwende statt loadVariables lieber das LoadVars-Objekt: Durch die Callback-Methode LoadVars.onLoad ersparst Du Dir z.B. das Warten auf die Daten per onEnterFrame.

  2. verwende attachMovie statt duplicateMovieClip. Es ist einfacher zu handhaben (Clips können in ein beliebiges Ziel instanziert werden) und Du ersparst Dir die Notwendigkeit, eine "Vorlage" auf der Bühne liegen zu haben.

  3. Arbeite mit einem Array für die Einträge und mit einem zweiten für die Container.

Hier mein Vorschlag:
Code:
var container = new Array(); // Array für die MC-Container

var entry = new Array(); // Array für alle Einträge
// Dieses Array bleibt die ganze Zeit bestehen.

var item_count = 100; // Anzahl Einträge

var current_offset = 0; // Ab diesem Eintrag anzeigen

var perpage = 10; // Einträge per Seite

var lv = new LoadVars();

lv.onLoad = function() { // wenn geladen ...
	entry = new Array(); // Array "entry" leeren
	for (var i=0; i<item_count; i++) { // für alle Einträge ...
		entry[i] = new Object(); // neues Objekt erstellen ...
		entry[i].news_titel = this["titel_" + (i + 1)]; // und die Variablen zuweisen
		entry[i].news_text = this["text_" + (i + 1)];
	}
	showPage(current_offset); // aktuelle Seite anzeigen
}

lv.load("get_data_for_flash.php"); // Daten laden

function showPage(offset) { // Seite anzeigen
	for (var i in container) { // Alle Container entfernen
		container[i].removeMovieClip();
	}
	container = new Array();
	for (var i=0; i<perpage; i++) { // Für jeweils "perpage" Einträge ...
		container[i] = this.attachMovie("container_archiv", "container" + i, i); // Container erstellen
		container[i]._y += i * Math.round(container[i]._height); // Position festlegen
		for (var h in entry[i + offset]) { // Alle Member des jeweiligen entry-Objekts ...
			container[i][h] = entry[i + offset][h]; // ... werden dem Container zugewiesen.
		}
	}
}

// Hier noch eine Funktion zum Seitenwechseln. Aufruf z.B. "flipPage(1)" --> eine Seite weiter

function flipPage(d) { // "d" ist die Anzahl Seiten, die weitergeblättert werden soll
	current_offset += d; // Offset addieren
	// Grenzen beachten:
	if (current_offset >= item_count - perpage) current_offset = item_count - perpage;
	if (current_offset < 0) current_offset = 0;
	showPage(current_offset); // Seite anzeigen.
}

Gruß
.
 
Hi :))

Ich schaff es nicht meine Sachen anzeigen zu lassen...

also mein container heißt:

"archiv_container_template" des MC was dupliziert werden soll...

WIe ich schon gesagt habe bin ein anfänger :D tut mir Leid :(

Code:
1.;
var archiv_container_template = new Array();
// Array für die MC-archiv_container_template
2.;
3.;
var entry = new Array();
// Array für alle Einträge
4.;
// Dieses Array bleibt die ganze Zeit bestehen.
5.;
6.;
var item_count = 100;
// Anzahl Einträge
7.;
8.;
var current_offset = 0;
// Ab diesem Eintrag anzeigen
9.;
10.;
var perpage = 10;
// Einträge per Seite
11.;
12.;
var lv = new LoadVars();
13.;
14.;
lv.onLoad = function() {
	// wenn geladen ...
	15.;
	entry = new Array();
	// Array "entry" leeren
	16.;
	for (var i = 0; i<item_count; i++) {
		// für alle Einträge ...
		17.;
		entry[i] = new Object();
		// neues Objekt erstellen ...
		18.;
		entry[i].news_titel = this["titel_"+(i+1)];
		// und die Variablen zuweisen
		19.;
		entry[i].news_text = this["text_"+(i+1)];
		20.;
	}
	21.;
	showPage(current_offset);
	// aktuelle Seite anzeigen
	22.;
};
23.;
24.;
lv.load("PHP/News/get_data_for_flash.php");
// Daten laden
25.;
26.;
function showPage(offset) {
	// Seite anzeigen
	27.;
	for (var i in archiv_container_template) {
		// Alle archiv_container_template entfernen
		28.;
		archiv_container_template[i].removeMovieClip();
		29.;
	}
	30.;
	archiv_container_template = new Array();
	31.;
	for (var i = 0; i<perpage; i++) {
		// Für jeweils "perpage" Einträge ...
		32.;
		archiv_container_template[i] = this.attachMovie("container_archiv", "archiv_container_template"+i, i);
		// archiv_container_template erstellen
		33.;
		archiv_container_template[i]._y += i*Math.round(archiv_container_template[i]._height);
		// Position festlegen
		34.;
		for (var h in entry[i+offset]) {
			// Alle Member des jeweiligen entry-Objekts ...
			35.;
			archiv_container_template[i][h] = entry[i+offset][h];
			// ... werden dem archiv_container_template zugewiesen.
			36.;
		}
		37.;
	}
	38.;
}
39.;
40.;
// Hier noch eine Funktion zum Seitenwechseln. Aufruf z.B. "flipPage(1)" --> eine Seite weiter
41.;
42.;
function flipPage(1) {
	// "d" ist die Anzahl Seiten, die weitergeblättert werden soll
	43.;
	current_offset += 1;
	// Offset addieren
	44.;
	// Grenzen beachten:
	45.;
	if (current_offset>=item_count-perpage) {
		current_offset = item_count-perpage;
	}
	46.;
	if (current_offset<0) {
		current_offset = 0;
	}
	47.;
	showPage(current_offset);
	// Seite anzeigen.
	48.;
}
 
Hi,

bitte poste Deine Original-fla (mit der Änderung nach meinem Script) und die komplette Ausgabe des PHP-Scripts.

Ich hoffe nicht, Du hast den Code so kopiert, wie er in Deinem letzten Posting steht, da die übernommenen Zeilennummern aus den actionscript-Tags natürlich zu Fehlern führen. ;)

Gruß

P.S.: Bitte pushe Deine Threads nicht per PN - es genügt völlig, wenn neue Fragen im Forum gepostet werden; sobald ich ins Forum schaue, sehe ich auch neue Postings.
.
 
Hi,

na ja - schaurig ist es schon ein wenig. Codeleichen wie
Code:
_root.website.gotoAndPlay ("Start");
(es gibt kein Objekt namens "website") tragen ein wenig zur Verwirrung bei.

Wie ich das sehe, hast Du meinen Code nicht eingebaut - um Deinen Fehler zu korrigieren, bräuchte ich allerdings Deinen (fehlgeschlagenen) Versuch.

Gruß
.
 
Hi,

im MC "Inhalt" sehe ich nach wie vor Dein Script aus Deinem ersten Posting. An welcher Stelle hast Du meinen Vorschlag eingefügt?

Gruß
.
 
Ist ein bisschen verplant tut mir Leid...

Also:

DU gehst auf Enter =>

Nachrichten-box-groß / letzte Frame => archiv

und dann bist du auch schon da =D
 

Neue Beiträge

Zurück