Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 31-08-2005, 00:08   #1 (permalink)
AAI
 
Benutzerbild von AAI
 
Registriert seit: May 2004
Beiträge: 327
f... focus

mein erstes mal mit 'SetFocus'

wenn nur ein textfeld, und das script
dazu direkt in der Hauptzeitleiste -
alles ok. Jetzt ist das Projekt aber
etwas größer und dadurch etwas
verschachtelt.

Das folgene Script ist dem Original
nachempfunden und funktioniert
ebenfalls nicht - naja das ist ge-
logen - mit einer Wahrscheinichkeit
von ca. 5% funktioniert es. Doch das
ist verständlicher Weise nicht akzep-
tabel.

ActionScript:
  1. // Eingabefenster
  2. string_popup_.duplicateMovieClip("string_popup",2100)
  3. string_popup_._visible = 0
  4. string_popup._visible = 0
  5. // ok-button
  6. string_popup.mc_bu_ok.txt="OK"
  7. string_popup.mc_bu_ok.bu.onPress = function () {
  8.     string_popup._visible = 0
  9.     }
  10.  
  11. // -----------------------------------------------------
  12.  
  13. bu.onPress = function(){
  14.     open_string_popup ()
  15.     }
  16.  
  17.  
  18. function open_string_popup () {
  19.     popup=1
  20.     string_popup._visible = 1
  21.     string_popup.txt = ""
  22.     Selection.setFocus("string_popup.txt")
  23.  
  24.    
  25.     };

Hänge die Datei mal an, da kann sich
jeder mal versuchen...
...bitte
Angehängte Dateien
Dateityp: zip no_fokus.zip (25,6 KB, 3x aufgerufen)
AAI ist offline   Mit Zitat antworten
Alt 31-08-2005, 06:27   #2 (permalink)
notzucht
 
Benutzerbild von shorty
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 2.939
Lightbulb

Nicht böse sein, aber bevor man in deinem Anhang alles debugt hat, ist es schneller einen neuen zu tippeln

Tipp: Selection.setFocus(deinPfadZurTextFeldInstanz), und nicht "textfeld.txt"

und bevor du weiter fragst, drück einfach mal "F1" und lies dir die entsprechende flashilfedatei dazu durch!

BTW: ich habs mal mit attachMovie gemacht, aber da lag der fehler nicht ...
PHP-Code:
this.stop();
// -----------------------------------------------------------------------
btOpen.onRelease = function() {
    
_root.attachMovie('mcPopUp''mcPopUp'2100);
    
_root.mcPopUp.txtInput.text 'mich hat der focus erwischt';
    
Selection.setFocus(_root.mcPopUp.txtInput);
}; 
in der Bibliothek liegt ein mit Verknüpfung versehener MovieClip namens "mcPopUp", in diesem befindet sich das eingabetextfeld mit Instanznamen "txtInput", dass ist wichtig, um das textfeld mit setFocus(); anzusprechen.


shorty
Angehängte Dateien
Dateityp: zip setFocus.zip (5,4 KB, 6x aufgerufen)
__________________
.
Flex in a week | Viertel vor halb nach Vollmond | ^^°.°^^ | Waltz with Bashir
.

Geändert von shortybmc (31-08-2005 um 06:41 Uhr)
shorty ist offline   Mit Zitat antworten
Alt 31-08-2005, 17:57   #3 (permalink)
AAI
 
Benutzerbild von AAI
 
Registriert seit: May 2004
Beiträge: 327
shortybmc,

dein Anhang, die swf - da passiert
nichts, die fla - kein mx.

Zur schreibweise von setFocus -
Flash-Hilfe:
ActionScript:
  1. Selection.setFocus("myClip.myVar");
  2. Selection.setFocus("_root.myClip.myVar");
txt ist myVar - was dagegen?

...und das funktioniert auch soweit. Steht
setFocus aber in einem Zusammenhang, wie
von mir genutzt, gehts nicht mehr!

Zitat:
Nicht böse sein, aber bevor man in deinem Anhang alles debugt hat, ist es schneller einen neuen zu tippeln
Was stimmt mit dem Code nicht? Habe
dort alles so nachkonstruiert, wie im
Original, um dem Fehler abrufbar zu
machen.

Ist es ein Bug? oder...

Noch einmal zusammengefasst: realisiert
werden soll ein Fenster(string_popup), das
bei Knopfdruck geöffnet wird und im Text-
feld darin soll der Cursur blinken(Fokus) -
am besten, an der letzten Stelle.

Sollte das schon mal jemand erfolgreich
umgesetzt haben, so wird er aufgefordert,
den Code hier umgehend zu veröffentlichen!)
AAI ist offline   Mit Zitat antworten
Alt 01-09-2005, 09:52   #4 (permalink)
notzucht
 
Benutzerbild von shorty
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 2.939
Lightbulb

Zitat:
Ist es ein Bug?
Der Bug sitzt meistens vor'm Monitor... (sorry)

Im Anhang, jetzt ist es MX format, und die Einfügemarke, die ganz nebenbei gesagt etwas "fast" ganz anderes ist, als der Focus, bzw. diesen erweiter, sitzt da wo sie soll.


Schau dir mal bitte die gesamte Selection-Klasse an. dort gibts noch mehr, als nur setFocus(); zulesen...

Anbei noch ein tipp zu deinem CodeHaufen:

Wenn das das original script ist, schreib es um. Wie im Anhang zusehen, geht es ziemlich leicht, und mit nur 4 Zeilen code, dein popup auf die bühne zu holen, den focus auf das textfeld darin zu lenken, und die einfügemarke dort zu positionieren, wo du sie haben möchtest.


shorty
Angehängte Dateien
Dateityp: zip setFocus.zip (5,0 KB, 6x aufgerufen)
__________________
.
Flex in a week | Viertel vor halb nach Vollmond | ^^°.°^^ | Waltz with Bashir
.

Geändert von shortybmc (01-09-2005 um 10:48 Uhr)
shorty ist offline   Mit Zitat antworten
Alt 01-09-2005, 18:55   #5 (permalink)
AAI
 
Benutzerbild von AAI
 
Registriert seit: May 2004
Beiträge: 327
shortybmc,

du nennst mich bug!?
du nennst mein werk codehaufen!?

das ist ok

...denn als ich dein Beispiel öffnete,
war mir klar: das ist kein Idiot.

Ich las den Code aufmerksam durch
und schrieb meinen Codehaufen um.

und siehe da ...

...nichts. Der erwartete blinkende
Balken im Textfeld war nicht da. Was
war da los?

Eine Sache habe ich nicht aus deinem
Code übernommen - die Funktion des
Buttons.

onRelease: geht
onPress: geht nicht

... also wenn das kein Bug ist... oder
steht das irgendwo?

Auf jeden Fall DANKE, shortybmc.
AAI ist offline   Mit Zitat antworten
Alt 01-09-2005, 23:05   #6 (permalink)
notzucht
 
Benutzerbild von shorty
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 2.939
Wink

AAI - das war wirklich nicht böse gemeint °LACH°, falls es so angekommen ist, hier ein copy & paste script, mit ausführlichem kommentar in jede zeile + anhang ... zu wiedergutmachung

script, z.B. in der _root deines filmes (SB:2)
PHP-Code:
this.stop();
/*
    das folgende script, brauchst du nur auf deinen gewählten button zu 
    refferenzieren. der rest steht im event, vollständig auskommentiert.
    
    damit das popup in der bibliothek angesprochen werden kann, muß es
    eine verknüpfung besitzen, so gehts:
    
    bibliothek öffnen, rechtsklick auf "mcPopUp", menuepunkt "Verknüpfung"
    dann 2 häckchen bei:
    --> Export für Actionscript
    --> In erstes Bild exportieren
    
    fertig
*/
// -----------------------------------------------------------------------
btOpen.onRelease = function() {
    
// (tl = timeline) hier legst du fest, auf welchser zeitleist
    // dein popup erscheinen soll
    
var tl _root;
    
// x position deines popups
    
var posX 30;
    
// y position deines popups
    
var posY 10;
    
// hier wird dein popup aus der bibliothek geholt
    
tl.attachMovie('mcPopUp''mcPopUp'2100);
    
// das popup auf x-achse positionieren
    
tl.mcPopUp._x posX;
    
// das popup auf y-achse positionieren
    
tl.mcPopUp._y posY;
    
// hier dem textfeld der text zugewiesen
    
tl.mcPopUp.txtInput.text "mich hat der focus erwischt";
    
// dann der focus auf das textfeld gesetzt
    
Selection.setFocus(tl.mcPopUp.txtInput);
    
// und letztendlich noch die blinkende einfügemarke an das ende
    // des textes im Textfeld txtInput portiert
    
Selection.setSelection(Selection.getCaretIndex(), Selection.getEndIndex());
    
// jetzt mach mal in der bibliothek einen doppelklick auf "mcPopUp", da
    // gehts weiter, erstes Schlüsselbild (auch SB genannt)  :-)
}; 
script im mcPopUp (SB:1)
PHP-Code:
this.stop();
// ------------------------------------------------
btPopUp.onRelease = function() {
    
// hier kannst du deine aktionen einfügen -----
    // z.B. popup schließen
    
removeMovieClip(this._parent);
    
// oder einfach einen trace befehl
    
trace('weg bin ich...');
    
// oder z.B. auf der _root ein stop setzen
    // _root.stop();
    // und und und. deiner kreativität sind hier
    // keine grenzen gesetzt :-)
}; 
wenns jetzt immer noch nicht funktioniert, dann weis ich auch nicht.


shorty
Angehängte Dateien
Dateityp: zip setFocusFull.zip (6,6 KB, 9x aufgerufen)
__________________
.
Flex in a week | Viertel vor halb nach Vollmond | ^^°.°^^ | Waltz with Bashir
.
shorty ist offline   Mit Zitat antworten
Alt 01-09-2005, 23:36   #7 (permalink)
AAI
 
Benutzerbild von AAI
 
Registriert seit: May 2004
Beiträge: 327
shortybmc,

kein Grund für eine Entschuldigung

Dein Script ist sehr schön ausformuliert,
war aber nicht unbedingt nötig, denn ich
verstehe jede einzelne Zeile.

Der Grund, weshalb dein Script funktioniert
ist, dass du die Funktion mit 'onRelease'
aufrufst. "Meine" Funktion wird mit 'onPress'
aufgerufen - und da kommt kein Fokus!
Setze ich das 'onPress' in deinen Code,
geht sie genauso nicht! - Und andersrum
setz 'onRelease' in "meinen" Code - alles ok.
Also es funktioniert (Im letzten Beitrag ist
dieser Teil wohl etwas kurz gekommen).

Ich sehe keinen logischen Zusammenhang
zwischen onPress/Release und setFocus!
AAI ist offline   Mit Zitat antworten
Alt 02-09-2005, 01:25   #8 (permalink)
notzucht
 
Benutzerbild von shorty
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 2.939
Hmmm, ne wirklich logische erklärung hab auch ich nicht dafür, aber es liegt wohl daran, dass der Focus in dem Moment wo man den Button per onPress betätigt auf den Button refferenziert wird. Bei onRelease scheint der Button den Focus zu verlieren, und ihn somit für z.B. das textfeld bzw. die nächste aktion freizugeben.

vieleicht stolpert ja einer von den cracks hier vorbei, und erklärts uns richtig ...
__________________
.
Flex in a week | Viertel vor halb nach Vollmond | ^^°.°^^ | Waltz with Bashir
.
shorty 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



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

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


Copyright ©1999 – 2012 Marc Thiele