Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-12-2003, 16:26   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 20
per attachMovie erzeugte Objekte abgebremst an eine Position fahren lassen

Liebe Gemeinde :-)

Leider bin ich noch ein echter rookie was AS angeht, ich gehörte bisher zu der gattung Flasher, die das meiste noch "zu Fuss" über den screen geschubst haben... damit ist jetzt schluss

und hier meine Frage

Ich habe ein Objekt aus der Library per attachMovie 6 mal dupliziert und eine Position zugewiesen:

ActionScript:
  1. schilder = 6;
  2. for(i=1;i<=schilder;i++) {
  3.     attachMovie("schild","schild" add i,i);
  4.     if(i==1) {
  5.         _root.schild1._x = 100;
  6.         _root.schild1._y = 212.7;
  7.     } else {
  8.         j = i - 1;
  9.         _root["schild" add i]._y = _root["schild" add j]._y;
  10.         _root["schild" add i]._x = _root["schild" add j]._x + 180;
  11.     }
  12. }

... so sieht das ganze bisher aus ... natürlich erscheinen meine "schilder" einfach so auf der Bühne.

ich möchte aber gerne, dass sie von links an Ihre zugeordnete x-position fahren und das am besten abgebremst mit nem kleinen wabbler am ende ...


... kann mich da geholfen werden?

schönen Gruss

*manatee
__________________
gefundene rechtschreibfehler dürfen behalten werden

Geändert von manatee (13-12-2003 um 16:29 Uhr)
manatee ist offline   Mit Zitat antworten
Alt 14-12-2003, 00:43   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Also ein kleines Bewege- und Bremseskript kann ich dir bieten, für irgendwelchen Spezial-Spielereien (wabbelwobbler...) würd ich dir die "easing equations" von Robert Penner empfehlen

Gruß

ActionScript:
  1. MovieClip.prototype.move = function(targetX, targetY, delay) {
  2.     if (this._x != targetX || this._y != targetY) {
  3.         this.onEnterFrame = function() {
  4.             var difX = targetX - this._x;
  5.             var difY = targetY - this._y;
  6.             if (Math.round(Math.abs(difX)) > 0 || Math.round(Math.abs(difY)) > 0) {
  7.                 this._x += difX / delay;
  8.                 this._y += difY / delay;
  9.             } else {
  10.                 delete this.onEnterFrame;
  11.             }
  12.         };
  13.     }
  14. };
  15. //beispielhafter Aufruf:
  16. deinMC.move(400,200,8);
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)

Geändert von sonar (14-12-2003 um 02:14 Uhr)
sonar ist offline   Mit Zitat antworten
Alt 14-12-2003, 11:48   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 20
Super! vielen Dank.. das war genau das was ich brauchte ...

... und nun noch ne frage:

wie geht das, wenn ich gleichzeitig neben der koordinaten auch noch die Grösse verändern möchte?


grüßää

Frónk
__________________
gefundene rechtschreibfehler dürfen behalten werden

Geändert von manatee (14-12-2003 um 12:20 Uhr)
manatee ist offline   Mit Zitat antworten
Alt 14-12-2003, 12:42   #4 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
ActionScript:
  1. MovieClip.prototype.move = function(targetX, targetY, delay,b,h) {
  2.         if (this._x != targetX || this._y != targetY) {
  3.                 this.onEnterFrame = function() {
  4.                         var difX = targetX - this._x;
  5.                         var difY = targetY - this._y;
  6.                         if (Math.round(Math.abs(difX)) > 0 || Math.round(Math.abs(difY)) > 0) {
  7.                                 this._width +=(-this._width+b)/delay
  8.                                 this._height +=(-this._height+h)/delay
  9.                                 this._x += difX / delay;
  10.                                 this._y += difY / delay;
  11.                         } else {
  12.                                 this._width=b
  13.                                 this._height=h
  14.                                 this._x=targetX
  15.                                 this._y=targetY
  16.                                 delete this.onEnterFrame;
  17.                         }
  18.                 };
  19.         }
  20. };
  21. _root.onMouseDown=function()
  22. {
  23. mc.move(400,200,8,150,200);
  24. }


das setzen der veränderten werte auf den genauen zielwert in der esle-anweisung ist meiner meinung nach sehr wichtig,
da viele hausgemachte probleme auf der durch delay verursachten ungenauigkeit basieren .

hi@sonar
warrantmaster ist offline   Mit Zitat antworten
Alt 14-12-2003, 13:44   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 20
huhu wieder !

sauber!!!

vielen Dank genau so hab ichs gewollt ...

und ich hab mir echt den wolf ausprobiert ... hihi

jetzt hab ich erstmal was zum basteln

schönen gruss

Frónk
__________________
gefundene rechtschreibfehler dürfen behalten werden
manatee ist offline   Mit Zitat antworten
Alt 14-12-2003, 14:21   #6 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Zitat:
Geschrieben von warrantmaster
[as]das setzen der veränderten werte auf den genauen zielwert in der esle-anweisung ist meiner meinung nach sehr wichtig,
da viele hausgemachte probleme auf der durch delay verursachten ungenauigkeit basieren .

hi@sonar
hi@master warrant
Hast recht mit der "Fixierung" im else-Teil. Is mir gestern so spät nich mehr aufgefallen... die "Kleenen" wohlbehalten aus der Disse zurück?

Grüße!
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 14-12-2003, 15:07   #7 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
Zitat:
Geschrieben von sonar
... die "Kleenen" wohlbehalten aus der Disse zurück?

Grüße!

...klaro, ist echt irre, vor nicht all zu langer zeit bin ich noch auf disse rumgehopst, jetzt hole ich die meute um 5 uhr (!! )
von einem acker ab, auf dem ein riesen zelt steht indem
sich ca 1200 kids die nacht um die ohren hauen.
naja, bin ja nicht oft taxifahrer, zum glück haben die anderen ja auch eltern...
grz
warrantmaster ist offline   Mit Zitat antworten
Alt 16-05-2006, 15:20   #8 (permalink)
Neuer User
 
Benutzerbild von zickzackzorro
 
Registriert seit: Sep 2003
Ort: Köln
Beiträge: 116
Hab gerade mal versucht daraus ne globale Funktion zu machen
Code:
_global.move_mc = function(ziel, targetX, targetY, bezug, delay)
wobei man bei "bezug" "relativ" oder "absolut" eingeben kann. "absolut" soll sich auf den übergeordneten mc beziehen, also die Koordinaten, die man auch im Eigenschaftenfenster sieht.
relativ:
Code:
targetX = targetX+ziel._x;
targetY = targety+ziel._y;
absolut:
Code:
targetX = targetX+_parent.ziel._x;
targetY = targetY+_parent.ziel._y;
Allerdings gibt flash bei "_parent.ziel._x" keinen Wert zurück, obwohl es diesen in meinem Fall definitiv gibt.

Weiss jemand wieso?
zickzackzorro 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 00:25 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele