Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-07-2009, 12:50   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2008
Beiträge: 330
Registrierungspunkte bei geladenen Bildern

Ich habe das Problem, dass ich externe Bilder lade und dann auf meiner Bühne anordnen lasse.
Das Problem ist nur, dass die Bilder in meinem Container nicht mittig sondern rechts oben ausgerichtet sind.
Das heisst bei der Verteilung (hab da die BReite der Bühne durch die Anzahl Elemente +1 rechnen lassen) sind die nicht ganz schön ausgerichtet, da sich das ganze um die Breite eines Bildes nach rechts verschiebt (logisch).

Ich hab inzwischen rausgefunden, dass ich leider die Registrierungspunkte nicht per AS3 ändern kann. (Könnte Adobe eigentlich mal was tun finde ich...)

Jedenfalls habe ich nun keine AHnung wie ich dieses Problem lösen könnte...

Ihr?
sejau ist offline   Mit Zitat antworten
Alt 17-07-2009, 13:37   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Bette die MCs in andere MCs auf deren Mittelpunkt.
  Mit Zitat antworten
Alt 17-07-2009, 14:19   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2008
Beiträge: 330
Aber wie?

Ein MC wird ja dann auch wieder rechts oben ausgerichtet.

-- das Problem hat sich nun etwas ausgeweitet:
Ich möchte die Bilder beim Mouseover skalieren.
sollte natürlich von der Mitte aus sein. Ging nicht, also habe ich ne Verschiebung reingetan, die sich automatisch ausrechnet aus der Grösse des Bildes.

PHP-Code:
var bildY:Number 30//BIldhöhe der Logos, die beim normalen Zustand sein sollte (nicht Mouseover)
var wachstum:Number 1.15;
var 
xPos:Number;
var 
yPos:Number;


function 
overThumb(evt:MouseEvent):void
{
    
xPos evt.currentTarget.x;
    
yPos evt.currentTarget.y;
    
trace("mouseover ");
    var 
vrschbngX:Number evt.currentTarget.width * ((wachstum 1)/2); //speichert in Variable: (breite * halbe Prozentzahl der zus. Skalierung
    //bsp: (breite * ((1.15 - 1)/2) = (breite * (0.15/2)) -> 7.5 prozent der breite muss vershcoben werden.
    
var vrschbngY:Number evt.currentTarget.height * ((wachstum 1)/2);
    
TweenMax.to(evt.currentTarget0.5, {scaleX:wachstumscaleY:wachstum});
    
TweenMax.to(evt.currentTarget0.5, {x:evt.currentTarget.vrschbngXy:evt.currentTarget.vrschbngY});

    
        
}

      
function 
outThumb(evt:MouseEvent):void
{
    
trace("mouseout");
    
TweenMax.to(evt.currentTarget0.5, {scaleX:1scaleY:1});
    
TweenMax.to(evt.currentTarget0.5, {x:xPosy:yPos});


So verschiebt sich das Bild während des Skalierens immer gleich um den richtigen Wert, so dass es aussieht, als würde von der Mitte aus skaliert werden.

Danach beimMouseout gehts zurück.

Solange man sich Zeit lässt und die Tweens fertig guckt geht das auch ganz gut, jedoch verschieben sie sich, wenn man die Tweens nicht abwartet, da beim MouseOver die x und die y-Pos immer neu definiert werden und beim MouseOut der Befehl gegeben wird dorthin zurückzukehren.

Dann habe ich festgestellt, dass es bei greensock auch einen Tween gibt, der das Skalieren vom ZEntrum erlaubt.

http://blog.greensock.com/tweenmaxas3/

transformAroundCenter


Leider muss man dafür zahlen. Gibts da einen weiteren tweener, der so was gratis anbietet?

Oder eben, wie ginge das mit den MCs?
sejau ist offline   Mit Zitat antworten
Alt 17-07-2009, 14:22   #4 (permalink)
lebt in stereo
 
Benutzerbild von figure8
 
Registriert seit: Mar 2008
Ort: karlsruhe
Beiträge: 1.093
wieso setzt du dein image-bitmap nicht einfach in die mitte des movieclips (imgContainer.x - (imgSrc.width / 2)) (und das gleiche mit y) und transformierst den movieclip? der hat als registrierungspunkt 0/0 oben links, nicht oben rechts.
__________________
* Flash-JunkieMusiker & Grafiker

# Marvin Blase
# Speaker, Author, Silly Billy.
# @beautifycode
figure8 ist offline   Mit Zitat antworten
Alt 17-07-2009, 14:39   #5 (permalink)
Neuer User
 
Registriert seit: Oct 2008
Beiträge: 330
hab ich auch irgendwie versucht, aber wohl was falsch überlegt ^^

und jap klar isses links und nicht rechts.. haha bin etwas verwirrt.

aber danke, nun isses klar.

Trotzdem der Tween von Greensock ist geil =)
gibts den nicht in ner Gratisausführung?
sejau ist offline   Mit Zitat antworten
Alt 17-07-2009, 15:30   #6 (permalink)
Neuer User
 
Registriert seit: Oct 2008
Beiträge: 330
Hm mist, doch nicht ganz einfach...

Da ich das Bild erst so verschieben kann wenn es geladen ist, muss ich mitm Lauscher diesen Moment abfangen.
Darauf möchte ich dann mit diesem Code das Bild auf dem Registrierungspunkt zentrieren:

PHP-Code:
function PicLoaded(evt:Event)    
{
    
trace(evt.currentTarget.content.x);
    
trace(evt.target.x);
    
//evt.currentTarget.content.x = evt.currentTarget.x - (evt.currentTarget.content.width / 2)    

mit dem //- markierten Codefetzen möchte ich dann dies:

Zitat:
(imgContainer.x - (imgSrc.width / 2))
tun.

Jedoch mukkt er mit evt.currentTarget.x rum
der kann den x-Wert nicht ermitteln... Fragt mich nicht wieso:

Zitat:
ReferenceError: Error #1069: Eigenschaft x für flash.display.LoaderInfo nicht gefunden und es ist kein Standardwert vorhanden.
at mobiliar_fla::MainTimeline/PicLoaded()
Ich nehme an das ist, weil ich die verschiedenen Container in einer SChleife anordnen lasse und zwar mit jedem Durchlauf etwas mehr rechts:

container.x = i* 200;

oder wie erklärt ihr euch das?
Auf jeden Fall kann ich das Bild so nicht zentrieren, was mach ich nun?
sejau ist offline   Mit Zitat antworten
Alt 17-07-2009, 15:34   #7 (permalink)
Neuer User
 
Registriert seit: Oct 2008
Beiträge: 330
Ich glaubs ja nicht.
Ich brauch dieses x ja gar nicht:

PHP-Code:
evt.currentTarget.content.= - (evt.currentTarget.content.width 2)
    
evt.currentTarget.content.= - (evt.currentTarget.content.height 2
so gehts ja prima.

Trotzdem würde mich interessieren, weshalb er die x-Position nicht ermitteln kann.
sejau 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



Alle Zeitangaben in WEZ +1. Es ist jetzt 16:35 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele