{lang: 'de'}
Flashhilfe.de - Flash Community

"removeEventListener" mit "getChildByName" [Flash 9]

 


AntwortenRegistrieren Seite1  

baru18#1
Benutzerbild von baru18
Beiträge: 6
Registriert: May 2009

28.02.2011, 11:35

moin!

ich arbeite gerade an einer bildergallerie: diverse thumbnails werden über xml reingeladen, bei "MouseEvent.CLICK" sollen diese vergrössert werden, die anderen im hintergrund werden unsichtbar, bis dahin klappts soweit...aber: wenn ich nun beim ausgeben auf die bühne klicke und zufälligerweise ein im hintergrundstehendes, unsichtbares thumbnail erwische, wird dieses vergrössert. Also versuchte ich diese im hintergrund mit "removeEventListener" inaktiv zu machen, geht aber nicht! vielleicht liegts daran, dass ich diesen mit "getChildByName" anspreche?

kann mir da mal jemand weiterhelfen? vielen dank!!

auschnitt:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
load_img.addEventListener(MouseEvent.CLICK, thumbnailClick);
function thumbnailClick(evt:MouseEvent){
  Tweener.addTween(load_img,{height:400, width:600, alpha:1, time:2, transition:"Strong"});
           for(i=0;i<=numberOfImg-1;i++){
              if(i!=nr){
                 trace(getChildByName("thumbnail_img"+i).name)
                 getChildByName("thumbnail_img"+i).removeEventListener(MouseEvent.CLICK, thumbnailClick)
                 getChildByName("thumbnail_img"+i).alpha = .1
                 Tweener.addTween(getChildByName("thumbnail_img"+i),{height:thumbnailH, width:thumbnailW, time:2, transition:"Strong"});
                 }
              }
           }



gesamter code:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
package {
     // Klassen importieren
   import flash.display.*;
     import flash.events.*;
     import flash.net.*;
     import flash.text.*;
     //
   import caurina.transitions.*;
     //
   import flash.utils.Timer;
     import flash.events.TimerEvent;
 
     public class control extends Sprite {
        public var thumbnailH:Number=100;
        public var thumbnailW:Number=150;
        public var abstand:Number=50;
        public var thumbnailX:Array=[0,abstand+thumbnailW,2*(abstand+thumbnailW),3*(abstand+thumbnailW),4*(abstand+thumbnailW),0,thumbnailW,abstand+thumbnailW,2*(abstand+thumbnailW),3*(abstand+thumbnailW),4*(abstand+thumbnailW),0,thumbnailW,abstand+thumbnailW,2*(abstand+thumbnailW),3*(abstand+thumbnailW),4*(abstand+thumbnailW),0,thumbnailW,abstand+thumbnailW,2*(abstand+thumbnailW),3*(abstand+thumbnailW),4*(abstand+thumbnailW)];
        public var thumbnailY:Array=[0,0,0,0,0,abstand+thumbnailH,abstand+thumbnailH,abstand+thumbnailH,abstand+thumbnailH,abstand+thumbnailH,2*(abstand+thumbnailH),2*(abstand+thumbnailH),2*(abstand+thumbnailH),2*(abstand+thumbnailH),2*(abstand+thumbnailH),3*(abstand+thumbnailH),3*(abstand+thumbnailH),3*(abstand+thumbnailH),3*(abstand+thumbnailH),3*(abstand+thumbnailH)];
 
        public function control() {
           var bilder=[];
 
           var XMLloader:URLLoader = new URLLoader();
           XMLloader.load(new URLRequest("content.xml"));
           XMLloader.addEventListener(Event.COMPLETE, XMLcomplete);
 
           function XMLcomplete(evt:Event) {
              var xml_dokument:XML=new XML(evt.target.data);
              xml_dokument.ignoreWhitespace = true
              ;
              for (var i:int = 0; i < xml_dokument.karte.length(); i++) {
 
                 //
               var karte = new Object();
 
                 karte.dateiname=xml_dokument.karte[i].dateiname.text();
                 karte.dateityp=xml_dokument.karte[i].dateityp.text();
                 karte.beschreibung=xml_dokument.karte[i].beschreibung.text();
                 karte.datum=xml_dokument.karte[i].datum.text();
                 karte.aktiv=xml_dokument.karte[i].aktiv.text();
 
                 bilder[bilder.length]=karte;
 
                 preloader(i,bilder[i].dateiname,xml_dokument.karte.length());
 
              }
           }
 
        }
 
        public function preloader(nr:int,dateiname:String,numberOfImg:int) {
           var preloaderX:Array=[0,11,15,11,0,-11,-15,-11];
           var preloaderY:Array=[-15,-11,0,11,15,11,0,-11];
           var circle:Array = new Array();
           var tweens:Array = new Array();
 
           var preLoader_co:Sprite = new Sprite();
           var thumbnail_co:MovieClip = new MovieClip
           var beginnTimer:Timer=new Timer(75,0);
           var load_img:Loader = new Loader();
           var url:URLRequest=new URLRequest("grusskarten/"+dateiname);
           var progressTextField:TextField = new TextField();
           var progressTextFormat:TextFormat = new TextFormat();
           var progressText:String="0%";
 
           for (var i:int = 1; i<=preloaderX.length; i++) {
              circle[i] = new circle_mc();
              circle[i].x=preloaderX[i-1];
              circle[i].y=preloaderY[i-1];
              circle[i].height=0;
              circle[i].width=0;
              circle[i].name="circle"+i;
              preLoader_co.addChild(circle[i]);
           }
           //
         preLoader_co.x=thumbnailX[nr]+(thumbnailW/2);
           preLoader_co.y=thumbnailY[nr]+(thumbnailH/2);
           preLoader_co.name="thumbnail"+nr;
           addChild(preLoader_co);
           //
         load_img.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadThumbnailProgress);
           load_img.contentLoaderInfo.addEventListener(Event.COMPLETE, loadThumbnailComplete);
           load_img.addEventListener(MouseEvent.CLICK, thumbnailClick);
           load_img.load(url);
           addChild(load_img);
           //
         function loadThumbnailProgress(evt:ProgressEvent) {
              progressText = ""+Math.round((evt.bytesLoaded/evt.bytesTotal)*100);
              progressTextField.text=progressText;
              progressTextField.x = (thumbnailX[nr]+(thumbnailW/2))-10;
              progressTextField.y = (thumbnailY[nr]+(thumbnailH/2))-10;
              progressTextField.mouseEnabled=false;
              progressTextField.selectable=false;
              progressTextFormat.font="Arial";
              progressTextFormat.size=12;
              progressTextFormat.color=0xFF0000;
              progressTextField.setTextFormat(progressTextFormat);
              addChild(progressTextField);
           }
           function loadThumbnailComplete() {
              load_img.width=thumbnailW;
              load_img.height=thumbnailH;
              load_img.x=thumbnailX[nr];
              load_img.y=thumbnailY[nr]+26;
              load_img.name="thumbnail_img"+nr;
              //trace(thumbnailY[nr])
            //trace(getChildIndex(load_img))
            removeChild(preLoader_co);
              removeChild(progressTextField);
              beginnTimer.stop();
              //

           }
           function thumbnailClick(evt:MouseEvent){
           /*trace(evt.type)
           trace(evt.target.name)
           trace(evt.currentTarget.name)
           trace(nr)*/

           trace(load_img.y)
           Tweener.addTween(load_img,{height:400, width:600, alpha:1, time:2, transition:"Strong"});
           for(i=0;i<=numberOfImg-1;i++){
              if(i!=nr){
                 trace(getChildByName("thumbnail_img"+i).name)
                 getChildByName("thumbnail_img"+i).removeEventListener(MouseEvent.CLICK, thumbnailClick)
                 getChildByName("thumbnail_img"+i).alpha = .1
                 Tweener.addTween(getChildByName("thumbnail_img"+i),{height:thumbnailH, width:thumbnailW, time:2, transition:"Strong"});
                 }
              }
           }
           //
         var a:int=0;
           beginnTimer.addEventListener("timer", beginnPreloader);
           beginnTimer.start();
           //
         function beginnPreloader() {
              if (a==0) {
                 a=1;
              }
              circle[a].height=10;
              circle[a].width=10;
              Tweener.addTween(circle[a],{height:2, width:2, time:2, transition:"Strong"});
              a++;
              if (a==9) {
                 a=1;
              }
           }
           
 
        }
        
 
 
 
     }
}


vielen dank!!!
aprik0#2
Benutzerbild von aprik0
Beiträge: 20
Registriert: Sep 2006

01.03.2011, 17:04

Leg doch einfach ein MovieClip über die nicht angezeigten Elemente drüber, wenn du ein Bild vergrößerst. Der MC sollte Stage-Breite und -Höhe haben und mit der HG gefüllt sein. Wenn du als Füllfarbe Schwarz nimmst mit 80% Deckkraft sieht man die Thumbnails auch noch durch, kann sie aber meiner Meinung nach nicht anklicken.

Andere Möglichkeit:
Alle Thumbnails in ein Array und dann über dieses eine For-Schleife machen, jedoch musst du hier nach Verlassen des Vollbildmodus wieder alle EventListener hinzufügen. Erscheint mir als unnötig, wenn die Variante von oben funktionieren sollte.


- Stefan
Geändert von aprik0 am 01.03.11 um 17:07 Uhr
RustyCake#3
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

01.03.2011, 19:48