Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-12-2003, 20:08   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 7
Animation in Frame X abschalten

Hallo,

ich starte in Keyframe 30 folgendes AS:

function initFlocken(pHoehe,pAnzahl) {

for (var i = 0; i<pAnzahl; i++) {
attachMovie("flocke", "flocke"+i, i);
this["flocke"+i]._y = 40+(Math.random()*pHoehe);
}
}

initFlocken(500,80);
play();

Nun möchte ich es in Frame 70 wieder langsam ausfaden/ausblenden. Kann mir jemand einen Tipp geben wie ich das geht? Thx.

Grüße
Blooby
blooby ist offline   Mit Zitat antworten
Alt 21-12-2003, 20:31   #2 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Geht's so net?

ActionScript:
  1. for(i=0;  i<pAnzahl; i++) {
  2.      this["flocke"+i]._alpha -= DeinWert
  3. }
johanness ist offline   Mit Zitat antworten
Alt 21-12-2003, 20:46   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 7
Zitat:
Geschrieben von johanness
Geht's so net?

ActionScript:
  1. for(i=0;  i<pAnzahl; i++) {
  2.      this["flocke"+i]._alpha -= DeinWert
  3. }
Erzielt leider nicht die Wirkung die ich erreichen wollte. In Frame 30 lasse ich das AS von oben starten, der film wird dann ab frame 70 ausgeblendet. Die Flocken sind aber immer noch da. Ich möchte die auch so ab Frame 70 mit ausfaden. Bisher ist es mir aber noch nicht gelungen... Vielleicht mach ich auch was falsch?

Grüße
Blobby
blooby ist offline   Mit Zitat antworten
Alt 21-12-2003, 21:54   #4 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Johannes is da dem "for-Loop"-Denkfehler aufgesessen. Eine for-Loop arbeitet _erst_ alles ab und präsentiert dann ein Ergebnis. Da is also nix mit schön langsam und so...
Sollen die Flocken denn verschwinden oder ausblenden?
Eine mögliche Vorgehensweise wäre, alle vorhandenen Flocken in ein Array einzutragen (am besten gleich in der Loop, wo sie erzeugt werden) und dann per Zufallsfunktion dort auszulesen, aus der Liste rauszukicken und dann per removeMovieClip oder halt einer fade-Funktion verschwinden zu lassen... Oder so.
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 21-12-2003, 22:02   #5 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 7
Zitat:
Geschrieben von sonar
Sollen die Flocken denn verschwinden oder ausblenden?
Die sollen eigentlich auch ausgeblendet werden. Wenn der eigentliche Film fertig ist sollten die Flocken auch weg sein. Deine Anregung klingt ja kompliziert. Fang grad erst an mit Flash und spiele grad so'n bißchen rum. Vielleicht anders aufbauen aber wie?

Grüße
Blobby
blooby ist offline   Mit Zitat antworten
Alt 21-12-2003, 22:48   #6 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Also wenn sie alle gleichzeitig ausblenden sollen, das schöne sonar-fade-skript verwenden...
ActionScript:
  1. //code in HZL:
  2. MovieClip.prototype.fade = function(targetAlpha, speed) {
  3.     var dir = this._alpha < targetAlpha ? 1 : -1;
  4.     this.onEnterFrame = function() {
  5.         this._alpha += speed * dir;
  6.         Math.round(targetAlpha - this._alpha) * dir <= 0 ? delete this.onEnterFrame : null;
  7.     };
  8. };
  9. //koennte dann so aussehen bei dir:
  10. for(var i = 0; i<=80; i++) {
  11. _root["flocke"+i].fade(0,3); //speed kannst ja anpassen
  12. }
Probier's mal...
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 22-12-2003, 18:27   #7 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 7
Zitat:
Geschrieben von sonar
ActionScript:
  1. //code in HZL:
  2. MovieClip.prototype.fade = function(targetAlpha, speed) {
  3.     var dir = this._alpha < targetAlpha ? 1 : -1;
  4.     this.onEnterFrame = function() {
  5.         this._alpha += speed * dir;
  6.         Math.round(targetAlpha - this._alpha) * dir <= 0 ? delete this.onEnterFrame : null;
  7.     };
  8. };
  9. //koennte dann so aussehen bei dir:
  10. for(var i = 0; i<=80; i++) {
  11. _root["flocke"+i].fade(0,3); //speed kannst ja anpassen
  12. }
Probier's mal...
Habs (noch) nicht hinbekomen. Wo soll der Code hin? In Frame 30 anstelle des ursprünglichen Codes? Oder wie? Ich verstehe noch nicht, wie das mit den Frames und Frameereignissen läuft. Na ja, ich werde weiterprobieren und falls jemand noch 'n Tipp zum Thema hat, nur zu...

Grüße
Blobby
blooby ist offline   Mit Zitat antworten
Alt 22-12-2003, 19:49   #8 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Die prototype-Methode kannst irgendwo in _root legen (aber vor Frame 70...) Ich sammle sowas immer in frame 1. Dann den Aufruf dahin, wo du die Flocken halt ausblenden willst, ebenfalls in _root. Und gut.
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 22-12-2003, 21:39   #9 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 7
Hey, vielen Dank, jetzt habe ich es hinbekommen. So ist es schön... (; Nun bastle ich mir noch eine Funktion um die Flocken auch sanft einblenden zu lassen. Mal gucken wie weit ich komme...

Grüße
Blobby
blooby ist offline   Mit Zitat antworten
Alt 22-12-2003, 22:32   #10 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Geht eigentlich genauso. Die fade-Methode funktioniert ja in beide Richtungen.
Probier mal so:
ActionScript:
  1. //davor halt die fade-proto-methode
  2. function initFlocken(pHoehe,pAnzahl) {
  3. for (var i = 0; i<pAnzahl; i++) {
  4. var f = this.attachMovie("flocke", "flocke"+i, i,{_alpha:0});
  5. f._y = 40+(Math.random()*pHoehe);   
  6. f.fade(99,5);
  7. }
  8. }
  9. //
  10. initFlocken(500,80);
  11. play();

Grüße
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)

Geändert von sonar (22-12-2003 um 22:33 Uhr)
sonar ist offline   Mit Zitat antworten
Alt 23-12-2003, 16:00   #11 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 7
Hi noch mal,

danke für das Skript. So langsam versteh' ich AS auch besser. Hab es aber trotzdem noch nicht zum Laufen bekommen aber ich probiere weiter.

Ich habe die Function im ersten Keyframe unter das fade-Skript getan und in einem späteren Keyframe per init und play gestartet aber ich habe das Gefühl das nix passiert. Die Flocken sind da aber nicht eingefadet. Am Speed drehen hat auch nix gebracht... Das werde ich per Trail&Error lösen...

Grüße
Blooby
blooby ist offline   Mit Zitat antworten
Alt 23-12-2003, 16:41   #12 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Hast du mein Skript von oben genommen, also die Deklaration der initFlocken-Funktion? Das sollt aber schon gehen...

Moment, es hätte eigentlcih gar nicht gehen können. Müsste so heißen:
ActionScript:
  1. function initFlocken(pHoehe,pAnzahl) {
  2.         for (var i = 0; i<pAnzahl; i++) {
  3.                 var f = _root.attachMovie("flocke", "flocke"+i, i,{_alpha:0}); //hier _root statt this
  4.                 f._y = 40+(Math.random()*pHoehe);
  5.                 f.fade(99,5);
  6.         }
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)

Geändert von sonar (23-12-2003 um 16:44 Uhr)
sonar ist offline   Mit Zitat antworten
Alt 23-12-2003, 17:05   #13 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 7
mmh, hat auch keinen effekt gezeigt. ich werd mal sehen... vielen dank für die tipps. das hat mir schon sehr geholfen.

-fröhliche weihnachten-

grüße
blooby
blooby 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:07 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele