Zurück   Flashforum > Flash > Stuff

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-10-2010, 17:11   #1 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.367
Post [stuff] MiniAS3ImageSlider mit alpha überblendung

hi,
weil da immer wieder nach gefragt wird... hier ein sehr einfacher image slider. das ding ist in AS3 geschrieben und für den Flashplayer 9 / Flashplayer 10 gedacht. unten gibt es eine bsp fla (flash CS3) zum anschauen und weiter benutzen.

den folgenden code könnt ihr einfach in eine leere fla kopieren und loslegen.

PHP-Code:
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.*;

//---

var imagesToLoad:Array = new Array( "bild1.jpg""bild2.jpg""bild3.jpg" );//hier die bilder eintragen die geladen werden sollen
var pauseTime:int 2000;//2 sek, ist ein bild zu sehen 
var fadeSpeed:int 2;//2 sek, braucht ein bild zum einblenden 
var tweenEasing:Function = Strong.easeOut;//easing einstellen

//---

var tween:Tween;
var 
pos:int 0;
var 
bitmapHolder:Array = new Array();
var 
setTimeoutID:uint;
var 
holder:Sprite addChildAt( new Sprite(), ) as Sprite;
var 
loader:Loader = new Loader();
    
loader.contentLoaderInfo.addEventListenerEvent.COMPLETEonLoadImageComplete );

//---
    
function loadImageid:int ):void {

    
loader.load( new URLRequestimagesToLoadid ] ) );
    
}

function 
onLoadImageCompletee:Event ):void {

    
e.currentTarget.content.alpha 0;

    
bitmapHolder.pushholder.addChilde.currentTarget.content ) );

    
tween = new Tweene.currentTarget.content"alpha"tweenEasinge.currentTarget.content.alpha1fadeSpeedtrue ); 
    
tween.addEventListenerTweenEvent.MOTION_FINISHonCompleteHandler );
    
}

function 
onCompleteHandlere:Event ):void {
    
    
tween.removeEventListenerTweenEvent.MOTION_FINISHonCompleteHandler );

    if ( 
bitmapHolder.length 
        
holder.removeChildbitmapHolder.shift() );

    
setTimeoutID setTimeoutnextImagepauseTime ); 

}

function 
nextImage():void {

    
loadImagepos pos imagesToLoad.length pos += );

}

//---

loadImagepos ); 
wollt ihr zusätzlich zum automatischen ablauf die bilder direkt per button ansteuern können ergänzt einfach folgenden code. ( im bsp sind drei bilder, also gibts drei buttons )

PHP-Code:
bt1.buttonMode true;
bt2.buttonMode true;
bt3.buttonMode true;

bt1.addEventListenerMouseEvent.CLICKclickHandler );
bt2.addEventListenerMouseEvent.CLICKclickHandler );
bt3.addEventListenerMouseEvent.CLICKclickHandler );

function 
clickHandlere:MouseEvent ):void {
    
    if ( 
tween )
        
tween.stop();
    
    
clearTimeoutsetTimeoutID );

    switch( 
e.currentTarget ) {
    
        case 
bt1:
        
loadImagepos );
        break;
        
        case 
bt2:
        
loadImagepos );
        break;
        
        case 
bt3:
        
loadImagepos );
        break;
    
    }
    

das ding ist super simpel aufgebaut und in aller schnelle entstanden.
wer mag kann wie im bsp ein paar buttons adden und somit die bilder direkt ansteuern. je nach anzahl müssen händisch ein paar buttons auf der bühne platziert werden. siehe bsp fla.

folgende variablen können bequem eingestellt werden:
PHP-Code:
var imagesToLoad:Array = new Array( "bild1.jpg""bild2.jpg""bild3.jpg" );//hier die bilder eintragen die geladen werden sollen
var pauseTime:int 2000;//2 sek, ist ein bild zu sehen 
var fadeSpeed:int 2;//2 sek, braucht ein bild zum einblenden 
var tweenEasing:Function = Strong.easeOut;//easing einstellen 
alles andere sollte klar sein. sonst einfach fragen...

cheers,
sal

edit: es gab ein update. code wurde etwas optimert und somit gibts auch neue files. also bitte V2 ziehen.

---> MiniAS3ImageSliderV2.zip
Angehängte Dateien
Dateityp: zip MiniAS3ImageSliderV1.zip (26,5 KB, 46x aufgerufen)
Dateityp: zip MiniAS3ImageSliderV2.zip (26,3 KB, 104x aufgerufen)
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.

Geändert von salazar (18-10-2010 um 17:06 Uhr)
salazar ist offline   Mit Zitat antworten
Alt 20-01-2011, 15:59   #2 (permalink)
Neuer User
 
Registriert seit: Sep 2008
Beiträge: 32
Das ist Spitze! Eine kurze Frage:
Kann ich den Bildern, die geladen werden jeweils einen eigenen Hyperlink geben? Es soll eine Website aufgerufen werden, wenn man auf das Bild klickt.
a.albrecht ist offline   Mit Zitat antworten
Alt 20-01-2011, 16:23   #3 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.367
hi,
das ist kein großes ding.

ein paar kleine änderungen sind nötig. ergänze den code mit folgender function:
PHP-Code:
function linke:MouseEvent ):void {

    
navigateToURL( new URLRequestimagesToLoadpos ].link ), "_blank" );


änder das array welches die bilder enthält wie folgt ab:
PHP-Code:
var imagesToLoad:Array = new Array( { img:"bild1.jpg"link:"http://www.flashforum.de" }, { img:"bild2.jpg"link:"http://www.flashforum.de" }, { img:"bild3.jpg"link:"http://www.flashforum.de" } ); 
und dann mach noch aus:
PHP-Code:
var holder:Sprite addChildAt( new Sprite(), ) as Sprite
einen zweilzeiler:
PHP-Code:
var holder:Sprite addChildAt( new Sprite(), ) as Sprite;
    
holder.addEventListenerMouseEvent.CLICKlink ); 
zudem musste dann noch die kommende function wie folgt abändern:
PHP-Code:
function loadImageid:int ):void {

    
loader.load( new URLRequestimagesToLoadid ].img ) );


das sollte es dann schon gewesen sein

cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
salazar ist offline   Mit Zitat antworten
Alt 20-01-2011, 16:28   #4 (permalink)
Neuer User
 
Registriert seit: Sep 2008
Beiträge: 32
Unfassbar! Grandios! Besten Dank!
Kann man den Hyperlink-Mauszeiger irgendwie erzwingen?
a.albrecht ist offline   Mit Zitat antworten
Alt 20-01-2011, 16:31   #5 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.367
hui,
dann braucht es aber schon 'nen dreizeiler!
PHP-Code:
var holder:Sprite addChildAt( new Sprite(), ) as Sprite;
    
holder.addEventListenerMouseEvent.CLICKlink );
    
holder.buttonMode true
viel spaß.
cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
salazar ist offline   Mit Zitat antworten
Alt 18-03-2011, 17:19   #6 (permalink)
Neuer User
 
Registriert seit: Mar 2011
Beiträge: 3
Bildposition

Hi Salazar,

Danke zunächst für das gediegene Tutorial! Hätt noch folgende Frage dazu: Wo gibst Du an, dass die Bilder immer links oben sind bzw. anders gefragt: wie kann ich die Bildposition verändern? Die Variable pos bedient ja den Array und nicht die Position ...

lg

DrP
dr_pulga ist offline   Mit Zitat antworten
Alt 18-03-2011, 21:16   #7 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.869
Zitat:
Wo gibst Du an, dass die Bilder immer links oben sind
garnicht, deshalb legt Flash sie automatisch oben links hin.

Zitat:
bzw. anders gefragt: wie kann ich die Bildposition verändern?
PHP-Code:
var imageCenter:Point = new Point(stage.stageWidth/2stage.stageHeight/2);
//...

function onLoadImageCompletee:Event ):void {

    var 
image:DisplayObject e.currentTarget.content;
        
image.imageCenter.image.width .5;
        
image.imageCenter.image.height .5;

    
bitmapHolder.pushholder.addChildimage ) );

    
tween = new Tweenimage"alpha"tweenEasing01fadeSpeedtrue ); 
    
tween.addEventListenerTweenEvent.MOTION_FINISHonCompleteHandler );

verständlich?
Ich hab es mir jetzt gespart e.currentTarget.content nach Bitmap zu casten, da für diese Aktionen DisplayObject völlig ausreicht.
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Alt 18-03-2011, 21:51   #8 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.367
Post

hi,
grüß euch.

wie thomas schon beschrieben hat lässt sich die position natürlich auch verändern. das ganze geht aber auch initial. du kannst auch aus folgender zeile:
PHP-Code:
var holder:Sprite addChildAt( new Sprite(), ) as Sprite
das hier machen:
PHP-Code:
var holder:Sprite addChildAt( new Sprite(), ) as Sprite;
    
holder.300;
    
holder.100
so wären die bilder auf position x=300 und y=100 wieder zu finden und du müsstest nicht in die function eingreifen/umcoden.

Zitat:
Die Variable pos bedient ja den Array und nicht die Position ...
das ist natürlich ein gutes beispiel für blöde var namen!
statt pos wär hier sicherlich sowas wie arrayIndex besser gewesen, aber hinterher weiß man ja immer mehr.

viel spaß noch und grüße,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
salazar ist offline   Mit Zitat antworten
Alt 18-03-2011, 22:58   #9 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.869
*g hast recht.
letztlich würde ich wohl eine Kombination der beiden codes bevorzugen.
Salazar, du hast hier drei gleich grosse Bilder; das ist nicht immer der Fall.
Und wenn du unterschiedlich grosse Bilder überblendest sieht es imho am besten aus, wenn die zueinander zentriert sind.

Die Position(Mitte) der Bilder wird durch holder.x und y festgelegt, und in onLoadImageComplete werden sie im holder mittig ausgerichtet.
PHP-Code:
var holder:Sprite addChildAt( new Sprite(), ) as Sprite;
    
holder.300;
    
holder.100;

function 
onLoadImageCompletee:Event ):void {
    var 
image:DisplayObject e.currentTarget.content;
        
image.= -image.width/2;
        
image.= -image.height/2;

    
bitmapHolder.pushholder.addChildimage ) );

    
tween = new Tweenimage"alpha"tweenEasing01fadeSpeedtrue ); 
    
tween.addEventListenerTweenEvent.MOTION_FINISHonCompleteHandler );

__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Alt 18-03-2011, 23:12   #10 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.367
japp, mit dem ausrichten haste recht.
wollte auch nur kurz ein beispiel geben wegen der position... hätte man jetzt noch wegen dem aussehen usw. gefragt wär mein ansatz in deine richtung gegangen...

bei deinem bsp. fällt mir nur auf die schnelle noch auf das die folgende zeile abhanden gekommen ist:
PHP-Code:
e.currentTarget.content.alpha 0
beste grüße und n8,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
salazar ist offline   Mit Zitat antworten
Alt 18-03-2011, 23:27   #11 (permalink)
Neuer User
 
Registriert seit: Mar 2011
Beiträge: 3
Danke Salazar & Thomas,

werde die Früchte Eurer Korrespondenz übers WE probieren.

lg
DrP
dr_pulga ist offline   Mit Zitat antworten
Alt 19-03-2011, 04:43   #12 (permalink)
Neuer User
 
Registriert seit: Mar 2011
Beiträge: 3
Danke Salazar & Thomas,

konnte die Essenz Eurer Korrespondenz erfolgreich anwenden.

Und um noch was Konstruktives beizutragen: Sollte jemand wie ich auf das Problem stossen, dass die Bilder durch andere Sprite-Inhalte verdeckt werden, dann schafft es Abhilfe, in folgender Zeile den Wert von 0 zu erhöhen.

PHP-Code:
var holder:Sprite addChildAt( new Sprite(), ) as Sprite
lg
DrP
dr_pulga 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Überblendung von mc's Herzenslicht Flash 8 1 29-01-2010 14:52
[STUFF] ganz einfache bildergalerie ohne php/mysql/xml/preloader/alpha/... YtimK Flash Einsteiger 6 06-06-2008 21:57
Überblendung per AS incredibrother ActionScript 1 0 10-01-2008 13:34
Überblendung im FLV Martys Flash 8 2 12-11-2007 11:58
Überblendung Sascha Laurent ActionScript 1 6 16-12-2005 12:13


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:33 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele