tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
268
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    NoGFX NoGFX ist offline Mitglied Gold
    Registriert seit
    Nov 2002
    Beiträge
    141
    Ich habe folgendes Script gebastelt, dieses Skaliert MovieClips Dynamisch, je nach Distanz vom MovieClip zum Mauszeiger, nur scheint mir das etwas zu Resourcenlastig.

    Die Aktion wird aufgerufen, wenn sich die Maus bewegt - wenn der Mauszeiger nahe genug ist, wird eine onEnterFrame Methode aufgerufen, die angfängt das ganze Teil zu skalieren, ist es skaliert, wird die onEnterFrame Funktion beendet.

    Die onEnterFrame Funktion ist deswegen noch drin, da es, wenn man es nur über die onMouseMove Funktion steuert, teilweise eher ruckelig aussieht.

    Sooo...mir fällt spontan keine möglichkeit ein, das in irgendeiner Art und weiße Effizienter zu gestalten, und wenn man bedenkt, das diese Funktion öfter vorkommen wird (35-50x), dürfte das doch sehr lastig für den PC werden, wenn dann aufeinmal dutzende von onEnterFrames anfangen zu skalieren, und währenddessen noch dutzende onMouseMove Events ausgewertet werden...

    Script:
    PHP-Code:
    MovieClip.prototype.setAction = function()
    {
        var 
    maxDist:Number 60// Maximaler Mausabstand, um Scaling auszulösen
        
    var mult:Number 2.3// Scaling multiplikator
        
    var dist:Number Math.sqrt(Math.pow(Math.abs(_xmouse), 2) + Math.pow(Math.abs(_ymouse), 2)); // Errechnen der Distanz zu Clip);
        
    var newScale:Number// neue Scalinggröße
        
    var enterActive:Boolean false;
        
    this.onMouseMove = function()
        {
            
    dist Math.sqrt(Math.pow(Math.abs(this._xmouse), 2) + Math.pow(Math.abs(this._ymouse), 2));
            if (
    dist <= maxDist// Wenn Distanz zu MC kleiner als Maximale Distant, löse onEnterFrame aus
            
    {
                
    enterActive true;
                
    this.onEnterFrame = function()
                {
                    
    newScale 100 + (maxDist mult 0.5 dist mult); // Errechnen der neuen Scalings
                    
    this._xscale += (newScale this._xscale) / 5// Fading zum neuen Scaling
                    
    if (this._xscale <= 100// Sollte Skalierung kleiner als 100% sein, setze sie zurück auf 100%
                    
    {
                        
    this._xscale 100;
                    }
                    
    this._yscale this._xscale// Passe yScale and xScale an
                    
    if (this._xscale >= newScale && this._x <= newScale 1// Wenn (fast) newScale erreicht ist...
                    
    {
                        
    this._xscale newScale//...setze exakten newScale Skalierungswerte
                        
    this._yscale this._xscale;
                        
    enterActive false;
                        
    delete this.onEnterFrame// Beenden der onEnterFrame Funktion
                    
    }

                };
            }
            else
            {
                if(
    enterActive == true) {
                
    delete this.onEnterFrame;
                
    enterActive false;
                }
                
    this._xscale 100;
                
    this._yscale 100;
            }
        };

     

  2. #2
    Registriert seit
    Jun 2004
    Ort
    Zürich
    Beiträge
    1.359
    Blog-Einträge
    8
    Hallo,

    die onEnterFrames mit den Skalierungen dürften die Performance nicht matchentscheidend beeinträchtigen. Die Distanzberechnung hingegen könnte man vielleicht etwas eleganter lösen, indem du z.B. die effektive Formel erst dann anwendest, wenn die Maus in eine relevante Nähe des MovieClips kommt.
    Ideal für solche Sachen sind gitterbasierte Positionsberechnungen, da auch sehr performancesparend. Das genialste Teil dafür ist in meinen Augen Grant Skinners ProximityManager-Klasse, am besten pröbelst du damit ein wenig rum.

    An und für sich ist doch dein Skript aber in Ordnung. Gibts denn bei deiner *.swf Performance-Probleme?


    gruss
     

  3. #3
    NoGFX NoGFX ist offline Mitglied Gold
    Registriert seit
    Nov 2002
    Beiträge
    141
    Bisher gibt es noch keine Performanceprobleme, jedoch habe ich die Befürchtung, das sie später auftauchen werden.

    Aber ich nehme mir erstmal den Link zu Herzen und werde da mal reinschauen, danke!
     

Ähnliche Themen

  1. Effizienz Frage
    Von Der Wolf im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 29.08.10, 18:25
  2. Frage zur Effizienz
    Von kevkev im Forum Coders Talk
    Antworten: 5
    Letzter Beitrag: 24.04.06, 23:09
  3. Formularverarbeitung Effizienz steigern
    Von sirvival im Forum PHP
    Antworten: 2
    Letzter Beitrag: 28.02.06, 10:56
  4. GGT Effizienz
    Von Java/CppProgrammer im Forum Coders Talk
    Antworten: 3
    Letzter Beitrag: 05.02.05, 14:06
  5. Ich mal wieder,habe mal wieder eine Frage...
    Von Kuscheltier im Forum Photoshop
    Antworten: 3
    Letzter Beitrag: 16.09.01, 19:24