Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-05-2006, 21:44   #1 (permalink)
*<):o)
 
Registriert seit: Mar 2003
Beiträge: 83
player7 vs. player8

hallo,

ich arbeite unter flash8. ich habe jetzt eine swf erstellt und auf meiner rechner läuft die wunderbar, auf anderen rechner nicht.
Grund: bei mir werkelt zum anzeigen und interpretieren der swf der flash-player-8. auf dem anderen rechner "nur" der flash-player-7.

ich fand auch sofort das problem, den ich benutze den befehl "sortOn". in der hilfe steht:
1. Verfügbarkeit: ActionScript 1.0; Flash Player 6
2. ab Flash Player 7 umfasst der befehl den options-Parameter.
3. ab Flash Player 8 haben Sie die Möglichkeit, bei einer Sortierung nach mehreren Feldern für jedes Feld eine andere Sortieroption anzugeben

und ich benutze mehrere Felder z.B.:
PHP-Code:
ary.sortOn([0,1,3],[Array.NUMERIC,Array.DESCENDING|Array.NUMERIC,Array.NUMERIC]); 

so. kann mir einer helfen, genau die selbe sortierung zu realisieren, aber die auf einen flash-player-7 läuft?

ansonsten müsste ich mir selber eine funktion schreiben. angelehnt an bubble und quick sort.

gruss m1cha
__________________
looser@www:~> su -l
Password:
root:~ #
root:~ # chmod 777 WorldWideWeb
root:~ # logout
looser@www:~>

Optimismus ist ein Mangel an Information!
m1cha ist offline   Mit Zitat antworten
Alt 03-05-2006, 22:16   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
sowas haben doch schon die alten römer dreistimmig über die alpen gejodelt ;-)

http://www.seibsprogrammladen.de/fra...ispiele/flash5
-> Sortieren Mehrdimensionales Array sortieren.

im wesentlichen:
Code:
// und das halt auf deine drei spalten erweitern
// ist a[0]==b[0] dann nach [1] ordnen
// ist a[1]==b[1] dann nach [2] ordnen
function fSortSub (a, b) {
	if (a[gSpalte]<b[gSpalte]) {
		return -1;
	} else if (a[gSpalte]>b[gSpalte]) {
		return 1;
	} else {
		return 0;
	}
}
gArchiv.sort(fSortSub);
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (03-05-2006 um 22:22 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 04-05-2006, 10:06   #3 (permalink)
*<):o)
 
Registriert seit: Mar 2003
Beiträge: 83
Lightbulb

besten dank hgseib,

ich habe eine funktion geschrieben die mir das sortiert. und man kann angeben nach welchen spalten sortiert werden soll und in welche richtung.
andere werden so eine funktion auch mal brauchen können die mit "sortOn" und den optionen kein erfolg haben wenn jemand den flash-player-6/7 benutzt.

also werde ich das hier mal veröffendlichen:
PHP-Code:
//ein kleine 2D-array 
var test:Array=new Array();
test[0]=new Array(5,2,2,6);
test[1]=new Array(2,1,3,6);
test[2]=new Array(2,1,3,2);
test[3]=new Array(2,1,5,2);
test[4]=new Array(2,8,3,8);
test[5]=new Array(1,2,4,0);
test[6]=new Array(1,2,3,6);
test[7]=new Array(1,2,3,9);
test[8]=new Array(1,1,3,2);
//ein kleine 2D-array


//unsortierte ausgabe
for(var i=0;i<test.length;i++){
    
trace(test[i]);
}
trace("----------");
//unsortierte ausgabe


//---------------------------

//sortiereinstellung [spalte][0=aufsteigend/1=absteigend],[andere_spalte][0=aufsteigend/1=absteigend],...
var sortieren:Array=new Array([0,0],[1,1],[3,0]);

//rekursive sortierfunktion
function f_sort_rekusion(a,b,c){
    var 
c;
    if(
a[sortieren[c][0]]<b[sortieren[c][0]]){
        return ((
sortieren[c][1]==0)?(-1):1);
    }else if(
a[sortieren[c][0]]>b[sortieren[c][0]]){
        return ((
sortieren[c][1]==1)?(-1):1);
    }else{
        if(
sortieren.length>(c+1)){
            return 
f_sort_rekusion(a,b,(c+1));
        }else{
            return 
0;
        }
    }
}
//rekursive sortierfunktion

//hilfsfunktion
function f_sort_sub(a,b){
    return 
f_sort_rekusion(a,b,0);
}
//hilfsfunktion

//starte sortierung
test.sort(f_sort_sub);
//starte sortierung

//----------------------------------------------------

//sortierte ausgabe
for(var i=0;i<test.length;i++){
    
trace(test[i]);
}
//sortierte ausgabe 
oder geht das noch besser?
gruss m1cha
__________________
looser@www:~> su -l
Password:
root:~ #
root:~ # chmod 777 WorldWideWeb
root:~ # logout
looser@www:~>

Optimismus ist ein Mangel an Information!
m1cha ist offline   Mit Zitat antworten
Alt 04-05-2006, 11:12   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
das hat nichts mit rekursion zu tun und ich hatte dir die lösung schon beschrieben
Code:
var test=[];
test.push([2, 1, 3, 2]);
test.push([1, 1, 3, 2]);
test.push([5, 2, 2, 6]);
test.push([2, 1, 3, 6]);
test.push([1, 2, 3, 9]);
test.push([2, 1, 5, 2]);
test.push([1, 2, 4, 0]);
test.push([2, 8, 3, 8]);
test.push([1, 2, 3, 6]);
// 
function f_sort_sub(a, b) {
	if (a[0]<b[0]) return 1;
	else if (a[0]>b[0]) return -1;
	else {
		if (a[1]<b[1]) return 1;
		else if (a[1]>b[1]) return -1;
		else {
			if (a[2]<b[2]) return 1;
			else if (a[2]>b[2]) return -1;
			else return 0;
		}
	}
}
//
trace(test.join("\r"));
trace("----------");
test.sort(f_sort_sub);
trace(test.join("\r"));
und hier die komplette version ;-)
Code:
Array.prototype.fSortOn = function(rSortOn) {
	this.fSortOnSub = function(a, b) {
		var ret = 0, i = -3;
		while ((i += 3)<rSortOn.length && !ret) {
			var p = rSortOn[i];
			var s = rSortOn[i+1] == 'STR' ? String : Number;
			var r = rSortOn[i+2] == 'ASC' ? -1 : 1;
			ret = s(a[p])<s(b[p]) ? r : s(a[p])>s(b[p]) ? -r : 0;
		}
		return ret;
	};
	return this.sort(this.fSortOnSub);
};
ASSetPropFlags(Array.prototype, ["fSortOn"], 1);
//
var test = [];
test.push([2,  1, 3, 'Anna']);
test.push([1, 11, 3, 'Anna']);
test.push([5,  2, 2, 'Otto']);
test.push([2,  1, 3, 'Otto']);
test.push([1,  2, 3, 'Rolf']);
test.push([2,  1, 5, 'Anna']);
test.push([1, 12, 4, 'Alf']);
test.push([2,  8, 3, 'Paul']);
test.push([1,  2, 3, 'Otto']);
//
trace(test.join("\r"));
trace("----------");
test.fSortOn([0, 'NUM', 'ASC', 1, 'STR', 'DESC', 3, 'STR', 'ASC']);
trace(test.join("\r"));
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (04-05-2006 um 12:52 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 04-05-2006, 11:47   #5 (permalink)
*<):o)
 
Registriert seit: Mar 2003
Beiträge: 83
Exclamation

die funktion von mir namens "f_sort_rekusion" ist rekursiv. und die kann man für alles 2d-array zum sortieren benutzen. man braucht nur das array: var sortieren:Array=new Array([0,0],[1,1],[3,0]); anzupassen und schon sortiert das ding so wie man es will. das erste(spalte 0) zb. aufsteigend das zweite(spalte 1) absteigend und dann das dritte(spalte 3) wieder aufsteigend.

ohne gross irgendwelchen code zu änden und oder anzupassen. ist doch super.

oder findest du funktionen die so arbeiten (rekursiv) abartig?

der befehl "sortOn" arbeitet genau so. bis auf das bei dem befehl noch angaben zum inhalt gemacht werden können (inhalt als zahl/text) betrachten.

gruss m1cha
__________________
looser@www:~> su -l
Password:
root:~ #
root:~ # chmod 777 WorldWideWeb
root:~ # logout
looser@www:~>

Optimismus ist ein Mangel an Information!
m1cha ist offline   Mit Zitat antworten
Alt 04-05-2006, 12:16   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
"f_sort_rekusion" ist rekursiv
sorry, das habe ich nicht gesehen. ist super!

(rekursiv) abartig?
das habe ich nicht gesagt.
und es ist doch nicht rekursiv ;-) sicher, du hasst das so programmiert, aber ein array arbeitet man in einer for oder einer while-schleife ab.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (04-05-2006 um 12:20 Uhr)
hgseib 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 00:58 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele