• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flex und AIR > Adobe AIR

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-04-2010, 21:19   #1 (permalink)
AIRcrobat
 
Registriert seit: Mar 2009
Ort: München
Beiträge: 78
Popup aus einer Komponente in WindowedApplication zentrieren

Hallo zusammen,

ich hänge momentan an folgendem kleinen Problem. Vielleicht seht ich auch nur auf dem Schlauch ...

Ich hab eine AIR-Anwendung, in der ich mehrere Komponenten (z.B. Group) und ItemRenderer definiert habe. Diese öffnen Popup-Fenster um Daten zu Editieren etc. Jetzt möchte ich diese zentrieren, aber mit PopUpManager.centerPopUp(titleWindowInstance); zentriere ich diese lediglich an der Komponente und nicht am Hauptfenster (also WindowedApplication).
Den Befehl mit vorangestelltem "parentApplication...." haut mir das Programm in Form eines Fehlers um die Ohren.

Vielen Dank,
Tom
TheChucky ist offline   Mit Zitat antworten
Alt 14-04-2010, 05:42   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Versuch mal:
PHP-Code:
PopUpManager.centerPopUp(this); 
  Mit Zitat antworten
Alt 14-04-2010, 16:17   #3 (permalink)
AIRcrobat
 
Registriert seit: Mar 2009
Ort: München
Beiträge: 78
Hi Holger,

danke für den Versuch, aber leider bekomme ich da folgenden Fehler:
Code:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
	at mx.managers::PopUpManagerImpl/centerPopUp()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\managers\PopUpManagerImpl.as:494]
	at mx.managers::PopUpManager$/centerPopUp()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\managers\PopUpManager.as:213]
...
Es muss doch irgendwie gehen, dass ich dem Popup sag: "Richte dich an dem größten Fenster aus" oder "Richte dich am Parent.Parent Fenster aus"

Grüß,
Tom
TheChucky ist offline   Mit Zitat antworten
Alt 27-04-2010, 15:30   #4 (permalink)
AIRcrobat
 
Registriert seit: Mar 2009
Ort: München
Beiträge: 78
Also ich bin hier leider immer noch nicht weitergekommen. Hat nicht noch jemand ne "kreative" Idee, wie man das lösen könnte, das ich ein Popup an der Main Application zentriert ausrichten kann?

Vielen Dank
Tom
TheChucky ist offline   Mit Zitat antworten
Alt 27-04-2010, 18:58   #5 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Ort: Oldenburg
Beiträge: 2.271
Zeig mal etwas mehr Code, beschreibe den Aufbau Deiner App. Habe jetzt grad nicht die Möglichkeit einen Test zu machen, aber eigentlich sollte es ohne probleme gehen ?!
__________________
Mein Blog
Freue mich über jeden Besucher. :)
Nico B. ist offline   Mit Zitat antworten
Alt 27-04-2010, 19:03   #6 (permalink)
GROLBA
 
Benutzerbild von tobee
 
Registriert seit: Jun 2007
Ort: Karlsruhe
Beiträge: 242
Vielleicht ist "this" der falsche Parameter?
Wie definierst du denn das Popup?
__________________
Werbeagentur Karlsruhe
tobee ist offline   Mit Zitat antworten
Alt 27-04-2010, 20:26   #7 (permalink)
AIRcrobat
 
Registriert seit: Mar 2009
Ort: München
Beiträge: 78
Hallo zusammen,

zur besseren Verständnis hab ich mal ein kleines Beispiel erstellt. Das Beispiel besteht aus 3 Dateien:

Beispiel.mxml
PHP-Code:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx" 
                       width="500" 
                       height="500" 
                       xmlns:local="*">
    <local:testComponent />
    
</s:WindowedApplication>
testComponent.mxml
PHP-Code:
<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
         width="200" 
         height="200" 
         backgroundColor="#CDC0C0">
    <fx:Script>
        <![CDATA[
            
            import mx.managers.PopUpManager;
            
            private function openPopup():void {
                var titleWindowInstance:TestWin = TestWin(PopUpManager.createPopUp(this, TestWin,*true));

                // HIER IST DAS PROBLEM
                PopUpManager.centerPopUp(titleWindowInstance);

            }
            
        ]]>
    </fx:Script>
    <s:Label text="Bitte klicken um Popup zu öffnen"  x="14" y="10"/>
    <s:Button x="65" y="30" label="Klicken" click="openPopup()"/>
</s:BorderContainer>
TestWin.mxml
PHP-Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark" 
                xmlns:mx="library://ns.adobe.com/flex/mx"
                showCloseButton="true"
                close="closePopup()">
    <fx:Script>
        <![CDATA[
            import mx.managers.PopUpManager;
            
            private function closePopup():void {
                PopUpManager.removePopUp(this);
            }
        ]]>
    </fx:Script>
    <mx:Canvas width="75" height="50">
        <s:Label x="20" y="10" text="Popup"/>
    </mx:Canvas>
</mx:TitleWindow>
Ich hoffe es ist jetzt klarer was ich vor habe.

Schönen Gruß euch,
Tom
TheChucky ist offline   Mit Zitat antworten
Alt 03-05-2010, 09:46   #8 (permalink)
AIRcrobat
 
Registriert seit: Mar 2009
Ort: München
Beiträge: 78
Scheint wohl in Flex / AIR nicht wirklich realisierbar sein oder? Schade eigentlich
TheChucky ist offline   Mit Zitat antworten
Alt 07-06-2010, 11:03   #9 (permalink)
AIRcrobat
 
Registriert seit: Mar 2009
Ort: München
Beiträge: 78
*Schieb* ...

Also das Problem besteht leider immer noch. Hat hier von den Experten keiner eine Idee, wie es klappen könnte?

Lg und vielen Dank
Tom
TheChucky ist offline   Mit Zitat antworten
Alt 30-07-2010, 01:07   #10 (permalink)
Neuer User
 
Registriert seit: Jul 2010
Ort: PLaNET EaRTH
Beiträge: 7
Hi Tom,

falls du die Lösung noch nicht gefunden hast, hier ist sie.
TestWin.mxml
PHP-Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark" 
                xmlns:mx="library://ns.adobe.com/flex/mx"
                showCloseButton="true"
                close="closePopup()"
                creationComplete="centerMe();">
    <fx:Script>
        <![CDATA[
            import mx.managers.PopUpManager;
            
            private function closePopup():void {
                PopUpManager.removePopUp(this);
            }
            private function centerMe():void {
                PopUpManager.centerPopUp(this);
            }
        ]]>
    </fx:Script>
    <mx:Canvas width="75" height="50">
        <s:Label x="20" y="10" text="Popup"/>
    </mx:Canvas>
</mx:TitleWindow>
__________________
Mir gefällt es, wenn Informationen an den richtigen Stellen sind...
artistmatrix.de

Geändert von BionicCube (30-07-2010 um 01:09 Uhr)
BionicCube ist offline   Mit Zitat antworten
Alt 30-07-2010, 18:19   #11 (permalink)
AIRcrobat
 
Registriert seit: Mar 2009
Ort: München
Beiträge: 78
Ne, ich hab bis heute noch keine funktionierende Lösung gefunden. Aber danke für deine Antwort. Ich werde das die Tage mal ausprobieren

Lg,
Tom
TheChucky ist offline   Mit Zitat antworten
Alt 30-07-2010, 19:24   #12 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 11.856
Was referenziert jeder über die this Referenz?
Omega Psi ist offline   Mit Zitat antworten
Alt 30-07-2010, 22:13   #13 (permalink)
Neuer User
 
Registriert seit: Jul 2010
Ort: PLaNET EaRTH
Beiträge: 7
Zitat:
Zitat von Omega Psi Beitrag anzeigen
Was referenziert jeder über die this Referenz?
na wie du selbst schon sagst, weil es eben die REFERENZ auf das "eigene" (aktuelle instanz) objekt (in dem man sich befindet, oder wie man das auch immer nennt) ist.

wenn ich mich nicht irre bekommt man ne fehlermeldung um die ohren geworfen, wenn man das popup von außen zentrieren versucht.

ne möglichkeit wäre vermutlich noch, die methode "centerMe()" public zu machen und die dann von der application aus aufzurufen.

aber das hier:
var titleWindowInstance:TestWin = TestWin(PopUpManager.createPopUp(this, TestWin,*true));

// HIER IST DAS PROBLEM
PopUpManager.centerPopUp(titleWindowInstance);

funktioniert imho eben nicht und ergibt ne fehlermeldung.
(ohne das jetzt unmittelbar zu testen, aber ich erinnere mich noch dunkel selbst damit gekämpft zu haben.)

greetz
__________________
Mir gefällt es, wenn Informationen an den richtigen Stellen sind...
artistmatrix.de

Geändert von BionicCube (30-07-2010 um 22:16 Uhr)
BionicCube ist offline   Mit Zitat antworten
Alt 30-07-2010, 22:44   #14 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 11.856
Man hat doch die Referenz auf die Application. Die kann man doch als parent setzen
Code:
function createPopUp(className:Class):IFexDisplayObject
{
  var application:DisplayObject = Application.application as DisplayObject;
  var pupUp:IFlexDisplayObject = IFlexDisplayObject(PopUpManager.createPopUp(application, className));
  PopUpManager.centerpopUp(popUp);

  return popUp;
}
Oder funktioniert das nicht?
Omega Psi ist offline   Mit Zitat antworten
Alt 30-07-2010, 23:13   #15 (permalink)
Neuer User
 
Registriert seit: Jul 2010
Ort: PLaNET EaRTH
Beiträge: 7
Zitat:
Zitat von Omega Psi Beitrag anzeigen
Oder funktioniert das nicht?
sorry, keine ahnung ob es so auch funktioniert und möchte das jetzt nicht ausprobieren, da ich mir noch arbeit mit nach hause genommen habe und montag deadline ist. d.h. ich darf mir das WE damit um die ohren schlagen

sieht aber aus als könnte es funktionieren. nur ohne test, dafür bin ich noch nicht geübt genug um das jetzt so aus dem stehgreif auszusagen.
würd mich aber auch nicht wundern, wenn es so nicht funktioniert - habe damals lange rum probiert bis es ging

was ich aber weiss ist, die von mir vorgeschlagene methode von oben (und natürlich von agedoubleju) funktioniert und ist schnell gehackt. ok, das schnell gehackte ist nicht immer das beste, aber es tuts für den moment

nur mal so nachgefragt. wo liegt denn da der unterschied ob man this nimmt oder Application.application? das hier "as DisplayObject" ? ist das nicht eh schon ein DisplayObject?

greetz
__________________
Mir gefällt es, wenn Informationen an den richtigen Stellen sind...
artistmatrix.de

Geändert von BionicCube (30-07-2010 um 23:27 Uhr)
BionicCube 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Label von Button Komponente zentrieren mike_moriati Komponenten und SmartClips 1 06-05-2008 16:08
Style eine Komponente innerhalb einer Komponente ändern mildesign Komponenten und SmartClips 2 09-09-2006 16:13
Popup link in einer Textarea Komponente m.friedli Flash MX 2004 0 13-02-2004 13:28
Popup link in einer Textarea Komponente m.friedli Flash MX 2004 2 12-02-2004 13:41
allgemeines Skript einer Komponente dauerhaft ändern (Scrollbar Komponente) Duckster Komponenten und SmartClips 2 06-02-2003 11:18


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele