Slider mit Button und Text [Flash CS5]
| 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 | | | 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" | | | 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 | |
| | 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" | | | 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" | | | 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 .... | | | 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" | | | 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 | |
| | 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" | | | 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 | |
| | 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? | | | 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" | | | 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. | | | 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" | | | 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. | | | 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 | |
|
| Ähnliche Beiträge zum Thema | 17.05.2019 - Dunraven 29.09.2019 - Dunraven 12.03.2018 - Rennier 07.05.2019 - break-Flash-break |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News 
Regeln & Bedingungen
|