den anker (?) umlegen - as3 flash
lima-city → Forum → Die eigene Homepage → Flash und Silverlight
ausdehnung
befehl
boxen
boxer
code
container
dank
import
jemand
kiefer
maus
mausefalle
mitte
position
sache
schwarz zentrum
target
url
wanne
zentrum
-
hallo
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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.
-
hallo!
naja, dieses rumgefummel wollte ich ja eben mal vermeiden ... aber danke trotzdem! -
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 -
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. -
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? -
aha, danke, wird getestet, sobald ich kann!
edit
scheint zu funktionien - 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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage