Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-11-2005, 15:03   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 142
Post windbewegung

hallo zusammen,
eine frage:-) ich möchte ein rechteck an einer schnur hängend im wind baumeln lassen:-)

hierzu habe ich schon mal angefangen mit script eine linie zeichnen zu lassen,
die dann der x-position des quadrates ständig folgt.

wie schaffe ich es nun, dass das quadrat hin und herpendelt im wind.

hier mein bisheriges script (ist noch nicht berücksichtigt, dass natürlich das quadrat ab einer bestimmten positione wieder in die entgegengesetzte richtung pendeln muss). weiterhin fehlt noch der effekt, dass es zufallsmässig nicht nur links rechts, sondern auch oben unten bewegt wird. und zuguterletzt muss natürlich die schnur, an der das quadrat hängt geboben erscheinen, und nicht gerade, so wie momentan. habe das mit curveTo versucht, aber es haut noch nicht hin.

Code:
dicke = 0.5;
posX1 = 100;
posY1 = 0;
posX2 = quadrat._x;
posY2 = quadrat._y;;

// Gum-Faktor
gummi = 0.1;
faktor = 1-gummi;

cx = tx = (posX2+posX1)/2;
cy = ty = (posY2+posY1)/2;
vx = vy = 0;


function bewegQuadrat() {
		this.onEnterFrame = function() {
		_root.quadrat._x += 1;
		_root.posX2 += 1;
		clear();
		lineStyle(dicke,0x000000,100);
		moveTo(_root.posX1,_root.posY1);	
		_root.vx = (_root.tx-_root.cx)*_root.gummi +  
                _root.vx*_root.faktor;
		_root.vy = (_root.ty-_root.cy)*_root.gummi +   
                _root.vy*_root.faktor;
	         curveTo(_root.posX1,_root.posY1,_root.posX2,_root.posY2);
		trace(_root.posX2);
		}
		
}

bewegQuadrat();
vielen dank für eure hilfe. ich weiss es ist ein langer weg zum ziel, aber wer kann mich etwas dabei unterstützen?

vielen dank
floydmann
Angehängte Dateien
Dateityp: zip wind.zip (5,7 KB, 33x aufgerufen)
__________________
#############
[floyd-celluloyd.de ]

Geändert von floydmann (25-11-2005 um 15:04 Uhr)
floydmann ist offline   Mit Zitat antworten
Alt 25-11-2005, 15:41   #2 (permalink)
Linksaußen
 
Benutzerbild von Fralle
 
Registriert seit: Jun 2003
Ort: Essen
Beiträge: 552
Ein Pendel basiert auf einer Kreisbewegung.

--> benutze Math.sin und Math.cos

Allerdings wirds dann ein echtes Pendel (wie in einer Standuhr)
Wenn Du wirklich Wind imitieren willst, müssen irgendwelche Zufälligkeiten rein.

...das könnte recht schwierig werden...aber nicht unbedingt, Du musst einfach viel experimentieren, vielleicht findest Du dann eine ganz simple Formel.

hier hast Du mal ein Pendel
Angehängte Dateien
Dateityp: zip pendel.zip (2,9 KB, 45x aufgerufen)
__________________
Der Ball ist rund
Fralle ist offline   Mit Zitat antworten
Alt 25-11-2005, 18:39   #3 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 142
genau beim pendel...

...bin ich auch gelandet. vielen dank für deine hilfe. also das pendel an sich würde mich gar nicht so stören (da kann man ja auch nochmal mit einem random ran:-)) nur momentan ist ja die linie direkt im mc. diese wollte ich zeichnen lassen und dann etwas biegen lassen, je nach richtung, wo sich der pendel befindet.

was mich interessieren würde. wie schaffe ich es, dass eine linie gezeichnet wird, deren position oben gleich bleibt und nur das ende der linie (das am quadrat ist) dem quadrat folgt und sich nicht nur gerade darstellt, sondern "biegt".

weiterhin eine frage:
wenn ich diese windbewegung dann auf mehrere quadrate anwenden will, ist es da der beste weg alles direkt auf den mc mit onEnterFrame zu schreiben? ich dachte immer es sei schlauer das onEnterFrame direkt in die zeitleiste zu schreiben, da ich da dann von überall aus darauf zugreifen kann.

wie gesagt für hilfe wäre ich sehr dankbar. denn ein quadrat im wind, dass an einer starren schnur hängt sieht doch etwas zu komisch aus:-)

irgendwie blicke ich das mit dem curveTo() trotz flashhilfe nicht so ganz:-(

danke
floydmann
__________________
#############
[floyd-celluloyd.de ]
floydmann ist offline   Mit Zitat antworten
Alt 25-11-2005, 21:19   #4 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 142
wie schaffe ich es...

...dass die linie sich zeichnet und dann deren endpunkt am quadrat der bewegung des quadrates folgt?

muss man hierfür die linie üner createEmtpyMovieClip zeichnen? also so etwa?

Code:
_root.createEmptyMovieClip ("quadrat", 1);
with ( _root.quadrat )
{
lineStyle( 1, 0x000000, 100 );
moveTo(100,_root.quadrat._y);
//curveTo(_root.posX1,_root.posY1,_root.posX2,_root.posY2);
}
aber wie kriege ich das dann gebacken, denn auf dem movieclip mit dem instanznamen "quadrat" liegt ja das onEnterFrame:

Code:
onClipEvent (load) {
	var winkel = 30;
	var t = winkel;
	var speed = 5;
	// Deg in Rad
	function DegToRad(angle) {
		var radian = angle*Math.PI/180;
		return radian;
	}
}
onClipEvent (enterFrame) {
	t += speed;
	if (t>90) {
		t = 90;
		speed = -speed;
	}
	if (t<-90) {
		t = -90;
		speed = -speed;
	}
	var rot = Math.sin(DegToRad(t))*winkel;
	_rotation = rot;
}
wie kann ich in dem onEnterFrame die x-y koordinate des quadrates herausbekommen? und vor allem wie bekomme ich jetzt also eine verbindung zwischen der x-y position des quadrates und des endpunktes der linie hin.

ich blick es nicht mehr, sorry.
floydmann
Angehängte Dateien
Dateityp: zip windytest02.zip (8,6 KB, 16x aufgerufen)
__________________
#############
[floyd-celluloyd.de ]
floydmann ist offline   Mit Zitat antworten
Alt 26-11-2005, 13:39   #5 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 142
ich hoffe es nervt nicht...

...aber wie gesagt ich bin wieder einstückchen weiter. eigentlich fehlt mir jetzt nur noch eines:

wie schaffe ich es, dass der startpunkt der linie (liegt ausserhalb der bühne) immer an der gleichen stelle bleibt.

momentan habe ich folgendes script gebastelt (und das it das richtige wort dafür:-)):

Code:
posX2 = quadrat._x;
posY2 = quadrat._y;
var winkel = 10;
var t = winkel;
var speed = 1;
// Degree in Radius
function DegToRad(angle) {
	var radian = angle*Math.PI/180;
	return radian;
}
function bewegQuadrat() {
	this.quadrat.onEnterFrame = function() {
		//Linie wird wieder gelöscht
		clear();
		//Linie wird gezeichnet
		lineStyle(1, 0x000000, 100);
		moveTo(0, 0);
		curveTo(200, -200, _root.posX2, _root.posY2);
		//trace(t);
		//Winkelabfrage, wenn grösser als 60
		t += speed;
		if (t>60) {
			t = 60;
			speed = -speed;
			//trace(t);
		}
		if (t<-60) {
			t = -60;
			speed = -speed;
			//trace(t);
		}
		var rot = Math.sin(DegToRad(t))*winkel;
		_rotation = rot;
	};
}
bewegQuadrat();
nur leider wird jetzt zwar das curveTo auch durchgeführt, aber leider bleibt die kurven immer gleich, egal in welche richtung sich das rechteck bewegt:-(

wer könnte sich bitte einmal kurz zeit nehmen, die *.fla anschauen und mir einen hinweis liefern?

vielen dank
floydmann
Angehängte Dateien
Dateityp: zip windy03.zip (6,4 KB, 14x aufgerufen)
__________________
#############
[floyd-celluloyd.de ]
floydmann ist offline   Mit Zitat antworten
Alt 26-11-2005, 16:24   #6 (permalink)
Linksaußen
 
Benutzerbild von Fralle
 
Registriert seit: Jun 2003
Ort: Essen
Beiträge: 552
Floyd,

speichere Deine Datei mal nicht als MX 2004, ich hab' nur MX!

Dann schau' ich's mir mal an. Prinzipiell sollte es überhaupt kein Problem sein, den Anfangspunkt der Linie immer im gleichen Punkt zu halten.
__________________
Der Ball ist rund
Fralle ist offline   Mit Zitat antworten
Alt 26-11-2005, 16:33   #7 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 142
danke

@fralle: dane, dass du dir die zeit dafür nimmst. inzwischen bin ich wieder ein stück weiter gekommen, der punkt bleibt an seiner stelle.

jedoch wollte ich, dass sich mit curveTo die linie biegt, je nach dem wo sich das quadrat befindet. das curveTo scheint aber nur einmal ausgeführt zu werden, obwohl es in einem onEnterFrame steht.

vilelleicht kannst du mir da weiterhelfen.

vielen dank für deine mühe
floydmann
Angehängte Dateien
Dateityp: zip windy_mx.zip (6,0 KB, 14x aufgerufen)
__________________
#############
[floyd-celluloyd.de ]
floydmann ist offline   Mit Zitat antworten
Alt 26-11-2005, 17:07   #8 (permalink)
Linksaußen
 
Benutzerbild von Fralle
 
Registriert seit: Jun 2003
Ort: Essen
Beiträge: 552
mal was gebastelt.


Der springende Punkt ist, daß der MC, in dem die Linie liegt und der, in dem das Pendel, getrennt sein müssen, weil ja sonst die Linie sich auch immer mit verdreht.
Angehängte Dateien
Dateityp: zip pendel.zip (4,3 KB, 24x aufgerufen)
__________________
Der Ball ist rund

Geändert von Fralle (26-11-2005 um 17:18 Uhr)
Fralle ist offline   Mit Zitat antworten
Alt 26-11-2005, 18:36   #9 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 142
vielen dank...

...jetzt weiss ich wenigstens woran es gehakt hat, jedoch habe ich noch einige fragen, wenn es dir keine umstände macht:

ich habe mir die datei angeschaut und versucht, dass auf meine zu übertragen. folgende probleme sind bei mir aufgetreten:

das quadrat hängt nicht an der schnur. meine frage: wie kann ich die länge der linie verlängern?

zweitens: das quadrat pendelt bei mir nur am fleck:-( und zuguterletzt: da ist ein loch links oben im quadrat (in der angehängten datei). ddie schnur soll daran befestigt sein, dass es aussieht wie aufgehängt. jetzt ist natürlich das problem mit dem registrierungspunkt und der drehung. ist das pendel rechts, dann sollte das quadrat nach links gekippt sein, ist es links, dann soll es nach rechts gekippt sein. wie schaffe ich das?

ich schaue mir das jetzt nochmal genau an. aber vielleicht kannst du dir das auch nochmal anschauen, das würde mir bestimmt sehr helfen.

vielen dank
floydmann
Angehängte Dateien
Dateityp: zip pendel.zip (6,1 KB, 14x aufgerufen)
__________________
#############
[floyd-celluloyd.de ]

Geändert von floydmann (26-11-2005 um 18:39 Uhr)
floydmann ist offline   Mit Zitat antworten
Alt 26-11-2005, 23:55   #10 (permalink)
Linksaußen
 
Benutzerbild von Fralle
 
Registriert seit: Jun 2003
Ort: Essen
Beiträge: 552
wie gefällt Dir dies.

Ich habe allerdings meine Version nach Deinen Wünschen angepasst.
Das Script ist aber echt easy! Nur zwei MC's haben (wenig) Script und es ist alles kommentiert.
Angehängte Dateien
Dateityp: zip pendel.zip (5,5 KB, 87x aufgerufen)
__________________
Der Ball ist rund
Fralle ist offline   Mit Zitat antworten
Alt 27-11-2005, 09:55   #11 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 142
danke danke danke...

@fralle: vielen dank, dass du dir so viel zeit genommen hast und vor allem das script so cool kommentiert hast. das meinte ich mit "wissen was da passiert". für dich ist es relativ einfach wahrscheinlich. ich bin aber noch relativer anfänger und gerade mit mathematischen oder physischen formeln, da hakt es ganz gewaltig bei mir:-)

deshalb ist es gut, dass du mir das alles kommentiert hast, denn letztendlich möchte ich es ja verstehen, was und wie es gemacht wird.

vielen dank nochmal
floydmann
__________________
#############
[floyd-celluloyd.de ]
floydmann 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 15:26 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele