| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Banned Registriert seit: Sep 2003
Beiträge: 2.071
| Arrays Dynamisch erstellen, die ich mit schleife auslesen kann
Ich hab folendes Problem ich bastle gerad an einer art "map" editor (für ein rollenspiel also das mir strings schreibt die ich dann wieder auslesen kann aus einer text datei um sie als Karte zu verwenden) dieser editor soll mir mit einem mouse listener angibt auf welchen mc ich gklickt habe (ich errechne das aus der x und y position der mouse) , das klappt auch soweit nun möchte ich für jede "Linie" also y position ein array haben in dem ich einen wert speichern soll (in diesem fall _root.mcgoto(hier noch statisch angegeben) dieses array möchte ich dynamisch erstellen (es soll dann nachher mit einer schleife ausgelesen werden dir werte durch , getrennt werden und ausgetracert werden so das ich damit eine txt datei beschreiben kann) soweit bin ich allerdings noch nicht soll nur dem verständniss dienen das Problem ist das ich die Array nicht dynmaisch erstellen kann bzw nicht einmal in einer schleife erstellen kann und sie dann im mouselistener weiter verwenden kann siehe folgende beispiele: ActionScript:
^^^^^^^das funktioniert nicht gibt mir zum beispiel zurück: 16 19 // wären x und y position der mouse und wäre richtig undefined yr=1 xr=1 // wäre undefined für den inhalt des arrayfeldes aber yr und xr (y sowie -koordinate des angesprochenen mc´s) sind korekt undefined // ich habe wie oben zu sehen auf den mc geklickt der auf koordinaten position 1,1 liegt also müsste es ein array mit dem namen yeditarray1 geben! _______________________________________ sooo und das hier funktioniert nur teileweise: ActionScript:
rückgabe ist 16 19 // wieder richtig für x und y der mouse position 1 yr=1 xr=1 // wert 1 (also der wert von _root.mcgoto wurde eingetragen und die koordinaten richtig errechnet undefined // aber im yeditarray1[1] ist immer noch nix weil nicht vorhanden da der mouse listener bei jedem neuen klick aufs neue die funktion aufruft kann ich das eh nicht so machen wie im letzten beispiel da er mir sonst jedesmal ein neues array zaubert , bzw das vorhanden "leert" (überschreibt) und alles vorherigen werte weg sind zumal ich auch noch die arrays nachher per for schleife weiter verwenden also in einen string schreiben will um so einen string zu erhalten den ich zusammen mit den anderen strings die aus den anderen arrays (yeditarray2, yeditarray3.... die auf selbe weise erstellt wurden) austracern lassen will um sie in eine txt datei zu kopieren. ich hoffe man hat verstanden wo mein problem liegt und jemand weiss eine lösung Gruss Sascha EDIT: Ja ich hatte vorher alles ohne "Number" geht auch nicht! Geändert von projecktx (21-09-2004 um 16:18 Uhr) |
| | |
| | #2 (permalink) |
| Schläfer Registriert seit: Oct 2003
Beiträge: 105
| Code: if (myArray == undefined) {
myArray = new Array();
}
myArray.unshift(myData); ![]() Was genau du allerdings willst, hab ich jetzt nicht so ganz verstanden. Scheint ein wenig verkompliziert zu sein ![]() Gruß Pesse
__________________ Pesse's Blog |
| | |
| | #3 (permalink) |
| Banned Registriert seit: Sep 2003
Beiträge: 2.071
|
hmm das hilft mir nicht wirklich weiter... also nochmal kurz zur erklärung: Ich bastle gerad an einem rollenspiel.. aufbau der landschaft: ich habe einen MC in dem sind 30 schlüsselbilder drin jedes schlüsselbild steht für einen untergrund bzw landchaft(wald, wiese, meer, strand...) dieser mc ist 25 * 25 pixel gross und mein "spielfeld" ist 675 * 575 Pixel array gross daraus ergeben sich 27*23 sprites ich Dupliziere nun diesen Movieclip mit duplicateMovieclip an die entsprechenden stellen so entsteht ein koortdinaten system 1,1|2,1|3,1|4,1.... 1,2|2,2|3,2|4,2.... 1,3|2,3|3,3|4,3.... 1,4|2,4|3,4|4,4.... . . . diese mc´s lasse ich dann durch ein zweidimensionales array (welche vorher durch daten aus eine textdatei die wie folgt aussieht) zeile1,2,12,4,23,13,25........ zeile2,5,6,15,3,4,5,23...... undso weiter gefüllt wurde zu einem bestimmten frame springen also würde für den obogen fall das mc 1,1 zu frame 2 springen das mc 2,1 zu frame 12, das mc 3,1 zu frame 4..... das mc 1,2 zu frame 5, das mc 2,2 zu frame 6 und so weiter soweit klar???? da es aber müssig ist die "karte" der landschaft nur mit zahlen in einer textdatei zu erstellen (zumal das ganze spielfeld nachher auch noch 675*575 (also 25*25 jeweils volle spielfeldgrössen) also 575 strings mit jeweils 675 zahlen gross wäre... wollte ich einen MAPEDITOR erstellen um die karte zu zeichen ... zu dem zweck würde in einer variable (hier _root.mcgoto) eine zahl gespeichert... (zu der der frame dann nachher springen soll) also errechne ich mir aus der mousposition und dem teiler 25 die position des mcs das sich unter der mouse befindet wenn ich da drauf geklickt habe und nöchte nun die zahl die unter _root.mcgoto gespeichert ist in ein array eintragen, das benannt ist nach der y koordinate des mcs das sich beim klick unter der mouse befindet also im einfachsten beispiel: ich klicke auf mc 1,1 also wäre der zu bschreibende array der array "yeditarray1" und darin das feld [1] .... bei mc auf koordinate 2,1 waäre es ebenfalls array "yeditarray1" aber feld [2] das beschrieben werden müsste mit dem wert von _root.mcgoto bei mc auf koordinate 1,2 wäre es jedoch array "yeditarra2" das beschrieben werden müsste und darin das feld [1] sooo nun möchte ich diese dynamisch erstellten arrays nachher in jeweils einen string zurückverwandeln (per for schleife) und dies ganzen strings dann austracern lassen bzw in ein dynamisches textfeld ausgeben so das ich sie kopieren und dann in eine textfile einfügen kann um diese für das eigentliche spiel als kartenvorlage laden zu lassen, was dann oben angesprochene txt file wär : also: zeile1,2,12,4,23,13,25........ //inhalt von yeditarray1 zeile2,5,6,15,3,4,5,23...... //inhalt von yeditarray2 und so weiter ... puh ich hoffe nun ist es etwas klarer daher hilft mir dein ansatz nicht weiter weil er zeigt mir nur wie ich ein array erstellen kann und was anhängen aber nicht wie ich "yeditarray"+YkoordinateDesMc´s erstelle so das ich nachher in einer schleife dieses auslesen kann Gruss Sascha Geändert von projecktx (21-09-2004 um 17:32 Uhr) |
| | |
| | #4 (permalink) |
| _//\\#//\\_ Registriert seit: Jan 2003
Beiträge: 7.060
| PHP-Code: wenn nicht, dann sags halt nochmal. grz |
| | |
| | #5 (permalink) |
| Banned Registriert seit: Sep 2003
Beiträge: 2.071
|
ich hab es jetzt mit nem 2 dimensionalen array gelöst... weiss der geier wo der fehler war entweder hat ich nen denkfehler oder es liegt an dem listener event.... das problem war einfach das ich bei der ausgabe von trace(this["yeditarray"+i][1]) //ergebniss 1 und bei trace(yeditarray1[1]) //ergebniss undefined hatte wie gesagt habs nun anders gelöst... und funktioniert..... thx für die mühe.... ich bastle da jetzt seit sonntag morgen dran (also an dem rollenspiel bzw der grafichen darstellung davon) und so langsam nerven mich die array geschichten ne andere frage... ich lade mit LoadVars nun die neue liste rein und lass das geladene objeckt splitten (4 oder 5 mal pro schleifendurchlauf) dies über 2 ineinanderliegenden schleifen also for (i=1; i<575; i++){ for (j=1; j<675; j++){ ...... gibts da irgendwo ne begrenzung??? weil bei ca. 100 mal 50 funktioniert das ganze bei 575 * 675 bekomme ich die fehlermeldung Der Computer wird durch die ausführung eines scripts in dem film verlangsamt, soll diese script weiter ausgeführt werden JA NEIN Gruss Sascha |
| | |
| | #6 (permalink) |
| flachzange Registriert seit: Jun 2003 Ort: berlin
Beiträge: 3.932
|
deine schleifen sind falsch. da du eine feldgröße von 25x25 pixeln hast, musst du auch nur 675/25 bzw 575/25 durchgänge machen. btw: ich würde dir empfehlen die feldgröße auf ein maß einzustellen das teilbar bzw für rechner verträglicher ist, also 16, 32 etc. wenn du dir tile based games ansiehst wirst du merken das das standard ist. edit: naja die schleifen sind bedingt falsch. aber auf jeden fall für flash 2 much.
__________________ Geändert von binary blade (21-09-2004 um 22:41 Uhr) |
| | |
| | #7 (permalink) |
| Banned Registriert seit: Sep 2003
Beiträge: 2.071
|
nöl meine chleifen sind nicht falsh... ich kann mich ja in dem array noch bewegen... also 675 und 575 sind schon richtig weil das GESAMMTE spielfeld 25*25 der ANGEZEIGTEN spielfeldgrösse ist... und da 27(anzahl der sprites pro ANGEZEIGTEM spielfeld in x richtung)*25(anzahl der vollen ANGEZEIGTEN spielfelder in x richtung)ist ... ist 675 sprites im GESAMMTEN SPielfeld ist richtig und 23(anzahl der sprites pro ANGEZEIGTEM spielfeld in y richtung)*25 (anzahl der vollen ANGEZEIGTEN spielfelder in y richtung wenn man sie aneinander legt) ist... für y 575 SPRITES im GESAMMTEN SPIELFELD richtig... wenn ich sagen wir 100* 50 sprites in das array lade und dann splite ist es kein problem dann kann ich knapp 5 volle spielfelder in x richtung wamndern (1 sprite pro schrit) und ca 2 volle spielfelder in y richtung.. die datei wird geladen geplitet in das array eingetragen und es ist kein problem jeweils einen sprite in eine richtung zu gehen und sich so durch das 2 dimensionale array zu scrolen... bei 675 * 575 sprites allerdings hängt sich das flash auf mit oben besagter fehlermneldung nochmal zu den daten: GRÖSSE eine Sprites : 25*25 Pixel ANGEZEIGTE Spielfeld grösse : 27*23 sprites ANZEIGE GRÖSSe auf dem monitor 675*575 PIXEL (675/25=27sprites und 575/25=23sprites) GEPLANTE SPIELFELDGRÖSSE insgesamt 675*575 Sprites (und die liegen in einer text datei ist die Textdatei nur 100*50 sprites gross wird alles geladen bei 675 +575 fehlermeldung(...wir durch script velangsamt ....) Gruss Sascha Geändert von projecktx (21-09-2004 um 22:56 Uhr) |
| | |
| | #8 (permalink) |
| flachzange Registriert seit: Jun 2003 Ort: berlin
Beiträge: 3.932
|
ehm ja 675*575 Sprites (also MC's) sind wenn ich nicht wieder auf dem schlauch stehe etwas mehr als 380.000 clips. wenn ich mir also in gedanken rufe das flash schon bei der animation von mc's die ich an einer hand abzählen kann in die knie geht, stimmt da schonmal was nicht. ![]() lösung ist das du die clips anzeigst die zu sehen sind plus eine reihe für jede richtung in die du gehen kannst. wenn du eine reihe weitergehst werden die nächsten nachgeladen. werf mal nen blick hier drauf, falls du's noch nicht kennst: Gamepackage
__________________ |
| | |
| | #9 (permalink) |
| Banned Registriert seit: Sep 2003
Beiträge: 2.071
|
hmmmm ist immer noch niicht verständlich ich sehe es schon... das Gesammte spielfeld hat 675*575 Sprites!!!!!! Davon SICHTBAR sind jeweils nur 27*23 also öhm 621 wenn ich richtig gerechnet habe!!! und dein avatar steht in der mitte vom spielfeld ... wird allerdings noch geändert wie gesagt arbeiote erst seit sonntag dran.... schaus dir selber an ich lads mal hoch.... KLICK-DEMOVERSION... schau selber wie ichs gemacht hab dteuerung entweder mit den cursor tasten oder mit den pfeilen oben rechts aber ich habs jetzt getestet ich bekomme jetzt ca 675*130 sprites gesammt hin... werd wohl auch nachladen müssen mal schauen wie ichs aufteile am besten nur in 5 horizontale spielebenen das wären dann 5 textfiles mal oben genannten 675*130.... ich habs auch schon bis 675*160 getestet ging auch aber nur einmal beim nächsten versuch mit 675*190 hing er sich wieder auf und danach musste ich bis 675*130 runter gehen bis es wieder ging... wie auch immer schau halt selber mal... die karte ist jetzt 680*130 Sprites gross.... sag mir mal ob du da nen ladefehler wegen script bekommst und wie der erste eindruck so ist... aber wie gesagt hab erst 2 tage was dran gebastelt mehr als rumlaufen und ner quadratischen landschaft ist noch nicht! Gruss Sascha Edit: ps das laden dauert etwas ... denke so 10 sekunden, hab noch keinen preloader drin EDIT2: hopala hab gerad gesehen das ich da die version hoch geladen hab wo teilweise der Map editor schon eingebaut is... naja so kannste wenigstens ein bischen drin "Rummalen" na der baut dann nur 7 felder ich nenns mal "wiese" ein aber so kannste markieren und sehen das das ding wirklich 680*130 felder gross ist
Geändert von projecktx (22-09-2004 um 01:34 Uhr) |
| | |
| | #10 (permalink) |
| flachzange Registriert seit: Jun 2003 Ort: berlin
Beiträge: 3.932
|
kann ich nicht viel zu sagen, sieht alles noch ziemlich roh aus. was mir am fiesesten ins auge sticht ist, das die tiles wenn ich nach oben gehe zu einem wilden haufen werden. aber ich denke das kommt alles noch. hab mal diesen loop hier getestet: for (i=1; i<100000; i++) trace(i); dabei kommt flash auf meinem 1ghz athlon mächtig ins schwitzen, wenn ich mehr durchgänge mache krachts mal eben. möglicherweise hängts mit der framerate zusammen. ka. aber was ich noch gerne verstehen würde: versuchst du jetzt 675*575 clips auf der bühne zu platzieren oder nur die sichtbaren?
__________________ |
| | |
| | #11 (permalink) |
| Banned Registriert seit: Sep 2003
Beiträge: 2.071
|
also eigentlich wollte ich die ganzen 675*575 felder >>>>laden<<<..... davon dann aber nur 27*23 anzeigen so wie es jetzt ist!! der sichtbare bereich bleibt also gleich.... wollte verhindern das ich mal nachladen muss, aber das lässt sich wohl nicht verhindern... wie gesagt 680*130 FELDER bekomme ich immer geladen bei mehr bekomme ich dann ne fehlermeldung dieser wilde haufen oben sind momentan alles möglichen sprites die ich darstellen kann wollte testen wie drin wirken und dann evtl welche wieder rausschmeissen...... wie gesagt die karte ansich ist noch roh da kommen noch landschaften hin also wiesen wälder berge täler städte tempel hölen, möglichkeiten duch städte zu laufen in nachgeldaenen´swf....mit leuten zu reden kämpfe aus zu fechten, handel zu treiben..... , schifffahrten ..... all sowas, vom charakter her solls sowas werden wie ultima 4 falls du mal nen atari XL hattest und rollenspiele kennst weisst du was ich meine.. meinte eigentlich so vom aufbau selber her... der bg und vor allendingen die "blauen bälle) da hinter den steuer pfeilen und der windrose... der rest kommt ja alles noch Gruss Sascha |
| | |
| | #12 (permalink) |
| flachzange Registriert seit: Jun 2003 Ort: berlin
Beiträge: 3.932
|
hatte nur das vergnügen mit ultima 8 und 9. wobei ultima 8 heute noch eines meiner lieblingsspiele ist. nur hab ich meine ollen disketten verlegt und weiß nicht obs auf winXP läuft, sonst würd ich jetzt ne runde zocken ![]() wie gesagt, wenn du die nötigen reihen/zeilen (1-2) nach- bzw. entlädst machst du nix falsch. ist ja unsinn tausende clips zu laden die man eh nicht sieht. zum spiel ansich: ok die genannten makel sind entschuldigt. was mir nicht gefällt ist die steuerung. es wäre besser wenn man eine taste halten kann und trotzdem noch mit den anderen steuern kann. aber das machst du bestimmt auch noch
__________________ |
| | |
| | #13 (permalink) |
| Banned Registriert seit: Sep 2003
Beiträge: 2.071
|
werd ich eh müssen, sobald man in sädten mit leuten kommunizieren muss und es dann an die texteingabe geht sollte man auch die cursortasten benutzen können zur texteingabe... etc... Danke für deine kritik... bis es fertig ist wirds sicher noch einige zeit dauern ich wollt nur erstmal die steuerung , die laderoutinen, eine grobe karte und das design bauen, seit dem atari hab ich keine spiele mehr gebastelt und das ist imemerhin schon 16 jahre her, da gabs flash noch nicht und das topmodel unter den pc´s war der 286er mit 8mb ram ![]() Gruss Sascha EDIT: zu den clips laden die man eh nicht sieht... naja ich hätte es schöner gefunden wenn nicht zwischen durch mal ne wartezeit von 10 sekunden ist... so wie es aussieht werd ich wohl mindestens 5 teile karten brauchen.... wenn ichs horizontal und vertikal teile kommts im ungünstigsten fall hin das jemand an einer bestimmten stelle 4 mal laden muss wenn er nur kurz im kreis geht.. also werd ich mich auf entweder horizontal oder vertikal beschränken.... Geändert von projecktx (22-09-2004 um 02:16 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |