Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-06-2005, 20:18   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Frankfurt am Main
Beiträge: 94
Dynamisch erzeugte MCs mit Klick versehen?

Hi,

irgendwie stehe ich schonwieder auf dem Schlauch...

ActionScript:
  1. for(var a=0;a<clips.length;a++){
  2.     var myThumb = "thumb_mc_"+a;   
  3.     _root.createEmptyMovieClip(myThumb, _root.getNextHighestDepth());
  4.     var myListener:Object = new Object();
  5.     myListener.onLoadInit = function(targetMC:MovieClip) {
  6.         targetMC._width = thumbWidth;
  7.         targetMC._height = thumbHeight;
  8.     }
  9.     var imageLoader:MovieClipLoader = new MovieClipLoader();
  10.     imageLoader.addListener(myListener);
  11.     imageLoader.loadClip(thumbPath+clips[a][2], myThumb);   
  12.    
  13.     _root[myThumb]._x=a*thumbWidth+vidDisplayWidth+10;
  14.     _root[myThumb]._y=10;
  15.    
  16.     _root[myThumb].onRelease = function(){
  17.         trace("CLICKED: "+ myThumb);
  18.     };
  19.    
  20. }

Ich erzeuge damit Thumbnails, funktioniert auch soweit... aber wie bekomme ich diese jetzt dazu, auf den MouseClick zu reagieren?
Das
ActionScript:
  1. _root[myThumb].onRelease = function(){
  2.         trace("CLICKED: "+ myThumb);
  3.     };
macht leider nichts....?

gruss
Tom
Tom(2) ist offline   Mit Zitat antworten
Alt 07-06-2005, 20:25   #2 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
nach der zuweisung mal ein
trace(_root[myThumb]) ergibt das ne funktion?
bezweifle ich mal nicht.
Hast du dem root einen mousevent gegeben? der würde als unterhalb in der hierarchie überdecken(beim root jeden )
testweise mal nen neuen film anlegen und dort die funktion testen..

im übrigen solltest du per
_root[myThumb].id=myThumb den namen explizit im button hinterlegen.
so wie es jetzt ist würdest du den letzten erstellten namen ausgeben

ich bin zwar noch nen MX2004loser aber lädst du in den leeren film etwas rein?
damit wird der onRelease (zumidnest in MX) gelöscht.
umgehe das über de doppelte hierarchie.
estelle movieclip
und erstelle in diesem movieclip noch einen clip in den du den content lädst
auf den zuerst erstellten legste deine variablen und mouseEvents.
dann wird da nichts gelsöcht

deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 07-06-2005, 20:30   #3 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Warum muss das Object myListener in der for-Schleife immer wieder generiert werden?
Kannste das nicht ausserhalb der for-Schleife anlegen?

Wenn Du einen mc in einen anderen reinlädtst überschreibst Du dessen eigenschaften ( Funktionen, Variablen ) darum funktioniert das nicht.
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 07-06-2005, 21:32   #4 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Frankfurt am Main
Beiträge: 94
Zitat:
Zitat von Redner[i]
Warum muss das Object myListener in der for-Schleife immer wieder generiert werden?
Hm, stimmt, das Objekt ansich muss ja nur einmal da sein, lediglich das initLoad will ich für jeden in der Schleife erzeugten MC haben.

Zitat:
Zitat von Redner[i]
Wenn Du einen mc in einen anderen reinlädtst überschreibst Du dessen eigenschaften ( Funktionen, Variablen ) darum funktioniert das nicht.
ok, in meinem Fall lade ich nach dem Erstellen des leeren MCs jpg Bilder in diesen, deshalb klappt das nicht?

Zitat:
Zitat von Deluxe
damit wird der onRelease (zumidnest in MX) gelöscht. umgehe das über de doppelte hierarchie. estelle movieclip und erstelle in diesem movieclip noch einen clip in den du den content lädst auf den zuerst erstellten legste deine variablen und mouseEvents.
dann wird da nichts gelsöcht
Wie müsste ich denn den Aufruf gestalten, dass ich für jeden MCs einen weiteren darin bekomme?
ActionScript:
  1. (...)
  2. _root.createEmptyMovieClip(myThumb, _root.getNextHighestDepth());
  3. _root[myThumb].createEmptyMovieClip(myThumbImgHolder, _root[myThumb].getNextHighestDepth());
  4. (...)

und den jpg krempel lade ich dann in den myThumbImgHolder MC?

Zitat:
Zitat von Deluxe
im übrigen solltest du per
_root[myThumb].id=myThumb den namen explizit im button hinterlegen.
so wie es jetzt ist würdest du den letzten erstellten namen ausgeben
ok...
in meinem Fall wäre das dann für den 2. MC "aufgelöst":
_root.thumb_mc_1.id = thumb_mc_1 ?
Wofür wird das gebraucht? In meinem weiteren Script komme ich an alle Instanzen (thumb_mc_0, thumb_mc_1, usw) und Eigenschaften wie zb thumb_mc_2._alpha ran...

gruss + danke
Tom

Geändert von Tom(2) (07-06-2005 um 21:37 Uhr)
Tom(2) ist offline   Mit Zitat antworten
Alt 07-06-2005, 22:30   #5 (permalink)
Neuer User
 
Benutzerbild von norbman
 
Registriert seit: Oct 2003
Ort: berlin
Beiträge: 17
nochmalzumnachvollziehen

wenn ich das richtig verstanden habe, dann kann ich einen per as erzeugten movieclip in dem ich ein externes bild lade nur dann als schaltfläche nutzen, wenn ich ihn in einen container-movieclip packe und auf diesen mit keypress zugreife ?
norbman ist offline   Mit Zitat antworten
Alt 07-06-2005, 22:57   #6 (permalink)
Neuer User
 
Benutzerbild von Xeef
 
Registriert seit: Sep 2004
Ort: Spain/Ibiza
Beiträge: 942
nein

das problem ist das wen du ein clip in ein holder rein ladest wird der holder zum geladenen clip (wen es geladen ist)
und da der geladene clip kein onWASauchimmer hat gehts nicht


ActionScript:
  1. //loads are asynchronous so this will NOT work
  2. _root.createEmptyMovieClip("test", 9);
  3. test.loadMovie("a.swf");
  4. test.onPress = function() {
  5.  trace("Hallo By Holder-Holder");
  6. };
  7. //
  8. //BUT this
  9. //
  10. _root.createEmptyMovieClip("Clip1", 1);
  11. _root.createEmptyMovieClip("Clip2", 2);
  12. _root.createEmptyMovieClip("Clip3", 3);
  13. _root.createEmptyMovieClip("Clip4", 4);
  14. Clip1._x = 100;
  15. Clip2._x = 200;
  16. Clip3._x = 300;
  17. Clip4._x = 400;
  18. //
  19. // Holder - Holder
  20. //
  21. Clip1.createEmptyMovieClip("H", 1);
  22. Clip1.onPress = function() {
  23.  trace("Hallo By Holder-Holder");
  24. };
  25. Clip1.H.loadMovie("a.swf");
  26. //
  27. //MovieClipLoader
  28. //
  29. Q = new MovieClipLoader();
  30. L = {};
  31. L.onLoadInit = function(_mc) {
  32.  _mc.onPress = function() {
  33.   trace("Hallo By MovieClipLoader");
  34.  };
  35. };
  36. Q.addListener(L);
  37. Q.loadClip("a.swf", Clip2);
  38. //
  39. //loadMovie /onEnterFrame
  40. //
  41. Clip3.loadMovie("a.swf");
  42. onEnterFrame = function () {
  43.  if (Clip3.getBytesLoaded() == Clip3.getBytesTotal() && Clip3.getBytesLoaded()<>0) {
  44.   delete onEnterFrame;
  45.   Clip3.onPress = function() {
  46.    trace("Hallo By loadMovie /onEnterFrame");
  47.   };
  48.  }
  49. };
  50. //
  51. //loadMovie / setInterval
  52. //
  53. Clip4.loadMovie("a.swf");
  54. function Check() {
  55.  if (Clip4.getBytesLoaded() == Clip4.getBytesTotal() && Clip4.getBytesLoaded()<>0) {
  56.   clearInterval(IntVal);
  57.   Clip4.onPress = function() {
  58.    trace("Hallo By loadMovie / setInterval");
  59.   };
  60.  }
  61. }
  62. IntVal = setInterval(Check, 100);
__________________
Languages : (in the order of knowledge/preference)
Read: Flash AS, PHP, JS, Html, DHtml, Basic, C++, DOS, 3DMaxScript, English, Deutsch, Magyar, XML, Pascal, VB, Spanish
Write: Flash AS, Basic, PHP, JS, DHtml, Html, ..., C++, ...., ..., English, ..., ..., ..., ...., Deutsch, ..., Magyar

wen du mein deutsch nicht magst whele eine andere sparache von den obrigen ;)
Xeef ist offline   Mit Zitat antworten
Alt 08-06-2005, 08:28   #7 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Frankfurt am Main
Beiträge: 94
hi xeef,

danke für die mc-load varianten!!!

Tom(2) ist offline   Mit Zitat antworten
Alt 08-06-2005, 09:02   #8 (permalink)
Neuer User
 
Benutzerbild von norbman
 
Registriert seit: Oct 2003
Ort: berlin
Beiträge: 17
@Xeef: Danke für die Antwort, ich finde das aber sehr umständlich,
vor allem, da meine Flash-Applikation selbst nicht einen einzigen
Bibliotheks-Inhalt hat, sondern alles während der Laufzeit,
durch XML-Dateien gesteuert, von AS erzeugt wird...

Dazu kommt ja wohl auch noch das Problem, das Flash asynchron lädt,
ich also bei jedem XML-Objekt, jedem Bild, jedem Sound usw. anscheinend
einen Loader verwenden muß um zu checken, ob der Content im Programm ist...

Gruss, norbman
norbman ist offline   Mit Zitat antworten
Alt 08-06-2005, 12:30   #9 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Frankfurt am Main
Beiträge: 94
hi, ich nochmal...
Zitat:
Zitat von xeef
ActionScript:
  1. (...)
  2. Q = new MovieClipLoader();
  3. L = {};
  4. L.onLoadInit = function(_mc) {
  5.         _mc.onPress = function() {
  6.                 trace("Hallo By MovieClipLoader");
  7.         };
  8. };
  9. Q.addListener(L);
  10. Q.loadClip("a.swf", Clip2);
  11. (...)
wie kann ich denn die so in einer for schleife erzeugten buttons ne funktion auslösen lassen, die als parameter die iteration der for schleife enthält?
ich habe n thumbnails, die n .flv filme triggern sollen. die trigger funktion lautet getMovie(mov), wobei mov der position im array entspricht, in dem filmdatei, filmlänge und thumbdatei drin stehen...

hier ist nochmal die momentane for schleife:
ActionScript:
  1. var clips = [
  2.     ["film1.flv",22.793,"film1.jpg"],
  3.     ["film2.flv",13.040,"film2.jpg"],
  4.     ["film3.flv",35.000,"film3.jpg"]
  5. ];
  6. for(var a=0;a<clips.length;a++){
  7. // im moment drei movies/längen/thumbs im array 
  8.     var myThumb = "thumb_mc_"+a;
  9.     _root.createEmptyMovieClip(myThumb, _root.getNextHighestDepth());
  10.    
  11.     thumbListener.onLoadInit = function(targetMC:MovieClip) {
  12.         targetMC._width = thumbWidth;
  13.         targetMC._height = thumbHeight;
  14.        
  15.         targetMC.onRelease = function(){
  16.             // wie bekomme ich den wert "a" aus der Schleife hier             
  17.                         // rein? das da geht nicht:
  18.                         getMovie(a);
  19.                         // da haben alle thumbs ne "3" als parameter stehen
  20.         };
  21.        
  22.     }
  23.    
  24.     var imageLoader:MovieClipLoader = new MovieClipLoader();
  25.     imageLoader.addListener(thumbListener);
  26.     imageLoader.loadClip( thumbPath+clips[a][2], myThumb)
  27.    
  28.     _root[myThumb]._x=a*thumbWidth+vidDisplayWidth+10;
  29.     _root[myThumb]._y=10;
  30.     _root[myThumb].id = myThumb;
  31.  
  32. }
  33. function getMovie(mov) {
  34.         (...)
  35. };

Tom

Geändert von Tom(2) (08-06-2005 um 12:32 Uhr)
Tom(2) ist offline   Mit Zitat antworten
Alt 08-06-2005, 15:33   #10 (permalink)
Neuer User
 
Benutzerbild von Xeef
 
Registriert seit: Sep 2004
Ort: Spain/Ibiza
Beiträge: 942
Hmm

es wundert mich ein bischen das das wie du es gerade machst uberhaupt halbwegs richtig funktionirt


hiermit wird jede runde ein neues erzeugt und der alte uberschrieben
var imageLoader:MovieClipLoader = new MovieClipLoader();

normal brauchst nur EIN MovieClipLoader der kan mehrere clips laden


langer rede kurzer sin
hier wie ichs auf die schnele machen wurde :

ActionScript:
  1. var imageLoader:MovieClipLoader = new MovieClipLoader();
  2. thumbListener = {};
  3. thumbListener.onLoadInit = function(targetMC:MovieClip) {
  4.  targetMC._width = thumbWidth;
  5.  targetMC._height = thumbHeight;
  6.  targetMC.onRelease = function() {
  7.   trace(Revers[this._name]);
  8.   trace("undefined -->"+this.id);
  9.  };
  10. };
  11. imageLoader.addListener(thumbListener);
  12. Revers = {};
  13. var clips = ["a.jpg", "b.jpg", "c.jpg"];
  14. for (var a = 0; a<clips.length; a++) {
  15.  var myThumb = "thumb_mc_"+a;
  16.  Revers[myThumb] = a;
  17.  _root.createEmptyMovieClip(myThumb, _root.getNextHighestDepth());
  18.  imageLoader.loadClip(clips[a], myThumb);
  19.  _root[myThumb]._x = a*50;
  20.  _root[myThumb]._y = 10;
  21.  // id wird hier nich functioniren weil es vom loaded clip uberschrieben wird
  22.  _root[myThumb].id = myThumb;
  23. }
__________________
Languages : (in the order of knowledge/preference)
Read: Flash AS, PHP, JS, Html, DHtml, Basic, C++, DOS, 3DMaxScript, English, Deutsch, Magyar, XML, Pascal, VB, Spanish
Write: Flash AS, Basic, PHP, JS, DHtml, Html, ..., C++, ...., ..., English, ..., ..., ..., ...., Deutsch, ..., Magyar

wen du mein deutsch nicht magst whele eine andere sparache von den obrigen ;)
Xeef ist offline   Mit Zitat antworten
Alt 08-06-2005, 15:50   #11 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Frankfurt am Main
Beiträge: 94
Zitat:
Zitat von Xeef
es wundert mich ein bischen das das wie du es gerade machst uberhaupt halbwegs richtig funktionirt

*hüstel*... ich bin auch verdammt am schwimmen.
meine AS kenntnisse sind total eingerostet, und hinter jeder code ecke lauern neue überaschungen...

was macht den das hier: Revers = {}; ?

ich probiere es mal mit deinem ansatz, ich dachte, ich müsste für jedes thumb so ein movieCliip loader ding machen...

Geändert von Tom(2) (08-06-2005 um 15:51 Uhr)
Tom(2) ist offline   Mit Zitat antworten
Alt 08-06-2005, 15:58   #12 (permalink)
Neuer User
 
Benutzerbild von Xeef
 
Registriert seit: Sep 2004
Ort: Spain/Ibiza
Beiträge: 942
sind abkurzungen --->

a = new Object();
A = {};
b = new Array();
B = [];
__________________
Languages : (in the order of knowledge/preference)
Read: Flash AS, PHP, JS, Html, DHtml, Basic, C++, DOS, 3DMaxScript, English, Deutsch, Magyar, XML, Pascal, VB, Spanish
Write: Flash AS, Basic, PHP, JS, DHtml, Html, ..., C++, ...., ..., English, ..., ..., ..., ...., Deutsch, ..., Magyar

wen du mein deutsch nicht magst whele eine andere sparache von den obrigen ;)
Xeef ist offline   Mit Zitat antworten
Alt 08-06-2005, 16:10   #13 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Frankfurt am Main
Beiträge: 94
ah, ok, verstehe, danke!

Dein Code funktioniert 1a, juhu.
Vielen, vielen Dank.

Tom
Tom(2) 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 08:05 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele