kostenloser Webspace werbefrei: lima-city


den anker (?) umlegen - as3 flash

lima-cityForumDie eigene HomepageFlash und Silverlight

  1. Autor dieses Themas

    sonok

    Moderator Kostenloser Webspace von sonok

    sonok hat kostenlosen Webspace.

    hallo :wave:

    ich habe kleine boxen, die beim maus-drüberfahren sakliert werden. jede box liegt dafür in einem sprite-container, dessen skalierungsfaktor von 1 auf 2 steigt.
    meine problem dabei ist, daß die box beim y-skalieren automatisch nach unten erweitert wird. ich möchte hingegen, daß sich die box nach oben ausdehnt.
    kann mir jemand sagen, welchen befehl ich nehmen muß, damit der ursprungspunkt der box nicht oben rechts, sondern unten rechts bzw bestenfalls unten in der mitte liegt? also daß ich, wenn ich mit der maus darüberfahre, eine ausdehnung nach oben (und am besten nach links und rechts mit dem gleichen wert) skaliert wird?
    bin auch für den richtigen google-begriff dankbar!
    ich bräuchte den as-befehl, nicht das wysiwyg-rumgeklicke!

    vielen dank im voraus!

    ps
    so ist es und sollte es nicht wirklich sein - http://sonok.lima-city.de/sonok_07/sonok_07.html


    edit
    naja, hab ich erstmal roation = 180 verwendet. lass mir aber trotzdem gerne helfen.

    Beitrag zuletzt geändert: 27.3.2009 15:01:58 von sonok
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. schnelle Lösung wäre die Position zu verändern, also :

    Größe mal zwei _und_ yPosition minus Größe;
    Für die XAchse gilt das selbe, da fällt es nur nicht so auf, weil die Breite kleiner als die Höhe ist.



  4. Autor dieses Themas

    sonok

    Moderator Kostenloser Webspace von sonok

    sonok hat kostenlosen Webspace.

    hallo!

    naja, dieses rumgefummel wollte ich ja eben mal vermeiden ... aber danke trotzdem!
  5. für eine genauere Lösung wäre interessant wie du das erstellt hast. sicherlich mit code. Hast du diesen hintergrund als bild, oder wird der auch erzeugt?

    textfield in sprite, weiter nix?
    Edit: scheiße.
    jetzt hab ich das skript fertig, aber es ist auf einem omputer ohne internetzugang und das netzwerk mit diesem hier streikt, warte mal bis morgen oder heut abend xD

    endlich Wochenende...endlich mal was mit AS3 gemacht.

    Beitrag zuletzt geändert: 27.3.2009 22:20:40 von milchreis
  6. Autor dieses Themas

    sonok

    Moderator Kostenloser Webspace von sonok

    sonok hat kostenlosen Webspace.

    wird alles erzeugt

    eine "kärtchen" besteht aus einem textfeld und zwei sprite-flächen mit farbverlauf. alle drei zusammen werden wiederum in einem sprite-container (bsp A) gezeichnet, alle karten zusammen in einem dritten sprite-container (bsp B). A soll seine skalierung ändern, und das geschieht eben durch eine ausdehnung nach rechts und nach unten - weil oben links der ankerpunkt ist. ebendiesen ankerpunkt möchte ich also nach unten verschieben, am besten die untere mitte.

    laut der hilfe gibt es eine eigenschaft "transformationPoint", aber scheinbar dummerweise nicht für sprite-sachen. oder weiß jemand, wie man den auf die sprite-sachen anwenden kann??

    also zur zeit drehe ich alle A's um 180°, was bisher relativ gut geht. freu mich aber, wenn ich ohne tricksen zum erfolg komme.
  7. So, das wäre jetzt mal ein Beispielcode.
    Speichere das in eine "Main.as" Datei ab, erzeuge im selben Ordner eine fla, in der du dann in der Flash IDE diese Main.as als Dokumentenklasse angibst.
    bzw. kopiere dir den Code einzeln heraus.

    schau dir an wo die Mittelpunkte liegen:
    jedes Displayobject(bzw. ein Erbe, was ein Sprite ist) hat eine Position, diese ist innerhalb dieses Objektes sein 0/0 Punkt.

    dann das ganze ausführen und die drei boxen beim drüber rollen beobachten.



    package 			
    {			
    	import flash.display.Sprite;		
    	import flash.events.Event;		
    	import flash.events.MouseEvent;		
    			
    	/**		
    	 * ...		
    	 * @author milchreis		
    	 */		
    	public class Main extends Sprite 		
    	{		
    			
    		public function Main():void 	
    		{	
    			if (stage) init();
    			else addEventListener(Event.ADDED_TO_STAGE, init);
    		}	
    			
    		private function init(e:Event = null):void 	
    		{	
    			removeEventListener(Event.ADDED_TO_STAGE, init);
    			// entry point (hier geht's quasie los (und wird interessant))
    			
    			//3 Quadrate, die Position macht den Unterschied, dann klappt's auch mit dem Skalieren
    			
    			//linke Kiste (schwarz), Zentrum ist oben links
    			var box:Sprite = new Sprite();
    			box.x = box.y = 50;
    			box.graphics.beginFill(0x000000, 1);
    			box.graphics.drawRect(0, 0, 100, 100);
    			box.graphics.endFill();
    			
    			box.addEventListener(MouseEvent.ROLL_OVER, mausefalle);
    			box.addEventListener(MouseEvent.ROLL_OUT, schnappp);
    			addChild(box);
    			
    			//mittlere Kiste (rosa), Zentrum ist in der Mitte
    			var boxer:Sprite = new Sprite();
    			boxer.x = 250;
    			boxer.y = 100;
    			boxer.graphics.beginFill(0xFF60FF, 1);
    			boxer.graphics.drawRect(-50, -50, 100, 100);
    			boxer.graphics.endFill();
    			
    			boxer.addEventListener(MouseEvent.ROLL_OVER, mausefalle);
    			boxer.addEventListener(MouseEvent.ROLL_OUT, schnappp);
    			addChild(boxer);
    			
    			//rechte Kiste (alte-Leute-grün vom Typ "ob Fichte, Kiefer, Tanne, hätten meine Wände diese Farbe, läg mein Maler morgen tot in seiner Wanne"), Zentrum ist unten Mitte
    			var amBoxesten:Sprite = new Sprite();
    			amBoxesten.x = 400;
    			amBoxesten.y = 150;
    			amBoxesten.graphics.beginFill(0x10807F, 1);
    			amBoxesten.graphics.drawRect(-50, -100, 100, 100);
    			amBoxesten.graphics.endFill();
    			
    			amBoxesten.addEventListener(MouseEvent.ROLL_OVER, mausefalle);
    			amBoxesten.addEventListener(MouseEvent.ROLL_OUT, schnappp);
    			addChild(amBoxesten);
    			
    			//jetz noch ein bissel graphisches Hilfsgedöhns:
    			
    			var sos:Sprite = new Sprite();
    			sos.graphics.lineStyle(1, 0x00FF00);
    			sos.graphics.moveTo(0, 50);
    			sos.graphics.lineTo(550, 50);
    			
    			sos.graphics.moveTo(0, 150);
    			sos.graphics.lineTo(550, 150);
    			
    			sos.graphics.moveTo(50, 0);
    			sos.graphics.lineTo(50, 200);
    			
    			sos.graphics.moveTo(150, 0);
    			sos.graphics.lineTo(150, 200);
    			
    			sos.graphics.moveTo(200, 0);
    			sos.graphics.lineTo(200, 200);
    			
    			sos.graphics.moveTo(300, 0);
    			sos.graphics.lineTo(300, 200);
    			
    			sos.graphics.moveTo(350, 0);
    			sos.graphics.lineTo(350, 200);
    			
    			sos.graphics.moveTo(450, 0);
    			sos.graphics.lineTo(450, 200);
    			
    			addChild(sos);
    			
    			
    		}	
    		private function mausefalle(wasnHierLos:Event):void {	
    			wasnHierLos.target.scaleY = wasnHierLos.target.scaleY = 1.2;
    			wasnHierLos.target.scaleX = wasnHierLos.target.scaleX = 1.2;
    		}	
    			
    		private function schnappp(nüscht:Event):void {	
    			nüscht.target.scaleY = nüscht.target.scaleY = 1;
    			nüscht.target.scaleX = nüscht.target.scaleX = 1;
    		}	
    			
    			
    	}		
    			
    }


    klar soweit?
  8. Autor dieses Themas

    sonok

    Moderator Kostenloser Webspace von sonok

    sonok hat kostenlosen Webspace.

    aha, danke, wird getestet, sobald ich kann!

    edit
    scheint zu funktionien :thumb: - jetzt muß ich aber noch das verhalten mit meinen restlichen befehlen austesten

    edit edit
    ja, klasse!!

    Beitrag zuletzt geändert: 31.3.2009 13:21:51 von sonok
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!