Autor |
Nachricht |
Kash
Threadersteller
Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 40
Geschlecht:
|
Verfasst Di 07.04.2009 13:37
Titel Überblendeffekt schaffen |
 |
|
Hallo zusammen,
ich habe hier folgendes AScript (Vers kann ich leider nicht genau sagen. muß wohl AS2 sein)
http://www.flashforum.de/forum/showthread.php?t=189463&highlight=stuff+galerie
das script läuft super, aber der grafiker möchte unbedingt einen weichen Übergang (also einen überblendeffekt)
wie hier zu sehen http://www.entheosweb.com/Flash/slideshow/index.asp
nun bin ich dabei das script umzuschreiben damit es ungefähr so ausschaut.
das was ich geschrieben habe ist in die sternchenkommentare eingeschlossen.etliches habe ich auch mittlerweile auskommentiert, da ich es nicht benötige.
Code: |
//pfad zum folder mit deinen bildern drin
var pfad:String = "images/"
//auskommentieren wenn man eine dynamische xml hat
var xmlFile:String = "images.xml"
//var xmlFile:String = "http://www.yourdomain.com/pathToSwf/folderToXml.php?remotePath="+pfad+"&cachekilla="+random(999);
//mp3 player
//hier den dateinamen des sounds eintragen "nur mp3"
var mp3:String = "sound.mp3";
//System
//-------------------------------------------//
Stage.showMenu = false;
_quality = "LOW";
//variablen
//-------------------------------------------//
var xabstand:Number = 31;
var yabstand:Number = 31;
var spalten:Number = 20;
var stageB:Number = Stage.width;
var stageH:Number = Stage.height;
var current:Number = 0;
var count:Number = 0;
var allDone:Boolean = false;
var posShow:Number = 1;
//arrays
var pic_array:Array = new Array();
var mc_array:Array = new Array();
var bigMc_array:Array = new Array();
//-------------------------------------------//
var xl:Loadxml = new Loadxml(xmlFile, parseXml);
function parseXml(xml):Void {
var ref = xml.firstChild;
for (var i = 0; i<ref.childNodes.length; i++) {
pic_array[i] = [];
pic_array[i].pic = ref.childNodes[i].firstChild.nodeValue;
pic_array[i].picname = ref.childNodes[i].attributes.picname;
pic_array[i].pwidth = ref.childNodes[i].attributes.width;
pic_array[i].pheight = ref.childNodes[i].attributes.height;
}
buildNav();
}
function buildNav() {
for (var i = 0; i<pic_array.length; i++) {
var ref:MovieClip = _root.ex.attachMovie("thumb_mc", "thumb_mc"+i, i);
mc_array.push(ref);
var bigRef:MovieClip = _root.bPholder.attachMovie("bPcontainer", "bpcon"+i, -i);
bigMc_array.push(bigRef);
ref._x = (i%spalten)*xabstand;
ref._y = Math.floor(i/spalten)*yabstand;
ref.id = i;
ref.enabled = false;
ref.onRelease = function() {
picTransition(this.id);
clearInt();
};
ref.onRollOver = function() {
this.line_mc.gotoAndStop(2);
};
ref.onRollOut = function() {
this.line_mc.gotoAndStop(1);
};
if (i == pic_array.length-1) {
loadThumbs();
}
}
}
function loadThumbs():Void {
if (count<pic_array.length) {
var ref:MovieClip = mc_array[count];
ref.big = bigMc_array[count];
ref.big.bp_mc.loadMovie(pfad+pic_array[count].pic);
ref.onEnterFrame = function() {
var gesamt:Number = this.big.bp_mc.getBytesTotal();
var geladen:Number = this.big.bp_mc.getBytesLoaded();
var prozent:Number = Math.ceil((geladen/gesamt)*100);
if (prozent == 100 && geladen>4) {
ref.prozent_txt.text = count+1;
ref.balken_mc.gotoAndStop(100);
_root.bigMc_array[(count+1)]._visible = false;
if(count<1) {
_root.ex["thumb_mc"+0].enabled = true;
_root.bigMc_array[0].slideTo((stageB/2)-(int(pic_array[0].pwidth)/2), _root.bigMc_array[0]._y, 5);
_root.bigMc_array[0].masker();
posNav(0);
}
count++;
loadThumbs();
_root.ex["thumb_mc"+count].enabled = true;
delete this.onEnterFrame;
} else {
ref.prozent_txt.text = prozent+"%";
ref.balken_mc.gotoAndStop(prozent);
}
};
} else {
allDone = true;
slideinterval = setInterval(playShow, 5000);
var player:Mp3player = new Mp3player(mp3);
}
}
function picTransition(id) {
if (current != id || _root.bigMc_array[id].loadComp) {
_root.mc_array[id].prozent_txt.textColor = 0xFF0000;
_root.bigMc_array[id].swapDepths(100);
_root.bigMc_array[id].masker(id);
_root.bigMc_array[id]._visible = true;
//***************************************************************
_root.bigMc_array[id]._alpha = 0;
do {
if(_root.bigMc_array[id]._alpha < 50) {
_root.bigMc_array[id]._alpha++;
}
}while (_root.bigMc_array[id]._alpha < 50);
//***************************************************************
// _root.bigMc_array[id]._x = -840;
// _root.bigMc_array[id].slideTo((stageB/2)-(int(pic_array[id].pwidth)/2), _root.bigMc_array[id]._y, 5);
_root.mc_array[current].prozent_txt.textColor = 0xFF6600;
_root.bigMc_array[current].swapDepths(99);
_root.bigMc_array[current]._visible = false;
_root.picname_txt.text = "Filename: " + pic_array[id].picname;
posNav(id)
current = id;
}
}
function posNav(id) {
var picX:Number = int(pic_array[id].pwidth);
var picY :Number = int(pic_array[id].pheight);
_root.line_mc.slideTo(_root.line_mc._x,picY+65,5);
_root.ex.slideTo(_root.ex._x,picY+75,5);
}
function playShow() {
if (allDone) {
if (posShow<pic_array.length) {
picTransition(posShow);
posShow++;
} else {
posShow = 0;
}
}
}
function clearInt() {
clearInterval(slideinterval);
delete slideinterval;
}
_root.slideStop_mc.onRelease = function() {
clearInt();
};
_root.slidePlay_mc.onRelease = function() {
if(slideinterval == undefined && allDone == true){
playShow();
slideinterval = setInterval(playShow, 5000);
}
};
//-------------------------------------------//
MovieClip.prototype.masker = function() {
//var m_mc:MovieClip = this.attachMovie("maske", "maske", 1000);
//this.setMask(m_mc);
};
var cToleranz:Number = 1;
MovieClip.prototype.slideTo = function(X, Y, speed) {
this.onEnterFrame = function() {
if (Math.abs(X-this._x)+Math.abs(Y-this._y)>cToleranz) {
this._x += (X-this._x)/speed;
this._y += (Y-this._y)/speed;
} else {
this._x = X;
this._y = Y;
delete this.onEnterFrame;
}
};
};
|
nur ist es so wie ich mir gedacht habe. meine schleife steht sicher an der falschen stelle.
denn meinen einblendeffekt wie ich es mir gedacht habe sieht man nicht.nur das fertig geladene bild bei 50% alphawert.
kann mir evtl jemand einen tipp geben wie ich diesen effekt mit diesem script realisieren kann?
|
|
|
|
 |
fragile
Dabei seit: 22.09.2004
Ort: Amberg
Alter: 49
Geschlecht:
|
Verfasst Di 07.04.2009 13:56
Titel
|
 |
|
Was willst du mit dem Alpha-Blend an dieser Stelle erreichen ? In welchem Context wird die picTransition-Fkt. später eingesetzt ? Bisher blendest du den mit "id" übergebenen MC von 0 auf 50% (wobei ich dich if-abfrage relativ sinnlos finde, du setzt _alpha ja schon auf 0 oben und hast in der while-Bedingung ja deine Abbruchung-Bed. stehen). Also laß die if-Verzweigung mal weg.
Was genau bezeichnet current ? Das Bild, das der User momentan sieht ? as gneua bezeichnet dann "id"? Ohne einen "Snapshot" deiner Anwendung beim Funktionsaufruf von PicTransition wird es kaum Hilfe hier geben...
|
|
|
|
 |
Anzeige
|
|
 |
Kash
Threadersteller
Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 40
Geschlecht:
|
Verfasst Di 07.04.2009 14:15
Titel
|
 |
|
fragile hat geschrieben: | Was willst du mit dem Alpha-Blend an dieser Stelle erreichen ? |
damit das bild step by step von 0 auf 50 eingeblendet wird
fragile hat geschrieben: | In welchem Context wird die picTransition-Fkt. später eingesetzt ? |
damit werden imo die mc's bereit gestellt um später den masken-effekt mit diesen mc's zu realisieren.
diesen effekt brauche ich ja nicht.deswegen habe ich mir gedacht das es reicht die mc's von 0 auf 50 (bzw später von 0 auf 99) einzublenden um mit den nächsten mc das selbe zu machen.das der nächste sich über den vorhergehenden (könnte current sein) einblendet.
fragile hat geschrieben: | du setzt _alpha ja schon auf 0 oben und hast in der while-Bedingung ja deine Abbruchung-Bed. stehen). Also laß die if-Verzweigung mal weg.
|
das werde ich mal testen, wobei die syntax das selbe resultat liefern sollte.
fragile hat geschrieben: | Ohne einen "Snapshot" deiner Anwendung beim Funktionsaufruf von PicTransition wird es kaum Hilfe hier geben... |
dazu hatte ich ja den Link gepostet.
hierzu nochmal das Bsp
http://www.interhof.com/fla_depot/flashslide/
|
|
|
|
 |
fragile
Dabei seit: 22.09.2004
Ort: Amberg
Alter: 49
Geschlecht:
|
Verfasst Di 07.04.2009 15:16
Titel
|
 |
|
Zitat: | _root.bigMc_array[id].masker(id); |
Wenn du den "Masker"-Effekt nicht brauchst, kommentier' obige Zeile mal aus...
Zudem kann es sein, daß deine Schleife zu schnell durchlaufen wird, du also den Effekt nicht siehst..
Ich arbeite gern mit der Tween-Klasse : Da kann man Start-/Endwert der getweenten Eigenschaft und die Zeit angeben, in der der Tween laeuft.. (also etwa ein MX.Tween(0,50,_alpha,25,false) (25=dauer in frames)).
Current scheint mir die ID des derzeit angezeigtne Bilds zu sein, "id" ist die ID des "Zielbildes" auf den sich der Blendeffekt bezieht....
|
|
|
|
 |
Kash
Threadersteller
Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 40
Geschlecht:
|
Verfasst Di 07.04.2009 15:24
Titel
|
 |
|
ich habe jetzt auch noch ein bsp gefunden welches mit dieser von dir genannten klasse arbeitet.
http://www.flashforum.de/forum/showthread.php?t=267900
nur habe ich (wie du sehen kannst) probleme mit dem veröffentlichen.
denn sobald ich das bsp von dem bei mir öffne und wieder veröffentliche, dann gehts nicht mehr.
|
|
|
|
 |
fragile
Dabei seit: 22.09.2004
Ort: Amberg
Alter: 49
Geschlecht:
|
Verfasst Di 07.04.2009 15:30
Titel
|
 |
|
Evtl. die Sicherheitseinstellungen ('Nur auf lokale Dateien zugreifen...')... ?
Ansonsten sollte es mit der Tween-Klasse gehen... Die Funktion picTransition muss bei dir ja nur den alpha-Blend durchführen und die Bilder weiterschalten (current=id)...
|
|
|
|
 |
Kash
Threadersteller
Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 40
Geschlecht:
|
Verfasst Di 07.04.2009 15:38
Titel
|
 |
|
fragile hat geschrieben: | Evtl. die Sicherheitseinstellungen ('Nur auf lokale Dateien zugreifen...')... ? |
zweite option hier wäre 'nur auf netzwerk zugreifen', das bringt bei auch keine veränderung.
fragile hat geschrieben: | Die Funktion picTransition muss bei dir ja nur den alpha-Blend durchführen und die Bilder weiterschalten (current=id)... |
d.h. meine idee war schon ok so, nur an der falchen stelle im script.
kann ich den teil
Code: | _root.bigMc_array[id]._alpha++; |
nicht auch irgendwie mittels setInterval steuern? dann müßte ich ja nicht unbedingt die tween-klasse verwenden oder?falls ja muß ich diese ja irgendwo herunterladen, code.google hat die glaub ich und includieren.verstehe ich das richtig?
/************************************************************************************************/
also um nochmal zum ersten Bsp zu kommen.
ich wollte das mit der Tween-Klasse jetzt mal ausprobieren.
dazu habe ich folgendes für den Import der Klasse gefunden
Code: |
import flash.external.*;
import caurina.transitions.Tweener;
|
wird die klasse dann direkt im systemordner der FlashVers gesucht?
Oder kann man auch auf klassen zurückgreifen die im netzt stehen?
Oder muß ich diese erst irgendwo herunterladen?
Sorry für diese dümmlichen Fragen, aber ich habe 1mal im Jahr mit Flash zu tun und dann ist der einstieg jedesmal ziehml mühsam.
dazu habe ich mir folgendes noch gesucht um das Bild mittels der Klasse einzublenden
Code: |
function moveImageIn( imageNr_:Number ):Void
{
Tweener.addTween( holders[ imageNr_ - 1 ], { _alpha:100, time:transTime, transition:"linear", onStart:function() { this._visible = true }, onComplete:startTimer } );
}
|
nur verstehe ich die syntax nicht um das auf mein Bild anzuwenden.
Zuletzt bearbeitet von Kash am Di 07.04.2009 16:27, insgesamt 2-mal bearbeitet
|
|
|
|
 |
Kash
Threadersteller
Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 40
Geschlecht:
|
Verfasst Di 07.04.2009 17:04
Titel
|
 |
|
so also ich habe herausgefunden warum 2tes Beispiel nicht funktioniert.
das liegt daran das die Tweener-Klasse nicht dabei war und extra heruntergeladen werden mußte.
irgendwie hatte ich es mir auch schon gedacht.
die klasse wäre folgende
http://tweener.googlecode.com/files/..._31_74_as2.zip
und ist im selben verzeichniss unterzubringen in dem auch *.fla, *.swf etc liegen.
|
|
|
|
 |
|
|
 |
Ähnliche Themen |
Überblendeffekt (Flash)
suche simple slideshow (überblendeffekt)
[Flash] Foto Slideshow mit Überblendeffekt
[Flash] Überblendeffekt und Slideshow mit externen Dateien
wie praktische Prüfung schaffen
Illustrator - wie weiche Übergänge schaffen?
|
 |