Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-02-2004, 14:57   #1 (permalink)
istvan
Gast
 
Beiträge: n/a
Buttons zur Laufzeit erzeugen

Ich habe eine Landkarte erstellt, wo ich Punkte für die Städte einzeichnen möchte:

http://www.travelgrove.com/projekt/t...avel_grove.php
(bis in USA reinzoomen)

Zur Zeit mache ich die Punkte mit MovieClips. Unerfahren in Flash, wie ich bin, meine ich, Buttons wären für diese Aufgabe geeigneter (ein Glaube, der vielleicht daraus resultiert, dass ich es noch nicht ganz kapiert habe was die beiden genau machen...). Wie auch immer kann ich für Buttons keinen Befehl duplicate finden, wie ich es jetzt für die mc-s drin habe. Wie kann ich nun Buttons zur Laufzeit erzeugen und diese bei Bedarf vernichten (vielleicht aufgrund einer Vorlage aus dem Lybrary)?

Danke im voraus.
  Mit Zitat antworten
Alt 08-02-2004, 15:49   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Nee, sowas kannst nur mit MCs machen. Die sind in den meisten Fällen eh "gescheiter" als Buttons, können aber seit MX das gleiche!

Kannst dynamisch erzeugen per:
MC.createEmptyMovieClip();
MC.attachMovie();
MC.duplicateMovieClip();

und entfernen per:
MC.removeMovieClip();

...mehr dazu in Flash-Referenz/Hilfe
__________________
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 08-02-2004, 16:21   #3 (permalink)
istvan
Gast
 
Beiträge: n/a
Jetzt habe ich weitergemacht mit den MC-s. Ich bin gerade dabei, die zu entfernen. Jetzt sehe ich gerade, dass nur meine MC- mit der Depth-Nr bis 9 entfern werden. in dem Moment, wo der depth-Nr (die ich bei Duplicate MC angegeben habe) zweistellig wird, werden die MC-s nicht abgelöscht. Beim remove laufe ich wieder die XML-File durch, aber referenziere über den Namen des MC:

removeMovieClip (arg);

wobei arg immer aus der XML-Datei kommt (der Name einer Stadt)
Grundsätzlich habe ich dieses Argument depth beim duplicate nicht verstanden. Ich habe allerdings gesehen, wenn ich zwei gleiche vergebe, ist der eine nicht sichtbar. Ich hoffe, es werden nicht ständig neue Layer erzeugt (das müsste ziemlich auf die Performance durchschlagen, oder?
  Mit Zitat antworten
Alt 08-02-2004, 16:35   #4 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Diese Tiefenangabe ist Flashs internes Layer-System. Wie du schon richtig sagst - es können keine 2 Objekte auf der selben Tiefe wohnen.
Und removeMovieClip is eine Objektmethode, d.h das zu entfernende Objekt wird vorn drangestellt: zuentfernenderMC.removeMovieClip();
__________________
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 08-02-2004, 16:44   #5 (permalink)
istvan
Gast
 
Beiträge: n/a
Ich gleube, ich hebe den Syntax noch nicht ganz raus:

_root(arg).removeMovieClip();
oder
arg.removeMovieClip();

So macht er's nicht.
Es läuft in einer Schleife, deshalb kann ich keine absoluten Namen einfügen, nur die Variable arg.
Ich habe zwei Themen weiter unten irgendwas mit attachmovie gelesen. Kann man das nicht vielleicht besser handhaben?

Danke im voraus
  Mit Zitat antworten
Alt 08-02-2004, 16:46   #6 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
So sollts gehen:
ActionScript:
  1. _root[arg].removeMovieClip();
__________________
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 08-02-2004, 17:09   #7 (permalink)
istvan
Gast
 
Beiträge: n/a
Das funktioniert auch nur bis zu Depth-Nr 9. Wenn die Depth-Nr des MC-s zweistellig wird, wird er nicht entfernt. Desto merkwürdiger, als es beim Erzeugen keine Probleme gibt.
  Mit Zitat antworten
Alt 08-02-2004, 19:04   #8 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Hm, das kann ich jetz auch nicht nachvollziehen... dann stimmt irgendwas anderes nicht, weil die Tiefe (sofern sie positiv ist) keinen Enfluss darauf hat, ob ein MC entfernt werden kann oder nicht. Lass dir doch an möglichst vielen Stellen mal was tracen - sind die MCs alle da, wie heißen sie, welche Tiefe bewohnen sie (MC.getDepth() usw.
__________________
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 09-02-2004, 00:03   #9 (permalink)
istvan
Gast
 
Beiträge: n/a
Ich weiss nicht was ich falsch mache.
hier meine Trace-Ergebnisse:
0 LosAngeles 147456
1 NewYork 147457
2 LasVegas 147458
3 Atlanta 147459
4 Dallas 147460
5 WashingtonDC 147461
6 SanFrancisco 147462
7 Baltimore 147463
8 Seattle 147464
9 Portland 147465
10 SanDiego 1622026
11 SanJose 1622028
12 Aiken 1622029
13 Spokane 1622030
14 Memphis 1622031
15 EastElmhurst 1622032
16 MiamiBeach 1622033
17 Cleveland 1622034
18 Detroit 1622035
19 Boston 1622036
20 Chicago 1622037
21 Pennsylvania 1622038
22 Philadelphia 1622039
23 Connecticut 1622040
24 New Jersey 1622041
25 Buffalo 1622042
26 Tulsa 1622043
27 St Peterburg 1622044
28 Los Alamos 1622045
29 Flagstaff 1622036
30 San Jose 1622047
31 Irvine 1622048
32 Atlantic City 1622049
33 Parstow 16367750
Das bekomme ich, wo ich die MC-s erzeuge. die erste Zahl ist die Reihenfolge, das zweite ist der Name und die dritte ist getDepth(). Merkwürdig ist der grosse Sprung bei Prtland (Nr. 10), denn genau ab dieser Nr. wird nichts mehr abgelöscht später.
Vielleicht hat jemand eine Idee...
Ich bin z. Z ziemlich ratlos
  Mit Zitat antworten
Alt 09-02-2004, 09:52   #10 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Habs getestet: Man kann MCs anscheinend nur bis zu einer Tiefe von 1 Million und ein paar zerquetschte wieder entfernen... weiß nicht, ob das bekannt is.
Entweder du erzeugst die also gleich auf einer "erträglicheren" Tiefe oder du verlegst sie nachträglich per swapDepths() dahin, wo sie entfernt werden können. So z.B.
ActionScript:
  1. MovieClip.prototype.killHiDepth = function() {
  2. if(this.getDepth() > 1000000) {
  3. this.swapDepths(this.getDepth() - 1000000);
  4. this.removeMovieClip();
  5. }
  6. };
  7. //Aufruf:
  8. Boston.killHiDepth();
__________________
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 (09-02-2004 um 10:17 Uhr)
sonar ist offline   Mit Zitat antworten
Alt 09-02-2004, 12:53   #11 (permalink)
istvan
Gast
 
Beiträge: n/a
Danke, danke, danke!!!

Ich sitze seit zwei Tagen an dem Problem. Zuletzt habe ich dann alles, was nicht weggelöscht wurde, unsichtbar gemacht.

Ich musste den depth-wert fest auf 10000 stzen (auf jeden Fall <1000000), weil, wenn ich mehr Daten habe, reicht der Abzug von einer Million auch nicht mehr (da werden depth-s mit 2und mehr Millionen zugewiesen).

Auf jeden Fall muss ich nicht mehr an meinem Verstand zweifeln.

Nochmal Tausend Dank für die Mühe.
  Mit Zitat antworten
Alt 09-02-2004, 13:24   #12 (permalink)
istvan
Gast
 
Beiträge: n/a
Mal eine ganz andere Frage:

vor allen Themen, die ich erfasse steht der Umschlag mit einem Schwarzen Loch drauf, was ich sonst nicht sehe.
Was bedeutet das?
Hoffentlich nicht, dass meine Fragen zu doof sind und die Mitglieder gewarnt werden sollen?
  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 22:45 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele