Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-03-2005, 09:14   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2005
Beiträge: 6
Wie bringe ich AS dazu Unterprogrammaufrufe komplett abzuarbeiten?

Hallo zusammen,
ich habe das Problem, dass AS Unterprogrammaufrufe nicht so macht wie ich es von anderen Sprachen gewohnt bin. Es scheint nicht linear sondern nebenläuftig zu arbeiten, weswegen sich Raceconditions ergeben. Die Frage ist nun wie ich so etwas verhindern kann. Gibt es so etwas wie synchronisation in AS?

Beispiel:

Im folgenden Programm wird Componente 2 (Comp2) vom Unterprogramm fadeIn(client, rate) eingeblendet, Componente 1 aber nicht, da der zweite Programmaufruf <client> überschreibt, bevor eingeblendet wurde und somit Componente 2 sozusagen 2x eingeblendet wird (glaub ich):

Code:
function test() {
		fadeIn(Comp1, 20);
		fadeIn(Comp2, 20);
}

//With this function the movieclip <client> can be faded in in <rate>/100 seconds
function fadeIn(client, rate) {
	client._visible = true;
	onEnterFrame = function () {
		if (client._alpha+rate<=100) {
			client._alpha += rate;
		} else {
			client._alpha = 100;
			onEnterFrame = null;
		}
	};
}
Würde mich über Ideen sehr freuen

Marc
XtraMarc ist offline   Mit Zitat antworten
Alt 14-03-2005, 09:19   #2 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
In Flash wird immer alles komplett abgearbeitet.

Die Frage, die du dir beantworten musst ist, wem gehört der onEnterFrame-Handler, den du zum Animieren benutzt.
mfg. r
bokel ist offline   Mit Zitat antworten
Alt 14-03-2005, 09:28   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2005
Beiträge: 6
Nun, der gehört dem Hauptfilm und ja, ich weiß was Du meinst, ich überschreibe damit die erste Anweisung für das onEnterFrame-Event. Da würde sich die Frage stellen, ob es auch die Möglichkeit gibt, nicht zu überschreiben, sondern anzuhängen?
XtraMarc ist offline   Mit Zitat antworten
Alt 14-03-2005, 12:28   #4 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Nein, da gibt es leider nichts fertig eingebautes. Das müsstest du dir selbst zusammenzimmern oder dich mal hier im Forum nach Andre Michelles Gamepackage umschauen. Dort gibt es (soweit ich weiss) verschiedene Optionen um sowas zu realisieren.

mfg. r.
bokel ist offline   Mit Zitat antworten
Alt 14-03-2005, 14:58   #5 (permalink)
poke
 
Registriert seit: Dec 2002
Ort: Iserlohn [NRW]
Beiträge: 2.304
wie wäre es, den EnterFrame auf für jedes der Komponenten zu machen?

ActionScript:
  1. function test() {
  2.         fadeIn(Comp1, 20);
  3.         fadeIn(Comp2, 20);
  4. }
  5.  
  6. //With this function the movieclip <client> can be faded in in <rate>/100 seconds
  7. function fadeIn(client, rate) {
  8.     client._visible = true;
  9.     client.onEnterFrame = function () {
  10.         if (this._alpha+rate<=100) {
  11.             this._alpha += rate;
  12.         } else {
  13.             this._alpha = 100;
  14.             delete this.onEnterFrame;
  15.         }
  16.     };
  17. }
pokepika ist offline   Mit Zitat antworten
Alt 14-03-2005, 16:47   #6 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Da kann es ja trotzdem passieren, das Dein client vorher ne eigene onEnterFrame Funktion laufen hat und Du dann diese überschreibst.
Besser wäre soetwas:
PHP-Code:
function fadeInclientrate )

    
client._visible true
    
client.createEmptyMovieClip"e"16000 );
    
client.e.onEnterFrame = function()
    { 
        if( 
client._alpha rate <= 100 client._alpha += rate
        else
        { 
            
client._alpha 100
            
this.removeMovieClip();
    }; 

__________________
ERROR: Signature is too large

Geändert von rendner[i] (14-03-2005 um 16:51 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 21-03-2005, 14:03   #7 (permalink)
Neuer User
 
Registriert seit: Mar 2005
Beiträge: 6
Ah, ja, sehr gut, dass sieht ziemlich vernünftig aus. Vielen Dank!
XtraMarc 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 13:37 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele