PDA

Просмотр полной версии : управление объектом на сцене


kolotun
23.01.2007, 14:26
около полутора лет не писал на ЭкшенСкрипте и вот столкнулся со следующей проблемой, достаточно глупой, но тем не менее застопорившей весь рабочий процесс
необходим объект на сцене который бы поворачивался при нажатии клавиш влево-вправо, и двигался с элементарным трением вперед.
итак код номер 1(написанный мною)

_root.roamer.cSpeed=5
_root.roamer.cFriction=0.7
_root.roamer.onEnterFrame=function(){


if(Key.isDown(Key.LEFT)){
dir-=5
} else if(Key.isDown(Key.RIGHT)){
dir+=5
} else if(Key.isDown(Key.UP)){
this.cSpeed=4
}

xIncr = Math.cos(dir*Math.PI/180)*this.cSpeed
yIncr = Math.sin(dir*Math.PI/180)*this.cSpeed

this._x-=xIncr
this._y-=xIncr
this._rotation=dir
this.cSpeed*=this.cFriction
}
)

и соответсвенно код стыренный из Нета

onClipEvent (enterFrame) {
if (Key.isDown(Key.UP)) {
speed += 2;
}
if (Key.isDown(Key.DOWN)) {
speed += -2;
}
if (Key.isDown(Key.RIGHT)) {
dir += 15;
}
if (Key.isDown(Key.LEFT)) {
dir += -15;
}
xspeed = Math.cos(dir*Math.PI/180)*speed;
yspeed = Math.sin(dir*Math.PI/180)*speed;
_x += xspeed;
_y += yspeed;
_rotation = dir;
}



причем при общем сходстве, мой код работает некорректно,
а использовать OnClipEvent как то стрёмно,
может ктонить ответит - отчего такое происходит и как лечиццо?

CorC
23.01.2007, 14:57
у вас dir не обьявлена нигде

kolotun
23.01.2007, 15:06
отследил в обоих вариантах через trace() - по дефолту - везде 0,

CorC
23.01.2007, 15:13
_root.roamer.cSpeed = 5;
_root.roamer.cFriction = 0.7;
_root.roamer.dir = 0;
_root.roamer.onEnterFrame = function() {
if (Key.isDown(Key.LEFT)) {
this.dir -= 5;
}
if (Key.isDown(Key.RIGHT)) {
this.dir += 5;
}
if (Key.isDown(Key.UP)) {
this.cSpeed += 2;
}
if (Key.isDown(Key.DOWN)) {
this.cSpeed -= 2;
}
xIncr = Math.cos(this.dir*Math.PI/180)*this.cSpeed;
yIncr = Math.sin(this.dir*Math.PI/180)*this.cSpeed;
trace(this.cSpeed);
this._x -= xIncr;
this._y -= yIncr;
this._rotation = this.dir;
this.cSpeed *= this.cFriction;
};

у меня так все ездит :)

this._x-=xIncr
this._y-=xIncr

может из-за этого? :)

kolotun
23.01.2007, 15:19
блин...точно!
око замылилось
:rolleyes:
а я уже грешу на потусторонние силы))