PDA

Volledige versie bekijken : Easing dingetje.


Emveedee
%Europe/Berlin %888 %2006, 21:20
Ik gebruik een script van Dauntless *[MX] Easing Tutorial*
om een mc over de stage te bewegen.

Nu wil ik dat wanneer de mc bijna bij zn positie is, hij niet steeds langzamer gaat,
maar dan meteen dus daarheen gaat.
(dus dat ie net op t einde eraan 'plakt', zodat ie niet heeeel langzaam gaat.)

Ik heb dat zo geprobeerd:


onClipEvent (enterFrame) {
if(var xpos:Number = this._x +10 ||xpos = this._x - 10){
this._x = xpos;
}
else{
xmove = (xpos-this._x)/15;
_root.muur._x += xmove;
}
if(var ypos:Number = this._y + 10 ||ypos = this._x - 10){
this._y = ypos;
}
else
{
ymove = (ypos-this._y)/15;
_root.muur._y += ymove;
}
}

Maar als k de movie test kots ie dit uit:

**Error** Scene=Scene 1, layer=Muur, frame=31:Line 2: '{' expected
if(var xpos:Number = this._x +10 ||xpos = this._x - 10){

**Error** Scene=Scene 1, layer=Muur, frame=31:Line 9: Unexpected 'var' encountered
if(var ypos:Number = this._y + 10 ||ypos = this._x - 10){

Total ActionScript Errors: 2 Reported Errors: 2

Ik heb de variabelen ook al voor de if statements, en ook buiten de onenterframe gezet,
maar ook dat gaf errors (en ook als ik ze wegliet).

Wat doe ik fout?

btw:

dit is het originele script:
onClipEvent (enterFrame){
xmove = (xpos-this._x)/15;
_root.muur._x += xmove;
ymove = (ypos-this._y)/15;
_root.muur._y += ymove;

}

Alvast bedankt.

Roxx
%Europe/Berlin %900 %2006, 21:37
correctie : momentje

xtr0
%Europe/Berlin %906 %2006, 21:45
misschien moet je eerst de variables "aanmaken":

var xpos:Number;
var ypos:Number;
onClipEvent (enterFrame) {
if(xpos == this._x +10 || xpos == this._x - 10){
this._x = xpos;
}
else{
xmove = (xpos-this._x)/15;
_root.muur._x += xmove;
}
if(ypos == this._y + 10 ||ypos == this._x - 10){
this._y = ypos;
}
else
{
ymove = (ypos-this._y)/15;
_root.muur._y += ymove;
}
}

ik heb het nog niet uitgeprobeert

Emveedee
%Europe/Berlin %908 %2006, 21:47
Dat gaat helaas niet werken, had ik ook al gezegd ;)

Dit zegt ie dan :

**Error** Scene=Scene 1, layer=Muur, frame=31:Line 1: Statement must appear within on/onClipEvent handler
var xpos:Number;

**Error** Scene=Scene 1, layer=Muur, frame=31:Line 2: Statement must appear within on/onClipEvent handler
var ypos:Number;

**Error** Scene=Scene 1, layer=Muur, frame=31:Line 4: Left side of assignment operator must be variable or property.
if(this._x +10 ||xpos = this._x - 10){

**Error** Scene=Scene 1, layer=Muur, frame=31:Line 11: Left side of assignment operator must be variable or property.
if(this._y + 10 ||ypos = this._x - 10){

xtr0
%Europe/Berlin %909 %2006, 21:50
owh sorry overheen gelezen ;)
misschien kan je de fla even posten, kan ik um aanpassen

Emveedee
%Europe/Berlin %910 %2006, 21:51
Hijs beetje groot,
ik flans wel ff nieuw ding in elkaar met tzelfde principe ;)

Emveedee
%Europe/Berlin %916 %2006, 22:00
Hier is de fla

Jordy
%Europe/Berlin %920 %2006, 22:04
//edit : niet goed gekeken,

Emveedee
%Europe/Berlin %921 %2006, 22:06
Hij staat op een mc hoor ;)
das t probleem niet.
Hij vind die variabelen niet zo leuk geloof k.
Mja t probleem zal wel liggen in mijn if else statements, want voor ik die erinpleurde werkte t wel gewoon.

Jordy
%Europe/Berlin %923 %2006, 22:10
ik heb mn vorige post verwijdert :p had niet goed gekeken, ik zal even het statement aanpassen ;) momentje

edit:
Je wilt dat het vierkantje gaat bewegen zonder dat ie steeds langzamer gaat?

dan heb je vrij weinig aan de fla van Dauntless ;), want daarin gaat het gewoon om de easing.

Als ik goed begrijp wat je bedoelt moet je gewoon met

mc._x +=10

werken :). En let er even op dat je in if() statements een dubbel = teken gebruikt.

dus:


if(naam == "Jordy") {
trace("ok");
}

Emveedee
%Europe/Berlin %932 %2006, 22:23
Nee,
hij moet wel steeds langzamer gaan,
maar op het einde gaat hij me een beetje te traag, waardoor t plaatje vervormt,
en het vreet nogal veel cpu, waardoor de animaties wat traag gaan
(er staan geen animaties op de fla, das maar testding).

Mijn bedoeling is dus:
beweeg er naar toe (steeds langzamer) en als je 10 px van de eindbestemming bent, ga dan meteen naar de eindbestemming.

xtr0
%Europe/Berlin %801 %2006, 19:14
de code op de movieclip moet je even veranderen. Je gebruikt bij de if-jes 1 "=" in plaats van 2. Dit is fout, met 1 "=" geef je een variable een waarden en met 2 vergelijk een variable met een waarde of een andere variable. Als je de code hier onder gebruikt beweegt hij wel, maar ik snap nog niet helemaal wat de bedoeling is want hij gaat nou uit het scherm.

onClipEvent (enterFrame) {
var xpos:Number;
var ypos:Number;
if(xpos==this._x +10 ||xpos==this._x - 10){
this._x = xpos;
}
else{
xmove = (xpos-this._x)/15;
_root.main._x += xmove;
}
if(ypos==this._y + 10 ||ypos==this._x - 10){
this._y = ypos;
}
else
{
ymove = (ypos-this._y)/15;
_root.main._y += ymove;
}
}

TheZwier
%Europe/Berlin %632 %2006, 15:10
Je kan beter kijken of de afstand kleiner is dan 10 pixels dan precies, want het kan best zijn dat ie de precies 10 pixels nooit haalt. Dus ipv == de <= gebruiken :)