Zurück   Flashforum > Flash > Flash erweitern > Komponenten und SmartClips

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-03-2007, 23:02   #1 (permalink)
the listener
 
Benutzerbild von NewBit
 
Registriert seit: Aug 2001
Ort: Halle (Saale)
Beiträge: 307
Alert Komponente & Events

Hallo zusammen,

kann mir Jemand sagen, warum das hier:

PHP-Code:

var myListener:Object;
myListener.complete = function(evt_obj:Object) {
    
trace("complete: " evt_obj);
};

var 
my_win:Object mx.controls.Alert.show("Hallo Welt");
win.addEventListener("complete"myListener); 
trotz der Vererbungskette:

MovieClip > UIObject-Klasse > UIComponent-Klasse > View > ScrollView > Window-Komponente > Alert

nicht funktioniert? Neben complete erhalte ich auch auf andre Events (load, resize etc.) keinen Zugriff.

Lg Newbit
NewBit ist offline   Mit Zitat antworten
Alt 14-03-2007, 01:50   #2 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Eine Alert Box dürfte die events die du aufführst gar nicht besitzen!
Da sie nichts lädt, man diese nicht resizen kann...

Was ist denn dein eigentliches Vorhaben?
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 14-03-2007, 09:20   #3 (permalink)
the listener
 
Benutzerbild von NewBit
 
Registriert seit: Aug 2001
Ort: Halle (Saale)
Beiträge: 307
Ich hatte vor einiger Zeit ein kleines Hilfesystem auf Basis der Alert Classe gebaut was ich hier auch schon einmal im Forum angebracht hatte:

@see
Parameterübergabe an Alert-Callback ...

Jetzt habe ich das Ganze projektbezogen wieder aufgegriffen, die Klasse umgestrickt und stehe for dem Problem ICONS die bei der Generierung des jeweiligen Fensters als Linkidentifier übergeben werden zu Positionieren.

Da es sich bei meiner Lösung höchstwarscheinlich um ein Timing-Problem handelt, wollte ich nun mittels Listener abwarten bis das Alert Fenster erzeugt wurde um dann via:

PHP-Code:
myWin.content.icon_mc._x WERT // bzw.
myWin.content.icon_mc._y WERT 
das Icon zu Positionieren. (habe noch keinen eleganteren Weg finden können)

Interessanter Weise werden die Werte via trace ausgegeben (auch ohne Listener) aber sie werden nicht gesetzt!

Bearbeitet man die SWF nachträglich mit XRAY und manipuliert die die oben genaten Parameter funktioniert alles so wie es soll (daher die Vermutung Timing Problem).

Laut Vererbungskette sollte die Alert Classe über jede menge Events (load, resize, complete, etc.) verfügen, nur werden die alle samt nicht dispatched obwohl sie laut Docu verfügbar sein sollten?

Wie auch immer, ich suche einfach eine Möglichkeit besagte Icons geziehlt zu positionieren und das will nicht wie ich will

Das Ganze macht mich ein wenig Ratlos, daher wenn Du Ideen hast währe das super!

LG Newbit
NewBit ist offline   Mit Zitat antworten
Alt 14-03-2007, 17:30   #4 (permalink)
the listener
 
Benutzerbild von NewBit
 
Registriert seit: Aug 2001
Ort: Halle (Saale)
Beiträge: 307
...keiner eine Idee wie man zugriff auf die icon eigenschaften & events bekommen kann? Ich hänge ziehmlich fest.
NewBit ist offline   Mit Zitat antworten
Alt 14-03-2007, 17:33   #5 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Zitat:
keiner eine Idee wie man zugriff auf die events bekommen kann?
Gar nicht.
Du kannst keine Insstanzen von einem Alert Komponente erstellen.
Da man ja in einem Programm auch immer nur eine "MessageBox" droppen kann, hat diese Klasse eine statische Methode zum anzeigen einer AlertBox.
Allerdings kann man mehrere Alert Boxen aufrufen, was eigentlich nicht gehen sollte, meiner Meinung nach.
Somit kannst du dich da auch nicht als listener anmelden.

Poste ansonsten mal ein kleines Beispiel mit dem icon problem, dann muss ich mir nicht selber eins bauen.
Komponente kannst du ja aus der Bibo wieder rauswerfen, damit die Datei nicht zu groß wird.
__________________
ERROR: Signature is too large

Geändert von rendner[i] (14-03-2007 um 17:39 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 15-03-2007, 09:40   #6 (permalink)
the listener
 
Benutzerbild von NewBit
 
Registriert seit: Aug 2001
Ort: Halle (Saale)
Beiträge: 307
...hmm wenn man keine Listener registrieren kann, warum finden sich dann all die Features in der Dokumentation?

...ist es nicht so, das Alert.show einen Pointer auf das Pop-Up Object zurückliefert und damit der Zugriff auf sämptliche Methoden, Eigenschaften und Events den "normale" Weg nehmen könnte? Ich hab das ganze mal gebaut und es scheint auch alles ganz normal zu funktionieren.

Die Datei findest Du im Anhang , einfach die Alert-Componente in die Bibo und testen.

PHP-Code:

// 1. alert classe laden
import mx.controls.Alert;

// 2. eventhandler definieren
function clickHandler(evt_obj:Object):Void
{
    switch(
evt_obj.detail)
    {
        case 
Alert.YES:
            
trace(Alert.yesLabel);
        break;
        case 
Alert.NO:
            
trace(Alert.noLabel);
        break;
    };
};

// 3. alertbox generiern
var my_win:Alert Alert.show("Hallo Welt","Messagebox",Alert.YES|Alert.NO,null,clickHandler,"alertIcon",Alert.NO);

// 4. eigenschaften des icon_containers auslesen
trace(my_win.content.icon_mc._x);
trace(my_win.content.icon_mc._y);

// 5. eigenschaften des icon_containers setzen & erneut auslesen
my_win.content.icon_mc._x 0;
my_win.content.icon_mc._y 0;
trace(my_win.content.icon_mc._x);
trace(my_win.content.icon_mc._y);

//6. zweites icon von hand nachladen & manipulieren
my_win.content.attachMovie("alertIcon","icon"my_win.content.getNextHighestDepth());
my_win.content.icon.color = new Color(my_win.content.icon);
my_win.content.icon.color.setRGB(0x00ff00);
my_win.content.icon._x 5;
my_win.content.icon._y 12
Schaut man sich die ausgabe an, kann funktioniert alles wie es soll. Die Objekte sind da, Werte werden richtig zugewiesen, aber im Falle des icons erfolgt kein update!

Benutzt man XRAY und manipuliert den Icon_container funktioniert es! Was ist hier faul drann?

LG NewBit
Angehängte Dateien
Dateityp: zip alert_icon.zip (5,3 KB, 6x aufgerufen)
NewBit ist offline   Mit Zitat antworten
Alt 15-03-2007, 10:02   #7 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Kanns gerade nicht angucken, aber wie willst du anschliesend dein manipuliertes Alert Fenster anzeigen?

(Anhang ist leider als Flash 8 Version gespeichert...)
__________________
ERROR: Signature is too large

Geändert von rendner[i] (15-03-2007 um 10:04 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 15-03-2007, 10:39   #8 (permalink)
the listener
 
Benutzerbild von NewBit
 
Registriert seit: Aug 2001
Ort: Halle (Saale)
Beiträge: 307
Zitat:
aber wie willst du anschliesend dein manipuliertes Alert Fenster anzeigen?
...gar nicht, weil es schon da ist! Das ist ja der Witz dabei. Man generiert eine Alert Box und manipuliert sie im Anschluss. So wie man einen Movieclip erzeugt, und in der Build Funktion neben der Instance auch deren eigenschaften anpasst.

...daher ja auch der Listener, den kann man ja nur wie Du richtig sagtes einer Object-Instance zuweisen. Und was ist

PHP-Code:
my_win:Alert 
...richtig, ein Objekt! Darum verstehe ich das verhalten eben nicht.
Ich glaube ich drehe hier noch durch. Kann doch nicht so schwierig sein die Eigenschaften eines MC zu setzen.

Bezüglich der Datei, leg einfach einen MC in der Bibo an mit Linkidentifier "alertIcon", dann Alert Koponente in Bibo und code in den ersten Frame, fertig. Habe leider nur den 8-ball hier .


LG NewBit
NewBit ist offline   Mit Zitat antworten
Alt 15-03-2007, 10:51   #9 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Die Objekte sind da, Werte werden richtig zugewiesen, aber im Falle des icons erfolgt kein update!
Was soll denn passieren? Bei mir wird ein grünes Rechteck gezeigt, wie im Script vorgesehen... Oder hab ich das nicht richtig verstanden?
  Mit Zitat antworten
Alt 15-03-2007, 11:06   #10 (permalink)
the listener
 
Benutzerbild von NewBit
 
Registriert seit: Aug 2001
Ort: Halle (Saale)
Beiträge: 307
@agedoubleju

...willkommen in der runde!

...eigentlich gent es darum, das "standard" icon eines Alert Fensters zu steuer/positionieren.

...der Ansatz war das Fenster zu erzeugen (@see 1-3) und die Instance zu manipulieren (@see 4-5).

...Schritt 6 und somit das grüne icon, war nur noch einmal ein Rückversicherung das besagtes Zielobjekt ...

PHP-Code:
my_win:Alert 
... ansprechbar ist und Objekte ganz normal hinzugefügt und manipuliert werden können.

... was nicht nachvollziehbar ist, ist hingegen das verhalten des Alert standart-icon-containers "icon_mc"!

... in diesem Zusammenhang war die Vermutung aufgekommen, das es update/timing Probleme geben könnte ...

... was auf Grund des Stammbaums der Alert Klasse die EVENTS aufs Programm rief, wobei eben auch Fehlanzeige bei rauskam und sich die Frage stellte:

Wie man a) an das Icon herankommt & b) die geerbten Features nutzen kann?

Ich hoffe das fasst es noch einmal zusammen.

LG NewBit

Edit:

Das man an den Standard-Icon-Container herankommt und in auch Manipulieren kann, beweisst der Test mit XRAY! Da kann man auch Filter etc. auf das Alert Fenster anwenden, was nebenbei bemerkt von Hand gebaut auch nicht tut!


Geändert von NewBit (15-03-2007 um 11:15 Uhr)
NewBit ist offline   Mit Zitat antworten
Alt 15-03-2007, 11:41   #11 (permalink)
the listener
 
Benutzerbild von NewBit
 
Registriert seit: Aug 2001
Ort: Halle (Saale)
Beiträge: 307
... hab noch ein wenig getestet. Interessanter Weise funktioniert folgendes scheinbar problemlos:

PHP-Code:
my_win.content.icon_mc.color = new Color(my_win.content.icon_mc);
my_win.content.icon_mc.color.setTransform({ ra50rb150ga40gb112ba12bb90aa40ab70}); 
...wenn sich die Farbe verändern lässt muss es mit dem Rest auch gehen!
...warum will er das nicht fressen?

PHP-Code:
my_win.content.icon_mc._x 0;
my_win.content.icon_mc._y 0
LG NewBit
NewBit ist offline   Mit Zitat antworten
Alt 15-03-2007, 12:14   #12 (permalink)
the listener
 
Benutzerbild von NewBit
 
Registriert seit: Aug 2001
Ort: Halle (Saale)
Beiträge: 307
...sooooooo! Also wenn das kein updateproblem ist, weis ich auch nicht!

ich habe das ganze mal wie folgt angepasst und man staune es geht!

PHP-Code:
// 1. alert classe laden
import mx.controls.Alert;

// 2. eventhandler definieren
function clickHandler(evt_obj:Object):Void
{
    switch(
evt_obj.detail)
    {
        case 
Alert.YES:
            
trace(Alert.yesLabel);
        break;
        case 
Alert.NO:
            
trace(Alert.noLabel);
        break;
    };
};

// 3. alertbox generiern
var my_win:Alert Alert.show("Hallo Welt","Messagebox",Alert.YES|Alert.NO,null,clickHandler,"alertIcon",Alert.NO);

// 4. standard icon container der alert box
var target_mc:MovieClip my_win.content.icon_mc;

// 5. eigenschaften des icon_containers auslesen
trace(target_mc._x);
trace(target_mc._y);

// 6. eigenschaften des icon_containers setzen & erneut auslesen
// position
target_mc._x 50;
target_mc._y 50;
trace(target_mc._x);
trace(target_mc._y);
// color
target_mc.color = new Color(target_mc);
target_mc.color.setTransform({ ra50rb150ga40gb112ba12bb90});
// alpha
target_mc._alpha 50;
// size
target_mc._width 15;
target_mc._height 15;
// enter frame - DER KRACHER !!!
target_mc.t:Number 0;
target_mc.onEnterFrame = function()
{
    
target_mc._x 5;
    
target_mc._y 12;     
    if (
t>1){
        
delete target_mc.onEnterFrame
    
};
    
target_mc.t++;
}; 
...zugegeben ist es nicht die eleganteste Variante, aber sie tut im fall der X/Y Property genau was ich möchte.

...nur komisch das alle anderen Eigenschaften sofort ansprechen? Liegt das eventuell daran, dass unser ICON erst aus der Bibliothek geladen weden muß?

...immerhin ein Ansatz.

LG der NewBit
NewBit ist offline   Mit Zitat antworten
Alt 15-03-2007, 12:45   #13 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Liegt das eventuell daran, dass unser ICON erst aus der Bibliothek geladen weden muß?
Naja, das ist ja schon länger bekannt, dass das attachen von MCs aus der Bibliothek und gleichzeitig das Neuzeichnen auf der Bühne meist länger als ein Frame dauert.

Ich setze deshalb grundsätzlich nach jedem attachMovie einen erzwungenen Framewechsel mit einem onEnterFrame-Event, bevor ich auf den attachten MC zugreife. Bei Komponenten, die sowieso immer ziemlich viel Zeit zum Refreshen benötigen, sollte in Verbindung mit einem attachMovie generell ein Framewechsel abgewartet werden.
  Mit Zitat antworten
Alt 15-03-2007, 12:53   #14 (permalink)
the listener
 
Benutzerbild von NewBit
 
Registriert seit: Aug 2001
Ort: Halle (Saale)
Beiträge: 307
Zitat:
Naja, das ist ja schon länger bekannt, dass das attachen von MCs aus der Bibliothek und gleichzeitig das Neuzeichnen auf der Bühne meist länger als ein Frame dauert.
...jo wenn die liebe Komponente mit "attachMovie" arbeitet?!

...dagegen spricht, dass eigenschaften wie "_alpha", "_width" oder "_height" unmittelbar gesetzt werden!

...kann man sehen wenn man den onEnterFrame auskommentiert.

...also ganz koscha ist das net!

LG der NewBit
NewBit ist offline   Mit Zitat antworten
Alt 15-03-2007, 13:00   #15 (permalink)
the listener
 
Benutzerbild von NewBit
 
Registriert seit: Aug 2001
Ort: Halle (Saale)
Beiträge: 307
...da fällt mir ein, das genau zu diesem Zweck ein WINDOW den Event COMPLETE dispached wenn es bereit ist.

...were es nicht am sinnvollsten/saubersten diesen Event abzufragen? Nur blöd das unser ALERT zwar laut Doku & Vererbungskette über diesen Event verfügt, aber jeder Versuch ein Feedback zu bekommen scheitert...

...tcha und genau da drehen wir uns gerade im kreis!

LG der NewBit
NewBit 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 aus.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 13:33 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele