[Flash/AS] [AS3] Mouse Wheel - Zoom

Dieses Thema im Forum "Webentwicklung" wurde erstellt von StrikeFreedom, 11. April 2011 .

  1. 11. April 2011
    [AS3] Mouse Wheel - Zoom

    Hi Leute,

    ich versuche grade eine Karte zu realisieren. Ich bin grad an einem Punkt angekommen wo ich nicht weiter weiß.

    Die Karte soll man mit dem Mausrad Zoomen können.

    Mein Code sieht so aus:

    PHP:
    stage . addEventListener ( MouseEvent . MOUSE_WHEEL Zoom );

    function 
    Zoom ( e : MouseEvent ): void  {
        var 
    mod : Number  100 ;
        
    Karte . scaleX  +=  e . delta  mod ;
        
    Karte . scaleY  +=  e . delta  mod ;
    }
    Jetzt kommt der Witz. Wenn ich es als Flash 10 exportiere funktioniert das nicht. Wenn ich es jedoch als AIR 1.1 exportiere funktionirt es dann doch.

    Was muss ich ändern damit es mit Flash 10 geht?

    Ich bin für jede Hilfe dankbar
     
  2. 11. April 2011
    AW: [AS3] Mouse Wheel - Zoom

    geht doch.
    PHP:
    package  {
        
        
    import flash . display . MovieClip ;
        
    import flash . events .*;
        
    import flash . geom .*;

        public class 
    demo  extends  MovieClip  {
            public var 
    Karte : MovieClip  = new  MovieClip ();
            
            public function 
    demo () {
                
    Karte . graphics . beginFill ( 0xFF0000 ); 
                
    Karte . graphics . moveTo ( 0 0 );
                
    Karte . graphics . lineTo ( 40 0 );
                
    Karte . graphics . lineTo ( 40 30 );
                
    Karte . graphics . lineTo ( 0 30 );
                
    Karte . graphics . lineTo ( 0 0 );
                
    addChild ( Karte );
                
                
                
    stage . addEventListener ( MouseEvent . MOUSE_WHEEL Zoom );
                
            }
            

            public function 
    Zoom  ( e : MouseEvent ): void  {
                var 
    mod : Number  100 ;
                
    Karte . scaleX  +=  e . delta / mod ;
                
    Karte . scaleY  +=  e . delta / mod ;
            }
        }
    }
     
  3. 11. April 2011
    AW: [AS3] Mouse Wheel - Zoom

    Bei dem Code hab ich genau das gleiche Problem. Könnte das vieleicht an Mac OS X liegen? Oder bin ich einfach zu doof ^^?
     
  4. 11. April 2011
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: [AS3] Mouse Wheel - Zoom

    magst du mal den wesendlichen teil extrahieren und zur verfügung stellen,
    sodass man ein tut daraus machen kann.

    // edit
    kann mir nicht vorstellen, dass das am system liegen soll.

    hier mal mein demo
    No File | www.xup.in
     
  5. 11. April 2011
    AW: [AS3] Mouse Wheel - Zoom

    Ich bin wohl einfach zu doof.

    Das ist mein Actionscript:

    PHP:
    import flash . net . URLRequest ;
    import flash . net . URLLoader ;
    import flash . display .*;
    import flash . events .*;
    import flash . geom .*;

    stage . addEventListener ( MouseEvent . MOUSE_WHEEL Zoom );

    function 
    Zoom  ( e : MouseEvent ): void  {
        var 
    mod : Number  100 ;
        
    Karte . scaleX  +=  e . delta / mod ;
        
    Karte . scaleY  +=  e . delta / mod ;
    }

    var 
    i : Number  0 ;
    var 
    xml : XML ;

    setChildIndex ( Info numChildren - 1 );  

    function 
    addInfo ( event : MouseEvent ): void 
     

    }


    function 
    addInfoFromNr ( event : MouseEvent ): void 
     

    }

    function 
    makeBunt ( xml : XML ) {
        

    }


    function 
    loadHandler ( e : Event ): void  {
        var 
    code : String  e . target . data ;
        
    xml  = new  XML ( code );
        
    makeBunt ( xml );
    }

    var 
    req : URLRequest  = new  URLRequest ( 'musterstadt.xml' );
    var 
    loader : URLLoader  = new  URLLoader ();
    loader . load ( req );
    loader . addEventListener ( Event . COMPLETE loadHandler );

    // DRAG DER KARTE

    Karte . addEventListener ( MouseEvent . MOUSE_DOWN startMove );
    Karte . addEventListener ( MouseEvent . MOUSE_UP stopMove );

    function 
    startMove ( e : MouseEvent ): void  {
      
    Karte . startDrag ();
    }

    function 
    stopMove ( e : MouseEvent ): void  {
      
    Karte . stopDrag ();
    }

    // Zoom per Button

    Steuerrung . Plus . addEventListener ( MouseEvent . MOUSE_DOWN fPlus );

    function 
    fPlus ( e : MouseEvent ): void  {
        
    Karte . scaleX  Karte . scaleX  0.1 ;
        
    Karte . scaleY  Karte . scaleY  0.1 ;
    }

    Steuerrung . Minus . addEventListener ( MouseEvent . MOUSE_DOWN fMinus );

    function 
    fMinus ( e : MouseEvent ): void  {
        
    Karte . scaleX  Karte . scaleX  0.1 ;
        
    Karte . scaleY  Karte . scaleY  0.1 ;
    }
    Bitte nicht zu viel über den Code meckern. Ich bin Anfänger in sachen Flash ^^

    Edit: Vieleicht würde auch einfach eine Demo datei von dir Reichen damit ich das ganze verstehe.

    Edit2: So deine Demo-Datei funktioniert bei mir nicht. Ich habe genau das gleiche Problem mit der Datei wie mit meiner. Die enthaltene SWF datei erzeugt ein Rechteck was ich nicht Zoomen kann. Wenn ich es neu Veröffentliche als AIR funktioniert es.

    Es scheint echt am Mac OS zu liegen ^^

    Edit3


    Okay wenn ich die datein (meine und deine) im Flash Player öffne funktioniert das Zoomen .

    Aber als Embedd in einer HTML datei leider nicht :-(
     
  6. 11. April 2011
    AW: [AS3] Mouse Wheel - Zoom

    und was ist wenn du mal auf das swf klickst (demit der focus auf das swf ist).
    dann sollte der zoome gehen.

    hier mal ein JS um den focus auf dein swf zu legen.

    Code:
    <script type="text/javascript">
     window.onload = function(){
     document.getElementById("myswf").focus();
     }
    </script>
    
    myswf musst umändern.
    es muss die id von deinem embed element sein.

    // edit
    firefox mag nicht, ie geht.
     
  7. 11. April 2011
    AW: [AS3] Mouse Wheel - Zoom

    Das funktioniert leider auch nicht. Gibt es vieleicht eine Sicherheitseinstellung die das Abfangen des Mausrades verhindert? Ich bin echt am verzweifeln.

    Ich bin in 2 Stunden zu hause an meinem Windows rechner da kann ich dann Kontrollieren ob es vieleicht doch am Mac OS liegt. Das hoffe ich ja fast weil ich echt nicht mehr weiter weiß.
     
  8. 11. April 2011
    AW: [AS3] Mouse Wheel - Zoom

    da komm dann ich wieder in spiel:
    in firefox kannst du swf-objekte leider nicht mit getElementById referenzieren ^^

    aber so gehts:
    Code:
    function getFlashMovieObjectById(id) {
     if (window.document[id])
     return window.document[id];
     
     if (navigator.appName.indexOf("Microsoft Internet") == -1)
     if (document.embeds && document.embeds[id])
     return document.embeds[id];
     else
     return document.getElementById(id);
    }
     
  9. 11. April 2011
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: [AS3] Mouse Wheel - Zoom

    Danke für eure Hilfe... aber...

    Das bringt leider garnichts. Es will einfach nicht die Eingabe über die Maus verarbeiten. Das Event wird nicht mal gestartet. Hab ein trace eingebaut und Flash tut so als ob ich garnichts mit der Maus mache.

    In einer halben Stunde bin ich zuhause und sitz an einem vernünftigen PC und dann sehen wir obs klappt unter Win.

    Hier mal die SWF - Funktioniert das Zoomen bei euch?
    https://www.xup.in/dl,14371323/Flash.zip/
     
  10. 11. April 2011
    AW: [AS3] Mouse Wheel - Zoom

    firefox 4:

    HTML:
    <!DOCTYPE html>
    <html>
     <head>
     <title>Karte</title>
     </head>
     <body>
     <embed src="karte.swf" menu="false" width="600" height="400" type="application/x-shockwave-flash"></embed>
     </body>
    </html>
    funktioniert auf anhieb ohne javascript
     
  11. 11. April 2011
    AW: [AS3] Mouse Wheel - Zoom

    So war grad noch auf einer Atom Demo xD

    Bin jetzt Zuhause und genau die Datei die auf der Arbeit an einem Mac OS X rechner nicht funktioniert hat geht jetzt.

    Also denke ich das es entweder am OS liegt oder an der Flash version. Das werde ich dann nochmal nachprüfen.

    Aber laut meinen Recherschen im Internet sieht es so aus das Mac OS X damit ein Problem hat.

    Danke für eure Hilfe
     
  12. 12. April 2011
    AW: [AS3] Mouse Wheel - Zoom

    hab was gefunden, das weiter hilft.
    AS3.0 MouseWheel on Mac OS X &laquo; pixelbreaker

    warum mac probleme macht weiß ich nicht.
    ich glaube grob, dass das event nicht ans swf übergeben wird,
    daher hat man ein JS gebastel um dies zu tun.
    korregiert mich falls ich mich irre.

    es bestätigt mir aber mal wieder, dass ich mir nie nen mac holen werde.
     
  13. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.