Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-08-2003, 17:12   #1 (permalink)
filmtip: snatch
 
Registriert seit: Oct 2001
Beiträge: 1.562
script geht innerhalb einer funktion nicht

hi all

steh hier vor einem rätsel

ActionScript:
  1. function initial() {
  2.     var mc = new LineUpClass(7, 20, p_array[0], this);
  3.     mc.addListener(Poly_listener);
  4.     mc.draw();
  5. }
  6. initial();

geht nicht

ActionScript:
  1. var mc = new LineUpClass(7, 20, p_array[0], this);
  2.     mc.addListener(Poly_listener);
  3.     mc.draw();


haut hin... kann doch nicht sein, oder ?

aber richtig
Skyla ist offline   Mit Zitat antworten
Alt 10-08-2003, 09:07   #2 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
was geht denn nicht?
die zuweisugn erst garnich
wird der konstruktor von Lineup aufgerufen?
schonmal getestet?
soll this ne referenz auf ne zeitleiste sein?attached du was? malst du was? dann musste die referenz quasi in die funktion initial durchschleifen

initial(p)=function(p){...
initial(this)

ende vermutung
deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 10-08-2003, 11:46   #3 (permalink)
filmtip: snatch
 
Registriert seit: Oct 2001
Beiträge: 1.562
hi deluxe

thx für die antwort erstmals. This ist die referenz
auf die tl, stimmt. Aber in diesem script ist doch
nichts drin, das sich darum scheren würde, ob
es durch eine funktion durchgeführt wird oder nicht..

egal, muss das ganze sch...ding eh wieder umbauen.
thx, deluxe
Skyla ist offline   Mit Zitat antworten
Alt 10-08-2003, 12:18   #4 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
des is deine funktion
ActionScript:
  1. function initial() {
  2.         var mc = new LineUpClass(7, 20, p_array[0], this);
  3.         mc.addListener(Poly_listener);
  4.         mc.draw();
  5. }

nen trace("exec")
wird dir hier sicherlich ausgegeben
also werden auch die codezeilen ausgeführt-scheinbar
was ich denke:

deine klasse is doch sicher so aufgebaut
ActionScript:
  1. lineUpClass=function(a,b,c,referenz){
  2. //blabla
  3. return referenz.createEmptyMovieClip(..)
  4. }
so dein fehler ist dann diese zeile
ActionScript:
  1. var mc = new LineUpClass(7, 20, p_array[0], this);
mc soll den pfad auf den erstellten mc beinhalten
da dieses objekt nie erstellt wurde(falsche referenz!)
wird in mc undefined abgelegt
undefined hat dann natürlich auch nicht die methoden
draw und addListener
also werden die 2 sachen schonmal nicht ausgeführt
mit sicherheit aber der konstruktor
nen trace dort rein gibt dir darüber auskunft
und wirds (schätz ich mal)bestätigen

referenz durchschleifen und es soltle klappen
grüße
deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 10-08-2003, 13:22   #5 (permalink)
filmtip: snatch
 
Registriert seit: Oct 2001
Beiträge: 1.562
hi deluxe

unglaublich nett, dass Du mir da hilfst. Aber das ist es
nicht. Ich seh keinen Ansatz...für mich gibt es keinen
unterschied, ob sich das script durch eine funktion
ausführen lasse oder einfach auf die zeitleiste lege...



hab das file mal angehängt
Angehängte Dateien
Dateityp: zip lineupclass.zip (4,8 KB, 4x aufgerufen)
Skyla ist offline   Mit Zitat antworten
Alt 10-08-2003, 13:43   #6 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
wie ichs sagte

this.mc=tl.createEmptyMovieClip('a'+clip_counter,c lip_counter+3)

auch wenns ne totsünde is
wenn du hier mal das verwendest
_root.createEmptyMovieClip('a'+clip_counter,clip_c ounter+3)
dann klappts auch in der funktion

dann wird in mc etwas korrektes abgelegt

der unterschied zwischen funktion und timelineablage
is dir sicher bekannt

this bedeutet bei der zeitleiste ein verweis auf die zeitleiste
in der funktion is this der bezug auf die funktion-grob
this zeigt also auf die funktion
this.createEMptyMovieClip gibt es dann aber nicht
denn die funktion(this) hat keine methode namens createEmptyMovieClip.
also kann hier auch nichts funzen

haste mal probiert nen verweis auf ne zeitleiste durchzuschleifen?

ich zitiere mich mal
ActionScript:
  1. function initial(referenz) {
  2. //jetzt liegt nen verweis auf die zeitleiste im konstruktor vor
  3. //und die sache sollte rund laufen
  4.         var mc = new LineUpClass(7, 20, p_array[0], referenz);
  5.         mc.addListener(Poly_listener);
  6.         mc.draw();
  7. }
  8. //this von zeitleiste
  9. initial(this);

deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 10-08-2003, 13:58   #7 (permalink)
filmtip: snatch
 
Registriert seit: Oct 2001
Beiträge: 1.562
Deluxe

aber this innerhalb einer function referenziert doch
auf die zeitleiste auf der die funktion liegt

ActionScript:
  1. function foo(){
  2.     trace(this) //output level0
  3. }
  4. foo()




im gegensatz zu:

ActionScript:
  1. foo= {}
  2.  
  3. foo.showMe=function(){
  4.     trace(this==foo) //output true
  5. }
  6. foo.showMe()


entsprechend klappt auch ein _root.createEmptyM...
oder ein 'mitschleppen der referenz auf die tl' nicht.

das problem ist mir definitiv zu hoch


gruss und thx(!)

skyla
Skyla ist offline   Mit Zitat antworten
Alt 10-08-2003, 14:08   #8 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
hmm habs damit verwechselt.

function foo(){
trace(this) //output level0
}
x=new foo()


aber wieder zurück
datei kuck ich mir mal später an
haste schonmal versucht
das this der funktion initial zu überschreiben
explizit mal auf nen wunsch mc den du besser überwachen kannst
es scheint also nen größeres scope problem zu sein so wie du beschreibst
müsstest dir mal die ganzen variablen ausgeben
ob was faul is, bzw überprüf ich auch mal

function initial() {
var mc = new LineUpClass(7, 20, p_array[0], this);
mc.addListener(Poly_listener);
mc.draw();
trace(mc.mc)
trace(mc.draw)
}
zeigt was?

und was funktioniert eigentlich nicht-ne die frage erspar ich mir ich kuck sie mir nachher mal an die datei

deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 10-08-2003, 15:11   #9 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Mann o Mann, das war eine harte Nuss, aber die Erklärung ist dafür um so einfacher
Dadurch dass du die Instanz der Klasse in der Funktion mit var deklarierst, verschwindet sie am Ende der Funktion. Und wo nichts ist, kann auch nichts gezeichnet werden.

btw. die Klasse kommt mir so seltsam bekannt vor

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 10-08-2003, 15:49   #10 (permalink)
filmtip: snatch
 
Registriert seit: Oct 2001
Beiträge: 1.562
Ich habe schon an den grundwerten gezweifelt.
Ich danke Dir Bokel (natürlich auch für die Klasse).

Dein Wirken ist allgegenwärtig....
Skyla ist offline   Mit Zitat antworten
Alt 10-08-2003, 15:57   #11 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
****** nuss
ne sowas hab ich mir natürlich auch überlegt aber wenn man folgenden gedanken nachgeht vergißt man diese möglichkeit schnell wieder:

//klasse initialisieren, mc createn usw
//status:mc auf dem gezeichnet werden soll is noch da
var mc = new LineUpClass(7, 20, p_array[0], this);
//status mc is noch da, da funktion noch läuft
mc.addListener(Poly_listener);
//hier wird gezeichnet,
//status is noch da, jetzt wird gezeichnet
mc.draw();
//funktionsende, variable mc verfällt
//der movieclip is aber noch da?


was läuft in dem gedankengang schief?

deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 10-08-2003, 16:22   #12 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Ein MovieClip ist etwas anderes als ein einfaches Objekt.

mfg r.
bokel 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 05:21 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele