Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-07-2004, 19:17   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2004
Beiträge: 8
Rechnung gesucht. Geht um ne Art Untertitel.

Hi,

hab folgendes Problem:

Ich möchte den Dynamischen Text in einem Movie ansteuern.
Ums einfach zu sagen: Im Movie ändert sich die Farbe und ich möchte, dass der Text sich mitändert (bei Farbe rot soll da "rot" stehen usw.)

Das ganze möchte ich über Frames machen, z.B. ab Frame 15 soll dann "blau" stehen.

Gibt es eine Möglichkeit, auszudrücken, dass von (Frame) 1-15 da "rot", von 15-30 "blau", usw. stehen soll ?

Bin ein Neuling und das ist ein eher einfaches Problem, vermute ich mal. Nur stellt es schon eine Herausforderung für mich dar

Bei Rückfragen: nur zu!

ACHJA, hier mal die slider.colormovie.fla und slider.colormovie.swf, damit ihr euch ein Bild machen könnt!

danke im Vorraus!

Gruss, razcal
urkmaster_flex ist offline   Mit Zitat antworten
Alt 17-07-2004, 19:36   #2 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
aktuelles frame kriegste per this._currentframe raus

angenommen die staffellung sieht so aus

1-15 rot
16-30 grün
31-45 blau

dann würdest du die farbe so herausbekommen
ActionScript:
  1. frame=this._currentframe //frame abfrage
  2. trace(Math.floor((frame-1)/15))
ganz elegante kannste das per array ausgeben:
ActionScript:
  1. //farben entsprechend den intervallen
  2. farben=["rot","grün","blau"]
  3. frame=this._currentframe
  4. id=Math.floor((frame-1)/15)
  5. trace(farben[id]) //gibt bei frame 5 rot aus, bei frame 37 blau
  6.  

gruß
deluxe

Geändert von Deluxe (17-07-2004 um 19:37 Uhr)
Deluxe ist offline   Mit Zitat antworten
Alt 17-07-2004, 19:43   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2004
Beiträge: 8
Zitat:
Zitat von Deluxe
ganz elegante kannste das per array ausgeben:
ActionScript:
  1. //farben entsprechend den intervallen
  2. farben=["rot","grün","blau"]
  3. frame=this._currentframe
  4. id=Math.floor((frame-1)/15)
  5. trace(farben[id]) //gibt bei frame 5 rot aus, bei frame 37 blau
  6.  
kannst du mir das hier nochmal erklären?

Ich hab das so in der Weise noch nie benutzt, und weiss nicht, wo das genau hingehört?

Bin neu, wie gesagt *schäm*
urkmaster_flex ist offline   Mit Zitat antworten
Alt 17-07-2004, 19:54   #4 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
nix zu schämen
ActionScript:
  1. function myLocalVal (lSliderVal) {
  2.     var lVal = int((lSliderVal*gMaxVal)/gSliderMax)
  3.     _root.colormovie.gotoAndStop(lVal)
  4. //15 ist die intervallgröße
  5.     id=Math.floor((lVal)/15)
  6. //hier wird dir der string zurückggegeben,trace dient nur zur
  7. //veranschaulichung beim testen
  8.     trace(_root.farben[id])
  9.  
  10. }

und im root wo diese definitionen auch stehen das array ablegen
farben=["rot","grün","blau"]


"lVal" liefert dir übrigens werte ab 0, gotoAndStop nimmt aber erst werte >0 entgegen, solltest du wissen falls mal was nich stimmt
daher hab ich in der rechung mit dem floor die +1 weggelassen da die werte schon bei 0 anfangen


deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 17-07-2004, 19:58   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2004
Beiträge: 8
ich komm mit der Lösung leider nicht zurecht, tut mir leid

die myLocalVal-function dient meinem slider und hat eigentlich nix mit dem text zutun...

Und wie ich den dynamischen Text nun ändere, weiss ich leider immernoch nicht (das grosse weisse Wort in der Mitte soll sich entsprechend dem frame, und damit farbe, anpassen)

bin ich ein hoffnungsloser fall?

ich weiss leider nicht wie man das array benutzt...

Geändert von urkmaster_flex (17-07-2004 um 20:01 Uhr)
urkmaster_flex ist offline   Mit Zitat antworten
Alt 18-07-2004, 08:46   #6 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
kenn ich deine funktionen wohl besser als du


ActionScript:
  1. var gSliderMax = Math.round(_root.slider.sliderback._width - _root.slider.sliderbutton._width)
  2. var gMaxVal = _root.colormovie._totalframes
  3. farben=["rot","blau","gelb"]
  4. function myLocalVal (lSliderVal) {
  5.     var lVal = int((lSliderVal*gMaxVal)/gSliderMax)
  6.     _root.colormovie.gotoAndStop(lVal)
  7.         id=Math.floor((lVal)/15)
  8.     farbe=_root.farben[id]
  9.     _root.colormovie.infotext.text=farbe
  10. }
  11.  
  12. function myColorText (lTxt) {
  13.     _root.colormovie.infotext.text = lTxt
  14.     _root.colormovie.infotext.autoSize = "center"
  15. }


deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 18-07-2004, 09:47   #7 (permalink)
Neuer User
 
Registriert seit: Jul 2004
Beiträge: 8
danke, jetzt habe auch ich es verstanden *g*

ich hätte da noch ne Frage: hier gehen wir ja davon aus, dass das Intervall 15 Frames beträgt.

Wie würde das Ganze denn funktionieren, wenn ich, sagen wir mal, für das Tor des Monats gerne Untertitel schreiben würde...

"Er rennt zum Tor!"
"Er schiesst"
"Tooooor"
"Der Jubel kennt keine Grenzen"

da gibt es dann keine Intervalle, sondern das Ganze ist eher Frame-abhängig...

macht man das mit

ActionScript:
  1. if (this._currentframe)
????

Geändert von urkmaster_flex (18-07-2004 um 09:50 Uhr)
urkmaster_flex ist offline   Mit Zitat antworten
Alt 18-07-2004, 16:01   #8 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
dannn wären das mehrere unterschiedliche intervalle
sagen wir
1-10
11-12
13-15
16-25

in ne array packen wir die sprüche
ActionScript:
  1. c0=["Er rennt zum Tor","1-10"]
  2. c1=["Er schiesst","11-12"]
  3. c2=["tooor","13-15"]
  4. c3=["Der Jubel kennt keine Grenzen","16-25"]
  5. comment=[c0,c1,c2,c3]
  6. //ne funktion die entshceidet ob ne zahl zwischen 2 anderen liegt
  7. inBetween=function(f,s){
  8.     s=s.split("-")
  9.     n1=Number(s[0])
  10.     n2=Number(s[1])
  11.     f=Number(f)
  12.     return n1<=f && n2>=f
  13. }
  14. //frame durch currentframe liefern lassen, hier zB frame 17
  15. frame=17
  16. //ne schleife di unsere arrays durchläuft
  17. for(var i=0;i<comment.length;i++){
  18.     el=comment[i]
  19.     str=el[0]
  20. //falls die funktion sagt yapp is dazwischen wird der string
  21. //hier in dem beispiel ausgegeben oder in nen textfeld geschrieben
  22.     if(inBetween(frame,intervall=el[1])){
  23.         trace(str) //ausgabe
  24.         return
  25.     }
  26. }


bißchen komplizierter-aber nur scheinbar


gruß
deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 18-07-2004, 16:50   #9 (permalink)
Neuer User
 
Registriert seit: Jul 2004
Beiträge: 8
hab mal meine Fragen dazugeschrieben in //

sorry ich versuche wirklich, es zu verstehen, aber ich brauch ne kleine (grosse) Hilfe... wenn ich zu nervig bin, sags ruhig, ich kanns verstehen... dann brauchste auch ned drauf antworten

Zitat:
Zitat von Deluxe
ActionScript:
  1. c0=["Er rennt zum Tor","1-10"]
  2. c1=["Er schiesst","11-12"]
  3. c2=["tooor","13-15"]
  4. c3=["Der Jubel kennt keine Grenzen","16-25"]
  5. comment=[c0,c1,c2,c3]
  6. //ne funktion die entshceidet ob ne zahl zwischen 2 anderen liegt
  7.  
  8. //urkmaster: Bis hierhin alles noch verstanden !
  9.  
  10. inBetween=function(f,s){
  11.     s=s.split("-")  //urkmaster: Was hat das split und das ("-") zu
  12.                                // bedeuten?
  13.     n1=Number(s[0])
  14.     n2=Number(s[1])
  15.     f=Number(f)
  16.     return n1<=f && n2>=f  //urkmaster: das hier is klar
  17. }
  18. //frame durch currentframe liefern lassen, hier zB frame 17
  19. frame=17  //urkmaster: frame=_root.mymovie._currentframe  ?
  20. //ne schleife die unsere arrays durchläuft
  21. for(var i=0;i<comment.length;i++){ //urkmaster: ok, hier is aba schluss, das
  22.                                                 //kapier ich ned mehr :(
  23.     el=comment[i]
  24.     str=el[0]
  25.  
  26. //falls die funktion sagt yapp is dazwischen wird der string
  27. //hier in dem beispiel ausgegeben oder in nen textfeld geschrieben
  28.     if(inBetween(frame,intervall=el[1])){
  29.         trace(str) //ausgabe
  30.         return
  31.     }
  32. }

Geändert von urkmaster_flex (18-07-2004 um 16:54 Uhr)
urkmaster_flex ist offline   Mit Zitat antworten
Alt 19-07-2004, 12:22   #10 (permalink)
Neuer User
 
Registriert seit: Jul 2004
Beiträge: 8
Bitte kann sich das hier nochmal jemand anschauen, ich habe noch keine Lösung (verstanden)...

also, ich möchte einen Untertitel zu einem .swf-Movie hinzufügen, der keinem regelmässigen Intervall folgt, z.B.

"Er rennt zum Tor" Frames 1-14
"Er schiesst" Frames 15-29
"Die Freude ist gross" Frames 30-44
"Zu früh gefreut" Frame 45

ich benötige eine Erklärung dazu, weil ich viele actionscript-Befehle noch garnicht kenne...

von der Lösung, die mir deluxe gegeben hat, verstehe ich leider nur die Hälfte...

Ich wäre wirklich froh wenn mir einer eine möglichst einfache Lösung geben kann, die natürlich auch funktioniert

danke im Vorraus
urkmaster_flex ist offline   Mit Zitat antworten
Alt 19-07-2004, 13:18   #11 (permalink)
Neuer User
 
Registriert seit: Jul 2004
Beiträge: 8
habs jetzt so gemacht:

ActionScript:
  1. quotes=[q0,q1,q2,q3]
  2. q0= "Untertitel1"
  3. q1= "Untertitel2"
  4. q2= "Untertitel3"
  5. q3= "Untertitel4"
  6.  
  7. function mySubCalc (lFrame) { //lFrame liefert mir ein Loop in Frame 5 mit _currentframe
  8.     if (lFrame>= 1 && lFrame<=5) {
  9.         _root.subtitle.text = q0
  10.     }
  11.     if (lFrame>= 6 && lFrame<=35) {
  12.         _root.subtitle.text = q1
  13.     }
  14.     if (lFrame>= 36 && lFrame<=55) {
  15.         _root.subtitle.text = q2
  16.     }
  17.     if (lFrame>=56) {
  18.         _root.subtitle.text = q3
  19.     }
  20. }

zwar recht einfach und wahrscheinlich unelegant, aber erfüllt seinen Zweck und ist auf meinem Wissensstand *g*
urkmaster_flex ist offline   Mit Zitat antworten
Alt 19-07-2004, 13:34   #12 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
ActionScript:
  1. c0=["Er rennt zum Tor","1-10"]
  2. c1=["Er schiesst","11-12"]
  3. c2=["tooor","13-15"]
  4. c3=["Der Jubel kennt keine Grenzen","16-25"]
  5. comment=[c0,c1,c2,c3]
  6. //ne funktion die entshceidet ob ne zahl zwischen 2 anderen liegt
  7.  
  8. //urkmaster: Bis hierhin alles noch verstanden !
  9. //deluxe ok *g
  10.  
  11. inBetween=function(f,s){
  12.     s=s.split("-")  //urkmaster: Was hat das split und das ("-") zu
  13.                                // bedeuten?
  14. //deluxe: diese zeile btrifft diesen string "1-10"(und die jeweiligen anderen)
  15. //split liefert nen array zurück und zwar in diesem fall mit den elementen 1
  16. //und 10, den minusstrich hab ich als trennzeichen verwendet
  17. //man hätte genauso gut folg string benutzen können
  18. //1XXX10 und dann split("XXX") benutzen können
  19.     n1=Number(s[0])
  20.     n2=Number(s[1])
  21.     f=Number(f)
  22.     return n1<=f && n2>=f  //urkmaster: das hier is klar
  23. }
  24. //frame durch currentframe liefern lassen, hier zB frame 17
  25. frame=17  //urkmaster: frame=_root.mymovie._currentframe  ?
  26. //deluxe yapp _currentframe von dem movie
  27. //ne schleife die unsere arrays durchläuft
  28. //ich durchlaufe mein array "comment"
  29. //es enthält 4 elemente also wird die schleife jeweils mit den werten für i=0 1 2 und 3 durchlaufen
  30. //jedesmal erhalte ich so einen anderen untertitel
  31. //ich bezieh mich so gesehen in jedem durchlauf auf die variablen c0,c1,c2 und c3
  32. for(var i=0;i<comment.length;i++){ //urkmaster: ok, hier is aba schluss, das
  33.                                                 //kapier ich ned mehr :(
  34.     el=comment[i]
  35.     str=el[0]
  36.  
  37. //falls die funktion sagt yapp is dazwischen wird der string
  38. //hier in dem beispiel ausgegeben oder in nen textfeld geschrieben
  39. //el[1] is der o.g. string "1-10" usw,
  40. //warum ich hier der variablen intervall noch diesen string zuweis weiß ich nicht mehr -suspekt!
  41.     if(inBetween(frame,intervall=el[1])){
  42. //sofern die funktion inBetween das intervall bestätigt hat
  43. //kannst du es hier in das textfeld schreiben
  44. //das return bricht die funktion an dieser stelle ab
  45.         trace(str) //ausgabe
  46.         return
  47.     }
  48. }


das gute an dieser funktion du kannst sie absolut bequem erweitern indem du nur das array oben entsprechend erweiterst.
bei dir klappt das so noch gut, bei 20 intervallen würde ich spätestens die übersicht verlieren

trotzdem genauso wie ich gelößt eben ein wenig unflexibler


gruß
deluxe
Deluxe 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 06:05 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele