Autor |
Nachricht |
narsil
Threadersteller
Dabei seit: 04.06.2007
Ort: Bronschhofen
Alter: -
Geschlecht:
|
Verfasst Mo 04.06.2007 20:20
Titel Positionierung von mc in blidergalerie |
|
|
hallo forummitglieder
echt ein cooles forum. hat mir schon öfters geholfen.
leider konnte ich für mein jetztiges problem, keinen thread finden, darum hab ich mich kurzerhand angemolden und
bin so frech euch zu fragen. doch dafür ist das forum doch da
bin an ner flash gallery am arbeiten, bei welcher die bilder (die per backend auf den server kommen) per xml-schnittstelle reingeladen werden.
damit das ganze ein bischen schöner aussieht hats zwei funktionen, fadeIn und fadeOut, welche die bilder ein und wieder ausblenden. das klappt alles super gut, nur ein problem krieg ich leider nicht hin. und zwar die positionierung der bilder auf der x-achse. sobald ich in der navigation vorwärts oder rückwärts drücke, springt das "aktive" bild an die position des bildes, das neu geladen wird und fadet nicht schön an ort und stelle aus.
die gallery findet ihr hier.
den code hier:
Code: |
// Tween-Klasse importieren
import mx.transitions.Tween;
import mx.transitions.easing.*;
function fadeOut (ladeziel, speed){
_root.onEnterFrame = function(){
if(bild._alpha > 1 ){
bild._alpha-=speed;
}else{ //fade in;
delete _root.onEnterFrame;
_root["bild"].loadMovie(ladeziel);
fadeIn(8);
}
}
}
function fadeIn (speed){
_root.onEnterFrame = function(){
if(bild._alpha < 99 ){
bild._alpha+=speed;
bild._y = 20;
bild._x = 865 - daten.childNodes[count].attributes.width;
}else{
delete _root.onEnterFrame;
bild._y = 20;
bild._x = 865 - daten.childNodes[count].attributes.width;
}
}
}
//die flash-gallery
var daten:XML = new XML();
daten.ignoreWhite = true;
daten.load("http://www.bjornopsahl.com/inc/i_gallery_fashion.php");
//daten sind geladen
daten.onLoad = function(toll) {
if (toll) {
trace(daten.childNodes.length);
//gibt 4 im output-fenster aus
trace(daten.childNodes[0].attributes.id);
//gibt die id des ersten bildes aus "1"
trace(daten.childNodes[0].attributes.path);
//gibt den zielpfad des ersten bildes aus "http://meinserver/bilder/bild1.jpg"
trace(daten.childNodes[0].attributes.width);
// gibt breite aus
trace(daten.childNodes[0].attributes.description);0
// gibt bild beschreib aus
var count = 0;
_root.createEmptyMovieClip("bild", 1, _root.getNextHighestDepth());
_root["bild"].loadMovie(daten.childNodes[0].attributes.path);
bild._alpha = 0; // MC _alpha auf 10
bild._y = 20;
bild._x = 865 - daten.childNodes[0].attributes.width;
fadeIn(16)
_root.text_bild.html = true;
text_bild.htmlText = daten.childNodes[0].attributes.description;
mf = new TextFormat();
mf.font = "Arial";
mf.size = 10;
mytext.setTextFormat(mf);
vor.onRelease = function() {
if (++count>=daten.childNodes.length) {
count = 0;
}
fadeOut(daten.childNodes[count].attributes.path, 16)
bild._x = 865 - daten.childNodes[count].attributes.width;
_root.text_bild.html = true;
text_bild.htmlText = daten.childNodes[count].attributes.description;
mf = new TextFormat();
mf.font = "Arial";
mf.size = 10;
mytext.setTextFormat(mf);
};
//
rueck.onRelease = function() {
if (--count<0) {
count = daten.childNodes.length;
}
fadeOut(daten.childNodes[count].attributes.path, 16)
//bild._x = 865 - daten.childNodes[count].attributes.width;
// bild._y = 20;
//bild._x = 865 - daten.childNodes[count-1].attributes.width;
_root.text_bild.html = true;
text_bild.htmlText = daten.childNodes[count].attributes.description;
mf = new TextFormat();
mf.font = "Arial";
mf.size = 10;
mytext.setTextFormat(mf);
}
} else {
trace("Fehler");
}
};
|
wär echt super, wenn jemand mir helfen könnte. ich blicke einfach nicht mehr durch...
thanks
|
|
|
|
|
therapiekind
Dabei seit: 14.03.2006
Ort: In deinem Kopf
Alter: -
Geschlecht: -
|
Verfasst Di 05.06.2007 00:13
Titel
|
|
|
Ich denke, der Fehler liegt hier:
Code: | fadeOut(daten.childNodes[count].attributes.path, 16);
bild._x = 865 - daten.childNodes[count].attributes.width; |
fadeOut() wird aufgerufen, nimmt aber etwas Zeit in Anspruch, bis es durchgelaufen ist. Der ActionScript-Parser wird aber nicht warten, bis das passiert ist. Er ruft deine Funktion einfach auf, geht in die nächste Zeile und setzt den neuen _x-Wert für bild. Und zu dem Zeitpunkt ist fadeOut() noch gar nicht fertig.
Ich lege dir nahe, deinen Code etwas besser zu strukturieren bzw. zu modularisieren. Das schafft mehr Übersicht und der Code lässt sich leichter warten. Anfangen würde ich damit, nicht 90% deines Programms in einen XML.onLoad-Handler zu quetschen.
|
|
|
|
|
Anzeige
|
|
|
The_A
Dabei seit: 05.12.2006
Ort: -
Alter: -
Geschlecht:
|
Verfasst Di 05.06.2007 12:28
Titel
|
|
|
therapiekind hat geschrieben: |
Ich lege dir nahe, deinen Code etwas besser zu strukturieren bzw. zu modularisieren. Das schafft mehr Übersicht und der Code lässt sich leichter warten. Anfangen würde ich damit, nicht 90% deines Programms in einen XML.onLoad-Handler zu quetschen. |
erstens das!!! und zweitens haben die Tweenklassen auch einen Handler für Code: | TWEEN.onMotionFinished = function(){}
|
der könnte dir bei der zeitlichen abfolge auch helfen
|
|
|
|
|
narsil
Threadersteller
Dabei seit: 04.06.2007
Ort: Bronschhofen
Alter: -
Geschlecht:
|
Verfasst Di 05.06.2007 13:11
Titel
|
|
|
danke für eure rückmeldungen, ich guck mir die sachen mal an!
|
|
|
|
|
narsil
Threadersteller
Dabei seit: 04.06.2007
Ort: Bronschhofen
Alter: -
Geschlecht:
|
Verfasst So 10.06.2007 22:06
Titel
|
|
|
Hi,
hab mal nen teil des codes aus dem xml.onload rausgenommen. das faden funzt jetzt, jedoch die navigation mit den vorwärts/rückwärts-pfeilen nicht wirklich. seht am Besten selber hier
code update:
Code: | // Tween-Klasse importieren
import mx.transitions.Tween;
import mx.transitions.easing.*;
function fadeOut (ladeziel, speed){
_root.onEnterFrame = function(){
if(bild._alpha > 1 ){
bild._alpha-=speed;
}else{ //fade in;
delete _root.onEnterFrame;
_root["bild"].loadMovie(ladeziel);
fadeIn(8);
}
}
}
function fadeIn (speed){
_root.onEnterFrame = function(){
if(bild._alpha < 99 ){
bild._alpha+=speed;
bild._y = 20;
bild._x = 865 - daten.childNodes[count].attributes.width;
}else{
delete _root.onEnterFrame;
bild._y = 20;
bild._x = 865 - daten.childNodes[count].attributes.width;
}
}
}
//die flash-gallery
var daten:XML = new XML();
daten.ignoreWhite = true;
daten.load("http://www.bjornopsahl.com/inc/i_gallery_fashion.php");
//daten sind geladen
daten.onLoad = function(toll) {
if (toll) {
trace(daten.childNodes.length);
//gibt 4 im output-fenster aus
trace(daten.childNodes[0].attributes.id);
//gibt die id des ersten bildes aus "1"
trace(daten.childNodes[0].attributes.path);
//gibt den zielpfad des ersten bildes aus "http://meinserver/bilder/bild1.jpg"
trace(daten.childNodes[0].attributes.width);
// gibt breite aus
trace(daten.childNodes[0].attributes.description);
// gibt bild beschreib aus
var count = 0;
_root.createEmptyMovieClip("bild", 1, _root.getNextHighestDepth());
_root["bild"].loadMovie(daten.childNodes[count].attributes.path);
bild._alpha = 0; // MC _alpha auf 0
bild._y = 20;
bild._x = 865 - daten.childNodes[count].attributes.width;
fadeIn(16)
_root.text_bild.html = true;
text_bild.htmlText = daten.childNodes[count].attributes.description;
mf = new TextFormat();
mf.font = "Arial";
mf.size = 10;
mytext.setTextFormat(mf);
} else {
trace("Fehler");
}
};
vor.onRelease = function() {
if (++count>=daten.childNodes.length) {
count = 0;
}
fadeOut(daten.childNodes[count].attributes.path, 16)
daten.childNodes[count].attributes.path._x = 865 - daten.childNodes[count].attributes.width;
_root.text_bild.html = true;
text_bild.htmlText = daten.childNodes[count].attributes.description;
mf = new TextFormat();
mf.font = "Arial";
mf.size = 10;
mytext.setTextFormat(mf);
};
//
rueck.onRelease = function() {
if (--count<0) {
count = daten.childNodes.length;
}
fadeOut(daten.childNodes[count].attributes.path, 16)
_root.text_bild.html = true;
text_bild.htmlText = daten.childNodes[count].attributes.description;
mf = new TextFormat();
mf.font = "Arial";
mf.size = 10;
mytext.setTextFormat(mf);
} |
|
|
|
|
|
narsil
Threadersteller
Dabei seit: 04.06.2007
Ort: Bronschhofen
Alter: -
Geschlecht:
|
Verfasst Mi 04.07.2007 21:36
Titel
|
|
|
hay
die navigation hab ich jetzt auch hingekriegt. leider ist das fadeIn bzw. fadeout erst richtig schön, wenn die bilder im cash sind.
wie könnt ich immer das nächste bild vorladen? etwa mit loadMovie?
hier das aktuelle script.
Code: |
// FASHION KATEGORIE
// Tween-Klasse importieren
import mx.transitions.Tween;
import mx.transitions.easing.*;
function fadeOut (ladeziel, speed){
_root.onEnterFrame = function(){
if(bild._alpha > 1 ){
bild._alpha-=speed;
}else{ //fade in;
delete _root.onEnterFrame;
_root["bild"].loadMovie(ladeziel);
fadeIn(32);
}
}
}
function fadeIn (speed){
_root.onEnterFrame = function(){
if(bild._alpha < 99 ){
bild._alpha+=speed;
bild._y = 20;
bild._x = 865 - daten.childNodes[count].attributes.width;
}else{
delete _root.onEnterFrame;
bild._y = 20;
bild._x = 865 - daten.childNodes[count].attributes.width;
}
}
}
//die flash-gallery
var daten = new XML();
daten.ignoreWhite = true;
daten.load("http://www.bjornopsahl.com/inc/i_gallery_fashion.php")
//daten sind geladen
daten.onLoad = function() {
if (daten.loaded && daten.hasChildNodes) {
var count = 0;
_root.createEmptyMovieClip("bild", 1, _root.getNextHighestDepth());
_root["bild"].loadMovie(daten.childNodes[0].attributes.path);
bild._alpha = 0; // MC _alpha auf 0
bild._y = 20;
bild._x = 865 - daten.childNodes[count].attributes.width;
fadeIn(48)
_root.text_bild.html = true;
text_bild.htmlText = daten.childNodes[count].attributes.description;
mf = new TextFormat();
mf.font = "Arial";
mf.size = 10;
mf.color = "#666666";
mytext.setTextFormat(mf);
} else {
trace("Fehler");
}
}
var count = 0;
vor.onRelease = function() {
if(++count>=daten.childNodes.length){
count = 0;
}
fadeOut(daten.childNodes[count].attributes.path, 48)
daten.childNodes[count].attributes.path._x = 865 - daten.childNodes[count].attributes.width;
_root.text_bild.html = true;
text_bild.htmlText = daten.childNodes[count].attributes.description;
mf = new TextFormat();
mf.font = "Arial";
mf.size = 10;
mf.color = "#666666";
mytext.setTextFormat(mf);
}
rueck.onRelease = function() {
if (count--<1) {
count = daten.childNodes.length - 1;
}
fadeOut(daten.childNodes[count].attributes.path, 48)
_root.text_bild.html = true;
text_bild.htmlText = daten.childNodes[count].attributes.description;
mf = new TextFormat();
mf.font = "Arial";
mf.size = 10;
mf.color = "#666666";
mytext.setTextFormat(mf);
}
|
|
|
|
|
|
phihochzwei
Moderator
Dabei seit: 08.06.2006
Ort: Mülheim an der Ruhr
Alter: 46
Geschlecht:
|
Verfasst Do 05.07.2007 08:55
Titel
|
|
|
Jetzt erklär mir mal kurz, warum du für das Faden nicht einfach die Tweenklasse benutzt. Mit onEnterFrame das doch alles Rantz.
EDIT: Das seh ich jetzt erst. Du importierst die Tween-Klasse und die Easings, aber benutzt sie nirgends. Wozu ?
Zuletzt bearbeitet von phihochzwei am Do 05.07.2007 08:57, insgesamt 1-mal bearbeitet
|
|
|
|
|
|
|
|
Ähnliche Themen |
css - div positionierung
[CSS] Positionierung
Div Positionierung
CSS Positionierung ...
DIV Positionierung
IE8 und die Positionierung
|
|