Willkommen auf dem Portal für Mediengestalter
|
|
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 |
|
|
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;
} |
|
|
|
|
|
DesignKater
Dabei seit: 26.06.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Do 26.03.2009 10:30
Titel
|
|
|
Kannst du deine Seite mal temporär hochladen? Bei mir ruckelt absolut garnichts lokal auf der Platte. Weder SWF noch in der HTML-Datei.
|
|
|
|
|
Anzeige
|
|
|
abc-man
Threadersteller
Dabei seit: 26.03.2009
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Do 26.03.2009 17:31
Titel
|
|
|
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;
} |
|
|
|
|
|
|
|
|
Ä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...
|
|
|
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.
|
|