• Blackberry DevCon – Register Now!
Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-06-2010, 12:00   #1 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 5.546
Question FlashPlayer10 3D blockiert MouseEvents?!

Hallo zusammen!

Ich habe das Problem, dass in einem DisplayObject keine MouseEvents mehr erzeugt werden, wenn dieses mit den FlashPlayer10-eigenen 3D-Funktionen transformiert wurde und eine der folgenden Voraussetzungen gegeben ist:
  • Man fügt innerhalb des verzerrten Objekts eine Maske hinzu.
  • Man ändert die PerspectiveProjection für das Objekt.

Da ich aber genau diese Konstellation für mehrere 3D-verzerrte Scrollbereiche benötige, hier meine Fragen:
  • Ist das wirklich so, oder mache ich irgendwo einen blöden Fehler?
  • Wenn ja, gibt es einen Workaround für den einen oder anderen Fall (oder gar für beide)?
  • Besteht das Problem auch im FP 10.1, oder wurde es dort schon behoben?
  • Sollte man diesen Bug bei Adobe melden?

Ich habe das Problem mal in einer Testklasse isoliert (Die beiden Problembereiche sind markiert. Wenn man beide auskommentiert, funktionieren die MouseEvents - nicht jedoch sobald eines aktiv ist):
PHP-Code:
package {
    
    
import flash.display.Shape;
    
import flash.display.Sprite;
    
import flash.events.Event;
    
import flash.events.MouseEvent;
    
import flash.geom.PerspectiveProjection;
    
import flash.utils.getTimer;
    
    public class 
Test3D extends Sprite{
        
        
//// 
        
        
private var w            :uint 66;
        private var 
button        :Sprite;
        private var 
maskShape    :Shape;
        
        
///////////////////////////////////////////
        
        
public function Test3D() {
            
super();
            
            
// Background
            
            
graphics.beginFill(01);
            
graphics.drawRect( -w, -ww*2w*2);
            
            
            
// Button
            
            
addChildbutton = new Sprite() );
            
button.alpha .5;
            
button.buttonMode true;
            
button.graphics.beginFill(0xFFFFFF1);
            
button.graphics.drawCircle00);
            
            
button.addEventListener(MouseEvent.ROLL_OVER, function( e:Event ) {
                
trace("over" e.target);
                
button.alpha 1;
            } );
            
            
button.addEventListener(MouseEvent.ROLL_OUT, function( e:Event ) {
                
trace("out" e.target);
                
button.alpha .5;
            } );
            
            
            
// Mask
            
            
addChildmaskShape = new Shape() );
            
maskShape.graphics.beginFill(0x00FF00.25);
            
maskShape.graphics.drawCircle(00w);
            
            
// MASKE ZUWEISEN ////////////////////////////
            
mask maskShape;
            
/////////////////////////////////////////////
            
            
            // Rotation
            
            
addEventListener(Event.ENTER_FRAMEmove);
            
        }
        
        
///////////////////////////////////////////
        
        
private function move(e:Event):void {    
            
            var 
projection:PerspectiveProjection = new PerspectiveProjection();
            
projection.fieldOfView 90 45 Math.singetTimer() / 500 );
            
            
// PROJEKTION ZUWEISEN //////////////////////
            
transform.perspectiveProjection projection;
            
/////////////////////////////////////////////
            
            
rotationX++;
            
rotationY++;
        }
        
        
////
        
    
}


Schonmal vorab, vielen Dank für Eure Hilfe!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 07-06-2010, 15:21   #2 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 5.546
Niemand eine Idee?

Wäre auch für einen Link auf eine Referenz oder ein Post dankbar, dass diese Enschränkung beschreibt...
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 07-06-2010, 15:44   #3 (permalink)
Klugscheisser
 
Registriert seit: Jun 2001
Ort: Düsseldorf
Beiträge: 1.353
Hattest Du den schon gefunden? Da steht zumindest ein Workaround drin:
Loosing children interactivity after setting perspectiveProjection | franto.com

...und es hat anscheinend nichts mit der Maske zu tun

Geändert von T.Decay (07-06-2010 um 15:46 Uhr)
T.Decay ist offline   Mit Zitat antworten
Alt 07-06-2010, 16:12   #4 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 5.546
Danke für den Link, T.Decay!

Wenn man (wie dort beschrieben) die PerspectiveProjection nicht dem verzerrten Objekt selbst sondern einem übergeordneten DisplayObjectContainer zuweist, funktionieren die MouseEvents wieder.

Das Problem mit der Maske besteht aber weiterhin: Eine Maske in 3D-verzerrten DisplayObjects scheint für alle Unterelemente die MouseEvents zu blockieren.
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 07-06-2010, 16:26   #5 (permalink)
Klugscheisser
 
Registriert seit: Jun 2001
Ort: Düsseldorf
Beiträge: 1.353
Könntest Du nicht als Maske ein identisch verzerrtes DisplayObject nehmen und den parent damit maskieren?
T.Decay ist offline   Mit Zitat antworten
Alt 07-06-2010, 16:30   #6 (permalink)
Neuer User
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.673
das einzige, was mir dazu einfällt wäre die Maske evtl auch auf den gesamten Container zu legen und die Transformation des Zielobjektes zu übernehmen
evtl erzeugst du einen Container, schmeisst dort alle Masken rein und definierst das ganze als Maske für dein 3D-Objekt.
ActionScript:
  1. // bei einer Änderung der Perspektive
  2. maske.transform.matrix3D = zielObjekt.transform.matrix3D;
__________________
greetz Thomas
in letzter Zeit frag ich mich immer ofter, soll ich den Leuten bei ihren Problemen helfen, oder einfach nur die gestellten Fragen beantworten?
Ich kann die FLA-Datei nicht öffnen, ich habe noch kein CS5 !!!
thomas_E ist offline   Mit Zitat antworten
Alt 07-06-2010, 16:39   #7 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 5.546
Die Lösung scheidet leider aus, da es sich bei den zuverzerrenden Inhalten um per XML-befüllbare Objekte mit verschiedenen Scrollbereichen (dafür brauch ich die Masken) handelt.

Außerdem steht in der Hilfe:
Zitat:
Note: The 3D tools cannot be used on objects on mask layers and layers containing 3D objects cannot be used as mask layers. For more information about the 3D tools, see 3D graphics.
... was diese Lösung wohl unmöglich macht.

Da diese Bereiche aber eigentlich nur in einer planen Ansicht funktionieren müssen, werd ich das Problem wohl umgehen können, indem ich für kurze Zeit den 3D-Modus aussetzte und erst beim nächsten Übergängen wieder starte.

Was aber sehr gurkig ist, weshalb ich jedem dankbar bin, der eine bessere Lösung für dieses Problem hat ...
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (07-06-2010 um 16:44 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 07-06-2010, 16:59   #8 (permalink)
Klugscheisser
 
Registriert seit: Jun 2001
Ort: Düsseldorf
Beiträge: 1.353
Evtl. doch beides verzerren, Masken-Sprite in eine BitmapData drawen und die dann als Maske verwenden?
T.Decay ist offline   Mit Zitat antworten
Alt 07-06-2010, 17:11   #9 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 5.546
Das geht wie gesagt nicht:

Es gibt mehrere verzerrte Sprites, in denen jeweils mehrere Objekte liegen, die dynamisch generiert werden und von mehreren Masken maskiert werden.

Das auseinander zu friemeln wäre bestenfalls ziemlich kompliziert und würde, falls überhaupt möglich, die ganze Anwendung langsam und ziemlich fehleranfällig machen - zumal das bei Bitmaps ja über BlendMode.ERASE laufen müsste.
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (07-06-2010 um 17:12 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
flash3d, flashplayer10, mask, mouseevent, perspectiveprojection

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Flash CS3] MouseEvents gtotehc Flash Einsteiger 5 27-05-2009 14:57
Probleme beim Senden von Variablen in AS2 und FlashPlayer10 Plugin easterner Flash und Datenbanken 0 25-02-2009 18:18
MouseEvents: Down & Move broud ActionScript 3 4 04-03-2008 14:02
MouseEvents JohannaKD Flex programmieren 0 01-10-2007 16:41
Schleifenproblem bei mouseevents Detty ActionScript 1 3 27-06-2003 01:47


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:09 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele