mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Sa 20.04.2024 16:50 Benutzername: Passwort: Auto-Login

Thema: Flash/AS3 - Bildbetrachter mit "Schiebe"-Seitenübergängen vom 26.03.2009


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Multimedia -> Flash/AS3 - Bildbetrachter mit "Schiebe"-Seitenübergängen
Autor Nachricht
abc-man
Threadersteller

Dabei seit: 26.03.2009
Ort: -
Alter: -
Geschlecht: -
Verfasst Do 26.03.2009 07:16
Titel

Flash/AS3 - Bildbetrachter mit "Schiebe"-Seitenübe

Antworten mit Zitat Zum Seitenanfang

Hallo zusammen,

ich bin gerade dabei einen einfachen Bildbetrachter in Flash CS4 mit AS3 zu realisieren.

Wenn ich die swf im Flash-Player außerhalb des Browsers starte, funktioniert es soweit.
Innerhalb des Browsers bleiben die Animation "hängen" (schwer zu beschreiben, siehe fla-file mit Bsp.Bildern).

Ich bin ratlos...

Ist die Herangehensweise generell falsch oder steckt der Fehler im Detail?

Gruß, Stefan

fla-File mit 3 Bsp-Bildern: http://www.megaupload.com/?d=XCNUNCJ1

AS3-Code:
Code:
import fl.transitions.Tween;
import fl.transitions.easing.*;

Nav_Arrow_Next.visible = false;
Nav_Arrow_Prev.visible = false;

var Pictures:Array = new Array("001.jpg", "002.jpg", "003.jpg");
var loader:Loader;
var currentImg = 0;
var prevExists:Boolean = false;
var nextExists:Boolean = false;
var hideNavTimer:Timer = new Timer(2000,1);
var direction:String;
var pictUrl:String;

updateNavigation();

loader = new Loader();
ImageA.removeChildAt(0);
ImageA.addChild( loader );
var pictURLReq:URLRequest = new URLRequest(Pictures[currentImg]);                 
loader.load( pictURLReq );

Nav_Arrow_Prev.addEventListener(MouseEvent.CLICK, goPrev);
Nav_Arrow_Next.addEventListener(MouseEvent.CLICK, goNext);

stage.addEventListener(MouseEvent.MOUSE_MOVE, function(evt:MouseEvent):void {
   hideNavTimer.reset();   
   hideNavTimer.start();
   if (nextExists) {
      Nav_Arrow_Next.visible = true;
   } else {
      Nav_Arrow_Next.visible = false;
   }
   
   if (prevExists) {
      Nav_Arrow_Prev.visible = true;
   } else {
      Nav_Arrow_Prev.visible = false;
   }   
});

hideNavTimer.addEventListener(TimerEvent.TIMER, hideNavigation);
                  
function hideNavigation(evt:TimerEvent):void {
   Nav_Arrow_Next.visible = false;
   Nav_Arrow_Prev.visible = false;
}

function goNext(evt:MouseEvent):void {
   direction = "next";
   pictUrl     = Pictures[currentImg+1];
   slide();
}

function goPrev(evt:MouseEvent):void {
   direction = "previous";
   pictUrl     = Pictures[currentImg-1];
   slide();
}

function updateNavigation():void {
   if (currentImg == Pictures.length-1) {
      nextExists = false;
      Nav_Arrow_Next.visible = false;
   } else {
      nextExists = true;
   }
   
   if (currentImg == 0) {
      prevExists = false;
      Nav_Arrow_Prev.visible = false;
   } else {
      prevExists = true;
   }
}

function slide():void {
   loader = new Loader();
   ImageB.removeChildAt(0);
   ImageB.addChild( loader );
   var pictURLReq:URLRequest = new URLRequest(pictUrl);                 
    loader.load( pictURLReq );
   
   loader.contentLoaderInfo.addEventListener(Event.COMPLETE,performSlide);
}

function performSlide(evt:Event):void {
   var tw1:Tween;
   var tw2:Tween;
   var Changer:MovieClip;

   if (direction == "next") {
      currentImg++;
      updateNavigation();
      tw1 = new Tween(ImageA,"x", Strong.easeOut, 0, -600, 50, false);
      tw2 = new Tween(ImageB,"x", Strong.easeOut, 600, 0, 50, false);
   } else {
      currentImg--;
      updateNavigation();
      tw1 = new Tween(ImageA,"x", Strong.easeOut, 0, 600, 50, false);
      tw2 = new Tween(ImageB,"x", Strong.easeOut, -600, 0, 50, false);
   }
   Changer = ImageA;
   ImageA   = ImageB;
   ImageB   = Changer;
}
  View user's profile Private Nachricht senden
DesignKater

Dabei seit: 26.06.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Do 26.03.2009 10:30
Titel

Antworten mit Zitat Zum Seitenanfang

Kannst du deine Seite mal temporär hochladen? Bei mir ruckelt absolut garnichts lokal auf der Platte. Weder SWF noch in der HTML-Datei.
  View user's profile Private Nachricht senden
Anzeige
Anzeige
abc-man
Threadersteller

Dabei seit: 26.03.2009
Ort: -
Alter: -
Geschlecht: -
Verfasst Do 26.03.2009 17:31
Titel

Antworten mit Zitat Zum Seitenanfang

Danke für deine Mühe. Ich habe das Problem nun behoben.

Es hängt mit dem GC-Collector von AS3 zusammen. Folgende Seite beschreibt das Problem genauer: http://www.scottgmorgan.com/blog/index.php/2007/11/18/as3-garbage-collection-the-reason-your-tweens-are-ending-early

Mit folgenden Code läuft es bei mir:

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

Nav_Arrow_Next.visible = false;
Nav_Arrow_Prev.visible = false;

var Pictures:Array = new Array("001.jpg", "002.jpg", "003.jpg");
var antiGC:Dictionary = new Dictionary(false);
var loader:Loader;
var currentImg = 0;
var prevExists:Boolean = false;
var nextExists:Boolean = false;
var hideNavTimer:Timer = new Timer(2000,1);
var direction:String;
var pictUrl:String;

updateNavigation();

loader = new Loader();
ImageA.removeChildAt(0);
ImageA.addChild( loader );
var pictURLReq:URLRequest = new URLRequest(Pictures[currentImg]);                 
loader.load( pictURLReq );

Nav_Arrow_Prev.addEventListener(MouseEvent.CLICK, goPrev);
Nav_Arrow_Next.addEventListener(MouseEvent.CLICK, goNext);

stage.addEventListener(MouseEvent.MOUSE_MOVE, function(evt:MouseEvent):void {
   hideNavTimer.reset();   
   hideNavTimer.start();
   if (nextExists) {
      Nav_Arrow_Next.visible = true;
   } else {
      Nav_Arrow_Next.visible = false;
   }
   
   if (prevExists) {
      Nav_Arrow_Prev.visible = true;
   } else {
      Nav_Arrow_Prev.visible = false;
   }   
});

hideNavTimer.addEventListener(TimerEvent.TIMER, hideNavigation);
                  
function hideNavigation(evt:TimerEvent):void {
   Nav_Arrow_Next.visible = false;
   Nav_Arrow_Prev.visible = false;
}

function goNext(evt:MouseEvent):void {
   direction = "next";
   pictUrl     = Pictures[currentImg+1];
   slide();
}

function goPrev(evt:MouseEvent):void {
   direction = "previous";
   pictUrl     = Pictures[currentImg-1];
   slide();
}

function updateNavigation():void {
   if (currentImg == Pictures.length-1) {
      nextExists = false;
      Nav_Arrow_Next.visible = false;
   } else {
      nextExists = true;
   }
   
   if (currentImg == 0) {
      prevExists = false;
      Nav_Arrow_Prev.visible = false;
   } else {
      prevExists = true;
   }
}

function slide():void {
   loader = new Loader();
   ImageB.removeChildAt(0);
   ImageB.addChild( loader );
   var pictURLReq:URLRequest = new URLRequest(pictUrl);                 
    loader.load( pictURLReq );
   
   loader.contentLoaderInfo.addEventListener(Event.COMPLETE,performSlide);
}

function performSlide(evt:Event):void {
   var tw1:Tween;
   var tw2:Tween;
   var Changer:MovieClip;

   if (direction == "next") {
      currentImg++;
      updateNavigation();
      tw1 = new Tween(ImageA,"x", Strong.easeOut, 0, -600, 50, false);
      tw2 = new Tween(ImageB,"x", Strong.easeOut, 600, 0, 50, false);
   } else {
      currentImg--;
      updateNavigation();
      tw1 = new Tween(ImageA,"x", Strong.easeOut, 0, 600, 50, false);
      tw2 = new Tween(ImageB,"x", Strong.easeOut, -600, 0, 50, false);
   }
   tw1.addEventListener(TweenEvent.MOTION_FINISH, tweenFinished);
   antiGC[tw1] = tw1;
   tw2.addEventListener(TweenEvent.MOTION_FINISH, tweenFinished);
   antiGC[tw2] = tw2;
   
   function tweenFinished(e:TweenEvent) {
      antiGC[e.currentTarget] = null;
      delete antiGC[e.currentTarget];
   }
   Changer = ImageA;
   ImageA   = ImageB;
   ImageB   = Changer;
}
  View user's profile Private Nachricht senden
 
Ähnliche Themen Suche Software für Online Schiebe Puzzle, Memory, etc.
bildbetrachter
Mal wieder Bildbetrachter-Suche
Bildverwaltung/Bildbetrachter für MacOS9
[Flash,Swish] von Flash aus eine bestimmte Scene,Frame Laden
Flash: Welcher Skill-Level für folgende Flash-Datei...
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Multimedia


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.