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

Mehrere Funktionen bei klicken eines Buttons [Flash 10]

 


AntwortenRegistrieren Seite1 2  

DaFuNsEl#1
Benutzerbild von DaFuNsEl
Beiträge: 170
Registriert: Jun 2007

22.06.2011, 18:00

Hallo zusammen.
Da ich noch seeeeeehr viele Probleme mit AS3 habe bin ich dabei eine Homepage mit allem drum und dran zu basteln um ein wenig damit vertraut zu werden.

Die Oberfläche ist soweit fertig und es läuft alles fast so wie ich mir das vorstelle. Meine Navigation besteht aus folgendem Script:
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
home.addEventListener(MouseEvent.CLICK,diahome);

function diahome(evt:MouseEvent)
{
     index1.gotoAndPlay("51");
     iris.gotoAndPlay("101");
 
     var preloader:myLoader = new myLoader();
     addChild(preloader);
     preloader.x = stage.stageWidth / 2;
     preloader.y = 340;
 
     var inhalt:Loader = new Loader();
     inhalt.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, laden);
     inhalt.contentLoaderInfo.addEventListener(Event.COMPLETE, fertig);
     inhalt.load(new URLRequest("diahome.swf"));
 
     function laden(e:ProgressEvent):void
     {
        var przt:Number = e.bytesLoaded / e.bytesTotal;
        preloader.prozent.text = Math.ceil(przt * 100) + "%".toString();
     }
 
     function fertig(e:Event):void
     {
        removeChild(preloader);
        preloader.prozent = null;
        mc.addChild(inhalt);
        iris.gotoAndPlay("51");
        removeEventListener(MouseEvent.CLICK,diahome);
     }
 
}

////////////////////////////////////////////////////////////////////////////

booth.addEventListener(MouseEvent.CLICK,diabooth);

function diabooth(evt:MouseEvent)
{
     index1.gotoAndPlay("51");
     iris.gotoAndPlay("101");
 
     var preloader:myLoader = new myLoader();
     addChild(preloader);
     preloader.x = stage.stageWidth / 2;
     preloader.y = 340;
 
     var inhalt:Loader = new Loader();
     inhalt.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, laden);
     inhalt.contentLoaderInfo.addEventListener(Event.COMPLETE, fertig);
     inhalt.load(new URLRequest("diabooth.swf"));
 
     function laden(e:ProgressEvent):void
     {
        var przt:Number = e.bytesLoaded / e.bytesTotal;
        preloader.prozent.text = Math.ceil(przt * 100) + "%".toString();
     }
 
     function fertig(e:Event):void
     {
        removeChild(preloader);
        preloader.prozent = null;
        mc.addChild(inhalt);
        iris.gotoAndPlay("51");
        beschreibung.text = "Wonderful time of work with great engineers, designers, artists and musicians at the Frankfurt music fair!";
        removeEventListener(MouseEvent.CLICK,diabooth);
     }
 
}

////////////////////////////////////////////////////////////////////////////

beau.addEventListener(MouseEvent.CLICK,diabeau);

function diabeau(evt:MouseEvent)
{
     index1.gotoAndPlay("51");
     iris.gotoAndPlay("101");
 
     var preloader:myLoader = new myLoader();
     addChild(preloader);
     preloader.x = stage.stageWidth / 2;
     preloader.y = 340;
 
     var inhalt:Loader = new Loader();
     inhalt.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, laden);
     inhalt.contentLoaderInfo.addEventListener(Event.COMPLETE, fertig);
     inhalt.load(new URLRequest("diabeau.swf"));
 
     function laden(e:ProgressEvent):void
     {
        var przt:Number = e.bytesLoaded / e.bytesTotal;
        preloader.prozent.text = Math.ceil(przt * 100) + "%".toString();
     }
 
     function fertig(e:Event):void
     {
        removeChild(preloader);
        preloader.prozent = null;
        mc.addChild(inhalt);
        iris.gotoAndPlay("51");
        beschreibung.text = "My beloved daughter Lotte, My son Nils and my son Manu!";
        removeEventListener(MouseEvent.CLICK,diabeau);
     }
 
}

////////////////////////////////////////////////////////////////////////////

timemachine.addEventListener(MouseEvent.CLICK,diatimemachine);

function diatimemachine(evt:MouseEvent)
{
     index1.gotoAndPlay("51");
     iris.gotoAndPlay("101");
 
     var preloader:myLoader = new myLoader();
     addChild(preloader);
     preloader.x = stage.stageWidth / 2;
     preloader.y = 340;
 
     var inhalt:Loader = new Loader();
     inhalt.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, laden);
     inhalt.contentLoaderInfo.addEventListener(Event.COMPLETE, fertig);
     inhalt.load(new URLRequest("diatimemachine.swf"));
 
     function laden(e:ProgressEvent):void
     {
        var przt:Number = e.bytesLoaded / e.bytesTotal;
        preloader.prozent.text = Math.ceil(przt * 100) + "%".toString();
     }
 
     function fertig(e:Event):void
     {
        removeChild(preloader);
        preloader.prozent = null;
        mc.addChild(inhalt);
        iris.gotoAndPlay("51");
        beschreibung.text = "Musicians, here are my old companions!";
        removeEventListener(MouseEvent.CLICK,diatimemachine);
     }
 
}

////////////////////////////////////////////////////////////////////////////

newartist.addEventListener(MouseEvent.CLICK,dianewartist);

function dianewartist(evt:MouseEvent)
{
     index2.gotoAndPlay("51");
     iris.gotoAndPlay("101");
 
     var preloader:myLoader = new myLoader();
     addChild(preloader);
     preloader.x = stage.stageWidth / 2;
     preloader.y = 340;
 
     var inhalt:Loader = new Loader();
     inhalt.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, laden);
     inhalt.contentLoaderInfo.addEventListener(Event.COMPLETE, fertig);
     inhalt.load(new URLRequest("dianewartist.swf"));
 
     function laden(e:ProgressEvent):void
     {
        var przt:Number = e.bytesLoaded / e.bytesTotal;
        preloader.prozent.text = Math.ceil(przt * 100) + "%".toString();
     }
 
     function fertig(e:Event):void
     {
        removeChild(preloader);
        preloader.prozent = null;
        mc.addChild(inhalt);
        iris.gotoAndPlay("51");
        beschreibung.text = "Here I am introduceing a great new artist. Mister Marc Seefried and his fantastic work.contact: seefried@gmx.de";
        removeEventListener(MouseEvent.CLICK,dianewartist);
     }
 
}

////////////////////////////////////////////////////////////////////////////

guestbook.addEventListener(MouseEvent.CLICK,getguestbook);

function getguestbook(evt:MouseEvent)
{
     index2.gotoAndPlay("51");
     iris.gotoAndPlay("101");
     screen.gotoAndPlay("2");
 
     var preloader:myLoader = new myLoader();
     addChild(preloader);
     preloader.x = stage.stageWidth / 2;
     preloader.y = 340;
 
     var inhalt:Loader = new Loader();
     inhalt.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, laden);
     inhalt.contentLoaderInfo.addEventListener(Event.COMPLETE, fertig);
     inhalt.load(new URLRequest("guestbook.swf"));
 
     function laden(e:ProgressEvent):void
     {
        var przt:Number = e.bytesLoaded / e.bytesTotal;
        preloader.prozent.text = Math.ceil(przt * 100) + "%".toString();
     }
 
     function fertig(e:Event):void
     {
        removeChild(preloader);
        preloader.prozent = null;
        mcguestbook.addChild(inhalt);
        iris.gotoAndPlay("51");
        removeEventListener(MouseEvent.CLICK,getguestbook);
     }
 
}

////////////////////////////////////////////////////////////////////////////

imprint.addEventListener(MouseEvent.CLICK,getimprint);

function getimprint(evt:MouseEvent)
{
     index2.gotoAndPlay("51");
     iris.gotoAndPlay("101");
 
     var preloader:myLoader = new myLoader();
     addChild(preloader);
     preloader.x = stage.stageWidth / 2;
     preloader.y = 340;
 
     var inhalt:Loader = new Loader();
     inhalt.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, laden);
     inhalt.contentLoaderInfo.addEventListener(Event.COMPLETE, fertig);
     inhalt.load(new URLRequest("imprint.swf"));
 
     function laden(e:ProgressEvent):void
     {
        var przt:Number = e.bytesLoaded / e.bytesTotal;
        preloader.prozent.text = Math.ceil(przt * 100) + "%".toString();
     }
 
     function fertig(e:Event):void
     {
        removeChild(preloader);
        preloader.prozent = null;
        mc.addChild(inhalt);
        iris.gotoAndPlay("51");
        removeEventListener(MouseEvent.CLICK,getimprint);
     }
 
}

////////////////////////////////////////////////////////////////////////////

policy.addEventListener(MouseEvent.CLICK,getpolicy);

function getpolicy(evt:MouseEvent)
{
     index2.gotoAndPlay("51");
     iris.gotoAndPlay("101");
 
     var preloader:myLoader = new myLoader();
     addChild(preloader);
     preloader.x = stage.stageWidth / 2;
     preloader.y = 340;
 
     var inhalt:Loader = new Loader();
     inhalt.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, laden);
     inhalt.contentLoaderInfo.addEventListener(Event.COMPLETE, fertig);
     inhalt.load(new URLRequest("policy.swf"));
 
     function laden(e:ProgressEvent):void
     {
        var przt:Number = e.bytesLoaded / e.bytesTotal;
        preloader.prozent.text = Math.ceil(przt * 100) + "%".toString();
     }
 
     function fertig(e:Event):void
     {
        removeChild(preloader);
        preloader.prozent = null;
        mc.addChild(inhalt);
        iris.gotoAndPlay("51");
        removeEventListener(MouseEvent.CLICK,getpolicy);
     }
 
}


Ich weiß nicht ob man dieses noch vereinfachen könnte, sodass ich nicht für jeden Button eine Funktion schreiben muss. Ich würde auch gerne die Funktion von einem Button löschen das die Funktion nur einmal ausgeführt wird wenn man auf den Button klickt und erst wieder ausgeführt wird wenn man zuvor auf einen anderen Button geklickt hat. Mir ist auch aufgefallen das die externen .swf´s nicht gelöscht werden wenn ich eine andere lade. Diese werden nur übereinander gelegt. Um das Ganze zu erweitern würde ich auch gerne wissen wie man den Cache löschen kann damit jede .swf neu geladen wird. Ist das alles in irgendeiner Form möglich?

Über eine Antwort würde ich mich sehr freuen.

-->LG<--
Schlagwörter: button, Funktionen, preloader
Geändert von DaFuNsEl am 23.06.11 um 12:32 Uhr
DaFuNsEl#2
Benutzerbild von DaFuNsEl
Beiträge: 170
Registriert: Jun 2007

Themenautor/in

27.06.2011, 14:17

So ich bin mit meinem Problem sogut wie durch... Das jetzige Ergebnis sieht so aus:
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
var preloader:myLoader;

var btnId:String;
var currentVisibleObject:Loader=null;

guestbook.addEventListener(MouseEvent.CLICK,getguestbook);
function getguestbook(evt:MouseEvent)
{
    var url:String = "";
    var request:URLRequest = new URLRequest(url);
    try {
      navigateToURL(request, '_self');
    } catch (e:Error) {
      trace("Error occurred!");
    }
}

booth.addEventListener(MouseEvent.CLICK, clickHandler);
home.addEventListener(MouseEvent.CLICK, clickHandler);
beau.addEventListener(MouseEvent.CLICK, clickHandler);
timemachine.addEventListener(MouseEvent.CLICK, clickHandler);
newartist.addEventListener(MouseEvent.CLICK, clickHandler);
imprint.addEventListener(MouseEvent.CLICK, clickHandler);
policy.addEventListener(MouseEvent.CLICK, clickHandler);
home.dispatchEvent(new MouseEvent(MouseEvent.CLICK));

function clickHandler(e:MouseEvent):void{
     if(currentVisibleObject){
        currentVisibleObject.unload();
        mc.removeChild(currentVisibleObject);
     }
     switch(e.target.name){
        case "home":
        case "booth":
        case "beau":
        case "timemachine":index1.gotoAndPlay("51"); break;
        default: index2.gotoAndPlay("51");
     }
     
     iris.gotoAndPlay("101");
     preloader= new myLoader();
     addChild(preloader);
     preloader.x = stage.stageWidth / 2;
     preloader.y = 340;
     btnId=e.target.name;
     var inhalt:Loader = new Loader();
          currentVisibleObject=inhalt;
     inhalt.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, laden);
     inhalt.contentLoaderInfo.addEventListener(Event.COMPLETE, fertig);
     inhalt.load(new URLRequest(e.target.name+".swf"));
}

function laden(e:ProgressEvent):void{
          var przt:Number = e.bytesLoaded / e.bytesTotal;
          preloader.prozent.text = Math.ceil(przt * 100) + "%".toString();
}

function fertig(e:Event):void{
          removeChild(preloader);
          preloader.prozent = null;
          mc.addChild(currentVisibleObject);
          iris.gotoAndPlay("51");
     switch(btnId){
          case "booth": beschreibung.text = "Wonderful time of work with great engineers, designers, artists and musicians at the Frankfurt music fair!"; break;
        case "beau": beschreibung.text = "My beloved daughter Lotte, My son Nils and my son Manu!"; break;
        case "timemachine": beschreibung.text = "Musicians, here are my old companions!"; break;
        case "newartist": beschreibung.text = "Here I am introduceing a great new artist. Mister Marc Seefried and his fantastic work.contact: seefried@gmx.de"; break;
     }
          removeEventListener(MouseEvent.CLICK, clickHandler);
}


Ich hätte jetzt noch 2 Fragen:

1)...ob es möglich ist eine Funktion zu erstellen in der man den Aktuellen Frame von einem MC (in dem Fall die Iris) abfragen kann und erst mann Frame "x" erreicht ist soll das Script oben ausgeführt werden, also die Funktionen das die .swf´s geladen werden etc. Ich fände es schöner wenn der Preloader erst einsetzt, wenn die Iris geschlossen ist...
Habe schon ein bisschen mit currentframe gespielt und die Framenummer abgefragt... Ich weiß nur nicht wie ich das jetzt noch verschachtelt bekomme das es einen Sinn ergibt.

2)...die home.swf soll auch schon am Anfang geladen werden. Wenn die Iris geschlossen ist. Ich habe das schon mit
ActionScript:
1home.dispatchEvent(new MouseEvent(MouseEvent.CLICK));

probiert, geht soweit auch, nur das die Animation gestartet wird, das will ich nicht. Somit habe ich
ActionScript:
1
2
3
currentVisibleObject=new Loader();
currentVisibleObject.load(new URLRequest("home.swf"));
mc.addChild(currentVisibleObject);
versucht, auch ok aber ohne Preloader...Das Ganze würde ja nur Sinn machen wenn ich eine Lösung für die Iris habe. Dann kann man ja auf die anderen Funktionen verweisen, somit wäre der Loader auch dabei.

Am Anfang schließt sich die Iris und öffnet sich wieder (geht bis Frame 100)... Wenn ich auf einen BTN klicke schließt sie sich und dann kommt der Loader, wenn .swf fertig geladen geht die Iris auf und man sieht den Inhalt.

Wäre über jede Hilfe sehr dankbar...

-->LG<--
RustyCake#3
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

30.06.2011, 18:57