Zurück   Flashforum > Flash > ActionScript > ActionScript 2

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 04-05-2011, 10:47   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 7
Flash Karussel Bilder zittern

Hallo,

ich habe ein Problem mit dem Flashkarussel von GoToAndLern.
Die Bilder zittern, wenn sie sich bewegen und ich habe keine Ahnung woran es liegen kann. Ich habe es schon mit Math.round an diversen Stellen probiert.
forceSmoothing = true geht auch nicht.

Hier könnt Ihr meinen Versuch sehen: carousel2

Und hier habe ich einen Download mit allen Dateien: http://www.jonasmueller.com/karussel/karussel.zip

Hier der Code:

Code:
import mx.utils.Delegate;

var numOfItems:Number;
var radiusX:Number = 230;
var radiusY:Number = 85;
var centerX:Number = 290;
var centerY:Number = 200;
var speed:Number = 0.01;
var perspective:Number = 50;
var home:MovieClip = this;

var tooltip:MovieClip = this.attachMovie("tooltip","tooltip",10000);
tooltip._alpha = 0;

var xml:XML = new XML();
xml.ignoreWhite = true;

xml.onLoad = function()
{
	var nodes = this.firstChild.childNodes;
	numOfItems = nodes.length-1;
	trace(numOfItems);
	for(var i=0;i<numOfItems;i++)
	{			
		var t = home.attachMovie("item","item"+i,i+1);
		t.angle = i * ((Math.PI*2)/numOfItems);
		t.onEnterFrame = mover;
		t.toolText = nodes[i].attributes.tooltip;
		t.websiteLink = nodes[i].attributes.link;
		t.linkTarget = nodes[i].attributes.target;
		t.icon.inner.loadMovie(nodes[i].attributes.image);
		t.r.inner.loadMovie(nodes[i].attributes.image);
		t.r.inner.forceSmoothing = true;
		t.icon.onRollOver = over;
		t.icon.onRollOut = out;
		t.icon.onRelease = released;
	}
	_root.backgroundimage = nodes[numOfItems].attributes.backgroundimage;
	mc_hintergrund.loadMovie(_root.backgroundimage);

}

function over()
{
	home.tooltip.tipText.text = this._parent.toolText;
	home.tooltip._x = this._parent._x;
	home.tooltip._y = this._parent._y - this._parent._height/2;
	home.tooltip.onEnterFrame = Delegate.create(this,moveTip);
	home.tooltip._alpha = 100;
	this._parent.mc_rollover.gotoAndStop(2);
}

function out()
{
	delete home.tooltip.onEnterFrame;
	home.tooltip._alpha = 0;
	this._parent.mc_rollover.gotoAndStop(1);
}

function released()
{
	trace(this._parent.linkTarget);
}

function moveTip()
{
	home.tooltip._x = this._parent._x;
	home.tooltip._y = this._parent._y - this._parent._height/2;
}

xml.load("icons.xml");

function mover()
{
	this._x = Math.round(Math.cos(this.angle) * radiusX + centerX);
	this._y = Math.round(Math.sin(this.angle) * radiusY + centerY);
	var s = (this._y - perspective) /(centerY+radiusY-perspective);
	this._xscale = Math.round(this._yscale = s*100);
	this._yscale = Math.round(this._yscale);	
	this._alpha = this._xscale;	
	this.angle += this._parent.speed;	
	this.forceSmoothing = true;
	this.swapDepths(Math.round(this._xscale) + 100);
	
}

this.onMouseMove = function()
{
	speed = (Math.ceil(this._xmouse-centerX)/10500);
	trace(speed);
}
Kann jemand helfen?

Grüße
jomay ist offline   Mit Zitat antworten
Alt 04-05-2011, 10:59   #2 (permalink)
Flasher
 
Registriert seit: Aug 2010
Ort: Stuttgart
Beiträge: 360
Zitat:
Zitat von jomay Beitrag anzeigen
Die Bilder zittern, wenn sie sich bewegen und ich habe keine Ahnung woran es liegen kann. Ich habe es schon mit Math.round an diversen Stellen probiert.
Vielleicht haben die Bilder Angst?

Nein nein, mal im Ernst: In deinem Code sagst du beim Positionieren der Images: Math.Round(..) Damit setzt du die Bilder nur auf ganze Pixel. Wenn du eine wirklich flüssige Animation möchtest, musst du darauf verzichten, und auch auf Teilpixel setzen. Nimm mal das Math.Round() raus und versuch es noch einmal - kann sein das es damit schon besser aussieht.

Liebe Grüße!
__________________
Erwähne NIEWIEDER das Wort "Klickdummy"!
Ouroborus23 ist offline   Mit Zitat antworten
Alt 04-05-2011, 11:25   #3 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 7
Das war schonmal nicht schlecht.
Das hüpfen ist weg aber in den Bildern gibt es "verschiebungen". Es sieht so aus als ob die Bilder flimmern.
Hast Du dafür auch eine Lösung?
jomay ist offline   Mit Zitat antworten
Alt 04-05-2011, 12:47   #4 (permalink)
Flasher
 
Registriert seit: Aug 2010
Ort: Stuttgart
Beiträge: 360
Puh, so aus dem Stehgreif schwer zu sagen... Zeig dochmal wie es aussieht!
Grüße!
__________________
Erwähne NIEWIEDER das Wort "Klickdummy"!
Ouroborus23 ist offline   Mit Zitat antworten
Alt 04-05-2011, 13:20   #5 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 7
Die Daten und den Link oben habe ich aktualisiert.
jomay ist offline   Mit Zitat antworten
Alt 04-05-2011, 14:30   #6 (permalink)
Flasher
 
Registriert seit: Aug 2010
Ort: Stuttgart
Beiträge: 360
ah okay.. ich werfe mal vorsichtig in den Raum, dass man das zumindest in AS3 mit der smoothing Eigenschaft lösen könnte. Weiß nicht in wie weit das in AS2 möglich ist - möchte mich da nicht zu weit aus dem Fenster lehnen.
Aber vielleicht ist das ein Ansatz der in die richtige Richtung für dich geht.

Viel Glück und liebe Grüße!
__________________
Erwähne NIEWIEDER das Wort "Klickdummy"!
Ouroborus23 ist offline   Mit Zitat antworten
Alt 05-05-2011, 01:31   #7 (permalink)
flash freelancer
 
Benutzerbild von MASTER LISA
 
Registriert seit: Oct 2001
Ort: metropolis
Beiträge: 710
mmmh oder updateAfterEvent() ?
Das sollte die Flashanimation flüssiger machen
__________________
___________
Flash Freelancer

Geändert von MASTER LISA (05-05-2011 um 01:35 Uhr)
MASTER LISA ist offline   Mit Zitat antworten
Alt 05-05-2011, 08:42   #8 (permalink)
Flasher
 
Registriert seit: Aug 2010
Ort: Stuttgart
Beiträge: 360
Zitat:
Zitat von MASTER LISA Beitrag anzeigen
mmmh oder updateAfterEvent() ?
Das sollte die Flashanimation flüssiger machen
In der Tat ist das so, allerdings nicht in diesem Fall. Mit updateAfterEvent arbeitet man vor allem in MouseMove-Listenern, da in diesem Fall das Ereignis ja von der Maus gewurfen wird. Dann macht es Sinn, unabhängig von der Framerate das Display zu updaten.

In diesem Fall wird aber auf EnterFrame gehört, damit sind die einzigen Zeitpunkte, zu denen Events generiert werden, eben die einzelnen Frames - ein updateAfterEvent dürfte dann keine Änderung bringen.

Liebe Grüße
__________________
Erwähne NIEWIEDER das Wort "Klickdummy"!
Ouroborus23 ist offline   Mit Zitat antworten
Alt 05-05-2011, 09:21   #9 (permalink)
flash freelancer
 
Benutzerbild von MASTER LISA
 
Registriert seit: Oct 2001
Ort: metropolis
Beiträge: 710
doch, probier es mal aus
updateafterevent() funktioniert auch bei enterframe und verhindert genau dieses flackern ...

Description
Action; updates the display (independent of the frames per second set for the movie) when you call it within an onClipEvent handler or as part of a function or method that you pass to setInterval . Flash ignores calls to updateAfterEvent that are not within an onClipEvent handler or part of a function or method passed to setInterval .
__________________
___________
Flash Freelancer
MASTER LISA ist offline   Mit Zitat antworten
Alt 05-05-2011, 12:41   #10 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 7
Leider bringt updateAfterEvent() keine Verbesserung :-(
jomay ist offline   Mit Zitat antworten
Alt 05-05-2011, 12:49   #11 (permalink)
Flasher
 
Registriert seit: Aug 2010
Ort: Stuttgart
Beiträge: 360
Zitat:
Zitat von jomay Beitrag anzeigen
Leider bringt updateAfterEvent() keine Verbesserung :-(
dachte ich mir hast du es mal mit smoothing versucht?
__________________
Erwähne NIEWIEDER das Wort "Klickdummy"!
Ouroborus23 ist offline   Mit Zitat antworten
Alt 05-05-2011, 17:39   #12 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 7
Wenn ich es richtig verstanden habe, lässt sich smoothing nur in Verbindung mit BitmapData verwenden. Das muss ich mir erst einmal anschauen.
Aber anscheinend ist das der richtige Weg.
Euch vielen Dank für die Hilfe.
jomay ist offline   Mit Zitat antworten
Alt 05-05-2011, 21:11   #13 (permalink)
Flasher
 
Registriert seit: Aug 2010
Ort: Stuttgart
Beiträge: 360
Zitat:
Zitat von jomay Beitrag anzeigen
Aber anscheinend ist das der richtige Weg.
Ja. smoothing ist eine öffentliche eigenschaft von Bitmap - das sollte für deinen Fall also kein Problem darstellen

Um das nochmal klarzustellen: updateAfterEvent funktioniert meines Erachtens nach nicht onEnterFrame. (Ich lasse mich aber auch gern belehren). Es wäre für dein Flackern aber eh nicht die Lösung gewesen, selbst wenn es onEnterFrame ginge - schließlich war ja nicht deine Animation ruckelig, sondern die Pixel deiner Grafiken. Das rührt daher, dass Flash intern versucht, jedes Bildpixel genau auf ein Monitorpixel abzubilden. Dabei kann durch skalieren und verschieben schonmal ein Flimmern entstehen. mit smoothing=true erlaubst du Flash, die Pixel des Bildes in die Monitorpixel hinein zu interpolieren. Im schlimmsten Fall wird das ganze ein wenig verschwommener - was hier aber sicher besser ist als das Flackern

Liebe Grüße und einen schönen Abend!
__________________
Erwähne NIEWIEDER das Wort "Klickdummy"!
Ouroborus23 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
Flash Effekt - zittern chrissy810 Flash Einsteiger 12 17-05-2010 14:38
[Flash CS4] Karussel und Bilder wackeln! Ich1988 Flash Einsteiger 2 09-02-2010 08:59
[Flash CS4] Flash Karussel DanielHunk Flash Einsteiger 6 09-04-2009 15:22
flashstar bilder karussel ändern... Fish Flash 4 und Flash 5 3 22-08-2002 19:12
Importierte Bilder zittern konphucius Flash MX 4 04-05-2002 09:49


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele