Zurück   Flashforum > Flash > ActionScript > Spielkonzepte und Spieleprogrammierung

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-08-2009, 19:54   #1 (permalink)
+
 
Benutzerbild von captures
 
Registriert seit: Dec 2008
Beiträge: 28
performance - hitTest auf 100 mc's

hi zusammen.

in einem container sind 100 mc's (instanz: a1 - a100) die ich mit einem hitTest abfragen möchte.
wie macht man das am besten damit auch die performance ok bleibt??

lieben dank für tipps!

Geändert von captures (23-08-2009 um 20:08 Uhr)
captures ist offline   Mit Zitat antworten
Alt 24-08-2009, 12:57   #2 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 548
Mehrere Möglichkeiten, auch Kombinationen davon:
- Ein Raumaufteilungs-Algorithmus, z.B. Hanging Moss, Quad-Tree, BSP...
- Bounding-Volumes (z.B. AABB, Sphere) als Vorab-Test
- Brute Force (ohne Optimierung) ausprobieren, wie sehr die Performance überhaupt einbricht

Am besten nach diesen Stichworten googeln, es sind schon genug Romane darüber geschrieben worden.
joeydee ist offline   Mit Zitat antworten
Alt 25-08-2009, 16:00   #3 (permalink)
+
 
Benutzerbild von captures
 
Registriert seit: Dec 2008
Beiträge: 28
hört sich kompliziert an!

also so sieht meine abfrage aus:
ActionScript:
  1. keylist1.onKeyDown = function() {
  2.     pf.spieler.onEnterFrame = function() {
  3.  
  4. var mcs3 = [pf.coi3.c0, pf.coi3.c1, pf.coi3.c2, pf.coi3.c3, pf.coi3.c4, pf.coi3.c5, pf.coi3.c6, pf.coi3.c7, pf.coi3.c8, pf.coi3.c9, pf.coi3.c10, pf.coi3.c11, pf.coi3.c12, pf.coi3.c13, pf.coi3.c14, pf.coi3.c15, pf.coi3.c16, pf.coi3.c17, pf.coi3.c18, pf.coi3.c19, pf.coi3.c20, pf.coi3.c21, pf.coi3.c22, pf.coi3.c23, pf.coi3.c24, pf.coi3.c25, pf.coi3.c26, pf.coi3.c27, pf.coi3.c28, pf.coi3.c29, pf.coi3.c30, pf.coi3.c31, pf.coi3.c32, pf.coi3.c33, pf.coi3.c34, pf.coi3.c35, pf.coi3.c36, pf.coi3.c37, pf.coi3.c38, pf.coi3.c39, pf.coi3.c40, pf.coi3.c41, pf.coi3.c42, pf.coi3.c43, pf.coi3.c44, pf.coi3.c45, pf.coi3.c46, pf.coi3.c47, pf.coi3.c48, pf.coi3.c49, pf.coi3.c50];
  5.             //...bis pf.coi3.c99
  6. //
  7.             for (var i in mcs3) {
  8.                 var mc3 = mcs3[i];
  9.                 if (this.hitTest(mcs3[i])) {
  10.                     mc3.play()
  11.                 }
  12.             }
  13. //...
  14.  

hat jemand spontan verbesserungsvorschläge?
captures ist offline   Mit Zitat antworten
Alt 25-08-2009, 16:14   #4 (permalink)
Rookie_BS
 
Benutzerbild von Rookie_BS
 
Registriert seit: Sep 2004
Beiträge: 730
...

Warum schreibst du onEnterFrame das Array ständig neu?

Ansonsten for-Schleife == normal.

_mfg
__________________
Wenn Sie glauben Ihnen ist klar was ich gesagt habe - dann haben Sie mich missverstanden! Alan Greenspan
Rookie_BS ist offline   Mit Zitat antworten
Alt 25-08-2009, 16:37   #5 (permalink)
+
 
Benutzerbild von captures
 
Registriert seit: Dec 2008
Beiträge: 28
Zitat:
Warum schreibst du onEnterFrame das Array ständig neu?
hab ich jetzt aus dem OEF rausgenommen.

bringt ein verkürzen der pfade was?
> pf.coi3.c2 ZU p.c3.c2 ?
captures ist offline   Mit Zitat antworten
Alt 25-08-2009, 16:41   #6 (permalink)
Rookie_BS
 
Benutzerbild von Rookie_BS
 
Registriert seit: Sep 2004
Beiträge: 730
eher: nein.

Befüllen kannst du dein Array eigentlich auch per for-Schleife - nur so nebenbei.

_mfg

edit: ich habe anfänglich in den Thread gekuckt weil ich sehen wollte ob Andre ne
performantere Lösung zu bieten haben...
__________________
Wenn Sie glauben Ihnen ist klar was ich gesagt habe - dann haben Sie mich missverstanden! Alan Greenspan

Geändert von Rookie_BS (25-08-2009 um 16:46 Uhr)
Rookie_BS ist offline   Mit Zitat antworten
Alt 25-08-2009, 17:09   #7 (permalink)
+
 
Benutzerbild von captures
 
Registriert seit: Dec 2008
Beiträge: 28
Zitat:
Befüllen kannst du dein Array eigentlich auch per for-Schleife - nur so nebenbei.
wie würde das aussehen?
captures ist offline   Mit Zitat antworten
Alt 25-08-2009, 17:42   #8 (permalink)
Nix Wisser
 
Benutzerbild von nullidee
 
Registriert seit: May 2003
Ort: Würzburg, Kleinstadt
Beiträge: 3.510
PHP-Code:
var anzahl 60;
var 
mcs3 = [];
for(var 
i=0;i<anzahl;i++){
    
mcs3.push("pf.coi3.c"+i);
    
trace(mcs3);

__________________
nullidee

Abakus GT 10² Kugeln - 80"Leinwand - CARAN D´ACHE SUPRACOLOR®
nullidee ist offline   Mit Zitat antworten
Alt 25-08-2009, 19:09   #9 (permalink)
+
 
Benutzerbild von captures
 
Registriert seit: Dec 2008
Beiträge: 28
sieht gut aus aber jetzt funktioniert der hittest leider nicht mehr.
muss ich hier noch was abändern damit das mit dem neuen array funktioniert?

ActionScript:
  1. for (var i in mcs3) {
  2.                     var mc3 = mcs3[i];
  3.                     if (this.hitTest(mcs3[i])) {
  4.                         mc3.play()
  5.                        
  6.                     }
  7.                 }
oder liegt es daran das "pf" eine var für einen pfad ist? (meinpfad1.meinpfad2)

Geändert von captures (25-08-2009 um 19:10 Uhr)
captures ist offline   Mit Zitat antworten
Alt 25-08-2009, 19:22   #10 (permalink)
Nix Wisser
 
Benutzerbild von nullidee
 
Registriert seit: May 2003
Ort: Würzburg, Kleinstadt
Beiträge: 3.510
was gibt trace(mcs3[i]) aus?

aber kannst doch den richtigen Pfad gleich verwenden bei der Erstellung des Arrays
PHP-Code:
var anzahl 100;
var 
mcs3 = [];
for(var 
i=0;i<anzahl;i++){
    
mcs3.push("meinpfad1.meinpfad2.coi3.c"+i);
    
trace(mcs3);

__________________
nullidee

Abakus GT 10² Kugeln - 80"Leinwand - CARAN D´ACHE SUPRACOLOR®
nullidee ist offline   Mit Zitat antworten
Alt 25-08-2009, 22:39   #11 (permalink)
+
 
Benutzerbild von captures
 
Registriert seit: Dec 2008
Beiträge: 28
eigentlich stimmt alles aber es geht trotzdem nicht.
wie würde denn für dich der rest mit einer abfrage für einem hitTest drin aussehen?
captures ist offline   Mit Zitat antworten
Alt 25-08-2009, 23:00   #12 (permalink)
Nix Wisser
 
Benutzerbild von nullidee
 
Registriert seit: May 2003
Ort: Würzburg, Kleinstadt
Beiträge: 3.510
PHP-Code:
function check(){
    for(var 
n in mcs3){
        if (
this.hitTest(mcs3[n])) {
            
mcs3[n].play();
        }
    }

__________________
nullidee

Abakus GT 10² Kugeln - 80"Leinwand - CARAN D´ACHE SUPRACOLOR®
nullidee ist offline   Mit Zitat antworten
Alt 26-08-2009, 11:58   #13 (permalink)
+
 
Benutzerbild von captures
 
Registriert seit: Dec 2008
Beiträge: 28
funktioniert jetzt! vielen dank! ihr seid super!
captures 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:23 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele