Flashhilfe.de - Flash Community

Slider mit Button und Text [Flash CS5]

 


AntwortenRegistrieren Seite1 2  

quicksnake#1
Benutzerbild von quicksnake
Beiträge: 38
Wohnort: Daheim
Registriert: Mar 2004

17.02.2011, 18:19

Hi, ich habe aktuell ein Problem mit einem Slider. Vielleicht kann mir jemand eine Info geben, ob das schon mal besprochen wurde oder ob es überhaupt funktioniert. Nun zum Prob.: Ich möchte einen Bilderslider, welcher Bilder mit fadeIn und FadeOut einblendet. In jedem Bild benötige ich einen Button, welcher mir optional einen Text einblendet. Bei auslösen dieses Events, soll der Slider anhalten. Schliesse ich das Textfeld beispielsweise mit einem Button "Close", kann diese weitersliden. Alternativ kann dies auch stehenbleiben und mit prev und next Buttons weitergeklickt werden. Hatte dieses Problem schon mal jemand oder kann mir jemand da wieterhelfen?

Danke
RustyCake#2
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

18.02.2011, 14:02

Poste mal Deinen derzeitigen Code, mal schauen was geht, ich hoffe ich erkenne in wieder ;-)
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
quicksnake#3
Benutzerbild von quicksnake
Beiträge: 38
Wohnort: Daheim
Registriert: Mar 2004

Themenautor/in

21.02.2011, 09:43

Vom Ansatz her habe ich es so belassen und in der XML die Pics durch SWF ausgetauscht. Die SWF's hatte ich dann mit den Elementen Bild, Layer fuer Text und einem Button erstellt. Mit dem Button wollte ich die Funktion FADIN ausser Kraft setzen, sobald mit der Maus der Button erreicht ist. Problem ist, dass ich nicht weiss ob ich von einem Movieclip aus eine Funktion beeinflusen kann, welche in einem anderen MC liegt.

Das war das HauptScript:

import caurina.transitions.*;
//**
var myBigPictArray:Array = [];
var btnContainerArray:Array = [];
var bigContainerArray:Array = [];
//**
var bilderOrdner:String = null;
var timeline:MovieClip = this;
var firstLoad:Boolean = false;
var transitionInTypes:String = "easeInSine";
var transitionOutTypes:String = "easeOutSine";
var transitionInDelay:Number = 2;
var transitionOutDelay:Number = 2;
var intervalDelay:Number = 5000;
var loaderDelay:Number = 30;
var fadeInMc:MovieClip = null;
var btnMemory:MovieClip = null;
var loadcount:Number = 0;
var diacount:Number = 0;
var inter:Number = null;
//********** hier werden die Nummern_mc generiert **********//
function load_btn() {
     for (i=0; i<myBigPictArray.length; i  ) {
        var tlb:MovieClip = emptynum.attachMovie("Button_Base", "thumb_btn" i, emptynum.getNextHighestDepth());
        btnContainerArray.push(tlb);
        tlb.stop();
        tlb._x = i*(tlb._width) Stage.width-(tlb._width*myBigPictArray.length);
        tlb._y = 300;
        tlb.nr_txt.text = i 1;
     }
     create_container();
}
//********** hier werden die Container fü die Bilder generiert, für jedes Bilde einer **********//
function create_container() {
     for (i=0; i<myBigPictArray.length; i  ) {
        bigContainerArray.push(empty.createEmptyMovieClip("big_container" i, empty.getNextHighestDepth()));
     }
     load_Bilder();
}
//********** Loader-Funktion, die Bilder "Bild für Bild" lädt, unabhängig von der DiaShow **********//
function load_Bilder():Void {
     var content_mc:MovieClip = bigContainerArray[loadcount];
     content_mc._alpha = 0;
     var was:String = bilderOrdner myBigPictArray[loadcount];
     var bild_mcl = new MovieClipLoader();
     ObjListener = new Object();
     bild_mcl.addListener(ObjListener);
     bild_mcl.loadClip(was,content_mc);
     var interval:Object = new Object();
     interval.id = setInterval(checkProgress, loaderDelay, bild_mcl, content_mc, interval);
     ObjListener.onLoadInit = function(image:MovieClip) {
        image._x = int((Stage.width-image._width)/2);
        image._y = int((Stage.height-image._height)/2);
     };
     function checkProgress(mcLoader:MovieClipLoader, image:MovieClip, interval:Object):Void {
        var progress:Object = mcLoader.getProgress(image);
        if (progress.bytesLoaded == progress.bytesTotal) {
           if (firstLoad == false) {
              inFade();
              firstLoad = true;
           }
           if (loadcount<myBigPictArray.length-1) {
              loadcount  ;
              load_Bilder();
           }
           clearInterval(interval.id);
        }
     }
}
//********** Funktion zum einfaden der Bilder **********//
function inFade():Void {
     clearInterval(inter);
     if (bigContainerArray[diacount] != undefined) {
        btnContainerArray[diacount].gotoAndStop(2);
        btnMemory = btnContainerArray[diacount];
        Tweener.addTween(bigContainerArray[diacount],{_alpha:100, time:transitionInDelay, transition:transitionInTypes, onComplete:function () {
        fadeInMc = bigContainerArray[diacount];
        inter = setInterval(outFade, intervalDelay);
        }});
     } else {
        fileCecker();
     }
}
//********** Funktion zum ausfaden der Bilder **********//
function outFade() {
     clearInterval(inter);
     Tweener.addTween(fadeInMc,{_alpha:0, time:transitionOutDelay, transition:transitionOutTypes, onComplete:function () {
     btnMemory.gotoAndStop(1);
     inFade();
     }});
     diacount<myBigPictArray.length-1 ? (diacount  ) : diacount=0;// setzt diacount wieder auf 0, wenn die DiaShow durch ist
}
//********** Funktion die gerufen wird, wenn versucht wird ein Bild zu faden, das noch nicht gespeichert ist **********//
function fileCecker() {
     var tfc:MovieClip = timeline.createEmptyMovieClip("fileCheckMc", timeline.getNextHighestDepth());
     tfc.onEnterFrame = function() {
        if (bigContainerArray[diacount] != undefined) {
           inFade();
           delete this.onEnterFrame;
        }
     };
}
function suck_xml() {
     myXML = new XML();
     myXML.ignoreWhite = true;
     myXML.onLoad = function(aloha:Boolean) {
        if (aloha) {
           bilderOrdner = this.firstChild.childNodes[0].childNodes[0].attributes.ordner;
           for (var i:Number = 0; i<this.firstChild.childNodes[1].childNodes.length; i  ) {
              myBigPictArray.push(this.firstChild.childNodes[1].childNodes[i].attributes.big);
           }
           load_btn();
        }
     };
     myXML.load('gallery_xml_as2.xml');
}
suck_xml();
Geändert von quicksnake am 21.02.11 um 09:44 Uhr
RustyCake#4
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

21.02.2011, 12:55

Das interval könnte man stoppen, oder das inFade mit einer Variablen verknüpfen, teste Du mal ein bisschen, ich schau auch mal (wenn ich Zeit habe) ;-)
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
RustyCake#5
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

21.02.2011, 13:56

So habe fertig:
Hab das jetzt mit zwei Buttons gemacht, mußt halt anpassen
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
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
import com.caurina.transitions.*;
//**
var myBigPictArray:Array = [];
var btnContainerArray:Array = [];
var bigContainerArray:Array = [];
//**
var bilderOrdner:String = null;
var timeline:MovieClip = this;
var firstLoad:Boolean = false;
var transitionInTypes:String = "easeInSine";
var transitionOutTypes:String = "easeOutSine";
var transitionInDelay:Number = 3;
var transitionOutDelay:Number = 3;
var intervalDelay:Number = 5000;
var loaderDelay:Number = 30;
var fadeInMc:MovieClip = null;
var btnMemory:MovieClip = null;
//** NEU ---------------------------->
var outFadeOK:Boolean = true;//** NEU
//** NEU ---------------------------->
var btnStartAlpha:Number = 30;
var loadcount:Number = 0;
var diacount:Number = 0;
var inter:Number = null;
//********** hier werden die Nummern_mc generiert **********//
function load_btn() {
     for (i = 0; i < myBigPictArray.length; i++) {
        var tlb:MovieClip = timeline.attachMovie("Button_Base", "thumb_btn" + i, timeline.getNextHighestDepth());
        btnContainerArray.push(tlb);
        tlb.stop();
        tlb._x = i * (tlb._width) + Stage.width - (tlb._width * myBigPictArray.length);
        tlb._y = 20;
        tlb.nr_txt.text = i + 1;
        btnContainerArray[i]._alpha = btnStartAlpha;
     }
     create_container();
}
//********** hier werden die Container fü die Bilder generiert, für jedes Bilde einer **********//
function create_container() {
     for (i = 0; i < myBigPictArray.length; i++) {
        bigContainerArray.push(timeline.createEmptyMovieClip("big_container" + i, timeline.getNextHighestDepth()));
     }
     load_Bilder();
}
//********** Loader-Funktion, die Bilder "Bild für Bild" lädt, unabhängig von der DiaShow **********//
function load_Bilder():Void {
     var content_mc:MovieClip = bigContainerArray[loadcount];
     content_mc._alpha = 0;
     var was:String = bilderOrdner + myBigPictArray[loadcount];
     var bild_mcl = new MovieClipLoader();
     ObjListener = new Object();
     bild_mcl.addListener(ObjListener);
     bild_mcl.loadClip(was,content_mc);
     var interval:Object = new Object();
     interval.id = setInterval(checkProgress, loaderDelay, bild_mcl, content_mc, interval);
     ObjListener.onLoadInit = function(image:MovieClip) {
        image._x = int((Stage.width - image._width) / 2);
        image._y = int((Stage.height - image._height) / 2);
     };
     function checkProgress(mcLoader:MovieClipLoader, image:MovieClip, interval:Object):Void {
        var progress:Object = mcLoader.getProgress(image);
        if (progress.bytesLoaded == progress.bytesTotal) {
           if (firstLoad == false) {
              inFade();
              firstLoad = true;
           }
           if (loadcount < myBigPictArray.length - 1) {
              loadcount++;
              load_Bilder();
           }
           clearInterval(interval.id);
        }
     }
}
//********** Funktion zum einfaden der Bilder **********//
function inFade():Void {
     clearInterval(inter);
     if (bigContainerArray[diacount] != undefined) {
        Tweener.addTween(btnContainerArray[diacount],{_alpha:100, time:transitionInDelay, transition:transitionInTypes});
        Tweener.addTween(bigContainerArray[diacount],{_alpha:100, time:transitionInDelay, transition:transitionInTypes, onComplete:function () {
        btnMemory = btnContainerArray[diacount];
        fadeInMc = bigContainerArray[diacount];
        //** NEU --------------------------------->
      if(outFadeOK){//** NEU
      inter = setInterval(outFade, intervalDelay);
        }//** NEU
      //** NEU --------------------------------->
      }});
     } else {
        fileCecker();
     }
}
//********** Funktion zum ausfaden der Bilder **********//
function outFade() {
     clearInterval(inter);
     Tweener.addTween(btnMemory,{_alpha:btnStartAlpha, time:transitionOutDelay, transition:transitionOutTypes});
     Tweener.addTween(fadeInMc,{_alpha:0, time:transitionOutDelay, transition:transitionOutTypes, onComplete:function () {
     inFade();
     }});
     diacount < myBigPictArray.length - 1 ? (diacount++) : diacount = 0;// setzt diacount wieder auf 0, wenn die DiaShow durch ist
}
//
//** NEU -----------Das ist nur zu Demozwecken---------------------->
this.createEmptyMovieClip("stop_go_mc", this.getNextHighestDepth());
this.stop_go_mc._x=15;
this.stop_go_mc._y=450;
this.stop_go_mc.loadMovie("btn_mc.swf");
//Script im geladenen Movie
//** NEU ------------------------------------------------------------>
// this._parent._parent geht natürlcih nur, wenn die Button's
//in der MainTimeline der geladenen MovieClips liegen
this.stop_btn.onPress = function(){
     this._parent._parent.outFadeOK = false;
}//** NEU
this.go_btn.onPress = function(){
     this._parent._parent.outFadeOK = true;
     this._parent._parent.outFade();
}
//** NEU --------------------------------->
//********** Funktion die gerufen wird, wenn versucht wird ein Bild zu faden, das noch nicht gespeichert ist **********//
function fileCecker() {
     var tfc:MovieClip = timeline.createEmptyMovieClip("fileCheckMc", timeline.getNextHighestDepth());
     tfc.onEnterFrame = function() {
        if (bigContainerArray[diacount] != undefined) {
           inFade();
           delete this.onEnterFrame;
        }
     };
}
function suck_xml() {
     myXML = new XML();
     myXML.ignoreWhite = true;
     myXML.onLoad = function(aloha:Boolean) {
        if (aloha) {
           bilderOrdner = this.firstChild.childNodes[0].childNodes[0].attributes.ordner;
           for (var i:Number = 0; i < this.firstChild.childNodes[1].childNodes.length; i++) {
              myBigPictArray.push(this.firstChild.childNodes[1].childNodes[i].attributes.big);
           }
           load_btn();
        }
     };
     myXML.load('gallery_xml_as2.xml');
}
suck_xml();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
quicksnake#6
Benutzerbild von quicksnake
Beiträge: 38
Wohnort: Daheim
Registriert: Mar 2004

Themenautor/in

21.02.2011, 13:56

Bin gerade dabei. Ich hatte einen globalen Button mit Alpha 0% erstellt, der über der gesamten Fläche liegt. Schaut gut aus das es funktioniert, aber wenn die Ani steht, wie kann ich dann den Text anzeigen, der sich in der SWF per Button anzeigen lassen soll? Da hänge ich gerade ....
RustyCake#7
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

21.02.2011, 14:20

Liegt der Button in der swf, da kommst nicht ran, da Dein globaler button das swf verdeckt.
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
quicksnake#8
Benutzerbild von quicksnake
Beiträge: 38
Wohnort: Daheim
Registriert: Mar 2004

Themenautor/in

21.02.2011, 14:28

Stimmt, genau da hänge ich. Deine Lösung probiere ich gerade mal aus. Muss ich die Button's stop und play ins separate SWF auf die Mainline einbinden?
Geändert von quicksnake am 21.02.11 um 14:39 Uhr
RustyCake#9
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

21.02.2011, 16:03

JA, geht theoretisch auch vom Hauptscript aus, aber das machen wir dann, wenn der Käse gegessen ist ;-)
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
quicksnake#10
Benutzerbild von quicksnake
Beiträge: 38
Wohnort: Daheim
Registriert: Mar 2004

Themenautor/in

21.02.2011, 17:51

So, ich habe den Dummy ausprobiert und es funktioniert, Danke. Wenn ich Bilder in der SWF habe, einen Button welcher mir bei Bedarf Text einblendet, könnte ich den Button gleich als Stop nehmen. Schliesse ich das Textfenster wieder, währ es gleich der Play Button.
Geändert von quicksnake am 24.02.11 um 19:30 Uhr
quicksnake#11
Benutzerbild von quicksnake
Beiträge: 38
Wohnort: Daheim
Registriert: Mar 2004

Themenautor/in

24.02.2011, 19:35

Hi, geht es auch wenn ich die Zahlen und die geladenen Movies je in einem eigenen Leeren MC lade? Wenn das Mainscript auf der Maintimeline liegt, fadet mir das SWF die Zahlen einfach weg. Kann ich die Tiefe da noch ändern/variieren, so dass die Zahlen über dem Bild/SWF liegen?
RustyCake#12
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

24.02.2011, 19:53

Sorry, das verstehe ich jetzt nicht.
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
quicksnake#13
Benutzerbild von quicksnake
Beiträge: 38
Wohnort: Daheim
Registriert: Mar 2004

Themenautor/in

25.02.2011, 23:16

Ich versuche mal mein Problem zu schildern. Die Animation soll Bilder/SWF's einfaden und ausfaden. Die Anzahl der Bilder oder Elemente soll durch die Zahlen angezeigt werden. Jedes SWF das nun eingefadet wird, soll einen Button enthalten, der bei Bedarf einen Text einblendet. Wird der Button gedrueckt, soll auch der Slider stoppen, damit der Text gelesen werden kann. Wird dann das Textfeld geschlossen, soll der Slider ganz normal weiterlaufen. Sozusagen sind zwei Events mit jeweils einem Button. Button A druecken Slider Stopp und Text einblenden. Button B dreucken Text ausblenden und Slider wieder starten.

Da die eingeblendeten SWF's/Bilder aber die Zahlen ueberblendet haben, habe ich die SWF's und Zahlen jeweils in einen eigenen MC gelegt um alles zu trennen. Wenn ich nun wie oben geschrieben die SWF's mit dem Button/Bild lade und versuche dadurch die Aktionen auszuloesen, komme ich  nicht weiter bzw. wird eine Fehlermeldung ausgegeben.
RustyCake#14
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

26.02.2011, 02:10

Was heisst das"Da die eingeblendeten SWF's/Bilder aber die Zahlen ueberblendet haben", liegen die über den zahlen, verdecken die die Zahlen?
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
quicksnake#15
Benutzerbild von quicksnake
Beiträge: 38
Wohnort: Daheim
Registriert: Mar 2004

Themenautor/in

26.02.2011, 09:58

Die Zahlen sind beim FadeIn und FadeOut mit ausgeblendet worden. Zumindest rein optisch gesehen. daher habe ich das in zwei empty MC's getrennt und dann war die Anzeige da.
RustyCake#16
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

26.02.2011, 11:18

"Die Zahlen sind beim FadeIn und FadeOut mit ausgeblendet worden.". Ja und Warum, war in meinen Beispiel nicht so, konnte man Masken etc. mit Alpha-Geschichten nicht in der Größe so wählen, das das passt.
Ein gut funktionierendes Script um zu bauen, nur weil ein gewählter Clip über die Buttons ragt, finde ich schon ein wenig merkwürdig.
Da wähle ich doch eher die Masken etc. in der richtigen größe.
Und man hätte auch, die Buttons in den Hauptfilm einbauen können (wäre eh der logischere weg gewesen), womit man dann die Textfelder steuert.
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
Geändert von RustyCake am 26.02.11 um 11:20 Uhr

AntwortenRegistrieren Seite1 2  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2020 Sebastian Wichmann - Flashhilfe.de