Flashhilfe.de - Flash Community

"getTimer()" und "setTimeout" / Alternativen? [Flash 10]

 


AntwortenRegistrieren Seite1  

Helbig#1
Benutzerbild von Helbig
Beiträge: 6
Registriert: Jun 2011

15.06.2011, 20:09

Hi
Ich bin relativ neu in Flash und arbeite gerade an meinem ersten großen Projekt. Es geht um einen Film, der über Actionscript interaktiv gemacht werden soll. Ich benutze Actionscript 2.0.
Heute hat mich Flash zum ersten mal vor ein Problem gestellt, das ich nicht ohne fremder Hilfe lösen kann.

Im Film sollen zu bestimmten Zeiten gescriptete Framewechsel erfolgen, die mit Buttons verlinkten Aktionen sich ändern und Töne abgespielt werden.

Hierzu habe ich mehrere Ansätze ausprobiert:
Button Aktionswechsel

ActionScript:
1
2
3
4
5
6
7
8
haustür.onPress = function(){
     if(getTimer() >= 20000){
        gotoAndPlay(6754)
     }
     else{
        gotoAndPlay(1565)
     }
}


Der Button "haustür" befindet sich in einem Teil des Films, der geloopt ist und sich alle 30 Sekunden wiederholt.(auf Frame 1564 steht "gotoAndPlay(2))  Der Button führt die gewünschten Aktionen aus, bis der Film sich zum ersten mal wiederholt. (nach 30 Sekunden) Danach führt der Button keine Aktionen mehr aus.


Töne abspielen

ActionScript:
1
2
3
4
check = getTimer()
if (check=10000) {
  auto_ton.start(0,0);
}


und

ActionScript:
1setTimeout(auto_ton.start(0,0),10000);


In beiden Fällen wird der Ton "Auto_ton" auf dem ersten Frame abgespielt und nicht nach 10 Sekunden, wie von mir gewünscht.
Edit: Falls das jemandem hilft, der Film startet direkt bei 10 Sekunden. Irgendetwas in meinem Code scheint ihn zu veranlassen, das zu tun.

Ich habe wahrscheinlich nur irgendeinen Denkfehler in meinem Umgang mit "getTimer()" und "setTimeout".
Leider konnte ich keine Tutorials finden, die dieses Thema behandeln.
Ich hoffe, dass einem von Euch etwas dazu einfällt, da für mich von dieser Arbeit einiges abhängt.

PS: Alle Antworten bitte führ ÜberNOOBS. Ich hab keine Ahnung vom Programmieren so richtig :(

Danke
Schlagwörter: getTimer(), setTimeout
Geändert von Helbig am 16.06.11 um 10:51 Uhr
Werbung
Beiträge: 0
Registriert: Feb 2016


springer#2
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

16.06.2011, 08:23

hi,
bitte wähle das nächste mal ein betreff ohne "hilfe" etc... bitte ändere den betreff noch ab. du kannst das in dem du deinen ersten beitrag in diesem thread bearbeitest...

nun zu deinem problem. die funktion in setTimeout muss anders aussehen:

ActionScript:
1
2
3
4
5
6
setTimeout(tonStart,10000);

function tonStart()
{
      auto_ton.start(0,0)
}


wenn du es so machst, wie du es oben gemacht hast, wird start(0,0) direkt aufgerufen, nicht verzögert....
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
Geändert von springer am 16.06.11 um 08:24 Uhr
Helbig#3
Benutzerbild von Helbig
Beiträge: 6
Registriert: Jun 2011

Themenautor/in

16.06.2011, 11:25

Ich danke Dir. Das löst zumindest schonmal das Problem mit den Audio Dateien. "setTimeout...." musste ich noch hinter die Funktion setzen aber abgesehen davon funktioniert alles top!
Irgendwelche Vorschläge für mein Problem mit der "getTimer"-Funktion?
springer#4
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

16.06.2011, 12:13

wegen getTimer():

= ist nicht gleich ==

ActionScript:
1if(check== 10000)
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
Werbung
Beiträge: 0
Registriert: Feb 2016


Helbig#5
Benutzerbild von Helbig
Beiträge: 6
Registriert: Jun 2011

Themenautor/in

16.06.2011, 12:39

Stimmt, das war falsch. Aber das Problem tritt ja bei mir hauptsächlich bei ">" und "<" bzw. ">=" und "<=" auf.
springer#6
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

16.06.2011, 16:16

ich kann nicht ganz nachvollziehen, warum du bei einem buttonclick, je nach dem wie lange der film schon läuft (10000ms), eine andere funktion aurufst, bzw. zu einem anderen bild springst....

das müsste man über eine zustandsvariable machen... (Boolean)
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
Geändert von springer am 16.06.11 um 16:16 Uhr
vindel#7
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

16.06.2011, 16:48

Hallo,

also getTimer startet mit dem öffnen des Flashs.
Wenn du es mit start eines Filmes (oder animation) machen möchtest, musst du dir die Zeit zwischenspeichern:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
var oldTime:Number = 0;
// Animation startet
oldTime = getTimer();


haustür.onPress = function(){
       if(getTimer()-oldTime >= 20000){
          gotoAndPlay(6754)
       }
       else{
          gotoAndPlay(1565)
       }
}
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
Helbig#8
Benutzerbild von Helbig
Beiträge: 6
Registriert: Jun 2011

Themenautor/in

16.06.2011, 18:05

Ich versuche mit Hilfe von Flash aus einem normalen, von mir gefilmtem und entsprechend geschnittenem Film die Illusion eines Hauses zu erstellen, in dem sich der Betrachter frei bewegen kann, ähnlich der Streetviewfunktion in Google Maps oder einem Kubikfoto, falls das jemandem was sagt. Parallel hierzu soll sich im Haus eine Handlung abspielen und Dinge sollen verändert werden. Dazu ist es nötig, dass ein Button, jenachdem, zu welchem Zeitpunkt er betätigt wird, den Betrachter zu einem anderen Frame führt.

Danke erstmal für die Antworten. Ich habe das mit dem Zeit zwischenspeichern ausprobiert. Das Resultat ist das gleiche, wie zuvor von mir beschrieben. Boolean und Zustandsvariablen sagen mir nichts, tut mir Leid.

Ich denke nicht, dass mein Problem etwas mit "getTimer()" direkt zu tun hat, sondern eher mit den Unterbrechungen, loops, usw. die Im Film im Prinzip ständig stattfinden.

Ich habe einen weiteren Ansatz ausprobiert, der ebenfalls zum gleichen Resultat führt:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var Seconds = 0;
function timer():Void{
     _root.Seconds += 1;
}
setInterval(timer, 1000);

haustür.onPress = function(){
     if(Seconds >= 20){
        gotoAndPlay(6754)
     }
     else{
        gotoAndPlay(1565)
     }
}

Ich habe also getTimer umgangen, indem ich einen simplen Timer (dynamische Textfeld + Funktion) geschrieben hab. Das Ergebnis ist jedoch genau das gleiche:

Nachdem der geloopte Abschnitt sich zum ersten mal wiederholt, führt der Button "haustür" keine Aktion mehr aus. Davor führt er die gewünschten Aktionen jedoch einwandfrei aus. Betritt man das Haus und kehrt dann zum Ausgangspunkt zurück, führt der Button wieder keine Aktion aus.
Der von mir geschriebene Timer läuft ohne Probleme und lässt sich auch von Unterbrechungen des Films und Loops nicht beeindrucken.
Geändert von Helbig am 16.06.11 um 18:08 Uhr
vindel#9
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

17.06.2011, 00:39

Setzt du auch deine Variable "Seconds" wieder auf null (0) wenn deine Animation wieder von vorne beginnt?

Boolean ist die Variablenbezeichnung für Variablen die entweder "true" oder "false" sein können.
Eine Zustandsvariable ist dafür da ein Ereignis "zu dokumentieren".
Also wenn du einen Button klickst, setzt du die Variable (zB als Boolean) auf true. Wenn du den Button wieder klickst, setzt du diese auf False. Somit hast du in der Variable immer den aktuellen Status deinen Buttons gespeichert.
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
Helbig#10
Benutzerbild von Helbig
Beiträge: 6
Registriert: Jun 2011

Themenautor/in

17.06.2011, 01:20

Danke Euch für die Hilfe. Ein Freund hat mich auf die Lösung gebracht:
ActionScript:
1
2
3
4
5
6
7
on (press) {
     if ( Seconds>20 ){
        gotoAndPlay(76);
     } else {
        gotoAndPlay(84);
     }
}


Wenn man's direkt in den Button schreibt funktionierts aus irgendeinem Grund. :D

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2019 Sebastian Wichmann - Flashhilfe.de