Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-12-2004, 18:12   #1 (permalink)
Neuer User
 
Benutzerbild von pomz
 
Registriert seit: Aug 2004
Beiträge: 51
Zugriff auf Funktion - diese Funktion deleten?

Hallo,

Diese Funktion möchte ich aus einem verschachtelten Movieclip heraus beenden - ist ein Teil eines Schneescriptes hier aus dem Forum.

Wie rufe ich denn diese Funktion auf?

Ich möchte irgendwie so etwas in der Art erreichen -
delete dieseFunktion.onEnterFrame;(Phantasiescript)

In meinem Fall;
delete _parent.dieseFunktion.onEnterFrame;

PHP-Code:
MovieClip.prototype.fall = function(ende) {
    
this.onEnterFrame = function() {
        
this._y += random(fall)+3;
        if (
this._y>=ende) {
            
wichSnow random(3)+1;
            
this._y = -(random(ground));
            
this.gotoAndStop(wichSnow);
            
//zum auschalten des schnees...
            
delete this.onEnterFrame;
        
    
        }
    };
}; 
Grüsse pomz
pomz ist offline   Mit Zitat antworten
Alt 19-12-2004, 02:42   #2 (permalink)
Wer??? Ich???
 
Registriert seit: May 2003
Ort: München
Beiträge: 807
Ich versteh dich nicht ganz.

Was willst du machen???

Cu
hOmId
Homid ist offline   Mit Zitat antworten
Alt 19-12-2004, 11:43   #3 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Hi.

Ich weiß auch nicht was Du willst
Wenn Du das onEnterFrame wieder löschen willst,
dann musst Du wie schon angegeben, delete .....onEnterFrame; machen.

Mit dem MovieClip.prototype, hast Du ja einen neue Methode
geschaffen. Irgendwie verstehe ich Dein Anliegen noch nicht ganz.
Versuch mal zu erklären, was Du erreichen willst.

Hier nochmal ein Beispiel:

ActionScript:
  1. MovieClip.prototype.bewege = function() {
  2.     this.onEnterFrame = function() {
  3.         this._x += 10;
  4.     };
  5. };
  6. //----------------------------------------
  7. _root.box_mc.onPress = function() {
  8.     this.bewege();
  9. };
  10. //----------------------------------------
  11. meinO = new Object();
  12. meinO.onKeyDown = function() {
  13.     if (Key.isDown(Key.DOWN)) {
  14.         delete _root.box_mc.onEnterFrame// hier wird deleted
  15.     }
  16. };
  17. Key.addListener(meinO);
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 19-12-2004, 11:45   #4 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
ActionScript:
  1. MovieClip.prototype.fall = function(ende) {
  2.     _global.lastMC = this;
  3.     this.onEnterFrame = function() {
  4.         this._y += random(fall)+3;
  5.         if (this._y>=ende) {
  6.             wichSnow = random(3)+1;
  7.             this._y = -(random(ground));
  8.             this.gotoAndStop(wichSnow);
  9.             //zum auschalten des schnees...
  10.             delete this.onEnterFrame;
  11.        
  12.    
  13.         }
  14.     };
  15. };
  16.  
  17.  
  18. //von irgendwo den enterFrame löschen:
  19.  
  20. var mc = lastMC;
  21. delete mc.onEnterFrame;


that´s all...

greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 19-12-2004, 14:46   #5 (permalink)
Neuer User
 
Benutzerbild von pomz
 
Registriert seit: Aug 2004
Beiträge: 51
Danke für eure postings, ich habe mittlerweile auch mit
PHP-Code:
delete _parent.makeCopy(); 
den enterFrame abschalten können.

jetzt ein neues Problem.

wie kann ich nachdem ich erfolgreich den enterFrame deleted habe,
die Schneeflocken alle unsichtbar schalten oder gar löschen. (die Flocken ragen nämlich teilweise von oben in meinen film hinein...)

sowas wie.
"alleGeneriertenSchneeflocken._visible=false;"

Könnt ihr mir helfen?

das ganze script;
PHP-Code:
stop();
attachMovie("bot","bot",9998);//9998
this.bot._x317;
this.bot._y= -11;

anz 80;
fall = -50;
ranstarr = [];

range Stage.width;//
ground Stage.height 100;//

function makePos() {
    for (
i=1i<=anzi++) {
        
random(range);
        
ranstarr.push(w);
    }
}
function 
makeCopy() {
    for (
i=1i<=anzi++) {
        
this.bot.duplicateMovieClip("snowflake"+ii);
        
wichSnow random(3)+1;
        
this["snowflake"+i].gotoAndStop(wichSnow);
        
this["snowflake"+i]._x ranstarr[i];
        
this["snowflake"+i]._y = -(random(ground));//...
    
}
}
MovieClip.prototype.fall = function(ende) {
    
this.onEnterFrame = function() {
        
this._y += random(fall)+3;//HIER SPEED...+10
        
if (this._y>=ende) {
            
wichSnow random(3)+1;
            
this._y = -(random(ground));
            
this.gotoAndStop(wichSnow);
            
//zum auschalten des schnees...
            //delete this.onEnterFrame;
            //timer        
    
        
}
    };
};
function 
starter() {
    for (
i=1i<=anzi++) {
        
this["snowflake"+i].fall(ground);
    }
}
//usage
    
anz Number(fields.flak);
    if (
anz == or anz == "NaN") {
        
anz 80;
    }
    
fall Number(fields.fast);
    if (
fall == or fall == "NaN") {
        
fall = -50;
    }
    
this._x fields._x=0;
    
makePos();
    
makeCopy();
    
starter(); 
pomz ist offline   Mit Zitat antworten
Alt 19-12-2004, 15:05   #6 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Dann kannst Du z.B. alle MC per for-in suchen lassen
und gleichzeitig abfragen, ob der Name des Clip z.B.
mit "s" beginnt. Diese Clips kannst Du dann löschen.

ActionScript:
  1. for (i in _root) {
  2.     if (typeof _root[i] == "movieclip" && _root[i]._name.charAt(0) == "s") {
  3.         _root[i].unloadMovie();
  4.     }
  5. }
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 19-12-2004, 17:43   #7 (permalink)
Neuer User
 
Benutzerbild von pomz
 
Registriert seit: Aug 2004
Beiträge: 51
Danke biz, super Sache dein script wenn...

ich meine Inhalte nicht in einem anderen mc stecken hätte.
In ihrer eigenen zeitleiste wird ja _root gefunden.

aber wenn ich den swf in einen container lade werden sie nicht gfunden. der heisst "holder"(lade mit loadMovie).

ohne erfolg. z.b. sowas...hab auch schon _parent._parent versucht.
function wegSchneeflocken(){
for (i in _root.holder) {
if (typeof _root.holder[i] == "movieclip" && _root.holder[i]._name.charAt(0) == "s") {
_root.holder[i].unloadMovie();
}
}

}
pomz ist offline   Mit Zitat antworten
Alt 19-12-2004, 18:05   #8 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Ich habe eine Funktion gefunden,
mit der das geht:

ActionScript:
  1. getAllMCS = function (mc) {
  2.     for (var i in mc) {
  3.         if (mc[i] instanceof MovieClip) {
  4.             trace(mc[i]);
  5.             getAllMCS(mc[i]);
  6.         }
  7.     }
  8. };
  9. getAllMCS(_root);
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 23-12-2004, 13:09   #9 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
performanter ist es geich zu beginn, beim erstellen der schneeflocken, diese in ein arry zu pushen.
dann kann man einfach durchs array rennen und so alle löschen.
das sollte wesentlich erformanter sein, als ne rekursive suche durch alle hirachien.



greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 23-12-2004, 17:19   #10 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
@ Kelor

Da muss ich zustimmen. Ist sicherlich besser.
Manchmal betrachte ich die Dinge mit zu wenig
Abstand.
Wobei diese Rekursion hier 'ne schöne Sache ist.

Das ist doch mal wieder das Schöne an der Programmierung.
Man schreibt einen Code, der sich irgendwie seinen
Weg sucht.
Künstliche Intelligenz zu schaffen, wäre doch wohl
unser aller Traum.

In diesem Sinne frohe Festtage!
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz 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 12:14 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele